Appearance
消息结构与角色
chatbot 能稳定工作,靠的不是“会聊天”这三个字,而是消息结构足够清楚。
这节课解决什么问题
system、user、assistant这些角色分别负责什么- 为什么 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 的区别是什么
- 为什么消息结构会影响回答效果
