智能体嵌入

传入上下文

把宿主页面、用户和业务数据交给智能体的五个渠道,以及各自的可信度。

智能体需要知道「这位用户是谁、他在看什么、能调用你的什么系统」。有五个渠道,按可信度和稳定性选用。

先读这两条

指令与 system.message 不是秘密,模型可能被用户要求复述,不要在里面放密钥、内部规则或不想让用户看到的内容。

工具调用前的询问确认只是帮终端用户确认自己的意图,不是安全手段。权限要由工具一侧按终端用户鉴权。

渠道谁写何时生效可信度
1. 智能体指令你,在控制台每个会话最高,属于智能体本身
2. 覆盖指令你的后端,签发令牌时该令牌的会话高,仅策略允许时可用
3. system.message你的后端令牌签发时,或会话进行中可信的宿主上下文
4. 页面上下文页面每条用户消息不可信
5. 工具(MCP)你的系统调用时取决于你的鉴权

1. 智能体指令

在控制台配置,写智能体的角色、口吻和边界,所有会话共享。适合不随用户变化的内容。

2. 覆盖指令

签发令牌时传 agent_override: { "system": "…" },替换这张令牌所属会话的指令;null 表示清空。仅当嵌入策略允许覆盖时可用,否则签发失败(EMBED_FIELD_NOT_ALLOWED)。适合按客户、按租户换一套话术。

3. system.message

宿主向智能体传入的可信事实,例如用户姓名、会员等级、语言。有两种写入方式:

  • 签发令牌时:system_message 字段,文本块数组,合计不超过 8192 字节。会话开始后,这些内容在下一次模型请求里出现。
  • 会话进行中:用 API Key 向会话发送 system.message 事件,内容为文本块数组。每次不超过 8192 字节,同一会话累计不超过 65536 字节;会话已归档时被拒绝。

多次写入会累积为宿主上下文,在系统提示里放在智能体指令之后,包在 <host_context> 标签中,压缩历史时也不会丢。

{ "type": "system.message", "content": [{ "type": "text", "text": "用户刚完成了订单 A1024 的支付" }] }

只有持有 API Key 的宿主能发 system.message;终端用户令牌不能。

4. 页面上下文

Kit 会在每条用户消息里附带页面登记的上下文(例如正在看的课程),体积上限 4096 字节、最多 32 项,并标记为不可信:它来自浏览器,用户可以改。需要可信事实时请用渠道 3。登记方法见前端工具与页面上下文。

5. 工具

智能体可以通过 MCP 调用你的系统,查订单、发起退货。平台在调用时会附带三个请求头:

请求头含义
X-Praxis-External-User-Id令牌里的 external_user_id,即你的终端用户
X-Praxis-Agent-Id智能体 id
X-Praxis-Session-Id会话 id

只有会话属于某位终端用户时才带这些头。你的工具必须按 X-Praxis-External-User-Id 限定数据范围,例如只返回这位用户自己的订单。不要依赖模型传来的参数确定用户:它可以被诱导。「好物集」演示站的订单 MCP 就是这样做的。

选哪个

  • 所有用户都一样:用渠道 1。
  • 按用户或租户变化的事实,必须可信:用渠道 3。
  • 需要换一整套指令:用渠道 2。
  • 要读写你的数据:用渠道 5,并在工具里鉴权。
导出

本页内容