Skip to content

消息结构与角色

chatbot 能稳定工作,靠的不是“会聊天”这三个字,而是消息结构足够清楚。


这节课解决什么问题

  • systemuserassistant 这些角色分别负责什么
  • 为什么 prompt 不是一段孤立文本,而是一组结构化消息
  • 为什么消息结构会直接影响回答质量

三种最基本的消息角色

  • system:稳定规则。告诉模型角色、边界、语气、输出格式。
  • user:当前任务。代表用户这次提出的问题。
  • assistant:历史回复。保存模型之前已经说过的话。

把它们放在一起,模型看到的就不再是一句孤立提问,而是一段有上下文的对话。


一个最小多轮例子

ts
const messages = [
  {
    role: 'system',
    content: '你是一个简洁的编程助理。',
  },
  {
    role: 'user',
    content: '解释一下什么是闭包',
  },
  {
    role: 'assistant',
    content: '闭包就是函数和它定义时所处作用域的组合。',
  },
  {
    role: 'user',
    content: '给我一个 JavaScript 例子',
  },
]

模型能理解“给我一个例子”是在接着上一轮继续说,就是因为前面的消息都还在。


对实际产品有什么影响

  • system prompt 负责稳定规则,不适合放临时问题
  • user prompt 负责当前需求,不适合塞长期规则
  • assistant 历史会直接影响后续回答,所以不能随便保留所有内容

这也是为什么一个 chatbot 做久了,重点一定会从“怎么问”转向“消息怎么组织”。


本节产物

  • 一份多轮 messages 样例
  • 一份 system/user/assistant 角色分工说明
  • 一份消息组织错误案例对照表

课堂实作

  • 把同一个需求分别放进 system 和 user,观察差异
  • 手写一组两轮对话 messages
  • 调整消息顺序,观察回答是否变得不稳定

并入项目

这一课会直接影响后面 chatbot、Agent、RAG 的消息组织方式。

面试会怎么问

  • system prompt 和 user prompt 的区别是什么
  • 为什么消息结构会影响回答效果

大齐 AI 课堂 · 程序员的 Agent 开发课