手记

在Azure上用JavaScript玩转DeepSeek-R1模型

在 Azure 上使用 DeepSeek-R1 和 JavaScript

创新AI模型的发展速度真是令人印象深刻!DeepSeek-R1就是这样一个专注于处理复杂推理任务的模型,为开发者构建智能应用提供了强大的工具支持。

我们最近在 GitHub Models 以及 Azure AI Foundry 上发布了这一消息。今天的文章将向您展示如何在你的 JavaScript 应用中部署和使用 DeepSeek-R1。

重点摘要
  • DeepSeek-R1 模型专注于复杂的推理任务,不适合用于日常对话。
  • 您可以快速切换配置,使用 Azure AI、GitHub 模型,甚至通过 Ollama 使用本地模型。
  • 您可以使用 OpenAI Node SDKLangChain.js 来与 DeepSeek 模型互动。
你将在这里学到的东西
  • 在 Azure 上部署 DeepSeek-R1 模型。
  • 在 Azure、GitHub 上的模型或本地(如 Ollama)之间切换。
  • 用于启动 DeepSeek-R1 的代码示例,例如使用不同库(如 TypeScript)。
参考资源:

需求

开始吧

我们可以快速上手,使用 GitHub Codespaces,因为它提供了一个预设的 Node.js 环境。或者,你可以按照 GitHub 仓库中的说明 设置本地环境。

点击下方的按钮,在浏览器中通过 web-based VS Code 直接在您的浏览器里打开我们的示例代码库:

一旦项目打开,稍等一下,确保一切加载完毕。打开终端,然后运行以下命令来安装依赖包:

npm install

切换到全屏模式,退出全屏

运行示例代码

仓库在 samples 目录下包含几个 TypeScript 文件,这些文件展示了如何与 DeepSeek-R1 模型互动。你可以使用以下命令来运行一个示例:

    npx tsx samples/<sample>.ts

全屏 退出全屏

比如说,我们先从第一个开始:

在命令行输入以下命令:
npx tsx samples/01-chat.ts

进入全屏/退出全屏

等一下,你应该很快会在终端看到模型的回复。它的回复时间可能会比平时长一些,然后你会发现一个以 <think> 标签开头的奇怪回复。这是因为 DeepSeek-R1 主要设计用于需要复杂推理的任务,例如解决问题或回答数学问题,而不是普通的聊天互动。

模型设置

默认情况下,仓库被配置为使用 GitHub 模型,因此,您可以在不进行额外设置的情况下,使用 Codespaces 运行任何示例。虽然这对快速实验非常有用,但 GitHub 模型限制了您每天可以发送的请求数量,以及单个请求中可以发送的数据量。如果您希望更广泛地使用该模型,可以切换到 Azure AI,甚至使用 Ollama 的本地模型。您可以在 samples/config.ts 中查看不同配置的设置方式。

本文不会涉及如何使用Ollama模型,但你可以在该仓库文档中找到更多相关信息。

在Azure上部署DeepSeek-R1实例

要尝试使用DeepSeek-R1的所有功能特性,你可以在Azure AI Foundry上部署它。Azure AI Foundry是一个平台,允许你快速部署、管理和开发AI模型。使用Azure AI Foundry,你需要有一个Azure账户。点击这里注册Azure账户。

我们从在Azure AI Foundry上部署模型开始吧。按照此tutorial来部署一个无服务器端点,记得使用对应的模型。选择模型时,请务必选择目录中的DeepSeek-R1模型。

一旦您的端点部署好了,您就能看到详情并拿到URL和API密钥。

一张截图显示了Azure AI平台的端点详细信息。

在项目的根目录下创建一个 .env 文件,接着添加以下内容:

AZURE_AI_BASE_URL="https://<你的部署名称>.<区域>.models.ai.azure.com/v1"  # 请将 <你的部署名称> 和 <区域> 替换为你的实际值
AZURE_AI_API_KEY="<你的API密钥>"  # 请将 <你的API密钥> 替换为你的实际API密钥

全屏模式 退出全屏

提示:如果你从 Azure AI 工坊复制端点地址,确保在 URL 末尾加上 /v1

打开 samples/config.ts 文件,并将默认导出的内容更改为使用 Azure。

export default AZURE_AI_CONFIG; // 导出默认的 AZURE_AI_CONFIG;

点击进入全屏,退出全屏

现在所有样本文件将使用 Azure 配置。

探索一下 DeepSeek-R1 的推理

现在你已经部署了模型,你可以用它来进行实验了。打开samples/08-reasoning.ts文件,看看模型是如何处理更复杂的任务的,例如帮助我们理解一段著名的奇怪代码。

    const prompt = `
    float fast_inv_sqrt(float number) {
      long i;
      float x2, y;
      const float threehalfs = 1.5F;

      x2 = number * 0.5F;
      y  = number;
      i  = *(long*)&y;
      i  = 0x5f3759df - ( i >> 1 );
      y  = *(float*)&i;
      y  = y * ( threehalfs - ( x2 * y * y ) );

      return y;
    }

    这段代码在做些什么?请解释一下它的神奇之处。
    `;

全屏开启,全屏关闭

现在用以下命令执行示例:

运行 TypeScript 文件 `samples/08-reasoning.ts`
npx tsx samples/08-reasoning.ts

全屏 退出

你应该看到模型的回答会逐字逐句地显示出来,而且在给出最终答案前,它会描述它的思考过程。

做好心理准备,可能需要一点时间才能得到完整的回答!到最后,你会看到模型对代码的详细说明,以及一些相关的背景。

利用框架技术

此仓库中的大多数示例是用 OpenAI Node SDK 构建的,但你也可以用 LangChain.js 来与模型交互。对于你来说,这可能特别有吸引力,如果你需要整合其他数据源或构建更复杂的应用程序的话。

打开文件 samples/07-langchain.ts 查看一下设置,看看如何复用我们在 OpenAI SDK 中用过的相同配置。

继续前进

现在轮到你来尝试并挖掘DeepSeek-R1的全部潜力了!你可以尝试更复杂的指令,将它集成到你的更大项目中,甚至可以创建代理来最大化利用模型。

要继续你的学习之路,你可以查看以下资源,等等。

0人推荐
随时随地看视频
慕课网APP