CowAgent 接入第三方网关使用 DeepSeek V4 返回空响应问题的排查与解决

简介: CowAgent 接入第三方网关使用 DeepSeek V4,LLM 持续返回空响应。经 API 直调、SSE 解析到 HTTP Client 链路逐步排查,最终定位到 `api_base` 缺少 `/v1` 前缀。

一、CowAgent 简介

CowAgent是一个开源的超级 AI 助理框架,GitHub 45,000+ Stars,是国内 AI Agent 生态中 Star 数最高的项目之一,支持多模型(DeepSeek/OpenAI/Claude 等)、多渠道(微信/飞书/网页等)接入。

Snipaste_2026-06-16_17-12-05.jpg

img


二、问题现象

在 CowAgent v2.x 的 Web 控制台配置好 DeepSeek V4 Pro 模型后,发送消息始终无法得到正常回复。查看容器日志,反复出现以下警告:

[WARNING] LLM returned empty response (stop_reason: None), retrying once...
[WARNING] LLM returned empty response after retry (no content and no tool calls)
[INFO] Generated fallback response for empty LLM output

前端表现为通用的兜底回复:"抱歉,我暂时无法生成回复……"


三、排查过程

3.1 排除 API 本身的问题

直接在容器内用 requests 调 API:

import requests

r = requests.post(
    "http://<API网关>/v1/chat/completions",
    headers={
   "Authorization": "Bearer sk-****"},
    json={
   "model": "deepseek-v4-pro", "messages": [{
   "role": "user", "content": "hi"}]},
    timeout=10
)
print(r.json()["choices"][0]["message"]["content"])
# 输出:Hi there! How can I help you today?

API 完全正常,模型能正常返回内容。

3.2 排除认证方式的问题

CowAgent 对自定义 provider 发送请求时,我怀疑认证头格式不对。分别测试了两种方式:

# 方式一:Bearer Token(推荐)
headers = {
   "Authorization": "Bearer sk-****"}
# 返回 200 ✅

# 方式二:api-key Header
headers = {
   "api-key": "sk-****"}
# 返回 401 ❌ Invalid token

确认 API 接受 Bearer Token 认证,且 CowAgent 的代码也是用 Bearer Token 发请求的。认证没问题。

3.3 排除模型本身的问题

换成 gpt-5.4 等其他非推理模型,同样返回空响应。确认不是 DeepSeek V4 Pro 特有的问题。

3.4 排除 SSE 解析的问题

CowAgent 处理流式响应时使用自定义的 _iter_sse_events 方法解析 SSE(Server-Sent Events)。我怀疑它的解析逻辑有 bug。

在容器内分别测试:

from models.openai.openai_http_client import OpenAIHTTPClient

# 测试 1:直接调用 _iter_sse_events 解析原始响应
r = requests.post(..., stream=True)
events = list(OpenAIHTTPClient._iter_sse_events(r))
print(len(events))  # 输出:33 ✅ 能正确解析

# 测试 2:通过 chat_completions 走完整链路
client = OpenAIHTTPClient(api_key="sk-****", api_base="http://<API网关>")
chunks = list(client.chat_completions(model="gpt-5.4", ...))
print(len(chunks))  # 输出:0 ❌ 一个 chunk 都没收到!

关键发现:同样的 API 响应,直接解析有 33 个事件,但走 chat_completions 完整链路却是 0。

3.5 定位根因

对比两种调用方式,发现唯一的区别在于请求的 URL:

调用方式 请求 URL 结果
直接 requests http://<API网关>/v1/chat/completions ✅ 正常
CowAgent HTTP Client http://<API网关>/chat/completions ❌ 空响应

根因:api_base 缺少 /v1 路径前缀!

CowAgent 的 URL 拼接逻辑是:

# openai_http_client.py
url = f"{api_base}{path}"  # path = "/chat/completions"

如果你的 api_base 配置为 http://<API网关>(不带 /v1),最终请求的 URL 就是 http://<API网关>/chat/completions,而正确的 API 路径是 http://<API网关>/v1/chat/completions。

大部分 OpenAI 兼容 API(如 DeepSeek 官方 https://api.deepseek.com/v1、OpenAI 官方 https://api.openai.com/v1)本身就把 /v1 包含在 api_base 里了,所以填它们的时候不会有这个问题。但接入内网 API 网关或自定义地址时,很容易漏掉这个路径前缀。


四、解决方案

将 api_base 从 http://<API网关> 改为 http://<API网关>/v1:

config.json

{
   
    "model": "deepseek-v4-pro",
    "bot_type": "deepseek",
    "deepseek_api_base": "http://<API网关>/v1",
    "deepseek_api_key": "sk-****"
}

docker-compose.yml

environment:
  DEEPSEEK_API_BASE: 'http://<API网关>/v1'

修改后重启容器即可。

Snipaste_2026-06-16_17-14-19.jpg


五、附加:DeepSeek V4 推理模型的特殊配置

除路径问题外,DeepSeek V4 Pro 作为推理模型,还需要额外配置:

5.1 开启 Thinking 模式

{
   
    "enable_thinking": true,
    "reasoning_effort": "high"
}

若不开启,CowAgent 的 Agent Bridge 会显式传 thinking={"type": "disabled"} 给 API,可能导致推理模型行为异常。

5.2 增大 max_tokens

DeepSeek V4 Pro 推理时先输出思考链(reasoning_content),再输出正文(content)。如果 max_tokens 太小,token 全消耗在推理阶段,正文就是空的。

CowAgent 的 DeepSeekBot.call_with_tools() 方法不主动传 max_tokens,需要打一个小补丁让它在 config 中读取。

修改 deepseek_bot.py 第 229 行:

# 修改前
max_tokens = kwargs.pop("max_tokens", None)

# 修改后
max_tokens = kwargs.pop("max_tokens", None) or conf().get("max_tokens")

然后在 config.json 中设置 "max_tokens": 16000,并将补丁文件挂载到容器:

volumes:
  - ./deepseek_bot.py:/app/models/deepseek/deepseek_bot.py

5.3 reasoning_content 回传

DeepSeek V4 在多轮工具调用中,要求后续请求必须原样回传 reasoning_content(即使是空字符串)。这一问题 CowAgent v2.0.8 已部分修复,确保使用最新版镜像即可。

相关社区讨论:


六、总结

排查步骤 结果
API 直接调用 ✅ 正常,排除后端问题
认证方式测试 ✅ Bearer 认证正常,排除认证问题
切换其他模型 ❌ 同样空响应,排除模型特定问题
SSE 解析 vs 完整链路 ❌ 解析正常但链路返回 0 chunk
URL 路径对比 ❌ 缺少 /v1 前缀

核心教训:CowAgent 的 api_base 填 OpenAI 兼容 API 地址时,一定要检查是否包含 /v1 路径。它在 api_base 后面直接拼接 /chat/completions,不会自动补 /v1。

相关文章
|
1月前
|
人工智能 开发者
阿里云Token Plan个人版:四个版本区别对比、费用价格、Credits计费用量及问题解答FAQ
阿里云Token Plan个人版含Lite/ Essential/Standard/Pro四档:Lite(¥39,1.15万Credits)适合轻量使用;Essential(¥79)用量翻倍;Standard(¥139,推荐)起赠Harness权益;Pro(¥499)适配高并发与海量调用。权益、额度、并发数逐级提升,详见官网。
441 2
|
SQL 存储 人工智能
ISO 专家解读 | 什么是 GQL 国际标准图查询语言
4 月 12 日,图查询标准语言 GQL(Graph Query Language)正式发布。与此同时,悦数图数据库 v5.0 宣布原生支持 GQL。GQL 一经问世,便在图行业内外引起广泛关注, ISO 数据库语言项目召集人 Keith W. Hare 发布了一篇对 GQL 的解读文章。让我们跟随专家的视角,来了解一下什么是 GQL,以及 GQL 数据库语言的功能。
|
2月前
|
API 开发工具 开发者
阿里云百炼 API Key 完整实操手册:密钥获取、权限配置、环境变量与多语言代码调用全教程
目前在使用百炼大模型服务平台进行接口开发的时候,API‑Key是访问大模型服务最重要的身份凭证,所有模型推理请求、多模态生成、Agent工具调用都依靠这串密钥完成身份鉴权。很多刚接触平台的开发者会遇到找不到密钥入口、创建失败、权限不对、环境变量配置不生效、跨地域调用报错等一系列问题。很多新手不清楚业务空间、RAM账号、自定义权限、IP白名单的相互关系,生产环境还会出现密钥泄露带来额度被盗刷的风险。本文完整讲解百炼API‑Key的核心作用,一步步演示控制台创建操作,详细解析归属账号、业务空间、权限管控规则,提供Linux、Windows多系统环境变量配置命令,curl、Python可直接运行调用
474 0
|
2月前
|
缓存 人工智能 API
Qwen3.8‑Flash完整能力解析:模型特性、API调用实操与计费规则深度拆解与成本避坑指南
Qwen3.8‑Flash依托全新MoE混合专家架构,激活参数量低,兼顾百万级上下文、原生多模态能力、稳定Agent工具调用,搭配云端缓存计费机制,在长会话、代码智能体、文档解析场景拥有突出的性价比。但它并不是全能模型,超高难度深度推理任务表现不及同系列旗舰大模型,业务落地需要结合自身业务诉求做综合评估。
939 1
|
编解码 语音技术 数据安全/隐私保护
企业微信协议语音链路的技术实现
企业微信移动端语音采用0x0602指令,通过长连接传输Silk压缩流,降低30%首包延迟。协议含固定帧头与TLV结构,支持AES加密与实时解码,网关可透明转码对接ASR系统,整体延迟约8ms,CPU占用低。
660 0
|
12月前
|
人工智能 机器人 API
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
4094 6
🤖 AstrBot 安卓 App:让每一个普通人都能拥有自己的 AI 聊天机器人
|
5月前
|
人工智能 缓存 自然语言处理
阿里云百炼接入DeepSeek-V4全解析:大模型能力、计费优惠、节省计划与全行业AI开发实战落地指南
2026年阿里云百炼正式接入DeepSeek-V4系列大模型,同步推出DeepSeek-V4-pro旗舰版、DeepSeek-V4-Flash轻量化版两套规格,API基础定价与模型官方完全统一,百万Tokens输入最低1元、输出最低2元,叠加平台专属活动包季最低4.5折。该系列原生支持百万级超长上下文,依托MoE稀疏架构降低推理算力消耗,覆盖电商、广告、短剧、AI编程、智能客服、企业办公等几乎全部AI落地场景,同时配套全模型通用节省计划,一次购买可通用于平台150余款大模型,简化多模型项目成本管控。
1560 0
|
5月前
|
人工智能 物联网 Serverless
阿里云函数计算部署 ComfyUI + Flux:5 分钟搭一个 AI 生图服务
本文介绍如何用阿里云函数计算(FC)一键部署ComfyUI+Flux模型,实现轻量、低成本AI生图:5分钟完成部署,预置模型与LoRA,按调用计费(低至0.02元/张),免运维、免GPU环境搭建,特别适合中小批量、间歇性使用场景。
1196 0
|
8月前
|
人工智能 Linux API
OpenClaw从入门到精通:新手必备技能清单、本地/云端部署与大模型接入及避坑指南
OpenClaw作为轻量化开源AI Agent平台,通过Skills系统实现能力模块化扩展,新手只需安装六大核心技能,即可快速打造全能AI助手。2026年全平台部署方案覆盖本地macOS/Linux/Windows11与阿里云环境,搭配阿里云千问与免费Coding Plan API,零成本即可实现稳定运行。遵循安全安装、循序渐进、技能组合的原则,可让OpenClaw成为日常工作与生活的高效辅助工具,真正实现AI能力自主可控、按需扩展。
1125 5
|
Kubernetes 架构师 Java
史上最全对照表:大厂P6/P7/P8 职业技能 薪资水平 成长路线
40岁老架构师尼恩,专注于帮助读者提升技术能力和职业发展。其读者群中,多位成员成功获得知名互联网企业的面试机会。尼恩不仅提供系统化的面试准备指导,还特别针对谈薪酬环节给予专业建议,助力求职者在与HR谈判时更加自信。此外,尼恩还分享了阿里巴巴的职级体系,作为行业内广泛认可的标准,帮助读者更好地理解各职级的要求和发展路径。通过尼恩的技术圣经系列PDF,如《尼恩Java面试宝典》等,读者可以进一步提升自身技术实力,应对职场挑战。关注“技术自由圈”公众号,获取更多资源。

热门文章

最新文章