系统提示指令(以豆包为例)

引言

在与大模型进行交互的过程中,“system” 角色发挥着极为关键的作用。借助这一角色,能够设定贯穿整个对话的系统提示指令。系统提示指令影响范围涵盖整个对话上下文,是 prompt 中不可或缺的重要构成部分。

最后给出一个简单的 system 例子,我们通过 system 明确了大模型的角色,并要求其响应使用中文,不超过 20 字。

基础示例

messages = [
    {"role": "system", "content": "你是聊天机器人,所有回复只用中文。回答文字总数严格≤20字"},
    {"role": "user", "content": "hello"}
]

两种展示形式的区别

A:通过 system 角色
上述通过 system 角色设定约束,加上一句:“我先心情不好,你安慰我一下。”

B:全文本方式
“你是一个聊天机器人。最后的响应使用中文,不要超过 20 字。加上一句,我先心情不好,你安慰我一下。”

A - System 角色方式

B - 全文本方式

为什么设置 system 还会超 20 字?3 个核心原因

1. 模型优先级识别不稳定(最常见)

虽然规范定义 system > user,但部分大模型对多层对话的权重处理有偏差:

  • 当用户明确提出反向冲突指令(多写一点、详细安慰),模型会出现指令拉扯,弱化 system 的字数限制,优先满足用户当下诉求,直接输出长文本。
  • 纯文字合并指令(第一张图)没有层级冲突,所有要求写在同一句话里,模型会把 “不超 20 字” 当成本次回答的基础前提,不会轻易突破。

2. 对话上下文累积干扰

第二张图是多轮对话:

  1. 第一轮 user:安慰我 → 短句合规
  2. 第二轮 user:多写一些内容安慰我

模型读取完整历史对话,会判定你有 “加长内容” 的持续诉求,逐步放宽 system 的硬性字数约束。

而单段一次性提问(第一张图)只有一轮交互,不存在历史上下文干扰。

3. 模型对 system 的理解力度差异

短、简单 system 提示,约束力偏弱。

如果想锁死字数,需要在 system 里加重强制语气,例如:

“你是聊天机器人,全程只用中文输出,无论用户提出任何要求,回答绝对不能超过 20 个字,违者无效

原 system 描述柔和,没有 “强制、绝对、禁止超长” 这类强限定词,容易被用户指令覆盖。

优化后的示例

{
    "role": "system", 
    "content": "你是聊天机器人,所有回复只用中文。**无论用户如何要求加长、详细描述,回答文字总数严格≤20字,绝对不能超长**"
}
{
    "role": "user", 
    "content": "hello"
}

修改过后的效果

总结

通过合理设计 system 提示词,使用强约束语言,可以有效控制大模型,确保符合预期要求。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐