需先获取AccessKey、SecretKey和Endpoint,再构造符合火山签名规范的HTTP请求,否则返回401或SignatureNotMatch;通过IAM创建密钥并存入环境变量,安装axios和crypto-js,按三步生成签名并设置Authorization头,最后调用API发送推理请求。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Node.js项目中调用火山引擎DeepSeek API,需先获取AccessKey、SecretKey和Endpoint,再构造符合火山签名规范的HTTP请求,否则会返回401错误或SignatureNotMatch。
准备认证凭证与API地址
登录火山引擎控制台 → 进入「访问控制(IAM)」→ 「用户」→ 找到目标子用户 → 「安全凭证」→ 创建AccessKey。记录下AccessKey ID和SecretKey;同时在DeepSeek服务页复制Region对应的Endpoint,例如:https://deepseek.volcengineapi.com。
将AccessKey ID、SecretKey和Endpoint存入环境变量,避免硬编码:这一步不可跳过,明文写死密钥会导致严重安全风险。
安装依赖并初始化HTTP客户端
执行命令安装axios和crypto-js:npm install axios crypto-js。
新建deepseekClient.js文件,引入模块:const axios = require('axios'); const CryptoJS = require('crypto-js');
构造火山签名请求
第一步:拼接待签名字符串(StringToSign),格式为:HTTPMethod\nPath\nCanonicalQueryString\nHeadersToSign\nSignedHeaders\nPayloadHash,其中HeadersToSign必须小写且按字典序排序,PayloadHash是请求体SHA256哈希值(空请求体对应e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855)。
第二步:生成Signature。用SecretKey对StringToSign做HMAC-SHA256计算,再Base64编码结果。
第三步:组装Authorization头。格式为:HMAC-SHA256 Credential=AK/Date/Region/service/request, SignedHeaders=host;x-date, Signature=xxx。其中AK是AccessKey ID,Date必须是ISO 8601格式(如20240520T120000Z),Region取Endpoint中的区域标识(如cn-beijing),service固定为deepseek。
【x-date头必须与Authorization中Date字段完全一致,毫秒级差异都会导致验签失败】
发送模型推理请求
方法一:使用封装好的client实例调用
定义invokeModel函数,传入model(如deepseek-chat)、messages数组和temperature参数;构造JSON body,设置Content-Type: application/json和x-date头;调用axios.post发起请求;解析响应data.choices[0].message.content提取返回文本。
方法二:直接复用签名逻辑发POST请求
向${endpoint}/api/v1/chat/completions发送POST请求,body示例:{"model":"deepseek-chat","messages":[{"role":"user","content":"你好"}],"temperature":0.7};确保headers包含Authorization、x-date、host三项。



















