神秘小尾巴:AI 回复末尾的模型名和百分比从哪来?
本文最后更新于 2026年7月23日 凌晨
一个让人尴尬的发现
某天深夜,你打开 AI 聊天窗口,输入了一个问题。AI 回答得很认真,最后还带了一句:
1 | |
你盯着那行小字发呆。”谁让我签名的?”
不是幻觉,也不是 AI 的恶作剧。这是 Hermes Agent(以及大部分大模型中转 API)的一个默认行为——在每条回复末尾附上模型名和推理成本。对开发者来说这是个便利信息;但对用户、对客户、对外部调用方来说,这是一条不应该出现的元数据泄漏。
它从哪来的
这个问题的根因不在 Hermes,而在模型中转 API 的响应包装层。
大部分第三方中转服务(new-api、one-api 及其派生)在转发模型响应时,会额外追加一行 metadata 到内容末尾。这行信息通常包含:
- 模型名:当前请求使用的实际模型 ID
- 百分比/Token 数:响应消耗的 token 或成本占比
- 有时还有路由信息、provider 标识
格式因中转服务而异,但行为一致——追加到 LLM 原始输出后面,不经过 content filtering。
Hermes 在接收这条响应时,看到的是完整文本(AI 生成的回答 + API 追加的 metadata),然后原样展示给用户。
为什么它出现在回复末尾
中转 API 的设计思路是”信息透明”:让调用方知道这条回复用了哪个模型、花了多少成本。但这个假设在两个场景下会失效:
- 直接给用户看:用户不需要知道背后用的是什么模型
- API 链式调用:下游 Agent 把 metadata 当作内容的一部分继续处理,导致污染
更隐蔽的是:如果你在写博客、生成 JSON、或做结构化输出,metadata 会破坏格式。比如你要求 AI 输出纯 JSON,但它返回:
1 | |
下游 JSON parser 直接炸掉。
三种解决方式
方案 1:关掉中转 API 的 metadata 追加(推荐)
在 new-api 或 one-api 的配置中找到 metadata 开关。不同版本名称不同:
- new-api:
app.json或环境变量ADD_MODEL_INFO→ 设为false - one-api:
config.yaml中enable_request_log相关字段 - openai-compat 中间件:检查
append_model_info或response_suffix
这是最干净的解法——从源头消除,所有调用方自动受益。
方案 2:Hermes 端响应后处理
如果中转服务无法改配置(比如用的公共中转),可以在 Hermes 配置中启用响应过滤。在 profile 的 config.yaml 中加入:
1 | |
这会通过正则把末尾的 metadata 行去掉,还原纯净的 AI 回复。
方案 3:Prompt 级绕过
让 AI 在输出中主动排除 metadata:
1 | |
效果不稳定——metadata 是 API 层追加的,不是 AI 生成的,prompt 指令对它无效。但这条可以作为保险措施,防止某些中转服务让 AI 自己签名。
踩过的坑
坑 1:写博客时 metadata 混进文章
第一次遇到这个问题是在 blog-helper 写稿阶段。draft.py 生成初稿后,审核脚本发现文章末尾多了一行 [Qwen2.5-32B-Instruct | 0.28]。这行文字不会被用户看到(它只在 AI 回复中),但如果 draft.py 把整段回复写入文件,metadata 就变成正文的一部分。
解决:在 draft.py 的 LLM 调用后加一层 metadata 剥离,再写入文件。
坑 2:JSON 结构化输出被污染
当 AI 以 JSON 格式返回结构化数据时,metadata 后缀会让 JSON 解析失败。这个问题在 API 调用链中特别隐蔽——下游系统抛异常,但异常信息里看不到 metadata(它已经被当作正文处理了)。
解决:方案 1 或方案 2,不要依赖方案 3。
坑 3:多模型路由时 metadata 暴露了隐藏配置
如果你在用 Hermes 做模型路由(根据任务类型选择不同模型),metadata 会在回复中暴露你实际用的是哪个模型。对内部系统可能无所谓,但对面向客户的服务,这意味着泄露了后端架构细节。
解决:方案 1 最彻底。
参考文献
小结
AI 回复末尾的”神秘小尾巴”不是 AI 的 bug,而是中转 API 设计上的信息过度透明。解决它不需要重新训练模型,只需要在数据流的适当位置加一层过滤:
- 首选:中转 API 关掉 metadata 追加(一劳永逸)
- 次选:Hermes 端配置响应清理(适配无法改配置的公共中转)
- 兜底:Prompt 指令 + 后处理正则(多一层保险)
这个细节很容易被忽略,直到它出现在客户面前、破坏 JSON 输出、或在博客文章里留下不该有的痕迹。建议所有用中转 API 的 Hermes 用户在部署时确认 metadata 状态——别等它出现在回复末尾才想起去关。