这是一个关于机器学习理论与实践的个人知识库,主要聚焦于ML.NET框架的学习笔记和实际项目应用。系列内容包括理论探讨、技术实践和场景案例,旨在记录和分享机器学习领域的学习心得与技术洞察。
DeepSeek 提供了强大的 API 接口,特别适合 .NET 开发者。本文将详细介绍如何在 C# 中使用 DeepSeek SDK,包括安装、配置和示例代码,帮助你快速上手,说白了就是httpclient打了个包。
🚀 DeepSeek SDK 特性
- 模型列表
:获取可用模型的列表 - 聊天与聊天流
:支持实时聊天功能 - 补全与补全流
:生成文本补全(测试版) - 用户余额
:查询用户的 API 使用余额 - 本地模型支持
:支持本地模型调用 - ASP.NET
Core 集成:轻松集成到 ASP.NET Core 应用中
📦 安装 DeepSeek SDK
首先,你需要在 DeepSeek 官方网站 注册并申请 API Key。确保你的 .NET 版本为 .NET 8。
安装 NuGet 包
在你的项目中,使用以下命令安装 DeepSeek SDK:
dotnet add package Ater.DeepSeek.Core

🛠️ 实例化 `DeepSeekClient`
你可以通过以下两种方式实例化 DeepSeekClient
:
// 仅使用 API Key 实例化
var client = new DeepSeekClient(apiKey);
// 使用 HttpClient 实例化
var client = new DeepSeekClient(httpClient, apiKey);
注意事项
默认的 HttpClient 超时时间为 120 秒,可以通过 SetTimeout()
方法进行设置。如果需要调用本地模型,请自定义 HttpClient
并设置BaseAddress
为本地地址。
📞 调用 DeepSeek API
DeepSeekClient
类提供了六个异步方法来调用 DeepSeek 的 API:
ListModelsAsyncChatAsyncChatStreamAsyncCompletionsAsyncCompletionsStreamAsyncGetUserBalanceAsync
示例代码
列出模型
以下是列出可用模型的示例代码:
using DeepSeek.Core;
namespace AppDeepseek
{
internal class Program
{
static async Task Main(string[] args)
{
// 创建 DeepSeekClient 实例
var client = new DeepSeekClient("sk-*******");
// 获取模型列表
var modelResponse = await client.ListModelsAsync(new CancellationToken());
if (modelResponse is null)
{
Console.WriteLine(client.ErrorMsg);
return;
}
// 输出模型名称
foreach (var model in modelResponse.Data)
{
Console.WriteLine(model);
}
Console.ReadKey();
}
}
}

聊天示例
以下是一个简单的聊天示例:
using DeepSeek.Core;
using DeepSeek.Core.Models;
namespace AppDeepseek
{
internal class Program
{
static async Task Main(string[] args)
{
// 创建 DeepSeekClient 实例
var client = new DeepSeekClient("sk-*****");
// 构造请求体
var request = new ChatRequest
{
Messages = new List<Message>
{
Message.NewSystemMessage("你是一个语言翻译器"),
Message.NewUserMessage("请将 '他们很害怕!' 翻译成英语!")
},
Model = DeepSeekModels.ChatModel
};
// 调用 ChatAsync 方法
var chatResponse = await client.ChatAsync(request, new CancellationToken());
if (chatResponse is null)
{
Console.WriteLine(client.ErrorMsg);
}
Console.WriteLine(chatResponse?.Choices.First().Message?.Content);
Console.ReadKey();
}
}
}

流式聊天示例
以下是使用流式聊天的示例代码:
using DeepSeek.Core;
using DeepSeek.Core.Models;
namespace AppDeepseek
{
internal class Program
{
static async Task Main(string[] args)
{
// 创建 DeepSeekClient 实例
var client = new DeepSeekClient("sk-183fcc943dd442c29a585c4fdb449677");
// 构造请求体
var request = new ChatRequest
{
Messages = new List<Message>
{
Message.NewSystemMessage("你是一个C#专家"),
Message.NewUserMessage("写一段LINQ的实现分页排序的程序")
},
Model = DeepSeekModels.ChatModel
};
// 调用 ChatStreamAsync 方法
var choices = client.ChatStreamAsync(request, new CancellationToken());
if (choices is null)
{
Console.WriteLine(client.ErrorMsg);
return;
}
// 输出流式响应
await foreach (var choice in choices)
{
Console.Write(choice.Delta?.Content);
}
Console.WriteLine();
Console.ReadKey();
}
}
}

本地模型示例
如果你想使用本地模型,可以参考以下代码:
其实什么这就看出来了这个组件也不就是httpclient打了个包。
// 创建 HttpClient 实例
var httpClient = new HttpClient
{
BaseAddress = new Uri("http://localhost:5000"),
Timeout = TimeSpan.FromSeconds(300),
};
// 创建 DeepSeekClient 实例
var localClient = new DeepSeekClient(httpClient);
localClient.SetChatEndpoint("/chat");
localClient.SetCompletionEndpoint("/completions");
// 调用 ChatAsync 方法
var res = await localClient.ChatAsync(new ChatRequest
{
Messages = new List<Message> { Message.NewUserMessage("你好") }
}, new CancellationToken());
return res?.Choices.First().Message?.Content;
🖥️ ASP.NET Core 集成
安装 ASP.NET Core 包
使用以下命令安装 ASP.NET Core 集成包:
dotnet add package Ater.DeepSeek.AspNetCore

在 ASP.NET Core 中使用
以下是如何在 ASP.NET Core 中使用 DeepSeek 的示例:
注册服务
string apiKey = "sk-*****";
// 配置 DeepSeek 服务
builder.Services.AddDeepSeek(option =>
{
option.BaseAddress = new Uri("https://api.deepseek.com");
option.Timeout = TimeSpan.FromSeconds(300);
option.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "Bearer " + apiKey);
});
Api实现
using DeepSeek.Core;
using DeepSeek.Core.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding;
namespace ApiDeepSeek.Controllers
{
[Route("api/[controller]")]
[ApiController]
publicclass DeepController : ControllerBase
{
private readonly DeepSeekClient _client;
public DeepController(DeepSeekClient client)
{
_client = client;
}
[HttpGet]
[Route("chat")]
public async Task<string> Chat()
{
var res = await _client.ChatAsync(new ChatRequest
{
Messages = new List<Message> { Message.NewUserMessage("为什么 .NET 好?") },
MaxTokens = 200
}, new CancellationToken());
return res?.Choices.First().Message?.Content;
}
}
}

using DeepSeek.Core;
using DeepSeek.Core.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding;
namespace ApiDeepSeek.Controllers
{
[Route("api/[controller]")]
[ApiController]
publicclass DeepController : ControllerBase
{
private readonly DeepSeekClient _client;
public DeepController(DeepSeekClient client)
{
_client = client;
}
[HttpGet("chat")]
public async Task GetChatStream(CancellationToken token)
{
Response.ContentType = "text/text;charset=utf-8";
try
{
var choices = _client.ChatStreamAsync(new ChatRequest
{
Messages = new List<Message> { Message.NewUserMessage("为什么 .NET 好?") },
MaxTokens = 200
}, token);
if (choices != null)
{
await foreach (var choice in choices)
{
await Response.WriteAsync(choice.Delta!.Content);
}
}
}
catch (Exception ex)
{
await Response.WriteAsync("暂时无法提供服务" + ex.Message);
}
await Response.CompleteAsync();
}
}
}
🔗 结论
通过本文的介绍,你应该能够在 C# 中顺利使用 DeepSeek SDK。无论是进行简单的 API 调用,还是在 ASP.NET Core 中集成,DeepSeek 都能为你的应用提供强大的支持。希望这篇文章能帮助你更好地理解和使用 DeepSeek API!
如需更多示例和详细文档,请访问 DeepSeek GitHub。
如果你正在从事上位机、自动化、机器视觉、物联网(IOT)项目或数字化转型方面的工作,欢迎加入我的微信圈子!在这里,我们不仅可以轻松畅聊最新技术动态和行业趋势,还能够在技术问题上互相帮助和支持。我会尽量利用我的知识和经验来帮助你解决问题,当然也期待从大家的专业见解中学习和成长。无论你是新手还是老鸟,期待与志同道合的朋友交流心得,一起进步!





