hermes agent出现Empty response原因和解决方案

这个不是你代码逻辑本身炸了。

而是:

模型提供商返回了"空响应(Empty response)"

日志已经写得很明显:

复制代码
Empty response (no content or reasoning)

意思:

复制代码
模型 API 返回成功了
但 response.content 是空的

Hermes Agent 检测到:

  • 没有文本

  • 没有 reasoning

  • 没有 tool call

于是自动 retry。

但连续 3 次都是空。

最终:

复制代码
No fallback providers configured

因为你没配置备用模型。


一、最常见原因(按概率排序)


1. GLM 服务端抽风(概率最高)

你现在用的是:

复制代码
model=glm-4.5-air
provider=zai

也就是:

Zhipu AI 的 GLM API。

这种情况非常常见:

  • 模型超时

  • 推理卡死

  • 返回空 chunk

  • SSE 流中断

  • 网关错误

尤其:

AIR 小模型最容易。

因为:

  • 并发高

  • 限流重

  • 容量紧张

很多 Agent 框架都会遇到。


二、为什么"前面还好好的"

这是典型:

Provider 临时不稳定。

大模型 API 经常:

复制代码
前 10 分钟正常
后面突然空响应

原因可能:

  • 服务端扩容

  • 限流

  • 区域节点问题

  • token 峰值

  • websocket/SSE 中断

不是你本地突然坏了。


三、日志里最关键的一句

复制代码
No fallback providers configured

意思:

没有备用模型。

所以:

GLM 一挂:

Agent 直接死。


四、正确做法(非常重要)

你做 Agent:

一定要配置 fallback model。

例如:

复制代码
primary:
  provider: zai
  model: glm-4.5-air

fallbacks:
  - provider: openai
    model: gpt-4.1-mini

  - provider: anthropic
    model: claude-sonnet-4

  - provider: deepseek
    model: deepseek-chat

这样:

复制代码
GLM 空响应
→ 自动切 DeepSeek
→ 再不行切 OpenAI

这才是生产级 Agent。


五、为什么会出现"空响应"而不是报错

因为很多 provider:

HTTP 是 200 OK

但 body 是:

复制代码
{
  "choices": []
}

或者:

复制代码
{
  "content": ""
}

框架层只能判断:

复制代码
没内容

所以打印:

复制代码
Empty response

六、还有一种可能:上下文炸了

如果你:

  • conversation 太长

  • tool call 太复杂

  • MCP 输出太大

  • prompt 超长

GLM 有时会:

直接 silent fail。

尤其国产模型。

表现就是:

复制代码
返回空 content

不是 context overflow 明确报错。


七、Hermes Agent 为什么会 retry

因为 Hermes 里通常有:

复制代码
if not content and not reasoning:
    retry()

也就是:

复制代码
空内容 = 失败

所以自动重试 3 次。


八、怎么判断到底是哪种问题

你可以看:


如果是偶发

重启后恢复:

99% 是 provider 抽风。


如果稳定复现

每次到某段对话都炸:

大概率 context/prompt 问题。


九、建议你现在做的事


1. 先换模型测试

先试:

  • DeepSeek

  • Qwen

  • OpenAI

  • Claude

如果正常:

说明 Hermes 没问题。

是 GLM 问题。


2. 打印原始 response(重点)

你要看:

复制代码
print(raw_response)

而不是 Hermes 包装后的。

很多时候会发现:

复制代码
{
  "id": "...",
  "choices": []
}

或者:

复制代码
{
  "content": null
}

3. 降低上下文长度

很多 Agent:

长期对话后:

context 会指数膨胀。

GLM 比较容易挂。

可以:

  • summary memory

  • truncate

  • sliding window


4. 检查 streaming

很多 provider:

stream 模式最容易空响应。

尤其:

  • SSE 中断

  • chunk 丢失

你可以试:

复制代码
stream=False

看看还会不会。


十、国产模型很容易出现的问题

很多国产 provider:

并不像 OpenAI 那么稳定。

常见:

问题 表现
空 content 最常见
reasoning 缺失 经常
tool call 格式错误 很多
stream 中断 高频
JSON 不合法 常见
finish_reason 异常 常见

Agent 框架里:

fallback 是必须的。


十一、如果你是用 OpenAI SDK 兼容层

还有一个坑。

有些 provider:

虽然号称:

复制代码
OpenAI-compatible

但实际:

并不完全兼容。

例如:

  • delta.content 为 null

  • tool_calls 缺字段

  • choices 为空数组

Hermes 可能没适配。


十二、一句话总结

你这个问题本质是:

GLM-4.5-air 返回了空响应,Hermes 重试 3 次后仍失败,而你没有配置 fallback provider。

最可能原因:

  1. GLM 服务端临时不稳定(最高概率)

  2. 上下文过长导致 silent fail

  3. stream 模式 chunk 丢失

  4. OpenAI 兼容层不完整

  5. provider 限流/风控

而不是:

你电脑坏了或者 Hermes 本身突然崩了。

相关推荐
rcc862816 小时前
企业AI转型指南:从降本增效到收益增长的双重突破
人工智能·决策选型
懂AI的老郑16 小时前
YOLOv26联手大模型,开启智能视觉新时代
人工智能·yolo·目标跟踪
火山引擎开发者社区1 天前
火山引擎发布《企业级 ArkClaw 安全白皮书》
人工智能
阿里云大数据AI技术1 天前
Hologres AI Function 文本分类实战:从提示词设计到 KV-Cache 调优,全程 SQL 搞定
人工智能·sql
code_pgf1 天前
AI-Agent记忆机制分析
大数据·人工智能
阿拉斯攀登1 天前
安全与可控性:输出校验、权限控制
人工智能·chatgpt·agent·memory·claude·知识库·向量数据库
冬奇Lab1 天前
每日一个开源项目(第152篇):SAG - 用 SQL JOIN 代替 PageRank 做多跳 RAG 检索
人工智能·开源
冬奇Lab1 天前
Workflow 系列(09):主流框架对比——Prompt-based、LangGraph、Temporal、n8n 如何选
人工智能·工作流引擎