news 2026/6/10 22:28:32

langchain 常见提示词模板使用案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
langchain 常见提示词模板使用案例

大模型对象创建&调用

""" 大模型共用定义 """importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()# 创建大模型对象llm=ChatOpenAI(model="qwen-max-latest",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),streaming=True,)result=llm.stream("介绍一下你自己")forchunkinresult:print(chunk.content,end="")
C:\Users\user\Desktop\mypython\class_mk_agent\chapter04\.venv\Scripts\python.exe C:\Users\user\Desktop\mypython\class_mk_agent\chapter04\bailian\LlmCommon.py 你好!我是Qwen,这是我的英文名,你也可以叫我通义千问。我是阿里云研发的一种超大规模语言模型,能够帮助用户生成各种类型的文本、回答问题、创作文字,如写故事、公文、邮件、剧本等,还能进行逻辑推理、编程,甚至表达观点和玩游戏等。 我支持多种语言,包括但不限于中文、英文、德语、法语、西班牙语等,能够满足国际化的使用需求。通过不断学习和优化,我致力于为用户提供更加准确、流畅和自然的交互体验。 如果你有任何问题或需要帮助,欢迎随时向我提问! 进程已结束,退出代码为0




langchain常用的提示词模板

模板类型适用场景关键特点示例
PromptTemplate简单任务、单轮问答字符串替换、简单直接翻译、摘要、分类
ChatPromptTemplate多轮对话、角色扮演支持多种消息角色、上下文管理客服、教学、咨询
FewShotPromptTemplate需要示例引导的任务提供少量示例、格式控制情感分析、代码生成、格式转换

提示词模板类继承关系

一、 PromptTemplate 字符串模板提示词

适用于单轮对话

01 字符串提示模板.py

通过传入模板字符串+变量列表创建

template="请将以下文本翻译成{target_language}: {text}"prompt=PromptTemplate(input_variables=["target_language","text"],template=template)# 格式化提示词formatted_prompt=prompt.format(target_language="法语",text="你好,世界!")

直接使用模板字符串

# 方法2: 直接传入模板字符串创建promptTemplate2=PromptTemplate.from_template("作为{role},请{action}: {content}")formatted_prompt2=promptTemplate2.format(role='资深文案',action='写一段产品介绍',content='新款智能手机')

使用模板字符串创建,并设置预设值

# 方法3: 传入模板字符串+变量列表创建,并预设部分变量值partial_prompt=PromptTemplate(template="{product}的主要功能包括:{features}",input_variables=["product","features"]).partial(product="智能手表")formatted_partial_prompt=partial_prompt.format(features='心率监测、GPS定位、消息提醒',product='智能手机')

代码案例

# 实际使用示例:预设翻译提示词模板translation_template=""" 你是一位专业的翻译专家。请将以下{source_language}文本翻译成{target_language}。 原文:{source_text} 要求: 1. 保持原意准确 2. 符合{target_language}的表达习惯 3. 如果是专业术语,请使用标准译法 翻译结果: """# 第一步 定义模板translation_prompt=PromptTemplate(template=translation_template,input_variables=["source_language","target_language","source_text"],)# 第二步 模板+变量 生成提示词formatted_prompt=translation_prompt.format(source_language="中文",target_language="英语",source_text="人工智能正在改变世界")# 第三步 传入模板运行模型try:result=llm.stream(formatted_prompt)print("大模型输出结果:")forchunkinresult:print(chunk.content,end="")exceptExceptionase:print(f"API调用失败:{e}")
大模型输出结果: Artificial intelligence is transforming the world.

二、对话提示词模板 ChatPromptTemplate

适用:多轮对话、角色扮演

特点: 支持多种消息角色、上下文管理

场景:客服、教学、咨询

02 对话提示词模板.py

方式 1 使用预定义角色的 MessagePromptTemplate 来创建

system_template="你是一个{role},具有{experience}的经验。你的沟通风格是{style}。"system_message_prompt=SystemMessagePromptTemplate.from_template(system_template)human_template="{question}"human_message_prompt=HumanMessagePromptTemplate.from_template(human_template)chat_prompt=ChatPromptTemplate.from_messages([system_message_prompt,human_message_prompt,])# 使用模板创建消息messages=chat_prompt.format_messages(role="资深软件架构师",experience="10年微服务架构设计",style="清晰、直接、有逻辑性",question="如何设计一个高可用的电商系统?")

方式 2 直接使用长度为 2 的元组列表创建

这里使用的元祖列表,固定第一个元素作为角色

chat_prompt2=ChatPromptTemplate.from_messages([("system","你是{expert_type}专家。请用{language}回答。"),("human","请解释一下{concept}。"),("assistant","好的,我来解释一下{concept}。"),("human","{follow_up_question}")])messages2=chat_prompt2.format_messages(expert_type="机器学习",language="中文",concept="神经网络",follow_up_question="那么深度学习又是什么呢?")

方式 3 使用方式 1+MessagePlaceHolder 消息占位符实现历史消息

# 方法3: 传入角色的MessagePromptTemplate+占位符列表创建customer_service_prompt=ChatPromptTemplate.from_messages([SystemMessagePromptTemplate.from_template("你是{company_name}的客服助手。公司主要产品是{product}。""你的服务态度应该是{friendly_level}。""如果遇到无法解决的问题,请建议用户联系{support_channel}。"),MessagesPlaceholder(variable_name="chat_history"),HumanMessagePromptTemplate.from_template("{user_input}")])chat_history=[HumanMessage(content="我的订单状态如何?"),AIMessage(content="请提供您的订单号,我来帮您查询。")]messages3=customer_service_prompt.format_messages(company_name="TechGadget",product="智能家居设备",friendly_level="热情耐心",support_channel="客服热线 400-123-4567",chat_history=chat_history,user_input="订单号是 ORD20231234567")

代码案例

customer_service_prompt=ChatPromptTemplate.from_messages([SystemMessagePromptTemplate.from_template("你是{company_name}的客服助手。公司主要产品是{product}。""你的服务态度应该是{friendly_level}。""如果遇到无法解决的问题,请建议用户联系{support_channel}。"),MessagesPlaceholder(variable_name="chat_history"),HumanMessagePromptTemplate.from_template("{user_input}")])try:prompt_param={"company_name":"3DM","product":"单机游戏售卖","friendly_level":"热情耐心且专业","support_channel":"客服热线 400-123-4567","chat_history":[],"user_input":"你们公司主要干啥的"}# 这里使用管道符进行链式调用,提示词模板+参数生成的提示词,会直接给llm作为参数chain=customer_service_prompt|llm response=chain.stream(prompt_param)forchunkinresponse:print(chunk.content,end="")exceptExceptionase:print(f"API调用失败:{e}")
C:\Users\user\Desktop\mypython\class_mk_agent\chapter04\.venv\Scripts\python.exe"C:\Users\user\Desktop\mypython\class_mk_agent\chapter04\bailian\02 对话提示词模板.py"您好!欢迎来到3DM游戏商城~我们公司主要致力于为广大玩家朋友提供最新、最全的正版单机游戏。在这里您可以找到各种类型的优质游戏作品,包括动作冒险、角色扮演、策略模拟等等。我们不仅提供优质的游戏资源,还配有完善的售后服务,确保每位玩家都能获得最佳的游戏体验。如果您对游戏有任何疑问或需求,随时都可以向我咨询哦! 进程已结束,退出代码为0

三、少量引导提示词模板 FewShotPromptTemplate

场景:需要示例引导的任务

特点:提供少量示例、格式控制

场景:情感分析、代码生成、格式转换

03 少量样本参数提示词模板.py

创建模板

创建引导词模板,需要引导词案例、前缀、后缀、引导词模板等信息

examples=[{"text":"这个产品真是太棒了,完全超出我的预期!","sentiment":"积极","reason":"使用了强烈的正面词汇'太棒了'和'超出预期'"},{"text":"服务一般,没什么特别的体验。","sentiment":"中性","reason":"使用中性词汇'一般',没有明显情感倾向"},{"text":"质量太差了,用了两天就坏了,非常失望!","sentiment":"消极","reason":"使用负面词汇'太差了'、'坏了'和'失望'"},{"text":"物流速度很快,但包装有点简陋。","sentiment":"混合","reason":"既有正面评价'很快',又有负面评价'简陋'"}]# 示例格式模板example_template=""" 文本: {text} 情感: {sentiment} 分析: {reason} """example_prompt=PromptTemplate(input_variables=["text","sentiment","reason"],template=example_template)# 前缀和后缀模板prefix="""你是一个情感分析专家。请分析以下文本的情感倾向。 以下是几个分析示例: """suffix=""" 现在请分析这个新文本: 文本: {input_text} 情感: 分析: """# 构建 FewShotPromptTemplatefew_shot_prompt=FewShotPromptTemplate(examples=examples,example_prompt=example_prompt,prefix=prefix,suffix=suffix,input_variables=["input_text"],example_separator="\n"+"-"*40+"\n")

代码案例

# 运行测试try:chain=few_shot_prompt|llm result=chain.invoke({"input_text":"东西很好用"})print(f"情感分析结果:\n{result.content}")exceptExceptionase:print(f"API调用失败:{e}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 20:56:05

langchain 创建智能体,并使用saver保存会话消息

简单创建智能体并调用 """ 可参考官方文档地址:https://docs.langchain.com/oss/python/langchain/agents 智能体会遵循 ReAct(“推理行动”)模式,交替进行简短的推理步骤和针对性工具调用,并将所得观察…

作者头像 李华
网站建设 2026/6/10 20:13:24

python基于vue的家政服务系统设计与实现django flask pycharm

目录基于Python与Vue的家政服务系统设计与实现开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Python与Vue的家政服务系统设计与实现 该系统采用前后端分离架构,前端基于Vue…

作者头像 李华
网站建设 2026/6/10 6:40:16

建议大家都去油管学AI Agent,真的能打破信息差!!

大家都知道 2026 年AI Agent 赛道必火,我现在坚持每天在油管学习2.5个小时,这几位博主是我反复刷真心推荐的!!DeepLearning.AI (Andrew Ng) : 教程全是Agentic Workflow(智能体工作流)的底层逻…

作者头像 李华
网站建设 2026/6/10 19:42:03

python基于vue的旅游公司汽车租赁系统django flask pycharm

目录技术栈与框架选择系统核心功能模块数据库设计优化安全与性能保障特色创新功能开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈与框架选择 该系统采用Python作为后端开发语言&…

作者头像 李华
网站建设 2026/6/9 21:58:33

python基于vue的流浪动物收养系统志愿者设计与开发django flask pycharm

目录流浪动物收养系统志愿者模块的设计与开发技术架构与功能设计开发工具与部署流程开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!流浪动物收养系统志愿者模块的设计与开发 该系统基于Pyt…

作者头像 李华
网站建设 2026/6/10 12:53:05

如何运用北斗GNSS位移监测提升变形监测效率?

本文将分析北斗GNSS位移监测技术及其在变形监测中的应用。具体来说,单北斗形变监测一体机作为核心设备,其技术原理和应用前景将是重点讨论的内容。同时,文章将着重探讨北斗GNSS在桥梁安全监测和地质灾害监测中的独特优势,以及如何…

作者头像 李华