Skip to content

System prompt设计

System Prompt就是Agent的“操作系统“,所有的底层规则都写在这里

指责可以归为五类

  • 角色定义和行为准则
    • 告诉模型“你是谁”,约束语气、风格、边界
  • 工具使用规范和约束
    • agent最核心的能力是能调用工具,System prompt要告诉模型有哪些工具能用,每个工具怎么调,什么场景用什么
  • 输出格式要求
    • 规定模型以什么格式回复,比如json还是markdown
  • 安全与权限控制
    • 设定模型不能做什么,给ai划红线

如何解决System Prompt越来越长的问题

  • 拆,把SystemPrompt按照职责拆成独立模块,每个模块管一件事
  • 选,根据当前任务场景只注入相关模块,不需要的不用塞进去
  • 扔,把稳定不变的知识从prompt拿出去,放到外部文件或者知识库里,需要的时候让ai调工具自己去读

模块化组装方案

以OpenClaw为例,它的system prompt就是拆分成十几个独立模块

  • 第一层 基础身份与安全(每次必加)
    • 身份生命
    • 安全红线
    • 工具列表
    • 工具调用风格,例如敏感工具要先跟用户确认
  • 第二层 场景能力模块(按需加载)
    • 技能提示,告诉agent有哪些技能可以激活
    • 记忆召回,指导模型回答前先搜索历史记忆,避免失忆
    • 消息路由
    • 语音合成
  • 第三层 动态运行时的上下文(每次请求动态生成)
    • 当前时间、工作目录、操作系统等环境信息
    • 授权白名单列表
    • 沙箱信息
    • 项目配置文件的内容

还可以利用分级加载

  • 完整模式:加载全部模块,主agent用
  • 精简模式:子agent用,只保留工具列表、工作目录、运行时信息等核心模块,不需要路由、心跳等
  • 最小模式:只返回一句身份证明

插件化扩展机制(扩展相关)

如果要支持第三方插件向system prompt注入内容

直接弄个hook

  • 替换系统提示
  • 系统提示头部追加
  • 系统提示尾部追加
  • 对话层注入

image.png

最后更新于: