node对接Deepseek服务(含源码演示)
本文章主要分享如何使用node对接deepseek API,包括查询模型列表、查询账户余额和AI对话。
1.前期准备
首先进入Deepseek官网,点击右上角的API开发平台,进入后查看用量余额信息,如果余额为0需要点击充值,首次充值需要实名认证。充值按钮旁边有个余额预警设置,当账户余额低于指定值后,Deepseek会通过邮箱/手机号向你发送通知。充值完后在API keys界面创建API keys,创建成功后需复制,否则无法再次查看。DeepSeek | 深度求索https://www.deepseek.com/
2.代码实现
在node项目中下载node工具库openai和发送请求工具库axios
npm install openai axios
在代码中引入openai,初始化openai调用信息,baseURL填写https://api.deepseek.com,apikey填写开发平台创建的API keys。
const OpenAI = require("openai");
const openai = new OpenAI({
baseURL: "https://api.deepseek.com",
apiKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
});
2.1 获取ai模型列表
调用openai.models.list()方法获取Deepseek提供的ai模型列表,返回结果中id为“deepseek-chat”对应Deepseek-V3模型,id为“deepseek-reasoner”对应Deepseek-R1模型
// 获取模型列表
async function getModelList() {
//deepseek-chat 模型对应 DeepSeek-V3
//deepseek-reasoner 模型对应 DeepSeek-R1
const models = await openai.models.list();
for await (let model of models) {
console.log(model);
}
}
getModelList();
返回结果
{ id: 'deepseek-chat', object: 'model', owned_by: 'deepseek' }
{ id: 'deepseek-reasoner', object: 'model', owned_by: 'deepseek' }
2.2 获取余额信息
使用axios发送请求获取账号余额信息,url地址为https://api.deepseek.com/user/balance,请求方法为get,请求头信息中Authorization为Bearer拼接API keys。
let config = {
method: "get",
maxBodyLength: Infinity,
url: "https://api.deepseek.com/user/balance",
headers: {
Accept: "application/json",
Authorization: "Bearer XXXXXXXXXXXXXXXXX",
},
};
// 获取余额
axios(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
返回结果(其中total_balance为账户余额)
{
"is_available":true,
"balance_infos":
[
{
"currency":"CNY",
"total_balance":"9.93",
"granted_balance":"0.00",
"topped_up_balance":"9.93"
}
]
}
2.3 AI对话
使用openai.beta.chat.completions.stream方法创建AI流式对话,该方法返回一个promise。相关参数说明如下:
message 信息列表。其中role为该信息的发起角色,值可以为“system”、“user”,“assistant”,“tool”。content为消息内容。
model 使用的模型的 ID。值可以为“deepseek-reasoner”和“deepseek-chat”。
stream 如果设置为 True,将会以 SSE(server-sent events)的形式以流式发送消息增量。消息流以 data:[DONE]
结尾。
frequency_penalty 介于 -2.0 和 2.0 之间的数字。如果该值为正,那么新 token 会根据其在已有文本中的出现频率受到相应的惩罚,降低模型重复相同内容的可能性。
max_tokens 介于 1 到 8192 间的整数,限制一次请求中模型生成 completion 的最大 token 数。输入 token 和输出 token 的总长度受模型的上下文长度的限制。
presence_penalty 介于 -2.0 和 2.0 之间的数字。如果该值为正,那么新 token 会根据其是否已在已有文本中出现受到相应的惩罚,从而增加模型谈论新主题的可能性。
async function deepseekChatStream() {
const completion = await openai.beta.chat.completions.stream({
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "你好" },
],
model: "deepseek-reasoner",
stream: true,
max_tokens: 500,
frequency_penalt: 1,
presence_penalty: 1
});
completion.on("content", (delta, snapshot) => {
console.log(delta);
});
}
deepseekChatStream();
返回结果
你好
!
很高兴
为您
服务
。
有什么
我可以
帮
您的
吗
3.demo下载
链接: https://pan.baidu.com/s/13VnR99PaUVeUy81SRDa7gw?pwd=hxuf
提取码: hxuf
更多推荐
所有评论(0)