技术速递|立即使用 .NET 和 DeepSeek R1 构建智能应用程序!

360影视 2025-02-09 08:52 3

摘要:最近,DeepSeek R1 模型引起了广泛关注。我们被频繁问到的一个问题是:“我能在 .NET 应用程序中使用 DeepSeek 吗?”答案是:当然可以!接下来,我将带您了解如何通过 GitHub Models 上的 Microsoft.Extensions

M

作者:Matt Soucoup

排版:Alan Wang

最近,DeepSeek R1 模型引起了广泛关注。我们被频繁问到的一个问题是:“我能在 .NET 应用程序中使用 DeepSeek 吗?”答案是:当然可以!接下来,我将带您了解如何通过 GitHub Models 上的 Microsoft.Extensions.AI(MEAI)库与 DeepSeek R1 结合使用,让您能够立即开始体验 R1 模型的功能。

Microsoft.Extensions.AI

MEAI 让使用 AI 服务变得简单

MEAI 库提供了一套统一的抽象和中间件,以简化 AI 服务在 .NET 应用程序中的集成。

换句话说,如果您使用 MEAI 开发应用程序,无论底层使用的是哪种模型,您的代码都将使用相同的 API。这降低了构建 .NET AI 应用程序的难度,因为无论使用哪个 AI 服务,您只需记住一个库(即 MEAI)的操作方式。

对于 MEAI,您将主要使用的接口是 IChatClient

与 DeepSeek R1 聊天

GitHub Models 允许您尝试大量不同的 AI 模型,而无需担心托管问题。这是免费开启 AI 开发之旅的绝佳方式。GitHub Models 还会不断更新新模型,例如 DeepSeek 的 R1。

我们要构建的演示应用是一个简单的控制台应用程序,目前我们已经将其放在 GitHub 上供您参考,存储库为 codemillmatt/deepseek-dotnet。您可以克隆或派生它以跟随教程,而我们也会在下面讲解重要部分。

首先,我们需要完成一些准备工作:

前往 GitHub 并生成一个个人访问令牌(PAT)。这将是您访问 GitHub Models 的密钥。请按照这些说明创建 PAT,并确保选择经典令牌(classic token)。

打开 DeepSeek.Console.GHModels项目。您既可以在 Visual Studio 中打开完整的解决方案,也可以通过使用 VS Code 来只打开项目文件夹。

创建一个新的用户机密条目来存储 GitHub PAT。将其命名为 GH_TOKEN,然后将您生成的 PAT 复制进去作为GH_TOKEN的值。

接下来,我们来简单看一下代码:

打开 DeepSeek.Console.GHModels项目中的Program.cs文件。

首先要注意的是 modelEndpointmodelName变量的初始化。这些是 GitHub Models 服务的标准配置,这些行为将始终保持不变。

现在进入有趣的部分!我们将初始化聊天客户端。这里,我们将连接到 DeepSeek R1 模型。

IChatClient client = new ChatCompletionsClient(modelEndpoint, new AzureKeyCredential(Configuration["GH_TOKEN"])).AsChatClient(modelName);

这里使用了

Microsoft.Extensions.AI.AzureAIInference

包来连接 GitHub Models 服务。但 AsChatClient函数返回的是一个IChatClient

实现,这是非常酷的一点!因为无论我们从 GitHub Models 中选择哪种模型 ,我们的应用程序仍然可以基于

IChatClient接口编写代码!

4. 接下来,我们将问题或提示传递给模型。同时,我们会确保获取流式响应,这样我们就可以在响应到达时实时显示它。

var response = client.CompleteStreamingAsync(question);await foreach (var item in response){ Console.Write(item);}

就是这样!现在运行项目吧。获取响应可能需要几秒钟(很多人都在尝试这个模型!)。您会注意到,返回的内容与“普通”聊天机器人有所不同。DeepSeek R1 是一个推理模型,因此它会尝试分析并推理问题。响应的第一部分是模型的推理过程,用 标签标记,这部分内容相当有趣。响应的第二部分则是对您问题的最终回答。

这是一个示例响应的部分内容:

Okay, let's try to figure this out. The problem says: If I have 3 apples and eat 2, how many bananas do I have? Hmm, at first glance, that seems a bit confusing. Let me break it down step by step.

So, the person starts with 3 apples. Then they eat 2 of them. That part is straightforward. If you eat 2 apples out of 3, you'd have 1 apple left, right? But then the question shifts to bananas. Wait, where did bananas come from? The original problem only mentions apples. There's no mention of bananas at all.

...

DeepSeek 的 R1

codemillmatt/deepseek-dotnet

请按照这些说明创建 PAT

https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic

我必须使用 GitHub Models 吗?

您并不必局限于在 GitHub Models 上运行 DeepSeek R1。您也可以在 Azure 上运行,甚至通过 Ollama 在本地(或 GitHub Codespaces)运行。我在 GitHub 仓库中提供了另外两个控制台应用程序,展示了如何实现这一点。

GitHub Models 版本与其他方式的主要区别在于 DeepSeek R1 模型的部署位置、连接时使用的凭据以及具体的模型名称。

如果您选择在 Azure AI Foundry 上部署,代码是完全相同的。以下是一些说明关于如何部署 DeepSeek R1 模型到 Azure AI Foundry。

如果您想通过 Ollama 在本地运行,我们提供了一个 devcontainer 定义,您可以在 Docker 中使用它来运行 Ollama。它会自动拉取一个小参数版本的 DeepSeek R1 并为您启动。唯一的区别是,您需要使用 Microsoft.Extensions.AI.OllamaNuGet 包,并通过OllamaChatClient初始化IChatClient。您与 DeepSeek R1 的其他交互方式是相同的。

注意:如果您在 GitHub Codespace 中运行此程序,则需要几分钟才能启动,并且您将使用大约 8GB 的空间——因此请根据您的 Codespace 计划进行了解。

当然,这些都是简单的控制台应用程序。如果您正在使用 .NET Aspire,使用 Ollama 和 DeepSeek R1 会非常方便。得益于 .NET Aspire Community Toolkit 的 Ollama 集成,您只需添加一行代码,就可以轻松完成配置!var chat = ollama.AddModel("chat", "deepseek-r1");

查看这篇博客文章,了解关于如何开始的所有详细信息。

一些说明关于如何部署

总结

DeepSeek R1 是一个令人兴奋的新推理模型,正在引起广泛关注。您现在就可以使用 Microsoft.Extensions.AI 库构建利用了 DeepSeek R1 的 .NET 应用程序。GitHub Models 降低了入门和实验的门槛。赶快尝试一下示例代码,并查看我们其他的 MEAI 示例!

尝试一下示例代码

MEAI 示例

新浪微博|微软中国MSDN

来源:opendotnet

相关推荐