本来自己用好了科大讯飞的星火大模型写好了自己的聊天机器人,但是指导老师说试一下deepseek的,没办法,就倒腾一下了,还挺简单的,在这里记录一下。

准备工作

首先去deepseek官网DeepSeek | 深度求索注册一下,创建好自己的apikey.

记住创建好apikey后记得复制保存在一个地方,只有创建时可以查看apikey,之后就查看不了了,当然,之后也可以新建一个key。

后端封装

我使用的是基于node.js的Express.js框架,这里就以Express.js为例子,当然python,java都可以了,可以参考官方文档首次调用 API | DeepSeek API Docs

我这里先给出我自己的代码,这里是router_handler的代码,就是核心处理逻辑,学过Express.js的应该知道,需要替换的就是openai里apikey的值,很简单的。

/*
 * @Author: 知足
 * @Date: 2025-02-06 09:57:06
 * @LastEditors: Do not edit
 * @LastEditTime: 2025-02-06 15:24:45
 * @Description: 文件功能:
 * @FilePath: \nodeServer\router_handler\robot\index.js
 */
const OpenAI = require('openai');
const openai = new OpenAI({
    baseURL: 'https://api.deepseek.com',
    apiKey: '你自己的apikey'
});

async function chat(userMessage) {
    try {
        const completion = await openai.chat.completions.create({
            messages: userMessage,
            model: "deepseek-chat",
        });
        return completion.choices[0].message.content; // 返回结果以便在 getRequest 中使用
    } catch (error) {
        console.error('Error:', error);
        throw error; // 抛出错误以便在 getRequest 中处理
    }
}

exports.getRequest = async (req, res) => {
    const userMessage = req.body.messageArr;  // 获取用户发送的消息
    try {
        const result = await chat(userMessage); // 将用户消息传递给 chat 函数
        res.send({
            status: 0,
            message: result,
            msg: '返回成功!'
        });
    } catch (error) {
        res.status(500).json({ error: 'Internal Server Error' });
    }
    
};

下面是router里的代码。

const express = require('express')
const router = express.Router()
//导入聊天机器人处理模块
const robot_handler = require('../../router_handler/robot')
router.post("/chat",robot_handler.getRequest)
module.exports = router

这是app.js里面调用的代码:

//暖小心

const robot = require('./router/robot')

app.use('/chatrobot',robot)

这里有一个小坑,要注意自己node的版本,如果使用比较新的openai库,自己的node版本比较老的话,会有一个错误

Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: node:stream/web at new NodeError (node:internal/errors:363:5) at Function.Module._load (node:internal/modules/cjs/loader:780:13) at Module.require (node:internal/modules/cjs/loader:1012:19) at require (node:internal/modules/cjs/helpers:93:18) at Object.<anonymous> (D:\vue实战项目\暖心平台\nodeServer\node_modules\openai\_shims\node-runtime.js:41:15) at Module._compile (node:internal/modules/cjs/loader:1108:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10) at Module.load (node:internal/modules/cjs/loader:988:32) at Function.Module._load (node:internal/modules/cjs/loader:828:14) at Module.require (node:internal/modules/cjs/loader:1012:19) { code: 'ERR_UNKNOWN_BUILTIN_MODULE' } [nodemon] app crashed - waiting for file changes before starting...

这时候就需要安装新的node版本,我这里是用的18版本的。

总结

deepseekAPI调用起来还是很简单的,就是现在我感觉使用起来不太舒服,可能是服务器的原因,他返回好慢,要5秒以上,有时候还会崩溃,希望之后会优化好。

欢迎来我个人博客知足的blog一起交流

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐