引言: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,相關文檔可查看官方文檔
- 單輪對話實現
代碼示例
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();
}
- 流式響應處理
代碼示例
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框架的集成。
- NuGet包安裝
dotnet add package Microsoft.SemanticKernel
- 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();
- 聊天機器人開發
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);
}
代碼示例