DeepSeek API SDK specifically for .NET developers
- List models
- Dialogue completion
- Dialog completion (streaming processing)
Please go to official website, register and apply for DeepSeek's ApiKey
Supported .NET version: .NET8
Tip
Free to fork the repository to support other versions
Two methods are provided for instantiation:
public DeepSeekClient(string apiKey);
public DeepSeekClient(HttpClient http, string apiKey);
The first type only requires providing the 'apiKey' to create an instance;
The second method provides a HttpClient
parameter, which is suitable for maintaining the HttpClient
through the HttpClientFactory
and then instance it.
Three asynchronous methods are provided:
Task<ModelResponse?> ListModelsAsync(CancellationToken cancellationToken);
Task<ChatResponse?> ChatAsync(ChatRequest request, CancellationToken cancellationToken);
Task<IAsyncEnumerable<Choice>?> ChatStreamAsync(ChatRequest request, CancellationToken cancellationToken)
// Create an instance using the apiKey
var client = new DeepSeekClient(apiKey);
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);
}
// Create an instance using the apiKey
var client = new DeepSeekClient(apiKey);
// Construct the request body
var request = new ChatRequest
{
Messages = [
Message.NewSystemMessage("You are a language translator"),
Message.NewUserMessage("Please translate 'They are scared! ' into English!")
],
// Specify the model
Model = Constant.Model.ChatModel
};
var chatResponse = await client.ChatAsync(request, new CancellationToken());
if (chatResponse is null)
{
Console.WriteLine(client.ErrorMsg);
}
Console.WriteLine(chatResponse?.Choices.First().Message?.Content);
// Create an instance using the apiKey
var client = new DeepSeekClient(apiKey);
// Construct the request body
var request = new ChatRequest
{
Messages = [
Message.NewSystemMessage("You are a language translator"),
Message.NewUserMessage("Please translate 'They are scared! ' into English!")
],
// Specify the model
Model = Constant.Model.ChatModel
};
var choices = await 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();
Tip
You can also refer to the usage example in this repository