神秘小尾巴:AI 回复末尾的模型名和百分比从哪来?

本文最后更新于 2026年7月23日 凌晨

一个让人尴尬的发现

某天深夜,你打开 AI 聊天窗口,输入了一个问题。AI 回答得很认真,最后还带了一句:

1
2
3
...这就是我的建议。

[Qwen2.5-72B-Instruct | 0.34]

你盯着那行小字发呆。”谁让我签名的?”

不是幻觉,也不是 AI 的恶作剧。这是 Hermes Agent(以及大部分大模型中转 API)的一个默认行为——在每条回复末尾附上模型名和推理成本。对开发者来说这是个便利信息;但对用户、对客户、对外部调用方来说,这是一条不应该出现的元数据泄漏

它从哪来的

这个问题的根因不在 Hermes,而在模型中转 API 的响应包装层

大部分第三方中转服务(new-api、one-api 及其派生)在转发模型响应时,会额外追加一行 metadata 到内容末尾。这行信息通常包含:

  • 模型名:当前请求使用的实际模型 ID
  • 百分比/Token 数:响应消耗的 token 或成本占比
  • 有时还有路由信息、provider 标识

格式因中转服务而异,但行为一致——追加到 LLM 原始输出后面,不经过 content filtering

Hermes 在接收这条响应时,看到的是完整文本(AI 生成的回答 + API 追加的 metadata),然后原样展示给用户。

为什么它出现在回复末尾

中转 API 的设计思路是”信息透明”:让调用方知道这条回复用了哪个模型、花了多少成本。但这个假设在两个场景下会失效:

  1. 直接给用户看:用户不需要知道背后用的是什么模型
  2. API 链式调用:下游 Agent 把 metadata 当作内容的一部分继续处理,导致污染

更隐蔽的是:如果你在写博客、生成 JSON、或做结构化输出,metadata 会破坏格式。比如你要求 AI 输出纯 JSON,但它返回:

1
2
{"result": "success"}
[Qwen2.5-72B-Instruct | 0.34]

下游 JSON parser 直接炸掉。

三种解决方式

方案 1:关掉中转 API 的 metadata 追加(推荐)

在 new-api 或 one-api 的配置中找到 metadata 开关。不同版本名称不同:

  • new-apiapp.json 或环境变量 ADD_MODEL_INFO → 设为 false
  • one-apiconfig.yamlenable_request_log 相关字段
  • openai-compat 中间件:检查 append_model_inforesponse_suffix

这是最干净的解法——从源头消除,所有调用方自动受益。

方案 2:Hermes 端响应后处理

如果中转服务无法改配置(比如用的公共中转),可以在 Hermes 配置中启用响应过滤。在 profile 的 config.yaml 中加入:

1
2
3
4
5
6
llm:
response_cleanup:
strip_metadata: true
patterns:
- '\[\s*[A-Za-z0-9\-.]+\s*\|\s*[\d\.]+\s*\]'
- '\[.*?(\d+%|[\d\.]+ tokens?)\]'

这会通过正则把末尾的 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 最彻底。


参考文献

  1. Hermes Agent 配置文档
  2. new-api 项目文档(OpenAI 兼容中转)
  3. one-api 项目文档
  4. OpenAI API 响应格式规范

小结

AI 回复末尾的”神秘小尾巴”不是 AI 的 bug,而是中转 API 设计上的信息过度透明。解决它不需要重新训练模型,只需要在数据流的适当位置加一层过滤:

  1. 首选:中转 API 关掉 metadata 追加(一劳永逸)
  2. 次选:Hermes 端配置响应清理(适配无法改配置的公共中转)
  3. 兜底:Prompt 指令 + 后处理正则(多一层保险)

这个细节很容易被忽略,直到它出现在客户面前、破坏 JSON 输出、或在博客文章里留下不该有的痕迹。建议所有用中转 API 的 Hermes 用户在部署时确认 metadata 状态——别等它出现在回复末尾才想起去关。


神秘小尾巴:AI 回复末尾的模型名和百分比从哪来?
https://normdist.com/2026/07/23/ND-20260723-003-mysterious-model-name-suffix/
作者
小瑞
发布于
2026年7月23日
许可协议