Semantic Kernel人工智能:1、从DeepSeek API调用到Semantic Kernel集成:深度解析聊天机器人开发全链路

引言:AI时代下的聊天机器人开发范式演进

在生成式AI技术爆发的当下,基于大语言模型(LLM)的聊天机器人开发已形成标准化技术链路。本文将结合DeepSeek API与微软Semantic Kernel框架,以C#语言实战演示从基础API调用到高级框架集成的完整开发流程。

环境准备与基础配置

  • .NET 9 SDK
  • Visual Studio 2022或VSCode
  • DeepSeek API密钥 官网申请

DeepSeek API基础调用

DeepSeek API的Endpoint地址为:https://api.deepseek.com/chat/completions,相关文档可查看官方文档

  1. 单轮对话实现
    代码示例
public async Task<ResponseBody> GetChatMessageContentsAsync(CancellationToken cancellationToken = new CancellationToken()) {     var client = new HttpClient();     var request = new HttpRequestMessage(HttpMethod.Post, _builder.Endpoint);     request.Headers.Add("Accept", "application/json");     request.Headers.Add("Authorization", $"Bearer {_builder.ApiKey}");      _body.Stream = false;     var content = new StringContent(_body.SerializeObject(), null, "application/json");     request.Content = content;     var response = await client.SendAsync(request, cancellationToken);     var responseBody = await response.Content.ReadAsStringAsync(cancellationToken);     return JsonConvert.DeserializeObject<ResponseBody>(responseBody) ?? new ResponseBody(); } 
  1. 流式响应处理
    代码示例
public async IAsyncEnumerable<ResponseBody> GetStreamingChatMessageContentsAsync([EnumeratorCancellation] CancellationToken cancellationToken = new CancellationToken()) {     var client = new HttpClient();     var request = new HttpRequestMessage(HttpMethod.Post, _builder.Endpoint);     request.Headers.Add("Accept", "application/json");     request.Headers.Add("Authorization", $"Bearer {_builder.ApiKey}");          _body.Stream = true;     var content = new StringContent(_body.SerializeObject(), null, "application/json");     request.Content = content;     var response = await client.SendAsync(request, cancellationToken);     var stream = await response.Content.ReadAsStreamAsync(cancellationToken);     var reader = new StreamReader(stream);     while (!reader.EndOfStream)     {         var line = await reader.ReadLineAsync(cancellationToken);         if (string.IsNullOrEmpty(line) || line.StartsWith(":")) continue;         if (line.StartsWith("data: "))         {             var jsonData = line["data: ".Length ..];             if (jsonData == "[DONE]") break;             yield return JsonConvert.DeserializeObject<ResponseBody>(jsonData) ?? new ResponseBody();         }     } } 

Semantic Kernel框架集成

Semantic Kernel是一种轻型开源开发工具包,可用于轻松生成 AI 代理并将最新的 AI 模型集成到 C#、Python 或 Java 代码库中。 它充当一个高效的中间件,可实现企业级解决方案的快速交付。
DeepSeek API与Semantic Kernel框架集成,可快速实现基于大语言模型的聊天机器人开发。由于DeepSeek API与OpenAI API的兼容性,因此DeepSeek API与Semantic Kernel框架的集成非常简单。只需使用OpenAI的连接器,即可快速实现DeepSeek API与Semantic Kernel框架的集成。

  1. NuGet包安装
dotnet add package Microsoft.SemanticKernel 
  1. Semantic Kernel初始化
var openAIClientCredential = new ApiKeyCredential(apiKey); var openAIClientOption = new OpenAIClientOptions {     Endpoint = new Uri("https://api.deepseek.com"),  }; var builder = Kernel.CreateBuilder()     .AddOpenAIChatCompletion(modelId, new OpenAIClient(openAIClientCredential, openAIClientOption));  var kernel = builder.Build(); 
  1. 聊天机器人开发
var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();  Console.WriteLine("😀User >> "+ chatHistory.Last().Content); var result = chatCompletionService.GetStreamingChatMessageContentsAsync(     chatHistory ); Console.Write("👨Assistant >> "); await foreach (var item in result) {     Thread.Sleep(200);     Console.Write(item.Content); } 

代码示例

发表评论

评论已关闭。

相关文章

当前内容话题