详细教程展示如何在 Azure 中部署 DeepSeek-R1,支持灵活切换 Azure AI、GitHub Models 和本地 Ollama。
创新 AI 模型的发展速度令人惊叹!DeepSeek-R1 正是其中之一,它专注于复杂推理任务,为开发者构建智能应用提供了强大的工具。
我们最近宣布,DeepSeek-R1 已在 GitHub Models 和 Azure AI Foundry 上线。本文将介绍如何在 JavaScript 应用中部署和使用 DeepSeek-R1 模型。
DeepSeek-R1 模型专注于复杂推理任务,并非为通用对话而设计。
你可以快速切换配置,改用 Azure AI、GitHub Models,甚至通过 Ollama 使用本地模型。
你可以使用 OpenAI Node SDK 或 LangChain.js 与 DeepSeek 模型交互。
部署 DeepSeek-R1 模型到 Azure。
在 Azure、GitHub Models 和本地环境(Ollama)之间切换。
在 TypeScript 中使用各种库调用 DeepSeek-R1 的代码模式。
DeepSeek on Azure——JavaScript 示例仓库。
GitHub 账号。如果还没有,可以免费创建一个 GitHub 账号。你也可以选择使用 GitHub Copilot Free 来协助编写代码,更快地交付应用。
Azure 账号。如果你刚开始使用 Azure,可以免费注册 Azure 账号并领取 Azure 免费额度。如果你是在校学生,还可以通过 Azure for Students 获得免费额度。
为了快速开始,我们将使用 GitHub Codespaces,因为它提供了预配置的 Node.js 环境。你也可以按照 GitHub 仓库中的说明搭建本地环境。
点击下方按钮,直接在浏览器中的网页版 VS Code 里打开我们的示例仓库:
项目打开后,稍等片刻,确保所有内容都已正确加载。打开终端,运行以下命令安装依赖:
npm install
该仓库的 samples 目录中包含多个 TypeScript 文件,用于演示如何与 DeepSeek-R1 模型交互。你可以使用以下命令运行示例:
npx tsx samples/<sample>.ts
例如,我们先从第一个示例开始:
npx tsx samples/01-chat.ts
稍等片刻,你应该就能在终端中看到模型的响应。你会发现它的响应时间可能比平时更长,而且响应内容看起来有些奇怪,以 <think> 标签开头。这是因为 DeepSeek-R1 专为需要复杂推理的任务而设计,例如解决问题或回答数学问题,而不是用于常规的聊天交互。
默认情况下,该仓库配置为使用 GitHub Models,因此你可以在 Codespaces 中直接运行任何示例,无须进行额外设置。GitHub Models 非常适合快速实验,但它会限制每天可发出的请求数量,以及单次请求可发送的数据量。如果你希望更深入地使用该模型,可以切换到 Azure AI,甚至通过 Ollama 使用本地模型。你可以查看 samples/config.ts,了解不同配置的设置方式。
本文不会介绍如何使用 Ollama 模型,但你可以在仓库文档中找到更多信息。
要体验 DeepSeek-R1 的完整能力,可以将其部署到 Azure AI Foundry。Azure AI Foundry 是一个能够帮助你快速部署、管理 AI 模型并基于模型进行开发的平台。要使用 Azure AI Foundry,你需要拥有一个 Azure 账号。
首先,让我们在 Azure AI Foundry 上部署模型。请先按照相关教程,使用该模型部署一个 serverless endpoint。选择模型时,请确保从模型目录中选择 DeepSeek-R1。
endpoint 部署完成后,你应该能够看到 endpoint 的详细信息,并获取其 URL 和 API key:
接着,在项目根目录中创建一个 .env 文件,并添加以下内容:
AZURE_AI_BASE_URL="https://<your-deployment-name>.<region>.models.ai.azure.com/v1"
AZURE_AI_API_KEY="<your-api-key>"
提示:如果你是从 Azure AI Foundry portal 复制 endpoint,请确保在 URL 末尾添加 /v1。
打开 samples/config.ts 文件,将默认导出更新为使用 Azure:
export default AZURE_AI_CONFIG;
现在,所有示例都将使用 Azure 配置。
模型部署完成后,就可以开始进行实验了。打开 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;
}
What is this code doing? Explain me the magic behind it.
`;
使用以下命令运行这个示例:
npx tsx samples/08-reasoning.ts
你应该会看到模型的响应在终端中逐段流式输出:它会先描述自己的思考过程,然后再给出问题的实际答案。
做好心理准备,因为可能需要一段时间才能获得完整响应!整个过程结束时,你应该能看到模型对这段代码的详细解释,以及与之相关的一些背景信息。
该仓库中的大多数示例都基于 OpenAI Node SDK 构建,但你也可以使用 LangChain.js 与模型交互。如果你需要集成其他数据源,或者想构建更复杂的应用,这种方式可能尤其值得关注。
打开 samples/07-langchain.ts 文件查看具体设置,并了解如何复用此前在 OpenAI SDK 中使用的同一套配置。
现在轮到你亲自实验,探索 DeepSeek-R1 的全部潜力了!你可以尝试更高级的 prompt,将它集成到更大型的应用中,甚至构建 Agent,充分发挥模型的能力。
为了继续学习,你可以查看以下资源:
DeepSeek-R1 JavaScript starter(GitHub):一个完整的入门项目,介绍如何在 JavaScript 中使用 DeepSeek-R1 模型,其中还包括用于在 Azure 上安全部署的 Infrastructure as Code。
Generative AI with JavaScript(GitHub):用于学习如何结合 JavaScript 使用 Generative AI 的代码示例和资源。
Build a serverless AI chat with RAG using LangChain.js(GitHub):一个进阶代码示例,展示如何使用 Retrieval-Augmented Generation 和 LangChain.js 构建 AI 聊天机器人。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。