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 本身突然崩了。

相关推荐
console.log('npc')3 小时前
第 1 章 项目概述与环境搭建
前端·人工智能·大模型
IT_陈寒3 小时前
React组件莫名重渲染?你可能忘了这个小细节
前端·人工智能·后端
天远API3 小时前
零信任架构实战:基于天远公安二要素政务版构建自动化不动产交易与契税核算实名核实网关
人工智能·架构·自动化·php
朋友圈自动点赞工具3 小时前
浏览器端AI模型实测:五个可用场景
人工智能
承渊政道3 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(从ChatGLM本地化到LoRA、PEFT的高级微调)
android·人工智能·pytorch·chatglm·本地化部署·大模型开发与微调
盟接之桥3 小时前
盟接之桥谈线束数字化-按单入按单出:线束企业库存管理的破局之道
大数据·前端·网络·数据库·人工智能·制造
Summer-Bright3 小时前
浏览器成了AI应用的新入口:智能体接管标签页之后,三本账谁买单
人工智能·chatgpt·agent·浏览器·智能体
xiaohaiAIgeo4 小时前
【2026年】紧急医疗运送送返:保额怎么看、多少够用
人工智能·科普知识
ZDGJ60994 小时前
国际期货交易中如何选择交易时机?
区块链
阿基拉de_Akir4 小时前
设计系统负责人:编译工作流中的上下游要求,评审的原材料从哪来,评审的产物给谁用
人工智能