我们来介绍一下LangChain 0.2版本中的这些提示词模板类,并给出它们的使用方法和示例。我们将使用Ollama中的Qwen2模型作为示例。
首先,让我们设置Ollama和Qwen2模型:
from langchain_community.chat_models import ChatOllama
chat_model = ChatOllama(model="qwen2")
现在,让我们逐一介绍这些提示词模板类:
- PromptTemplate
PromptTemplate是最基本的提示词模板,用于创建包含变量的模板字符串。
from langchain.prompts import PromptTemplate
template = PromptTemplate(
input_variables=["产品"],
template="为一家生产{产品}的公司起一个好名字。"
)
prompt = template.format(产品="人工智能机器人")
response = chat_model.invoke(prompt)
print(response)
输出结果:
content='"智行未来机器人科技有限公司"(VisionAI Future Robotics Co., Ltd.) \n\n这个名字结合了对未来科技的愿景与当前尖端技术——人工智能机器人,既能突出公司的核心业务,同时也含有开拓未来的积极寓意。"智行未来"四个字简洁明了地表达了公司致力于引领智能机器人行业的决心和信心,而"VisionAI"则强调了其在AI领域的专业性和创新性。整体听起来既有科技感又不失人文关怀,适合一家专注于人工智能机器人的公司。' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T18:55:19.746639Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 5237597375, 'load_duration': 1813375125, 'prompt_eval_count': 20, 'prompt_eval_duration': 173765000, 'eval_count': 106, 'eval_duration': 3248682000} id='run-11b3b19d-c0c2-4006-8d96-d0d2f4366129-0'
- PartialPromptTemplate
PartialPromptTemplate允许你部分填充模板,留下一些变量供后续填充。
from langchain_community.chat_models import ChatOllama
from langchain.prompts import PromptTemplate
chat_model = ChatOllama(model="qwen2")
base_template = PromptTemplate(
input_variables=["产品", "公司类型"],
template="为一家{公司类型}公司起一个好名字,这家公司生产{产品}。"
)
# 使用 partial 方法来部分填充模板
partial_template = base_template.partial(公司类型="科技创业")
prompt = partial_template.format(产品="人工智能助手")
response = chat_model.invoke(prompt)
print(response)
注意:LangChain 0.2版本中,
PartialPromptTemplate
可能已经被移除或者重命名了。我们可以使用PromptTemplate
的partial
方法来实现部分填充模板的功能。
输出结果:
content='对于一家专注于人工智能助手的科技创业公司,一个好的名称应该既能体现公司的核心业务——即AI和智能助理功能,同时还要具有现代感、易于记忆,并能够吸引目标客户群体的兴趣。以下是一些建议:\n\n1. **IntelliMate**\n - 这个名字将“Intelligence”(智慧)与“Machine”(机器)结合,直接体现了公司的核心业务——使用AI技术提供智能服务。\n\n2. **CogniAssistant**\n - “Cogni”可以理解为“认知”,强调了公司产品在认知层面上的智能处理能力。这个名字结合了“助理”的概念,简洁且易于记忆。\n\n3. **Syntellia**\n - 结合了“Synthetic”(合成)和“Intelligence”,暗示该公司能够提供高度优化、集成的人工智能解决方案,为用户提供全面的智能支持。\n\n4. **AIDevAssistant**\n - “Dev”在这里代表“Development”,表明公司不仅提供AI产品,还致力于发展和创新。这个名字清晰地传达了公司的技术背景和使命。\n\n5. **NeuralNavi**\n - “Neural”强调人工智能的基础——神经网络,“Navi”意味着导航或指导,整体上给人一种智能、高效且易于理解的印象。\n\n选择名称时,还需要考虑以下几个因素:\n- **可注册性**:确保所选的公司名称在全球范围内未被注册,并在目标市场中有可用的域名。\n- **文化敏感性**:避免使用可能引起不同文化和语言背景的人混淆或不悦的名称和术语。\n- **未来导向**:选择一个既能代表当前业务,又能在公司发展过程中保持相关性和适应性的名称。\n\n最终的选择应该综合考虑以上因素,并与公司的品牌定位、市场目标以及团队价值观相匹配。' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T19:03:00.965852Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 11917946708, 'load_duration': 32779750, 'prompt_eval_count': 23, 'prompt_eval_duration': 293374000, 'eval_count': 373, 'eval_duration': 11591210000} id='run-160974e3-f7ea-4bbb-8362-c5be79218af4-0'
- PipelinePromptTemplate
PipelinePromptTemplate允许你将多个模板串联在一起,其中一个模板的输出可以作为另一个模板的输入。
from langchain.prompts import PromptTemplate, PipelinePromptTemplate
full_template = PromptTemplate(
input_variables=["公司名称", "产品"],
template="为{公司名称}写一个标语,这家公司生产{产品}。"
)
name_template = PromptTemplate(
input_variables=["产品"],
template="一家生产{产品}的公司的好名字是: "
)
pipeline_template = PipelinePromptTemplate(
final_prompt=full_template,
pipeline_prompts=[
("公司名称", name_template),
]
)
prompt = pipeline_template.format(产品="智能家居设备")
response = chat_model.invoke(prompt)
print(response)
输出结果:
content='好名字:智居未来\n\n标语:智能掌控,开启家居新生活 —— 智居未来\n\n这句话强调了公司的核心业务——智能家居设备,并且传达出了一种创新和前瞻性的理念,即通过科技改变人们的生活方式,为用户带来更加便捷、舒适与高效的家庭环境。同时,“智居”二字既体现了产品的智能属性,又暗含着对美好生活的向往和追求。“未来”一词则进一步突出了公司对技术创新的承诺以及对未来智能家居发展趋势的洞察力。\n\n这样的命名和标语不仅能够吸引对科技生活有需求的目标客户群体,还能通过创新的理念激发消费者的兴趣和期待。' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T18:58:59.098144Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 4507909209, 'load_duration': 34001500, 'prompt_eval_count': 29, 'prompt_eval_duration': 297480000, 'eval_count': 136, 'eval_duration': 4175663000} id='run-cc4f8bb5-7007-42f0-acb7-b0137a2930d9-0'
- FewShotPromptTemplate
FewShotPromptTemplate用于生成包含少量示例的提示,这在进行少样本学习时非常有用。
from langchain.prompts import FewShotPromptTemplate, PromptTemplate
examples = [
{"词语": "快乐", "反义词": "悲伤"},
{"词语": "高", "反义词": "矮"},
]
example_formatter_template = PromptTemplate(
input_variables=["词语", "反义词"],
template="词语: {词语}\n反义词: {反义词}",
)
few_shot_prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_formatter_template,
prefix="给出每个词语的反义词",
suffix="词语: {input}\n反义词:",
input_variables=["input"],
example_separator="\n\n"
)
prompt = few_shot_prompt.format(input="大")
response = chat_model.invoke(prompt)
print(response)
输出结果:
content='小' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T19:04:39.359601Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 442202708, 'load_duration': 31498333, 'prompt_eval_count': 53, 'prompt_eval_duration': 378489000, 'eval_count': 2, 'eval_duration': 31603000} id='run-0ef53500-4f1b-45d2-a63c-414c2913853e-0'
- ChatPromptTemplate
ChatPromptTemplate用于创建结构化的聊天提示,包括系统消息和人类消息。
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate
from langchain.schema import SystemMessage
template = ChatPromptTemplate.from_messages([
SystemMessage(content="你是一个乐于助人的助手。"),
HumanMessagePromptTemplate.from_template("{input}")
])
prompt = template.format_messages(input="中国的首都是哪里?")
response = chat_model.invoke(prompt)
print(response)
输出结果:
content='中国的首都是北京。' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T19:05:08.520389Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 480423666, 'load_duration': 39630041, 'prompt_eval_count': 26, 'prompt_eval_duration': 282318000, 'eval_count': 6, 'eval_duration': 156895000} id='run-61ec6369-e98a-403a-bd36-087758f4e5fc-0'
6.FewShotChatMessagePromptTemplate
FewShotChatMessagePromptTemplate用于创建包含少量对话示例的聊天提示。
from langchain.prompts import FewShotChatMessagePromptTemplate, ChatPromptTemplate
examples = [
{"input": "今天天气怎么样?", "output": "作为AI语言模型,我没有实时的天气信息。你可以查看天气预报网站或应用来获取最新的天气信息。"},
{"input": "中国的首都是哪里?", "output": "中国的首都是北京。"}
]
example_prompt = ChatPromptTemplate.from_messages([
("human", "{input}"),
("ai", "{output}")
])
few_shot_prompt = FewShotChatMessagePromptTemplate(
examples=examples,
example_prompt=example_prompt,
input_variables=["input"]
)
final_prompt = ChatPromptTemplate.from_messages([
("system", "你是一个乐于助人的AI助手。"),
few_shot_prompt,
("human", "{input}")
])
prompt = final_prompt.format_messages(input="太阳系最大的行星是哪个?")
response = chat_model.invoke(prompt)
print(response)
输出结果:
content='太阳系中最大的行星是木星。' response_metadata={'model': 'qwen2', 'created_at': '2024-08-03T19:06:41.443276Z', 'message': {'role': 'assistant', 'content': ''}, 'done_reason': 'stop', 'done': True, 'total_duration': 821506208, 'load_duration': 32741792, 'prompt_eval_count': 87, 'prompt_eval_duration': 506449000, 'eval_count': 10, 'eval_duration': 276542000} id='run-7846b7ef-9cb3-41c4-88fc-e73d0ff5a0e6-0'
这些示例展示了LangChain 0.2版本中各种提示词模板类的使用方法。每种模板类都有其特定的用途,可以根据具体需求选择合适的模板类来构建提示。使用这些模板可以使你的提示更加结构化、可重用和灵活。
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。