Tool Result Context
Tool Result Context 是工具执行结果注入到 LLM 上下文中的格式和策略。工具结果可能很大,需要压缩、格式化和结构化后再注入。
#concept
#evergreen
#ai
[!info] related notes
- 所属 MOC: Context Engineering MOC
- 相关: Tool Runtime, Context Compression
Tool Result Context
一句话定义
Tool Result Context 是工具执行结果注入到 LLM 上下文中的格式和策略。工具返回的结果可能是 JSON、文本、表格、错误信息,需要格式化后再注入。
核心原理
注入格式
import json
# 局部消息片段:messages 和 result 由调用方提供
# 工具结果作为 tool message 注入
messages.append({
"role": "tool",
"tool_call_id": "call_xxx",
"content": json.dumps(result, ensure_ascii=False, indent=2)
})
结果预算与压缩
先在工具端限制查询条数、字段和响应体大小,再按模型上下文预算选择摘要或分页。保留调用 ID、来源标识与截断说明,避免把部分结果写成完整结论。
字符数不是 token 数:max_tokens × 4 只能是粗略估算,中文、代码、转义和模型 tokenizer 都会改变比例。严格预算需对最终消息连同 envelope、历史与预留输出一起计数;具体模型计数由适配层负责。
归一化与上下文的区别
结果归一化保留执行状态和数据结构;本篇决定哪些字段进入模型、占多少预算以及如何表达省略。不要复制一套把 JSON 直接切成半截的序列化逻辑。
tool message 片段只表示一种接口格式,必须关联真实待回应的 tool_call_id,且结果已通过权限与字段筛选。其他模型接口使用各自的结果消息契约。
错误和不可信内容
反馈稳定错误类别、可公开摘要和追踪 ID,不直接回传 str(exception)。检索页、工具输出中的指令仍是不可信数据,不能升级为系统指令或执行授权。
常见坑
- 先取无限结果再截断:上下文变小了,但网络与内存仍可能失控。
- 按字符切结构化数据:JSON 可能失效,字段、引用与结论也可能被截断。
- 省略却不标记:模型把前十项误判为全部结果。
- 把固定大小当容量结论:10KB 是否超预算取决于模型、已有上下文与预留输出。