深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能
快速上手:DeepSeek SDK for .NET 全面指南
简介
Ater.DeepSeek.AspNetCore 是专门为 .NET 开发者提供的 DeepSeek API SDK。它旨在简化与 DeepSeek AI 平台的集成,使开发者能够快速构建和部署基于自然语言处理的应用程序。
功能特性
- 列出模型: 获取 DeepSeek 提供的所有可用模型。
- 对话补全(包含流式): 实现与 DeepSeek 的对话交互,支持实时流式响应。
- FIM实例(包含流式): 支持 Fine-tuned Inference Model (FIM) 实例的调用,同样支持流式响应。
- 查询余额: 检查账户中的余额,确保有足够的资金进行 API 调用。
- 支持调用本地模型: 可以通过自定义
HttpClient调用本地部署的 DeepSeek 模型。 - 对 ASP.NET Core 的集成支持: 提供了与 ASP.NET Core 的无缝集成,方便在 Web 应用中使用。
注册并获取 API Key
请访问 DeepSeek 官方网站,注册账号并申请 ApiKey。
在 ASP.NET Core 中使用
dotnet add package Ater.DeepSeek.AspNetCore
示例
在 Program.cs 或 Startup.cs 中配置 DeepSeekClient:
using DeepSeek.AspNetCore;
using DeepSeek.Core;
using DeepSeek.Core.Models;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var apiKey = builder.Configuration["DeepSeekApiKey"];
builder.Services.AddDeepSeek(option =>
{
option.BaseAddress = new Uri("https://api.deepseek.com");
option.Timeout = TimeSpan.FromSeconds(300);
option.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Bearer " + apiKey);
});
var app = builder.Build();
app.MapGet("/test", async ([FromServices] DeepSeekClient client) =>
{
var res = await client.ChatAsync(new ChatRequest
{
Messages = new List<Message>
{
Message.NewUserMessage("Why dotnet is good?")
},
MaxTokens = 200
}, CancellationToken.None);
return res?.Choices.First().Message?.Content;
});
app.Run();

流式返回示例
app.MapGet("/chat", async (HttpContext context, [FromServices] DeepSeekClient client, CancellationToken token) =>
{
context.Response.ContentType = "text/plain;charset=utf-8";
try
{
var choices = client.ChatStreamAsync(new ChatRequest
{
Messages = new List<Message>
{
Message.NewUserMessage("Why dotnet is good?")
},
MaxTokens = 200
}, token);
if (choices != null)
{
await foreach (var choice in choices)
{
await context.Response.WriteAsync(choice.Delta!.Content);
}
}
}
catch (Exception ex)
{
await context.Response.WriteAsync("暂时无法提供服务" + ex.Message);
}
await context.Response.CompleteAsync();
});

其他集成
dotnet add package Ater.DeepSeek.Core
实例化 DeepSeekClient
SDK 提供了两种方式来实例化 DeepSeekClient:
仅提供 API Key:
var client = new DeepSeekClient(apiKey);
提供自定义的
HttpClient和 API Key:这种方式适合通过
HttpClientFactory来管理HttpClient,从而更好地控制连接池和超时设置。var httpClient = new HttpClient();
var client = new DeepSeekClient(httpClient, apiKey);
注意: 内部
HttpClient的默认超时时间为 120 秒,可以通过SetTimeout()方法或CancellationTokenSource设置具体请求的超时时间。
调用方法
DeepSeekClient 类提供了多个异步方法来调用 DeepSeek 的 API:
列出模型:
var modelResponse = await client.ListModelsAsync(CancellationToken.None);
if (modelResponse != null)
{
foreach (var model in modelResponse.Data)
{
Console.WriteLine(model);
}
}
else
{
Console.WriteLine(client.ErrorMsg);
}
输出:
Model { Id = deepseek-chat, Object = model, OwnedBy = deepseek }
Model获取对话:
var request = new ChatRequest
{
Messages = [
Message.NewSystemMessage("你是一个语言翻译家"),
Message.NewUserMessage("请翻译'它们害怕极了!'为英语!")
],
Model = Constant.Model.ChatModel
}; var chatResponse = await client.ChatAsync(request, CancellationToken.None);
Console.WriteLine(chatResponse?.Choices.First().Message?.Content);
输出:"They were extremely scared!"
获取对话(流式):
var choices = client.ChatStreamAsync(request, CancellationToken.None);
await foreach (var choice in choices ?? Enumerable.Empty<Choice>())
{
Console.Write(choice.Delta?.Content);
}
Console.WriteLine();
调用本地模型:
如果需要调用本地部署的模型,可以自定义
HttpClient并设置BaseAddress为本地地址。var httpClient = new HttpClient
{
BaseAddress = new Uri("http://localhost:5000"),
Timeout = TimeSpan.FromSeconds(300),
};
var localClient = new DeepSeekClient(httpClient);
localClient.SetChatEndpoint("/chat");
localClient.SetCompletionEndpoint("/completions"); var res = await localClient.ChatAsync(new ChatRequest
{
Messages = new List<Message>
{
Message.NewUserMessage("hello")
}
}, CancellationToken.None);
Console.WriteLine(res?.Choices.First().Message?.Content);
更多资源

深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能的更多相关文章
- Android Studio快速集成讯飞SDK实现文字朗读功能
今天,我们来学习一下怎么在Android Studio快速集成讯飞SDK实现文字朗读功能,先看一下效果图: 第一步 :了解TTS语音服务 TTS的全称为Text To Speech,即“从文本到语音” ...
- Unity 下集成第三方原生 SDK,以极光厂商通道为例
Unity中集成三方SDK有两种方式: Unity 项目开发中时常有集成 Android 第三方 SDK 的需求,比如接入第三方推送,分享等功能.而第三方 SDK 的集成文档提到的往往是基于原生 An ...
- Android Studio 项目中集成百度地图SDK报Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()I错误
Android Studio 项目中集成百度地图SDK报以下错误: java.lang.UnsatisfiedLinkError: Native method not found: com.baidu ...
- 痞子衡嵌入式:深扒i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合. 在串行 NOR Flash 热启动过程 ...
- Android Studio集成百度地图SDK
1.建议先阅读百度地图官方的继承指南,针对了Eclipse和Android Studio. 百度官方集成指南 2.下载百度地图SDK Android SDK v4.1.1 下载有两种: 1.一键下载( ...
- Unity3d集成移动MM SDK 2.2的技术要点(坑爹的MM SDK)
原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140423517951/ U3D集成移动MM的SDK绝对是以坑爹为主的东西. 浪 ...
- 远程推送,集成极光的SDK,证书制造
由于iOS操作系统限制,我们APP在后台不能做操作,也不能接收任何数据,所以需要用推送来接收消息. APNs服务,苹果官方网址:https://developer.apple.com/library/ ...
- Xamarin.Android 集成百度地图SDK
前言:趁着周六闲得没事干,赶紧搞一搞Xamarin,最近也是怪无聊的,枯燥的生活不如打几行代码带劲:好了我们进入正题 我这篇文章时参考一位大佬的博客进行改变的,当然他写的需要一定的经验才可以看得懂,我 ...
- Android集成百度地图SDK
本Demo中所含功能 1:定位,显示当前位置 2:地图多覆盖物(地图描点.弹出该点的具体信息) 3:坐标地址互相换算 4:POI兴趣点检索 5:线路查询(步行,驾车,公交) 6:绘制线路(OpenGL ...
- IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机验证码
[转载请注明出处] sdk是别人的,我只是下载来集成一下. smssdk下载网站:http://www.mob.com/(也有其他很多网站有类似SDK,譬如https://www.juhe.cn/等等 ...
随机推荐
- Content-Type 的小知识
起因 在某次开发中,前端发起了get请求,但是后端报错未设置Content-Type为"application-json":看到这条报错之后就直接在请求中设置了: export c ...
- ecognition server注意事项
1.4002端口是节点管理界面,默认密码admin. 2.8184端口是任务管理界面. 3.节点在线状态下,查看提交的影像矢量路径是否正确. 4.看服务器读取各个文件是否有误. 5.用develope ...
- 论文解读《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-judge》
发表时间:2024 期刊会议:arxiv 论文单位:Arizona State University 论文作者:Dawei Li, Bohan Jiang, Liangjie Huang, Alimo ...
- Python绘制七段数码管字母:从理论到实践
在现代电子显示技术中,七段数码管是一种广泛应用的显示器件,常用于显示数字.字母和一些特殊符号.其基本原理是通过控制七个发光段(a, b, c, d, e, f, g)的亮灭来形成不同的显示内容.本文将 ...
- 【Linux】【专项突破】CentOS下软件安装
目录 rpm yum软件仓库 配置文件 缓存处理 清理缓存 重构缓存 查询包的依赖关系 rpm # 普通下载安装 rpm -ivh 包名 # 更新 rpm -Uvh 包全名 # 查询 rpm -q 包 ...
- 【转载】Spring Cloud Gateway监控
http://www.imooc.com/article/290822 欢迎加入Spring Cloud Gateway监控豪华套餐-- 只要为Spring Cloud Gateway添加Spring ...
- Qt/C++音视频开发76-获取本地有哪些摄像头名称/ffmpeg内置函数方式
一.前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌 ...
- Qt编写的项目作品4-输入法V2019
一.功能特点 未采用Qt系统层输入法框架,独创输入切换机制. 纯QWidget编写,支持任何目标平台(亲测windows.linux.嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5 ...
- Java网约车项目实战:实现抢单功能详解
在网约车项目中,抢单功能是非常关键的一部分,它决定了司机能否及时响应乘客的订单,提高整个平台的运营效率.本文将详细介绍如何使用Java来实现网约车项目的抢单功能,并提供一个完整的代码示例,以便读者能够 ...
- IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够
本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...