(1)semantic-kernel入门课程

semantic,kernel · 浏览次数 : 0

小编点评

**OpenAI在线 API简介** 由于在国内的限制,我们无法直接访问 OpenAI,因此建议使用 **https://api.token-ai.cn** 的在线 API。 **创建 OpenAI HttpClientHandler** ```csharp public class OpenAIHttpClientHandler : HttpClientHandler { private readonly string _uri; public OpenAIHttpClientHandler(string uri) { _uri = uri.TrimEnd('/'); } protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { // 自定义 URI builder for OpenAI API UriBuilder uriBuilder = new UriBuilder(_uri + "/v1/chat/completions"); // 设置请求 URI request.RequestUri = uriBuilder.Uri; // 返回父类的 SendAsync 方法 return await base.SendAsync(request, cancellationToken); } } ``` **使用 OpenAIHttpClientHandler 创建项目** 1. 创建一个新项目。 2. 右键在解决方案中选择“新建 > 项目”。 3. 在搜索栏中输入“Semantic Kernel”。 4. 选择包含预览版。 5. 选择安装 **Microsoft.SemanticKernel**。 6. 在代码中使用以下代码创建 OpenAI HttpClientHandler: ```csharp var kernel = Kernel.CreateBuilder() .AddOpenAIChatCompletion( modelId: "gpt-3.5-turbo", apiKey: "您的 API 密钥", httpClient: new HttpClient(new OpenAIHttpClientHandler("您的 API URL")) ) .Build(); ``` **运行程序** 运行程序,并使用以下命令在控制台中查看对话: ``` Kernel.InvokePromptStreamingAsync("您好,我是TokenAI") ``` **注意:** * 请使用您的 API 密钥在代码中替换 "您的 API 密钥"。 * 请根据您的模型 ID 和 API URL 配置模型参数。

正文

(1)semantic-kernel入门课程

获取OpenAI在线API

  • 由于在国内的限制,我们并没有办法直接访问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<HttpResponseMessage> 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");
                request.RequestUri = uriBuilder.Uri;
            }

            return await base.SendAsync(request, cancellationToken);
        }
    }
  • 实现Stream式对话输出

打开Program.cs

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

执行效果:

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

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

文档站点:https://docs.token-ai.cn/

与(1)semantic-kernel入门课程相似的内容:

(1)semantic-kernel入门课程

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

Semantic Kernel入门系列:通过依赖注入管理对象和插件

前言 本章讲一下在Semantic Kernel中使用DependencyInject(依赖注入),在之前的章节我们都是通过手动创建Kernel对象来完成框架的初始化工作,今天我们用依赖注入的方式来实现。 实战 定义Native Plugins 我们用官网的LightPlugins插件来演示依赖注入

Semantic Kernel入门系列:利用Handlebars创建Prompts functions

引言 本章我们将学习通过Handlebars Prompts Template来创建Prompts functions。 什么是Handlebars? Handlebars是一个流行的 JavaScript 模板引擎,它允许你通过在 HTML 中使用简单的占位符来创建动态的 HTML。 它使用模板和

Semantic Kernel入门系列:利用YAML定义prompts functions

引言 在上一章节我们熟悉了prompts functions(提示函数)的创建,我们了解了PromptTemplateConfig中各个属性的简单使用。Semantic Kernel允许我们利用多种方式去创建prompts包括native functions,prompts functions或者也

.NET周报 【4月第3期 2023-04-15】

国内文章 Semantic Kernel 入门系列:📅 Planner 规划器 https://www.cnblogs.com/xbotter/p/semantic_kernel_introduction_planner.html 本文介绍了Semantic Kernel的一个核心能力,即实现目标

入门Semantic Kernel:OneApi集成与HelloWorld

引言 从这一章节开始正式进入我们的 Semantic Kernel 的学习之旅了。 什么是Semantic Kernel? Semantic Kernel是一个轻量级的开源框架,通过 Semantic Kernel 可以快速使用不同编程语言(C#/Python/Java)结合 LLMs(OpenAI

使用SemanticKernel 进行智能应用开发(2023-10更新)

以OpenAI 的ChatGPT 所掀起的GenAI 快速创新浪潮,其中连接LLM 和 应用之间的桥梁的两大开源项目:LangChain[1]和Semantic Kernel[2] ,在半年前写过一篇文章 LangChain vs Semantic Kernel [3],这半年以来Semantic

SK 简化流行编程语言对 生成式AI 应用开发的支持

Semantic Kernel[1] 是一个开源的将大型语言模型(LLM)与流行的编程语言相结合的SDK,Microsoft将Semantic Kernel(简称SK)称为轻量级SDK,结合了OpenAI,Azure OpenAI和Hugging Face等AI LLM的集成。它使开发人员能够通过编

Schillace 定律 背后的 Sam Schillace

微软semantic-kernel(SK)团队发布了一篇博客文章:Early Lessons From GPT-4: The Schillace Laws[1] ,微软的CVP , Deputy CTO Sam Schillace 根据他在GPT-4方面的经验制定了使用LLM创建软件的九项原则,称之

文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨

微信公众号文章 Semantic Kernel —— LangChain 的替代品?[1] ,它使用的示例代码是Python ,他却发了这么一个疑问:支持的语言对比(因为 Semantic Kernel 是用 C#开发的,所以它对 C#比较支持)如上所示。不清楚 Semantic Kernel 为什