langchain 常见提示词模板使用案例
·
大模型对象创建&调用
"""
大模型共用定义
"""
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
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("介绍一下你自己")
for chunk in result:
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 字符串模板提示词
适用于单轮对话
通过传入模板字符串+变量列表创建
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("大模型输出结果:")
for chunk in result:
print(chunk.content, end="")
except Exception as e:
print(f"API调用失败: {e}")
大模型输出结果:
Artificial intelligence is transforming the world.
二、对话提示词模板 ChatPromptTemplate
适用:多轮对话、角色扮演
特点: 支持多种消息角色、上下文管理
场景:客服、教学、咨询
方式 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)
for chunk in response:
print(chunk.content, end="")
except Exception as e:
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
场景:需要示例引导的任务
特点:提供少量示例、格式控制
场景:情感分析、代码生成、格式转换
创建模板
创建引导词模板,需要引导词案例、前缀、后缀、引导词模板等信息
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}
情感:
分析:
"""
# 构建 FewShotPromptTemplate
few_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}")
except Exception as e:
print(f"API调用失败: {e}")
更多推荐



所有评论(0)