创新AI模型的发展速度真是令人印象深刻!DeepSeek-R1就是这样一个专注于处理复杂推理任务的模型,为开发者构建智能应用提供了强大的工具支持。
我们最近在 GitHub Models 以及 Azure AI Foundry 上发布了这一消息。今天的文章将向您展示如何在你的 JavaScript 应用中部署和使用 DeepSeek-R1。
重点摘要- DeepSeek-R1 模型专注于复杂的推理任务,不适合用于日常对话。
- 您可以快速切换配置,使用 Azure AI、GitHub 模型,甚至通过 Ollama 使用本地模型。
- 您可以使用 OpenAI Node SDK 或 LangChain.js 来与 DeepSeek 模型互动。
- 在 Azure 上部署 DeepSeek-R1 模型。
- 在 Azure、GitHub 上的模型或本地(如 Ollama)之间切换。
- 用于启动 DeepSeek-R1 的代码示例,例如使用不同库(如 TypeScript)。
需求
- GitHub账户。如果你没有的话,可以创建一个免费的GitHub账户。你可以选择使用GitHub Copilot Free来帮助你编写代码并更快地完成应用的发布。
- Azure账户。如果你是新用户,可以免费试用Azure并获得信用额度。如果你是学生,也可以通过Azure for Students获得免费的信用额度。
我们可以快速上手,使用 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的全部潜力了!你可以尝试更复杂的指令,将它集成到你的更大项目中,甚至可以创建代理来最大化利用模型。
要继续你的学习之路,你可以查看以下资源,等等。
- DeepSeek-R1 JavaScript 入门套件 (GitHub): 包含完整入门内容,涵盖使用 DeepSeek-R1 模型,包括安全地部署在 Azure 上的基础设施即代码。
- 使用 JavaScript 实现生成式 AI (GitHub): 提供学习使用 JavaScript 实现生成式 AI 的代码示例和资源。
- 使用 LangChain.js 构建基于 RAG 的无服务器 AI 对话 (GitHub): 使用检索增强生成和 LangChain.js 构建 AI 聊天机器人的进阶代码示例。