Nodejs接入火山引擎豆包API完整实操代码
要先获取API密钥,构造签名请求头并序列化请求体,不然会返回401或400错误。步骤如下:注册火山引擎账号,创建带豆包权限的API密钥,将AK/SK保存至.env,安装axios/crypto-js/dotenv,用HMAC-SHA256生成Authorization头,调用/v1/chat/completions接口。

要在Node.js项目中调用火山引擎豆包大模型API完成文本生成,必须先获取有效API密钥、构造符合签名规范的HTTP请求头,并正确序列化请求体。缺少任一环节都会返回401或400错误。
注册账号并获取API Key和Secret
访问火山引擎豆包控制台,使用手机号注册企业或个人账号→登录后进入「API密钥管理」→点击「创建API密钥」→填写名称(如nodejs-prod)→勾选「豆包大模型」权限→点击确定→页面立即显示Access Key ID和Secret Access Key。
【务必立即复制Secret Access Key,关闭页面后无法再次查看】
将Access Key ID和Secret Access Key保存为环境变量,例如在项目根目录下新建.env文件:
DOUBAO_ACCESS_KEY=AKLTxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DOUBAO_SECRET_KEY=SKLTxxxxxxxxxxxxxxxxxxxxxxxxxxxx
安装依赖并初始化HTTP客户端
执行命令安装axios和crypto-js:
npm install axios crypto-js dotenv
在项目入口文件(如index.js)顶部加载环境变量和依赖:
require('dotenv').config();
const axios = require('axios');
const crypto = require('crypto-js');
构造带签名的请求头
豆包API要求所有请求必须携带Authorization签名头,不能仅靠API Key裸传。
方法一:使用最新推荐的HMAC-SHA256签名算法
第一步:拼接待签名字符串。格式为GETnnapplication/jsonn${timestamp}n/(注意换行符是n,不是rn;时间戳为毫秒级Unix时间,精确到秒即可)。
第二步:用Secret Access Key对上述字符串做HMAC-SHA256哈希,再Base64编码。
第三步:组合Authorization头值:HMAC-SHA256 Credential=${AccessKeyID}/${timestamp}/cn-north-1/ark/Request, SignedHeaders=host;date, Signature=${base64签名结果},这里需要注意的是,在HTTP请求中,Authorization头用于携带客户端的身份凭证以完成鉴权验证,标准格式为Authorization:
注意:host必须小写,date字段必须与timestamp一致且格式为RFC3339(如2024-06-15T12:34:56+08:00),否则403拒绝。
发送文本生成请求
调用豆包API的/v1/chat/completions接口,POST请求体必须包含model、messages字段:
const response = await axios.post('https://ark.cn-north-1.volces.com/api/v1/chat/completions', {
model: 'doubao-pro-32k',
messages: [{ role: 'user', content: '你好,请用中文简单介绍你自己' }],
temperature: 0.7
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': authHeader,
'Date': dateHeader,
'Host': 'ark.cn-north-1.volces.com'
}
});
成功响应体中,response.data.choices[0].message.content即为模型返回的文本内容。
-
- 元宵节猜灯谜的祝福短信
- 角色扮演 |
-
- 关于柯南的沙雕网名有哪些
- 角色扮演 | 1
- 网名
-
- 最新中性名字男女通用网名有哪些
- 角色扮演 | 1
- 网名
-
- 关于蓝色说唱的网名有哪些
- 角色扮演 | 1
- 网名
-
- 我好喜欢你是什么梗?
- 角色扮演 |