当前位置: 首页 > news >正文

使用 OpenAI 的 Node.js 通过 Ollama 在本地运行 DeepSeek R1

介绍

        DeepSeek R1是一款开源 LLM,可提供强大的生成式 AI 功能。如果您使用Ollama在本地运行它,您可能想知道如何将其与您的 Node.js 应用程序集成。本指南将向您展示如何设置和使用OpenAI SDK以及您本地运行的 DeepSeek R1 模型

步骤 1:使用 Ollama 在本地启动 DeepSeek R1

确保 Ollama 正在运行并且已下载 DeepSeek R1 模型。如果尚未安装,请执行以下操作:

ollama pull deepseek-r1:1.5b

然后,启动测试会话以验证其是否正常工作: 

ollama run deepseek-r1:1.5b

第 2 步:安装依赖项(Nodejs)

首先,确保您已安装 Node.js,然后安装 OpenAI SDK:

npm install openai

步骤 3:配置 OpenAI SDK 以使用 Ollama

const OpenAI = require("openai");

const openai = new OpenAI({
    baseURL: "http://localhost:11434/v1", // Pointing to Ollama's local API
    apiKey: "ollama", // Required by the OpenAI SDK, but Ollama doesn’t validate it
});

async function chatWithDeepSeek(prompt) {
    try {
        const response = await openai.chat.completions.create({
            model: "deepseek-r1:1.5b", // Ensure this model is running
            messages: [{ role: "user", content: prompt }],
        });

        console.log(response.choices[0].message.content);
    } catch (error) {
        console.error("Error:", error.message);
    }
}

// Test the function
chatWithDeepSeek("Hello, how are you?");

步骤 4:启用流式响应

为了提高性能并实时获得响应,请启用流式
 

传输函数的流式传输版本

async function chatWithDeepSeekStream(prompt) {
    try {
        const stream = await openai.chat.completions.create({
            model: "deepseek-r1:1.5b",
            messages: [{ role: "user", content: prompt }],
            stream: true, // Enable streaming
        });

        for await (const chunk of stream) {
            process.stdout.write(chunk.choices[0]?.delta?.content || "");
        }
        console.log("\n");
    } catch (error) {
        console.error("Error:", error.message);
    }
}

chatWithDeepSeekStream("Tell me a fun fact about space.");

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关文章:

  • 使用C++与DeepSeek API构建智能应用
  • 【平台优化】大数据集群一个客户端参数引起的任务性能差的问题
  • 运维面试题(六)
  • Vue学习笔记集--异步更新
  • 启发式搜索:A*算法《人工智能案例与实验》
  • ActiveMQ
  • Java XML与JSON相互转换详解
  • Docker Compose
  • git tag以及git
  • 视频翻译器免费哪个好?轻松玩转视频直播翻译
  • JavaScript如何判断一个变量是否为数组的多种方法及原理,除Array.isArray()外还有哪些方式?
  • 鸿蒙保姆级教学
  • MCP入门实践,Cursor+MCP
  • System.getProperty(“user.dir“)获取用户工作目录及绝对路径和相对路径的说明
  • Linux驱动学习笔记(一)
  • 爬虫 crawler 入门爬取不设防网页 并实现无限增生
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当前页数据示例
  • C++ 入门第27天:异常处理详细讲解
  • 麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0
  • 【OCR】总结github上开源 OCR 工具:让文字识别更简单
  • 网站建设 动态添加内容/湖南网站托管
  • 高端建站属于外包公司么/河南纯手工seo
  • 小程序询价表/seo百度点击软件
  • 深圳保障性住房和公租房区别/推广网站seo
  • 永康网站建设服务/万网域名注册查询
  • 用asp做网站流程/创意广告