n8n 怎么调用 DeepSeek?配置 HTTP Request 并提取对话结果

在 n8n 用 HTTP Request 发送 DeepSeek 非流式对话请求,安全保存认证凭证、提取回答,并核对空结果、截断和错误状态。

在 n8n 中调用 DeepSeek,可以用 HTTP Request 发送一条非流式对话请求,再从返回的 choices[0].message.content 提取回答。先完成这条固定输入的链路,再把它接进表单、工单或摘要流程,排错会更直接。

本文适合已经能打开 n8n 编辑器、希望把模型 API 接进工作流的读者。配置依据为 2026 年 10 月 1 日读取的官方文档;没有在读者的 n8n 实例或付费 DeepSeek 账号上执行。示例工单是虚构材料,输出说明是验收目标,不是实测结果。

n8n 怎么调用 DeepSeek?配置 HTTP Request 并提取对话结果

先搭一条只含三个节点的流程

新建工作流,按主连接线接好 Manual Trigger → HTTP Request → Code。本次不连接 AI Agent,不要求模型选工具:读者要验证的是一条已确定的 API 调用。

准备一把在 DeepSeek 官方平台申请的 API Key,并确认账号可以调用目标模型。网页登录账号、聊天订阅和 API 可用额度不能直接混为同一个东西;请求失败时以实际 API 返回为准。DeepSeek 首次调用文档目前给出的 OpenAI 格式接口为 https://api.deepseek.com/chat/completions,模型名示例为 deepseek-flash。以后重跑时先核对官方当前模型名。

配置 HTTP Request 与凭证

将 HTTP Request 的 Method 设为 POST,URL 填上述完整接口。Authentication 选择 Generic Credential Type,使用 Header Auth 凭证:Name 填 Authorization,Value 填 Bearer 后接自己的 API Key,中间保留一个空格。把密钥保存在凭证窗口,不放进 JSON 输入、Code 节点或工作流说明。

HTTP Request 凭证文档说明了通用 Header Auth 等认证方式。使用已有预定义凭证也可以,但本例明确按 Header Auth 展示,便于核对发送的认证头。

参数 本例设置 检查点
Send Body 开启 不是把 messages 放到 URL 查询参数
Body Content Type JSON 使用合法 JSON 请求体
Specify Body Using JSON 粘贴下面的对象
Response Format JSON Code 节点接收对象
Include Response Headers and Status 关闭 本例按直接返回响应正文的结构提取
Never Error 关闭 让非成功状态进入节点错误,避免被当成回答

这些请求与响应选项见 HTTP Request 节点文档。以下请求体可直接复制;后续若改成表达式,先在预览中确认得到的是对象,不是带转义符的字符串。

{
  "model": "deepseek-flash",
  "messages": [
    {
      "role": "system",
      "content": "把工单概括成一句中文。只使用用户给出的事实,不推测原因,不承诺退款。"
    },
    {
      "role": "user",
      "content": "演示工单 A-101:用户表示包裹外箱破损,尚未核对商品是否损坏。"
    }
  ],
  "thinking": {"type": "disabled"},
  "stream": false
}

本例显式关闭思考模式,使用非流式响应。思考模式官方文档目前说明开关为 thinking.type,取值为 enabled 或 disabled。不要为这条最小流程同时增加流式解析、工具调用和多轮历史,否则出错后不容易判断是哪一步引起。

提取回答,同时拒绝空结果

在末尾 Code 节点选择 JavaScript、Run Once for All Items。下面代码只处理本例的一条请求;它保留用量字段方便核对,且不会输出认证凭证。

const response = $input.first().json;
const choice = response.choices?.[0];
const answer = choice?.message?.content;
if (typeof answer !== "string" || answer.trim() === "") {
  throw new Error("响应中没有非空的 choices[0].message.content,请检查原始响应");
}
if (choice.finish_reason === "length") {
  throw new Error("回答达到长度上限,不能把截断文本当作完整摘要");
}
return [{
  json: {
    answer: answer.trim(),
    finish_reason: choice.finish_reason ?? null,
    usage: response.usage ?? null
  }
}];

先执行整条工作流,再打开 HTTP Request 的 Output 核对原始 choices;Code 的 answer 应只包含工单已提供的事实。比如“外箱破损,商品是否损坏待核对”符合本例要求;“商品已损坏,马上退款”不符合。表达相近即可,不要求回答逐字一致。

三层验收,比节点变绿更有用

  1. 接口层:HTTP Request 收到 JSON 响应,包含可读取的 choices;错误响应没有进入摘要结果。
  2. 提取层:Code 返回一条带非空 answer 的数据;没有返回整个 API 对象或思考内容。
  3. 任务层:摘要保留“外箱破损”和“商品是否损坏待核对”,没有推断退款、赔偿或责任。

如果开启了 Include Response Headers and Status,响应正文会位于包装对象里,提取路径也要按实际 Output 调整。不要在没有检查结构时把 $input.first().json 强行当作原始模型响应。

失败时从哪一层查

现象 优先核对 下一步
401 密钥和 Authorization 头 确认 Bearer 后的空格、凭证所选账号;不要把密钥贴到错误报告
402 API 账户余额 到官方控制台核对,不靠重复执行解决
400 请求体和模型名 先检查 JSON 合法性,再对照官方报错说明
429 调用频率 降低批次与并发;本次先保留单请求测试
接口成功但摘要不对 messages 内容与任务约束 回看输入、回答,修正提示词后用同一工单复测

状态码依据见 DeepSeek 错误码。网络超时不表示请求一定没到达服务端;自动重试可能带来重复调用与费用。先核对执行详情和用量,再决定重试。

接到真实业务前还要补什么

这条流程只有单轮摘要,没有会话记忆、访问权限或自动处理退款能力。要处理多条工单,应为每条保存工单标识与对应结果,避免只取第一项;要接聊天入口,还需配置身份和额度边界。先让固定输入稳定满足三层验收,再替换成脱敏业务数据。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31386.html

赞 (0)
AI小管家的头像AI小管家
Claude 3 是什么?从模型版本、产品入口和使用边界理解
上一篇 11小时前
n8n AI 工作流失败怎么监控?用 Error Trigger 留下执行线索
下一篇 11小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部