Langchain里的提示词模版几个常见类

我们来介绍一下LangChain 0.2版本中的这些提示词模板类,并给出它们的使用方法和示例。我们将使用Ollama中的Qwen2模型作为示例。

首先,让我们设置Ollama和Qwen2模型:

from langchain_community.chat_models import ChatOllama  
  
chat_model = ChatOllama(model="qwen2")  

现在,让我们逐一介绍这些提示词模板类:

  1. 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'  
  

  1. 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 可能已经被移除或者重命名了。我们可以使用 PromptTemplatepartial 方法来实现部分填充模板的功能。

输出结果:

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'  
  

  1. 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'  
  

  1. 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'  

  1. 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大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Chatglm 是一个基于语言链 (Langchain) 集成的 LLm LLm (Language Learning Model) 是一种用于语言学习的模型Langchain 是一种集成各种语言学习资源和工具的平台,通过 Chatglm LLm Langchain 集成起来,可以提供更丰富、更高效的语言学习体验。 Chatglm 基于 LLm 模型,具有一定的机器学习算法和自然语言处理能力,可以根据用户提供的输入进行语言学习的交互。通过与 Chatglm 进行对话,用户可以获取语法、汇、语音、听力等方面的练习与学习。 通过集成 Langchain,Chatglm 可以从各种语言学习资源中获取学习材料和练习题目,例如汇表、语法规则、口语练习、听力练习、阅读材料等。用户可以通过与 Chatglm 进行对话,选择不同的学习资源和练习型,并获取个性化的学习推荐。 Chatglm 还可以与其他学习者进行交流,促进语言学习的互动。通过与其他学习者的对话,用户可以分享学习经验、交流问题,相互学习、互相帮助。这种社交化学习的形式可以增加学习的趣味性和参与度。 总之,Chatglm 集成了 Langchain 的各种语言学习资源和工具,通过 LLm 模型提供个性化的语言学习交互。它不仅可以提供丰富的学习材料和练习题目,还可以与其他学习者进行交流,加强学习的互动性。通过与 Chatglm 的对话,用户可以更有效地提升语言学习能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值