《2026 LangChain零基础入门:用AI应用框架快速搭建智能助手》第2课:PromptTemplate 与动态 Prompt —— 像变量一样灵活生成专业提示词
《2026 LangChain零基础入门:用AI应用框架快速搭建智能助手》第2课:PromptTemplate 与动态 Prompt —— 像变量一样灵活生成专业提示词
大家好,我是链上杯子(CSDN:链上杯子)。
失业一年了,天天想着怎么翻身。上节课用 LLMChain 跑通了第一个调用后,我最兴奋的是:原来 Prompt 可以像变量一样填!之前每次改一句都要重写代码,现在用 PromptTemplate,几行就能批量生成不同风格、不同长度的专业提示词。第一次把 few-shot 示例塞进去,看到模型输出瞬间变稳定,感觉像给 AI 加了个“遥控器”。
本课目标:
学会使用 PromptTemplate 创建可复用的提示词模板,支持变量填充、few-shot 示例、多语言切换。
学完这节课,你就能轻松生成结构化、专业级的 Prompt,不再手写拼接字符串。
核心代码实战
1. 最基础 PromptTemplate —— 变量填充
from langchain_openai import ChatOpenAI
from langchain_classic.prompts import PromptTemplate
from langchain_classic.chains import LLMChain
# 初始化模型(替换成你的真实 Key)
llm = ChatOpenAI(
openai_api_key="", # ←←← 这里替换成你的 DeepSeek API Key
openai_api_base="https://api.deepseek.com/v1",
model="deepseek-chat",
temperature=0.7
)
# 创建模板(用 {变量名} 占位)
prompt_template = PromptTemplate.from_template(
"""你是一个{role}。
请帮我{task}。
风格要求:{style}。
字数控制在约{length}字。
请直接输出内容,不要多余解释。"""
)
# 组装链
chain = LLMChain(llm=llm, prompt=prompt_template)
# 运行时填充变量
result = chain.run(
role="专业情感写手",
task="写一段关于失恋后自我和解的治愈短文",
style="温柔细腻,带点淡淡的温暖",
length=350
)
print("生成的短文:")
print(result)
运行后模型会输出一段符合要求的短文。
小知识点:
PromptTemplate.from_template()是最常用创建方式,字符串里的{}会被替换。- 变量名随意起,但要和
chain.run()里的 key 对应。
2. 支持 Few-shot 示例 —— 让输出更稳定
from langchain_classic.prompts import PromptTemplate, FewShotPromptTemplate
# 示例数据(few-shot)
examples = [
{
"input": "失恋",
"output": "那场雨下得像眼泪一样多,却洗不掉心里的影子。但雨停后,天空总会放晴。"
},
{
"input": "重逢",
"output": "多年后街角偶遇,你还是老样子,我却忘了怎么打招呼。"
}
]
# 示例模板
example_prompt = PromptTemplate(
input_variables=["input", "output"],
template="输入:{input}\n输出:{output}\n"
)
# 创建 FewShotPromptTemplate
few_shot_prompt = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix="你是一个情感短文写手。参考以下示例风格,写一段治愈短文。",
suffix="输入:{topic}\n输出:",
input_variables=["topic"],
example_separator="\n"
)
# 完整 PromptTemplate(加 few-shot)
full_prompt = PromptTemplate.from_template(
few_shot_prompt.format(topic="{topic}") + "\n字数约{length}字。"
)
chain = LLMChain(llm=llm, prompt=full_prompt)
result = chain.run(
topic="错过的夏天",
length=400
)
print("带 few-shot 的生成结果:")
print(result)
效果:模型会模仿示例的简短、诗意风格,而不是乱写。
3. 互动 + 多语言切换模板
from langchain_classic.prompts import PromptTemplate
from langchain_classic.chains import LLMChain
# 简单互动模板
template = """你是一个{role}。
请用{language}帮我{task}。
风格:{style}。
字数约{length}字。"""
prompt = PromptTemplate.from_template(template)
chain = LLMChain(llm=llm, prompt=prompt)
lang = input("输出语言(中文/英文/日文):")
task = input("任务:")
role = input("角色:")
style = input("风格:")
result = chain.run(
role=role,
language=lang,
task=task,
style=style,
length=300
)
print(f"\n{lang} 输出:")
print(result)
试试输入“英文”“写一段关于星空的诗”“诗人”“浪漫梦幻”。
小练习(2 道)
练习1(基础)
修改第1段模板,增加一行:“请以第一人称叙述。”
运行链,生成一段“关于雨中散步的回忆”短文。观察是否更贴合要求。
练习2(进阶)
扩展 few-shot 示例:再加 1–2 个你喜欢的风格示例(比如沙雕、硬核)。
修改 suffix 为“输入:{topic}\n输出:”,让用户输入 topic,运行链。
把生成的输出复制到任意地方,看 few-shot 是否让风格更一致。
本课小结
本课重点学习了 PromptTemplate 的创建与使用,支持变量填充、few-shot 示例、多语言切换。
相比手写字符串拼接,PromptTemplate 更结构化、可复用,是 LangChain 所有高级功能的基础。学会这个,你就能批量生成专业级提示词了。
下节预告
下一课:Chains 与 LCEL —— 把多个 Prompt 串成流水线,实现“先生成大纲 → 再写正文”等多步智能流程。
欢迎在评论区贴出你的 PromptTemplate 生成结果、few-shot 效果对比,或遇到的任何问题~
如果觉得这篇有用,欢迎点赞或关注,一起玩转 LangChain!
更多推荐

所有评论(0)