.NET Core C#系列之 Semantic Kernel 入门课

B站影视 2024-12-02 08:40 2

摘要:由于在国内的限制,我们并没有办法直接访问OpenAI,所以下面的教程我们会推荐使用https://api.token-ai.cn,然后您需要在这个网站中注册一个账号,并且创建一个令牌(最好是设置无限额度和无过期时间),创建好的令牌我们保存好,下面的基础教程入门

由于在国内的限制,我们并没有办法直接访问OpenAI,所以下面的教程我们会推荐使用https://api.token-ai.cn,然后您需要在这个网站中注册一个账号,并且创建一个令牌(最好是设置无限额度和无过期时间),创建好的令牌我们保存好,下面的基础教程入门会用到,这个令牌是用于代替OpenAI的原有的令牌

打开Visual Studio 2022,然后创建一个名称为TokenAI的控制台项目

右键新建的项目,然后点击管理 NuGet 程序包搜索Semantic Kernel,并且选择包括预览版,然后选择安装Microsoft.SemanticKernel由于SK默认的限制并没有提供直接修改地址的接口,所以我们需要自定义HttpClientHandler,下面我们创建一个OpenAIHttpClientHandler.cs,然后提供以下实现 public class OpenAIHttpClientHandler : HttpClientHandler { private readonly string _uri; public OpenAIHttpClientHandler(string uri) => _uri = uri.TrimEnd('/'); protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { UriBuilder uriBuilder; if (request.RequestUri?.LocalPath == "/v1/chat/completions") { uriBuilder = new UriBuilder(_uri + "/v1/chat/completions"); request.RequestUri = uriBuilder.Uri; } else if (request.RequestUri?.LocalPath == "/v1/embeddings") { uriBuilder = new UriBuilder(_uri + "/v1/embeddings"); } return await base.SendAsync(request, cancellationToken); } }

实现Stream式对话输出

打开Program.csusing Microsoft.SemanticKernel;using TokenAI;var kernel = Kernel.CreateBuilder .AddOpenAIChatCompletion( modelId: "gpt-3.5-turbo", apiKey: "这里填写在https://api.token-ai.cn/创建的令牌", httpClient: new HttpClient(new OpenAIHttpClientHandler("https://api.token-ai.cn/"))) .Build;await foreach (var item in kernel.InvokePromptStreamingAsync("您好,我是TokenAI")){ Console.Write(item.ToString);};

执行效果:

我们使用Kernel的CreateBuilder创建了一个Kernel对象,并且在这个对象中存在InvokePromptStreamingAsync方法,这个方法提供了OpenAI的一个Stream的对话接口,并且我们添加了AddOpenAIChatCompletion添加了自定义的模型和我们的代理网站的key地址。

很好您已经初步入门我们的SK了!

后续将持续更新Semantic Kernel教程。

计划如下:

Semantic Kernel 初级/中级/高级/插件函数/联网搜索/记忆库。

欢迎关注小编。

来源:opendotnet

相关推荐