LangChain 04 - Message 与提示词模板学习导航与实战

目标:这一章不是学“怎么多写几句提示词”,而是学“怎么把模型输入组织成稳定、可复用、可维护的结构”。


你这一章到底要学什么

如果把 04-Message 与提示词模板 学完,真正应该带走的是下面 4 件事:

  1. 知道为什么 LangChain 不推荐长期手写大段字符串 Prompt
  2. 理解 SystemMessageHumanMessageAIMessage 分别扮演什么角色
  3. 会用 ChatPromptTemplate 构造结构化输入
  4. 知道 Prompt 模板为什么会成为后面 Tools、Agent、RAG 的基础

一句话总结:

第 4 章学的不是“写提示词”,而是“管理提示词”。


模块 1:你只需要记住这些

1. 为什么 Message 很重要

在第 2 章里,我们已经能直接这样调用模型:

  • 传一个字符串
  • 或传一个 messages 列表

但一旦应用开始复杂,你会很快遇到几个问题:

  • 规则、角色、变量混在一起
  • 变量靠字符串拼接,容易乱
  • 同一个 Prompt 到处复制,不好维护
  • 后面接入历史消息、工具结果时,格式容易出错

所以第 4 章的重点,是把“输入”从随手写,升级成结构化表达。

如何组织输入,模型更稳定、可控、易维护。本章学的不是写文案技巧,而是把输入从随手写,升级成结构化、工程化表达。

2. Message 本质上是什么

Message 可以理解成:“聊天上下文里的一个标准化消息对象”。

最常见的 3 类:

  • SystemMessage:定义角色、风格、规则、边界
  • HumanMessage:用户输入的问题或任务
  • AIMessage:存模型输出的回答

理解口诀:

System 管规则,Human 管需求,AI 管结果。

3. PromptTemplate 和 ChatPromptTemplate 是干什么的

它们解决的不是“模型更聪明”,而是“你的输入更稳定”。

模板价值:工程化

  • 复用:换主题不用重写整段
  • 维护:固定规则和变量分开,不容易乱
  • 排查:能先看模板,再看变量注入后长什么样
  • 协作:团队成员更容易理解 Prompt 的结构
  • 扩展:后面接工具、接 Agent、接多轮上下文更自然

模块 2:带教式理解

1. 什么时候直接传字符串就够了

适合这些场景:

  • 一次性小测试
  • 很短的单轮问答
  • 你只是想先确认模型能不能跑通

这时你可以直接:

model.invoke("请解释什么是 RAG")

2. 什么时候要升级成 Message

一旦你开始出现这些需求,就该切换到 Message:

  • 想给模型一个稳定身份
  • 想区分系统规则和用户问题
  • 想保留多轮上下文
  • 想把工具结果也放进上下文

因为这时“谁说的话”会影响结果,不只是“说了什么”。

3. 什么时候要升级成 Prompt 模板

当你开始有变量时,就应该考虑模板:

  • {topic}
  • {style}
  • {word_limit}

如果还在靠 f-string 或字符串拼接,后面会越来越难维护。

Prompt 模板最重要的价值不是省几行代码,而是:

让输入结构可复用、可检查、可扩展。


这一章结束后,你应该能自己回答

1、为什么 LangChain 里要区分 Message,而不是都写成一个长字符串?

因为 AI 应用里不同角色的信息作用不同。SystemMessage 负责规则,HumanMessage 负责任务,分开后结构更清晰,也更方便多轮对话、工具接入和链式编排。

2、ChatPromptTemplate 解决的核心问题是什么?

它解决的是 Prompt 的工程化问题,也就是把原本临时拼接的输入,变成可复用、可填参、可维护的模板。

3、为什么说第 4 章是后续章节的基础?

因为 Tools、结构化输出、Agent、RAG 这些能力,本质上都离不开“怎么把输入上下文正确组织给模型”。

4、如果 Prompt 写得很长,最先应该优化什么?

不是先追求更花哨的写法,而是先把角色、任务、变量和输出要求拆清楚,再决定哪些放 system,哪些做模板变量。


小测试

1. SystemMessage 最核心的作用是什么?

给模型设定角色、规则、语气和边界。

2. 如果一个问题既包含固定规则,又包含用户动态输入,更适合用什么?

更适合用 ChatPromptTemplate,因为固定规则可以写进模板,动态部分可以用变量注入。

3. 为什么不建议长期依赖字符串拼接 Prompt?

因为变量一多就容易混乱,也不利于复用、排查和团队协作。