对照参考文献3中的asp.net core实例,创建并测试在WebApi项目中调用DeepSeek服务,如下图所示,新建WebApi项目后,在Nuget包管理器中搜索并安装Ater.DeepSeek.AspNetCore包。

在这里插入图片描述
  在program文件中注册DeepSeek服务(代码直接使用的参考文献3中的示例代码),然后在控制器类的构造函数中直接注入DeepSeekClient即可,如下面代码所示:

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);
});

public class ChatController : ControllerBase
{
    private DeepSeekClient _client;
    private IConfiguration _configuration;

    public ChatController(DeepSeekClient client,IConfiguration config)
    {
        _client = client;
        _configuration = config;
    }
}

  控制器类中新增Chat、Completion函数,关于DeepSeek中Chat和Completion的区别请见上一篇文章。

[HttpGet]
public async Task<string> Chat(string question)
{
    DeepSeek.Core.Models.Message msg = new DeepSeek.Core.Models.Message();
    msg.Content = question;

    ChatRequest request = new ChatRequest();
    request.Messages.Add(msg);
    request.Model = _configuration["DeepSeekModel"];
    request.MaxTokens = 200;

    var chatResponse = await _client.ChatAsync(request, new CancellationToken());
    if (chatResponse is null)
    {
        return _client.ErrorMsg;
    }

    return chatResponse?.Choices.First().Message?.Content;
}

[HttpGet]
public async Task<string> Completion(string question)
{
    DeepSeek.Core.Models.Message msg = new DeepSeek.Core.Models.Message();
    msg.Content = question;

    CompletionRequest request =new CompletionRequest { Prompt=question};
    request.Model=_configuration["DeepSeekModel"];
    request.MaxTokens = 200;

    var chatResponse = await _client.CompletionsAsync(request, new CancellationToken());
    if (chatResponse is null)
    {
        return _client.ErrorMsg;
    }

    return chatResponse?.Choices.First().Text;
}

  最后是在浏览器中通过swagger调用这两个函数的效果截图,后面准备写个前端页面调用WebApi,最好是在网上能找到示例代码,做一个类似对话框的页面。
在这里插入图片描述
在这里插入图片描述

[1]微信公众号“技术老小子”,《C# 使用DeepSeek应用的完整指南》
[2]https://api-docs.deepseek.com/zh-cn/
[3]https://github.com/niltor/DeepSeekSDK-NET
[4]https://platform.deepseek.com/

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐