第 6 天 · 提示词模板与变量:别再手写一长串 🧩

💡 今日引入

你有没有过这种体验:要给 AI 写 10 遍"帮我用简单的话讲讲 Python / 讲讲 Transformer / 讲讲 RAG",于是复制粘贴改几个词,改着改着就把某句漏了、某处拼错了?我刚开始就这样。后来才发现,提示词也能像写代码一样"参数化"——一套骨架喂不同的内容,这就叫提示词模板。

🔗 接上昨天

第 5 天我们给 AI 加了 system 角色,messages 数组里多了一个常驻"定调者"。今天再往前走一步:既然 system、user 这些消息经常是"同一段话 + 几个会变的值",为什么每次都手写整串?把它抽成带变量的模板,才真正到"能规模化"的门槛。

📚 核心讲解

1. 手写拼接的三个坑

最直接的方式是用 Python 字符串拼,比如 f-string:

topic = "Python"
difficulty = "初学者"
prompt = f"你是一个{difficulty}级别的编程导师。请用简单易懂的语言解释{topic}。"

尚硅谷教材总结得很到位:

  • 可读性差:变量一多,字符串里 { } 和文字搅成一团。
  • 没有校验:漏写变量、拼错名字,运行时才炸,不会提前报错。
  • 难维护:同样的骨架散落在十几个地方,改一句要改十遍。

一句话——临时 demo 凑合,正式做 AI 应用就别这么干了。

2. 模板化:填空作文,骨架不变、填的内容变

提示词模板(LangChain 里叫 PromptTemplate / ChatPromptTemplate)的思路就是"填空作文":把会变的地方用 {变量} 占位,固定的话写死。

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages([
    ("system", "你是一个有帮助的 AI 机器人,你的名字是 {name}。"),
    ("human", "{user_input}"),
])

prompt = chat_template.invoke({"name": "小明", "user_input": "你叫什么名字?"})
print(prompt)   # 已渲染成完整的 messages 列表

同一个 chat_template,传 name="小明" 是一份提示,传 name="小红" 又是一份——骨架一次写好,填充内容随便换。对比一图看懂:

请添加图片描述

3. 为什么模板比字符串好

  • 变量占位、结构清晰:看一眼就知道哪块会变、哪块是定值。
  • 自动校验:变量名写错、漏传,模板在渲染时就报错,而不是等模型答非所问。
  • 支持复杂场景:多轮对话、RAG、Agent 这些"要拼一大串消息"的活儿,模板是唯一能撑住的写法。

.from_messages() 收的是"(角色, 内容)"的元组列表,所以模板天然贴合我们第 2 天学的 messages 数组——system / human / ai 各占一格,角色不会搞混。

4. 模板要和 LLM 接上才完整

模板本身只是"生成提示词",最后一步是把它喂给模型:

prompt_value = chat_template.invoke({"user_input": "18 岁的我和 38 岁的舅舅一共多少岁?"})
output = model.invoke(prompt_value)   # 直接传 prompt_value 即可
print(output.content)

invoke 之后拿到的就是模型回答。到这儿,一个"可复用、带变量、能调模型"的最小闭环就成型了。

✅ 今日小结

  • 手写字符串拼接只适合临时 demo,正式应用要用提示词模板(变量占位、结构清晰)。
  • ChatPromptTemplate.from_messages([(角色, 内容)]) 把模板和 messages 数组合一,天然支持多轮 / RAG / Agent。
  • 模板化 + 稳定前缀,既好维护,又顺手吃满 Prompt Cache 降本红利(呼应第 3 天)。

一句话记忆点:提示词模板化,才能规模化。

💬 写在最后

我是阿黎,正在自学 AI 大模型,把这个"32 天带你学会 AI 大模型"的系列当作自己的学习笔记——边学边发,逼自己把概念嚼碎,也顺手给想入门的你留份参考。今天这步看着小,其实是个分水岭:从"每次手写一整段话"到"写一次骨架、填不同内容",你才算真正开始用工程的脑子玩 AI。后面做聊天机器人、RAG、Agent,模板都是地基。有用就关注我、看我博客,咱们一天天把 AI 学透。

#AI学习 #大模型 #跟着学AI #LLM #PromptTemplate #提示词模板

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐