DeepAI Paper API 中转站,OpenAI Compatible API,代码 Agent 教程,客户端接入,错误排查 n8n 接入 DeepAI API 中转站:Tools Agent 报 Cannot use tools with stream 怎么排查

n8n 接入 DeepAI API 中转站:Tools Agent 报 Cannot use tools with stream 怎么排查

n8n 的 AI Agent / Tools Agent 很适合把数据库查询、CRM 操作、日程创建和内部系统 API 串成自动化流程。但当它通过 OpenAI-compatible Chat Model 接入 DeepAI API 中转站 或其他模型网关时,普通聊天能通,带工具调用却失败,是很常见的生产排查题。一个典型错误是:Cannot use tools with stream

n8n Tools Agent 接入 DeepAI API 中转站报 Cannot use tools with stream 的排查流程
Tools Agent 的工具调用链路里,如果目标 OpenAI-compatible 服务不支持 stream:truetools 同时使用,需要切到非流式请求或升级包含修复的 n8n 版本。

GitHub Issue 背景:工具调用遇到 stream:true 直接 500

这个问题来自 n8n Issue #13112。用户在 n8n 1.76.1 中搭了一个 AI Agent(Tools Agent)工作流,工具用于执行 SQL 查询,OpenAI-compatible 端点后面接的是 LLaMA.cpp。AI Agent 发起请求后,服务端返回:

{"code":500,"message":"Cannot use tools with stream","type":"server_error"}

用户把 n8n 发出的 POST 请求抓出来,把 "stream": true 改成 "stream": false 后用 Postman 重发,流程就能正常工作。这说明问题不是 API Key、Base URL 或工具 schema,而是该 OpenAI-compatible 后端不支持在流式输出里同时处理工具调用。

修复线索:PR #16888 处理了 Tools Agent 的 streaming 问题

Issue 后续评论标记为 PR #16888 修复。PR 摘要里提到,在 Tools Agent 创建自定义 RunnableSequence 时,streamRunnable 没有正确传给 AgentExecutor,因此修复中显式设置了 streamRunnable: falsesingleAction: false

这点对 DeepAI API 中转站用户很重要:中转站能把 n8n 请求统一转发到兼容模型服务,并提供日志、鉴权、限流和模型路由。但如果客户端在工具调用链路里发送了目标后端不支持的参数组合,例如 tools + stream:true,中转站不能凭空判断业务意图。正确做法是让 n8n 侧进入非流式工具调用,或升级到包含相关修复的版本。

错误请求和正确请求有什么差别

失败请求通常类似下面这样:既带了工具定义,又开启了流式输出。

{
  "model": "your-model",
  "messages": [
    {"role": "user", "content": "查询最近 10 条订单"}
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "query_sql",
        "parameters": {
          "type": "object",
          "properties": {
            "sql": {"type": "string"}
          },
          "required": ["sql"]
        }
      }
    }
  ],
  "stream": true
}

对不支持工具流式调用的后端,工具链路应改为非流式:

{
  "model": "your-model",
  "messages": [
    {"role": "user", "content": "查询最近 10 条订单"}
  ],
  "tools": [...],
  "stream": false
}

这不是说所有模型都不能同时支持 streaming 和 tools。有些服务可以在流式响应里分块返回 tool call,有些服务不支持。排查时要以目标模型服务和中转站日志中的实际错误为准。

DeepAI API 中转站场景下的排查步骤

  1. 确认 n8n OpenAI Chat Model 的 Base URL 写到 https://api.deepai.wang/v1,不要写成 /v1/chat/completions
  2. 先跑一个不带 Tools 的普通 AI Agent 请求,确认 Key、模型 ID 和 DeepAI API 中转站路由可用。
  3. 再接入一个最小工具,例如只返回固定字符串或查询一条 SQL,确认错误是否只在工具调用时出现。
  4. 查看 DeepAI API 中转站日志,确认请求体里是否同时存在 toolsstream:true
  5. 升级 n8n 到包含 Tools Agent streaming 修复的版本;若仍使用旧版,则避免在工具调用场景强制流式输出。

如果后台日志里没有请求,问题还在 n8n 到中转站的连接层;如果后台有请求且错误是 Cannot use tools with stream,重点就转到客户端发送的参数组合和目标模型服务能力。

不要把它和工具 schema 错误混淆

n8n、Dify、Cherry Studio 这类 Agent 工具接入中转站时,工具调用失败至少有三类常见原因:

  • 连接错误:Base URL、Key、模型 ID、代理网络配置错误,通常表现为 401、404 或后台无日志。
  • 工具 schema 错误:例如数组参数缺少 items,表现为 invalid_function_parameters 或类似校验失败。
  • 流式工具调用错误:请求有 tools,同时有 stream:true,后端返回 Cannot use tools with stream

只有把错误归类清楚,才不会陷入“换 Key、换模型、换 Base URL”的循环。DeepAI API 中转站日志在这里的价值,就是帮助你判断请求是否到达、路径是否正确、目标模型返回了什么字段。

生产环境建议:把工具调用单独做验收

很多团队上线 n8n Agent 时,只测试“模型能回答一句话”,但没有测试工具 roundtrip。真正稳定的验收应该包含:

  • 普通 Chat Completion 是否成功。
  • Tools Agent 是否能生成正确 tool call。
  • 工具执行结果是否能回传给模型。
  • 模型是否能基于工具结果生成最终回答。
  • DeepAI API 中转站是否记录了完整状态码、耗时和 token 用量。

如果目标后端暂时不支持工具流式调用,优先保证工具链路正确,再考虑是否需要流式输出体验。对自动化工作流来说,最终结果可靠通常比边生成边显示更重要。

适用场景

  • n8n AI Agent 调用 SQL、HTTP Request、CRM、表格或内部系统 API。
  • OpenAI-compatible 后端是自建模型、LLaMA.cpp、OpenWebUI、企业代理或第三方网关。
  • 通过 DeepAI API 中转站统一管理 Key、模型路由、额度和日志。
  • 普通聊天成功,但一接 Tools Agent 就返回 500 或工具调用失败。

参考资料

总结

n8n 接入 DeepAI API 中转站后,Tools Agent 报 Cannot use tools with stream,优先检查工具调用请求是否同时包含 toolsstream:true。这个错误通常说明目标 OpenAI-compatible 后端不支持流式工具调用,而不是 Key 或 Base URL 错误。升级 n8n 到包含 PR #16888 相关修复的版本,或让工具调用走非流式链路,再结合 DeepAI API 中转站日志验证状态码和 token 用量,能更快把自动化工作流跑稳定。

Related Post

N8n deepai gpt5 unsupported stop parameter.png

n8n 接入 DeepAI API 中转站:GPT-5 unsupported STOP parameter 怎么修n8n 接入 DeepAI API 中转站:GPT-5 unsupported STOP parameter 怎么修

n8n 的 OpenAI Chat Model 节点接入 GPT-5 或 OpenAI-compatible Provider 时,如果报 unsupported STOP parameter,即使界面里没有手动设置 stop,也要检查旧 LangChain 依赖、旧 AI Agent 模板和请求体透传。本文结合 n8n Issue #18149 和 PR #18213,整理 DeepAI API 中转站场景下的排查与修复方法。

N8n deepai json mode internal error response format.png

n8n 接入 DeepAI API 中转站:JSON mode 报 Internal Error 怎么定位真实 400n8n 接入 DeepAI API 中转站:JSON mode 报 Internal Error 怎么定位真实 400

n8n OpenAI 节点使用 JSON mode / response_format=json_object 时,如果只显示 Internal Error,真实上游错误可能是 messages 或 instructions 没有包含 json 关键字。本文结合 n8n Issue #10206 和 1.56.0 修复,整理 DeepAI API 中转站场景下如何定位真实 400、补充 JSON 输出说明和 Schema 约束。