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 

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐