admin管理员组文章数量:1032981
深入集成:使用 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 中使用
代码语言:javascript代码运行次数:0运行复制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(";);
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();
流式返回示例
代码语言:javascript代码运行次数:0运行复制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)
{
awaitforeach (var choice in choices)
{
await context.Response.WriteAsync(choice.Delta!.Content);
}
}
}
catch (Exception ex)
{
await context.Response.WriteAsync("暂时无法提供服务" + ex.Message);
}
await context.Response.CompleteAsync();
});
其他集成
代码语言:javascript代码运行次数:0运行复制dotnet add package Ater.DeepSeek.Core
实例化 DeepSeekClient
SDK 提供了两种方式来实例化 DeepSeekClient
:
1. 仅提供 API Key:
代码语言:javascript代码运行次数:0运行复制var client = new DeepSeekClient(apiKey);
2. 提供自定义的 HttpClient
和 API Key:这种方式适合通过 HttpClientFactory
来管理 HttpClient
,从而更好地控制连接池和超时设置。
var httpClient = new HttpClient();
var client = new DeepSeekClient(httpClient, apiKey);
注意: 内部
HttpClient
的默认超时时间为 120 秒,可以通过SetTimeout()
方法或CancellationTokenSource
设置具体请求的超时时间。
调用方法
DeepSeekClient
类提供了多个异步方法来调用 DeepSeek 的 API:
• 列出模型:
代码语言:javascript代码运行次数:0运行复制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 { Id = deepseek-reasoner, Object = model, OwnedBy = deepseek }
• 获取对话:
代码语言:javascript代码运行次数:0运行复制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!"
• 获取对话(流式):
代码语言:javascript代码运行次数:0运行复制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);
更多资源
- • GitHub 仓库
- • 更多使用示例
深入集成:使用 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 中使用
代码语言:javascript代码运行次数:0运行复制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(";);
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();
流式返回示例
代码语言:javascript代码运行次数:0运行复制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)
{
awaitforeach (var choice in choices)
{
await context.Response.WriteAsync(choice.Delta!.Content);
}
}
}
catch (Exception ex)
{
await context.Response.WriteAsync("暂时无法提供服务" + ex.Message);
}
await context.Response.CompleteAsync();
});
其他集成
代码语言:javascript代码运行次数:0运行复制dotnet add package Ater.DeepSeek.Core
实例化 DeepSeekClient
SDK 提供了两种方式来实例化 DeepSeekClient
:
1. 仅提供 API Key:
代码语言:javascript代码运行次数:0运行复制var client = new DeepSeekClient(apiKey);
2. 提供自定义的 HttpClient
和 API Key:这种方式适合通过 HttpClientFactory
来管理 HttpClient
,从而更好地控制连接池和超时设置。
var httpClient = new HttpClient();
var client = new DeepSeekClient(httpClient, apiKey);
注意: 内部
HttpClient
的默认超时时间为 120 秒,可以通过SetTimeout()
方法或CancellationTokenSource
设置具体请求的超时时间。
调用方法
DeepSeekClient
类提供了多个异步方法来调用 DeepSeek 的 API:
• 列出模型:
代码语言:javascript代码运行次数:0运行复制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 { Id = deepseek-reasoner, Object = model, OwnedBy = deepseek }
• 获取对话:
代码语言:javascript代码运行次数:0运行复制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!"
• 获取对话(流式):
代码语言:javascript代码运行次数:0运行复制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);
更多资源
- • GitHub 仓库
- • 更多使用示例
本文标签: 深入集成使用 DeepSeek SDK for NET 实现自然语言处理功能
版权声明:本文标题:深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747990243a2238380.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论