当前位置:首页 > AI > 正文内容

入门Semantic Kernel:OneApi集成与HelloWorld

邻居的猫1个月前 (12-09)AI1200

导言

从这一章节开端正式进入咱们的 Semantic Kernel 的学习之旅了。

什么是Semantic Kernel

Semantic Kernel是一个轻量级的开源结构,经过 Semantic Kernel 可以快速运用不同编程言语(C#/Python/Java)结合 LLMs(OpenAI、Azure OpenAI、Hugging Face 等模型) 构建智能运用,简化将人工智能(AI)集成到现有处理方案中的进程。

Semantic Kernel 的特色

  1. 模块化插件架构Semantic Kernel 供给了一个模块化的插件架构,答应开发者经过结合自界说和预界说的智能插件来处理杂乱的事务问题。这种架构使得传统代码可以与智能插件无缝协作,然后简化了传统运用程序向智能化转型的进程。

  2. 多模型集成才能Semantic Kernel 支撑多种 AI 模型,包含但不限于 Azure OpenAI ServiceOpenAI,以及 Hugging Face 供给的离线模型。经过 Semantic Kernel 的链接器功用,开发者可以快速地将这些 AI“大脑”集成到自己的智能运用中,大幅提高运用的智能化水平。

  3. 多样化的链接器生态体系:除了衔接 AI 模型,Semantic Kernel 的链接器还支撑衔接向量数据库、商业软件、事务中间件等多种服务。这种多样化的链接才能,使得 Semantic Kernel 可以习惯更多的事务场景,推进事务流程的智能化转型。

  4. 全面的言语兼容性Semantic Kernel 支撑干流的编程言语,包含C#PythonJava。这种全面的言语支撑,使得不同布景的开发者都可以轻松地运用 Semantic Kernel 来发掘 AI 的潜力,并将其运用到自己的项目中。

  5. 低门槛的开发体会Semantic Kernel 规划重视用户体会,供给了简略易用的接口和文档。即使是 AI 范畴的新手,也可以快速上手,完结零本钱入门,然后降低了开发智能运用的门槛。

中心概念

Semantic Kernel根本组成

image

Semantic Kernel 中,中心概念包含:

内核(Kernel)

假如说 Semantic KernelCopilot Agent 的中心 AI 编列层,那 Kernel 方针便是 AI 编列层的中心方针。

image

从上图咱们可以看出Kernel的中心包含:

  • 装备: 包含 AI 模型、插件、链接器等的装备信息。

  • 上下文办理:它保护运用程序的上下文信息,保证在履行使命时,可以拜访到正确的数据和状况。

  • 服务和谐Kernel 方针和谐不同的 AI 服务和插件,保证它们可以协同作业,完结杂乱的使命。

  • 履行引擎:它作为履行引擎,依据规划器生成的方案,调度和履行相应的操作。

插件(Plugins)

插件是 AI 处理方案的构建块,它们是一组可以露出给 AI 运用程序和 AI 服务的函数,答应它们拜访完结特定使命所需的数据。

Semantic Kernel 中的函数

Semantic Function 是用自然言语编写的提示(Prompt)模板,发送给 AI 服务;而 Native Function是用 C#Python 编写的传统函数,可以经过规划器和函数调用被 AI 服务调用。

回忆(Memories

Memories 是用于存储数据的专用插件,它们在履行进程中为你的内核供给必要的上下文,以便你的 AI 服务可以正常运转。

规划器(Planners

规划器可以接纳用户的方针,并协助咱们动态生成一个包含完结该特定方针的履行过程的方案。规划器运用 AI 模型依据中心中指定的函数和服务生成方案。

经过整合这些概念和组件,Semantic Kernel 可以完结智能的语义了解、使命规划和智能决议计划,然后为用户供给愈加智能、灵敏和个性化的交互体会。它可以运用于各种范畴,如虚拟帮手、智能客服、自然言语交互体系等,为用户和企业供给愈加智能和高效的处理方案。

从下面这张图可以更好的了解各中心组件之间的联络

image

Sematic Kernel 对接 OneApi

经过咱们上一篇文章的,咱们了解到了 OneApi,是以OpenAI的格局,所以在SK中可以运用OpenAIConnector来操作、在Semantic Kernel类库中现已默许集成。

运用 UseSecrets 存储秘要信息

  • 在咱们的启动项右键秘要信息办理

image

装备项 Json 文件

  "OneApiSpark": {
    "Endpoint": "http://localhost:3000",
    "ModelId": "SparkDesk-v3.5",
    "ApiKey": "sk-LAYzQaWssCYYEVHP1d6a3fFa111745249e94F0364a0cF37c"
  }

从 OpenAI 到本地服务的恳求转化

自界说 HttpClientHandler

OpenAI 或许 Azure OpenAI 的扩展,恳求会发送到"api.openai.com"或许"openai.azure.com",这时候就需求咱们经过自定的HttpClientHandler 重定向的模型根底 URL转发到咱们的http://localhost:3000 OneApi 的服务地址。

  • 中心代码
public class OpenAICustomHandler : HttpClientHandler
{
    /// <summary>
    /// 用于OpenAI或Azure OpenAI恳求时重定向的模型根底URL。
    /// </summary>
    private readonly string modelUrl;
    private static readonly string[] sourceArray = ["api.openai.com", "openai.azure.com"];

    /// <summary>
    /// 运用指定的模型URL初始化<see cref="OpenAICustomHandler"/>类的新实例。
    /// </summary>
    /// <param name="modelUrl">用于OpenAI或Azure OpenAI恳求的根底URL。</param>
    public OpenAICustomHandler(string modelUrl)
    {
        // 保证modelUrl不是null或空
        if (string.IsNullOrWhiteSpace(modelUrl))
            throw new ArgumentException("模型URL不能为空或空白。", nameof(modelUrl));

        this.modelUrl = modelUrl;
    }

    /// <summary>
    /// 异步发送HTTP恳求,关于OpenAI或Azure OpenAI服务的恳求,将URL重定向到指定的模型URL。
    /// </summary>
    /// <param name="request">要发送的HTTP恳求音讯。</param>
    /// <param name="cancellationToken">可以用来撤销操作的撤销令牌。</param>
    /// <returns>表明异步操作的使命方针。</returns>
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        // 查看恳求是否针对OpenAI或Azure OpenAI服务
        if (request.RequestUri != null &&
            (sourceArray.Contains(request.RequestUri.Host)))
        {
            // 修正恳求URI,以包含模型URL
            request.RequestUri = new Uri(modelUrl + request.RequestUri.PathAndQuery);
        }
        // 调用基类办法实践发送HTTP恳求
        return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
    }
}

Semantic Kernel HelloWorld

咱们先经过一个简略的示例学习一下 Kernel 方针的创立运用

  • VS 创立控制台项目SK_CreateKernel
  • Nuget装置Semantic Kernel的依靠
PM> NuGet\Install-Package Microsoft.SemanticKernel -Version 1.10.0
  • 下面咱们示例将凭借Prompt提示词用的Semantic function来推理一下用户的目的

Steps

简略的流程可以总结为:

Build KernelPrompt TemplateCreate Semantic functionKernel Invoke Semantic function

var config = ConfigExtensions.FromConfig<OpenAIConfig>("OneApiSpark");
//自界说HttpClientHandler
var openAICustomHandler = new OpenAICustomHandler(config.Endpoint);
using HttpClient client = new(openAICustomHandler);
//Create Kernel
Kernel kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion(
        modelId: config.ModelId,
        apiKey: config.ApiKey,
        httpClient: client)
    .Build();
// 接纳用户入参
string request = Console.ReadLine()!;
// create prompt to the chat service
string prompt = "这个恳求的目的是什么? {{$request}}";

// Create a kernel arguments object and add the  request
var kernelArguments = new KernelArguments
            {
                { "request", request }
            };
var streamingKernelContentsAsync = kernel.InvokePromptStreamingAsync(prompt, kernelArguments);
await foreach (var content in streamingKernelContentsAsync)
{
    Console.WriteLine(content);
}
Console.ReadKey();

上面的代码咱们经过Kernel方针用prompt创立了一个Semantic function,内容是推测用户输入的文本目的,凭借大模型的推理才能很简略的就可以做到这个功用。

Run一下

image

  • 输入
I want to send an email to the marketing team celebrating their recent milestone
  • 输出
这个
恳求的目的
是发送一封
电子邮件给商场团队
,庆祝他们最近达到
的一个重要成果。


在编程或自动化的上下文中,完结这个目的或许触及以下几个过程:


1. 确认商场团队的联络信息,包含电子邮件地址。

2. 编写邮件内容,保证包含对最近里程碑的庆祝和必定。
3.
 运用恰当的邮件发送协议(如SMTP)或邮件服务API(如SendGrid, Mailgun等)来发送邮件。

4. 保证邮件格局正确,包含主题行、正文、签名等。

5. 测验邮件发送功用以保证邮件可以成功送达。

假如你需求详细的代码示例或进一步的协助来完结这个功用,请供给更多的上下文或技能要求。

最终

本章介绍了 Semantic Kernel 的特色、中心概念以及与 OneApi 的对接方法,算是咱们SK学习的 HelloWorld,展现了怎么运用 Semantic Kernel 构建智能运用并与在线大模型进行集成。

参考文献

  • Semantic Kernel Cookbook
  • Prompting AI models with Semantic Kernel
  • What is Semantic Kernel

本文示例源代码

本文源代码

😄欢迎重视笔者大众号一同学习沟通,获取更多有用的常识~

image

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=397

标签: dotNetAI
分享给朋友:

“入门Semantic Kernel:OneApi集成与HelloWorld” 的相关文章

机器学习女,女性在机器学习领域的崛起与贡献

机器学习女,女性在机器学习领域的崛起与贡献

1. 李飞飞:作为计算机视觉领域的著名学者,李飞飞在斯坦福大学创建了ImageNet,这是一个拥有1500万张图片的数据集,极大地推动了计算机视觉和深度学习的发展。她还担任谷歌云的首席人工智能和机器学习科学家,致力于推动“人工智能民主化”。2. 陈丹琦、方飞、李博与宋舒然:这四位华人女性科学家在20...

ai股票,未来投资的新趋势

ai股票,未来投资的新趋势

1. 国产AI龙头股总汇:介绍了国内AI核心龙头股的分类和名单,包括昆仑万维、万兴科技、软通动力、奥飞娱乐和汉王科技等。文章建议投资者先对国产AI龙头股进行研究和参考。2. 中国股市:AI板块最强5大龙头股一览:详细介绍了人工智能的概念、发展趋势和未来应用,并列举了中国股市中AI板块的五大龙头股。3...

AI综合2839867Z空间,2839867Z空间探索的新篇章

AI综合2839867Z空间,2839867Z空间探索的新篇章

AI综合2839867Z空间是指由李飞飞创办的World Labs推出的空间智能模型。这个模型可以通过一张图片生成一个逼真且可交互的3D世界,具有以下主要功能和特点:1. 3D世界构建:从单张图片生成完整的3D世界,包括估算3D几何图形和填充场n2. 内容创建:在给定图片的基础上,系统能创建新的内...

matlab 机器学习,探索数据科学的强大工具

matlab 机器学习,探索数据科学的强大工具

Matlab 是一种高级编程语言和交互式环境,广泛用于数值计算、数据分析、科学计算和工程计算。在机器学习领域,Matlab 提供了丰富的工具和函数,可以方便地进行数据预处理、模型训练、模型评估和模型部署。1. 数据预处理:使用 Matlab 的数据预处理工具箱,可以方便地进行数据清洗、数据转换、数据...

畅言智ai,未来智能生活的引领者

畅言智ai,未来智能生活的引领者

畅言智AI是由科大讯飞股份有限公司开发的一款教育App,主要用于中小学的人工智能教育。该平台提供多种创新教育解决方案,涵盖语言、数学、科学等领域,帮助教师和学生轻松创建和分享精彩的微课。畅言智AI支持个性化学习,教师可以根据学生的特点规划学习路径,培养学生的自主学习能力。此外,畅言智AI还结合了沉浸...

工业机器人学习心得,工业机器人学习心得——探索自动化未来的脚步

工业机器人学习心得学习工业机器人是一个充满挑战和机遇的过程。通过学习,我不仅掌握了机器人的基本操作和编程技能,还对机器人的应用场景有了更深入的了解。以下是我对工业机器人学习的一些心得体会。一、基础知识的重要性学习工业机器人之前,需要掌握一些基础知识,如机械原理、电气控制、计算机编程等。这些知识是理解...