system、user、assistant 三种消息角色各起什么作用?
system 定义行为边界和稳定规则,user 是用户输入,assistant 是模型此前的回复;多轮对话就是把这三类消息按顺序组成数组发给模型。
完整回答
工程要点:稳定、高优先级的规则放 system(身份、输出格式、禁止事项),本次任务和材料放 user,历史轮次按 user 与 assistant 交替保留,不要把 system 规则复制进每条 user。指令冲突时模型一般更服从高优先级角色(具体层级以所用模型文档为准),但安全底线不能只靠角色顺序,还要配合输入隔离和输出校验。
加分信息
- 提到角色优先级,并指出不能单靠它防注入
- 知道历史消息同样占用 token 预算
常见问题
- 把所有内容塞进一条 user 消息
- 把上一轮 assistant 回复改写成 user 角色,破坏对话结构
面试官可能追问
- 上下文快超限时,三类消息你优先裁剪哪一类?
- system 和用户指令冲突时会发生什么?
结合 Prompt 调试与回归台:system 契约与 user 输入分离,回归时只替换 user 样例。