《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!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐