核心概念 入门

Prompt Templates:提示词模板

学习用 ChatPromptTemplate 管理提示词,使用变量插值与 MessagesPlaceholder 复用模板。

为什么需要模板

把提示词硬编码在字符串里难以复用与测试。ChatPromptTemplate 让提示词成为带参数的"函数":

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位{domain}领域的翻译专家,把用户输入翻译成英文。"),
    ("human", "{text}"),
])

rendered = prompt.invoke({"domain": "计算机", "text": "检索增强生成"})
print(rendered.to_messages())

MessagesPlaceholder:动态插入历史

多轮对话时,需要在模板中预留"历史消息槽位":

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个耐心的助手。"),
    MessagesPlaceholder("history"),          # 对话历史插入点
    ("human", "{question}"),
])

写好提示词的原则

  • 明确角色:告诉模型它是谁、服务谁;
  • 给出格式:要求 JSON / 列表 / 表格等具体输出形态;
  • 提供示例:一两个 few-shot 例子胜过长篇描述;
  • 划定边界:明确"不知道就说不知道",减少幻觉。

📝 课后练习

quiz-1 ChatPromptTemplate 中 MessagesPlaceholder 的作用是?