前言

最近 DeepSeek 可太火了,在人工智能领域引起了广泛的关注,其强大的自然语言处理能力和智能搜索功能让大家跃跃欲试。

对于 .NET 技术栈的开发来说,一个常见的问题是:能否在 .NET 程序中使用 DeepSeek? 答案是肯定的。

为了帮助 .NET 开发快速上手并充分利用 DeepSeek 的强大功能,社区提供了一个名为 deepseek-dotnet 的开源项目。

项目介绍

deepseek-dotnet 项目不仅包含了如何在 .NET 中集成和使用 DeepSeek 模型的详细示例,还展示了如何通过 Microsoft.Extensions.AI (MEAI) 库来简化与 DeepSeek R1 模型的交互。

具体而言 deepseek-dotnet 项目在 GitHub 上托管,并且已经集成了最新的 DeepSeek R1 模型。通过该项目,可以学习如何在 .NET 应用程序中调用 DeepSeek API,处理请求和响应,以及如何利用 Microsoft.Extensions.AI 库进行模型管理和推理。

不管是开发智能助手、自动问答系统,还是其他复杂的业务应用。DeepSeek 都能为大家提供强有力的支持。

DeepSeek 说明

DeepSeek-V3:是DeepSeek于2023年12月推出的模型,以较低的训练成本实现了与GPT-4和Claude Sonnet 3.5等顶尖模型相媲美的性能。

DeepSeek-R1(deepseek-reasoner):是DeepSeek最新推出的推理模型,在输出最终回答之前,模型会先输出一段思维链内容,以提升答案的准确性。

Microsoft.Extensions.AI

Microsoft.Extensions.AI 库为各类 AI 服务提供统一的抽象接口。

无论使用 DeepSeek、OpenAI 还是 Mistral,也不论服务托管在 GH Models、Ollama 还是 Azure AI Foundry,都可以使用相同的 API 接口与模型交互。

这种统一性显著降低了入门门槛——无需掌握不同库的特殊用法,只需掌握 MEAI 即可。

大部分功能通过 IChatClient 接口实现。由于这是接口,具体实现会根据底层 AI 服务而变化:

使用 Ollama 时,需引用 Microsoft.Extensions.AI.Ollama 包

使用 GitHub Models 时,则需 Microsoft.Extensions.AI.AzureAIInference 包

一旦实例化 IChatClient 后,所有操作接口都将统一。

项目源码

下载项目源码,打开 DeepSeek.Console.GHModels 项目中的 Program.cs 文件。

首先需要注意的是初始化 modelEndpoint 和 modelName 变量的位置。这些变量对 GitHub Models 服务来说是标准的,它们总是相同的。

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

项目结构

项目使用

1、GitHub Models

生成 GitHub PAT 或直接在 Codespace 中运行仓库。

设置用户密钥:在 DeepSeek.Console.GHModels 项目中设置 GITHUB_TOKEN 用户密钥。

Program.cs:了解如何使用 MEAI 访问 GitHub Models 上的 DeepSeek。

2、在 Azure AI Foundry 上运行

部署模型到 Azure AI Foundry:参考提供的部署指南。

记录密钥:将密钥放入 DeepSeek.Console.AzureAI 项目的用户密钥中,键名为 AZURE_AI_KEY。

获取端点 URL 和模型名称:从 AI Foundry 门户的部署中获取。

3、在 Ollama 上运行

启动 Codespace:Codespace 将下载 Ollama 镜像并在 devcontainer 内启动它。

拉取精简版 R1 模型。

Program.cs:在 DeepSeek.Console.Ollama 项目中查看 Program.cs 文件,了解如何初始化 IChatClient 接口。

IChatClient chatClient = new OllamaChatClient(modelEndpoint, modelName);

项目地址

GitHub:https://github.com/codemillmatt/deepseek-dotnet

总结

DeepSeek R1 是一个新推理模型,吸引了大量关注,可以使用 Microsoft.Extensions.AI 库在 .NET 程序中利用它。

GitHub Models 降低了入门和实验的门槛。感兴趣的小伙伴们快去试试。

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。

也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!优秀是一种习惯,欢迎大家留言学习!

.NET 使用 DeepSeek R1 开发智能 AI 客户端的更多相关文章

  1. 基于Laravel+Swoole开发智能家居后端

    基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基 ...

  2. 什么?又来智能AI编程?让不让我们活了!

    无事逛github发现了一款智能AI编程,故下载试试 发现异常好用 推荐给大家 github地址:GitHub - getcursor/cursor:一个用于使用AI 编程的编辑器 支持:C# ,Ja ...

  3. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

    本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  4. (转)【ASP.NET开发】获取客户端IP地址 via C#

    [ASP.NET开发]获取客户端IP地址 via C# 说明:本文中的内容是我综合博客园上的博文和MSDN讨论区的资料,再通过自己的实际测试而得来,属于自己原创的内容说实话很少,写这一篇是为了记录自己 ...

  5. 基于滴答清单 Web 开发的 PC 客户端

    基于滴答清单 Web 开发的 PC 客户端 关于「滴答清单」 滴答清单是一款不可多得的 GTD 效率工具,它有着清晰明了的界面设计.恰到好处的功能设置.稳定的同步服务,如果你还缺少一款简洁而有效的 G ...

  6. C# 开发Modbus Rtu客户端 modbus测试Demo,Modbus 串口通信 , 虚拟MODBUS-RTU测试

    前言 本文将使用一个NuGet公开的组件技术来实现一个ModBus RTU的客户端,方便的对Modbus rtu的服务器进行读写,这个服务器可以是电脑端C#设计的,也可以是PLC实现的,也可以是其他任 ...

  7. python 使用模板模式和工厂模式的混合设计开发各种邮件客户端发送邮件

    1.使用模板模式和工厂模式的混合设计开发各种邮件客户端发送邮件. 2.模板模式的目的:能保证快速开发各种邮箱客户端,子类只需要重写模板类邮箱的抽象方法即可.之后再开发任何邮箱就只要加一个类,写3行代码 ...

  8. 【cocos2d-x 手游研发----怪物智能AI】

    原创文章,转载请注明出处:http://www.cnblogs.com/zisou/p/cocos2d-xARPG4.html 谈到怪物AI,我觉得就比较话多了,首先理解一下(Artificial I ...

  9. WPF一步步开发XMPP IM客户端1:入门

    [起因&目标] 因为工作原因接触openfire服务端和spark客户端开发,主要是基于openfire扩展开发了针对企业用途的服务器插件,还开发了各个平台上的客户端(Windows\mac\ ...

  10. 以太坊系列之十一: 零起步使用remix开发智能合约

    一步一步使用remix开发智能合约 最新版的remix(2017-8-3)只能使用在线开发了,已经没有离线版本了,并且好像在线版本要FQ才能访问(自行解决). 1.打开remix 注意地址如果是htt ...

随机推荐

  1. HTML5 新的语义标签

    1.常用的语义标签 意义:语义标签便于阅读代码,也便于搜索引擎解析文档结构与内容 标签 含义 article 定义页面独立的内容区域 aside 定义侧边栏内容 header 定义了文档的头部区域 s ...

  2. 鸿蒙UI开发快速入门 —— part05:组件的样式复用

    1. 为什么要样式复用? 如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,样式的复用就很有必要了. 为此,鸿蒙推出了可 ...

  3. R数据分析:生存数据的预测模型建立方法与评价

    之前写了生存分析列线图的做法,列线图作为一个预测模型可视化工具,我们使用它的过程其实就是一个给新数据做预测的过程,其内在本身的模型就是我们基于现有数据训练的一个预测模型,今天也算是接着上一篇文章继续写 ...

  4. CentOS 7 安装教程(步骤齐全)

    第一步:选择Install CentOS7来进行安装 第二步:选择安装语言,建议选择English,然后点击继续 第三步:依次进行 [软件选择]和[分区操作] 3.1.软件安装选择,刚开始建议选择GN ...

  5. 【MyBatis】学习笔记13:延迟加载(懒加载)

    目录 Mybatis13:延迟加载(懒加载) 测试 测试1 测试2 部分特殊情况处理 Mybatis13:延迟加载(懒加载) 延迟加载是分步查询的好处,默认是不开启延迟加载的,要开启需要在核心配置文件 ...

  6. baomidou的dynamic-datasource读写分离实现和加入AOP根据方法名选择库

    文档 https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/wikis/pages maven   <depende ...

  7. 『玩转Streamlit』--上传下载文件

    在Web应用中,文件的上传下载是交互中不可缺少的功能. 因为在业务功能中,一般不会只有文字的交互,资料或图片的获取和分发是很常见的需求. 比如,文件上传可让用户向服务器提交数据,如上传图片分享生活.提 ...

  8. TheScope, Visibility and Lifetime of Variables

    C language-- TheScope, Visibility and Lifetime of Variables 全局变量 普通全局变量 //file1 #include<stdio.h& ...

  9. fatal: repository 'http:/xxxx/root/x.git/' not found

    我遇到的问题其实就是gitlab旧服务器迁移到新服务器之后用户的没权限了没有权限操作了 所以抛出该异常 解决办法是赋予新的权限

  10. Qt音视频开发23-视频绘制QPainter方式(占用CPU)

    一.前言 采集到的图片,用painter绘制是最基础的方式,初学者可能第一次尝试显示图片用的qlabel的setpixmap,用下来会发现卡成屎,第二次尝试用样式表设置背景图,依然卡成屎,最终选用pa ...