大模型技术 提示词模板 概述

在 LangChain 中,提示词模板(Prompt Template) 是构建大模型应用的核心基石。

如果把大模型比作一个"极其聪明但没有记忆的员工",那么提示词模板就是一份标准化的"工作指南"。它将用户的动态输入与预设的指令、上下文、格式要求结合起来,确保大模型能输出高质量、符合预期的结果。


一、 为什么需要提示词模板?

  1. 逻辑与数据分离:你不需要在代码里硬编码复杂的提示语。你可以定义一个模板,只在运行时注入变量(如用户的问题、背景资料)。
  2. 复用性:同一个任务(如翻译、总结)的指令可以定义一次,多次使用。
  3. 角色注入:轻松为 AI 设定特定的身份(如"资深架构师"或"幽默诗人")。
  4. 标准化输出:配合前文提到的解析器,通过模板告知模型必须以 JSON 或特定格式返回。

二、 核心模板类型

LangChain 主要提供了两种模板,对应不同的模型接口:

1. PromptTemplate (普通模板)

用于传统的文本补全模型(LLMs),它只是一个简单的字符串模板。

python 复制代码
from langchain.prompts import PromptTemplate

# 1. 定义模板字符串,使用 {variable} 作为占位符
template = "你是一位专业的{field}教练。请为我制定一个{duration}的训练计划。"

# 2. 实例化模板
prompt = PromptTemplate(
    input_variables=["field", "duration"],
    template=template
)

# 3. 填充变量生成最终提示词
final_prompt = prompt.format(field="马拉松", duration="三个月")
print(final_prompt)
# 输出: 你是一位专业的马拉松教练。请为我制定一个三个月的训练计划。

2. ChatPromptTemplate (对话模板) ------ 最常用

用于聊天模型(ChatModels)。它由一组具有不同角色的"消息"组成(System, Human, AI)。

python 复制代码
from langchain.prompts import ChatPromptTemplate

# 定义多角色对话模板
chat_template = ChatPromptTemplate.from_messages([
    ("system", "你是一名{language}翻译官,负责将用户输入的中文翻译成{language}。"),
    ("human", "请翻译这段话:{text}"),
])

# 填充变量
messages = chat_template.format_messages(
    language="法语",
    text="今天天气真不错"
)
# 生成的结果是一组 Message 对象,可直接发送给 ChatOpenAI 或 Ollama

三、 进阶用法:少样本模板 (Few-Shot Prompting)

"少样本"是指给模型几个例子,让它模仿。这在处理复杂逻辑或特定风格时非常有效。

python 复制代码
from langchain.prompts import FewShotPromptTemplate, PromptTemplate

# 1. 准备示例
examples = [
    {"input": "开心", "output": "像盛开的花朵一样灿烂"},
    {"input": "难过", "output": "像阴雨连绵的深秋一样萧索"},
]

# 2. 定义示例的格式
example_prompt = PromptTemplate(
    input_variables=["input", "output"],
    template="词语: {input}\n比喻: {output}"
)

# 3. 构建少样本模板
few_shot_prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    suffix="词语: {user_input}\n比喻:", # 后缀,即用户的输入
    input_variables=["user_input"]
)

print(few_shot_prompt.format(user_input="孤独"))
# 模型会模仿之前的风格生成关于"孤独"的比喻

四、 组合提示词 (Pipeline Prompt)

有时候提示词非常复杂,你可能希望把几个小模板组合成一个大模板。

  • 场景:先设定身份,再引入背景知识,最后提出问题。
  • 实现 :使用 PipelinePromptTemplate(由于篇幅,此处仅作概念介绍,它允许将基础模板插入到父模板的占位符中)。

五、 最佳实践技巧

  1. 部分填充 (Partial Formatting) : 如果你在程序开始时就知道某些变量(比如当前日期),而另一些变量(比如用户输入)要等会儿才知道,可以使用 partial

    python 复制代码
    partial_prompt = prompt.partial(date="2024-05-20")
    # 稍后再填充剩下的变量
    final_prompt = partial_prompt.format(user_query="你好")
  2. 外部加载 : 为了保持代码整洁,可以将复杂的 Prompt 存储在 yamljson 文件中,通过 LangChain 加载。

  3. LCEL 管道调用: 将模板直接放在链的最前端:

    python 复制代码
    chain = chat_template | model | output_parser
    chain.invoke({"language": "英语", "text": "吃了吗?"})

总结

提示词模板不仅仅是字符串拼接,它是 Prompt 工程的工程化实现。通过 LangChain 的模板系统,你可以:

  • 结构化 地表达任务逻辑。
  • 动态化 地注入实时数据。
  • 模式化 地引导 AI 模仿特定行为。

掌握了 Prompt Template,你就掌握了控制大模型行为的"方向盘"。

相关推荐
元Y亨H7 小时前
大模型技术 模型调用结果解析 概述
google·langchain·llm
元Y亨H7 小时前
大模型技术 Ollama 概述
llm·ollama
chaors7 小时前
DeepResearchSystem 0x06:LLM as Judge
llm·agent·ai编程
mingo_敏11 小时前
DeepAgents : 权限(Permissions)
人工智能·深度学习·langchain
武子康11 小时前
GPT-5.6 Luna 降价 80%:Agent 真正该重算的是单次成功成本
人工智能·chatgpt·llm
眼泪划过的星空17 小时前
基于 LangChain 框架构建本地化 RAG 系统:无需调用云端 API 的完整实践
人工智能·langchain
Michaelliu_dev17 小时前
多模态大模型推理流程解析
人工智能·llm·多模态大模型·vit·llava·rope·mllm
玉鸯18 小时前
Agent 的任务编排:从 System Prompt 到 Hierarchical Multi-Agent
python·llm·agent
YUS云生18 小时前
大模型学习·第41天:LangChain进阶——提示词模板与Chain链式调用
学习·langchain·c#