问题
运行面向真实客户的销售型 Agent 的团队,在 structured tool calling 下遇到两类脏输出:一是模型把内部推理/自我指令拼接进工具调用参数值("concatenated its own internal meta-commentary / self-instruction into the text field"),二是模型完全绕过工具调用、把本应是参数的 JSON 以纯文本输出,且前缀带有无关的 CJK 标点字符。这些畸形内容会直接发送给 Facebook Messenger 上的真实客户。目前的应对是在应用层堆叠多层 fallback 解析和启发式过滤(从文本中抽 JSON、分块、空字面量检测),既脆弱又维护成本高。
目标用户
在生产环境运行面向客户的 Agentic 销售 Agent 的开发团队(使用 OpenAI API + LangChain/LangGraph,通过 Facebook Messenger 触达客户)。从信号看是少数派的深度工程团队,属于小众但痛点明确的开发者群体,市场规模有限且集中在 Agent 工程化社区。
解决方案
- 工具参数清洗器:识别并剥离混入参数值的模型自我指令/元评论
- JSON-as-text 检测与恢复:识别模型未调用工具、以纯文本输出 JSON 的情况(含 CJK 标点前缀特征),自动抽取参数并补发正确的工具调用
- 自动重试策略:校验失败时按规则重试或重问模型,而非直接放行
- 可配置白名单/校验 schema:按工具定义参数合法性
- AI 的角色:利用模型对参数 schema 的理解做语义级校验,配合确定性的 JSON 解析与正则规则,二者结合判断输出是否被污染
为什么是现在
信号显示该问题出现在 gpt-5.6-luna 等新模型的 structured tool calling 场景下,属于较新的模型行为问题,现有框架尚未提供现成的防护层,团队只能自己堆 fallback 解析。(注:此判断仅基于同日两条信号,置信度低。)
MVP 范围
第一版只做:
- 针对 OpenAI API + LangChain/LangGraph 管线的接入层(SDK 或代理)
- 工具参数清洗:剥离内部推理/自我指令文本
- JSON-as-text 检测:识别模型未调用工具、以纯文本吐出参数结构的情况,自动抽取并转成正常调用
- 失败自动重试/重问模型一次
- 命中异常时的日志与告警
第一版不做:
- 不做模型微调或提示词优化服务
- 不支持多模型/多框架(仅覆盖信号中出现的 OpenAI 生态)
- 不做完整的 Agent 可观测性平台
风险
- 上游依赖风险(最大): 根因在 OpenAI 模型侧(gpt-5.6-luna),官方修复后中间件价值可能归零
- 平台依赖: 深度绑定 OpenAI API 与 LangChain/LangGraph 生态,接口变动需持续跟进
- 启发式误判: 清洗规则过严可能误删合法的客户内容,过松则仍漏脏输出
- 证据薄弱: 仅同一来源同一天的两条低互动帖,痛点的普遍性和付费意愿未经验证
信号证据
这张卡片依据的原始讨论。摘录保持原文,点“原文”查看上下文。
OpenAI 开发者社区 · API9月27日痛点▲ 12 条评论
“The model did not call any tools at all () and instead emitted the entire JSON structure as plain text in the , prepended with CJK punctuation characters”
模型完全绕过工具调用,把本应是工具参数的 JSON 以纯文本形式输出,且前缀带有无关的 CJK 标点字符,导致真实客户收到畸形内容。原文
OpenAI 开发者社区 · API9月27日痛点▲ 12 条评论
“The model correctly called the tool, but concatenated its own internal meta-commentary / self-instruction into the text field”
GPT 模型在 structured tool calling 下会把内部推理/自我指令泄漏进工具调用参数值,导致畸形内容发送给真实客户。原文