semantic-kernel - 将LLM 技术快速轻松地集成到您的应用程序中

Created at: 2023-02-28 01:39:42
Language: C#
License: MIT

语义内核

Nuget 包 授权协议: MIT 点网 不和

i️ 注意:这个项目处于早期测试阶段,就像人工智能一样,将迅速发展。我们邀请你加入我们,共同开发语义内核!请使用 GitHub 讨论、打开 GitHub 问题、向我们发送 PR 来做出贡献。

语义内核 (SK) 是一个轻量级 SDK,可实现 AI 大型语言模型 (LLM) 与传统编程语言的集成。SK可扩展编程模型结合了自然语言语义函数、传统代码原生函数基于嵌入的内存,通过AI释放了新的潜力并为应用程序增加价值。

SK 支持提示模板、函数链、矢量化内存和开箱即用的智能规划功能。

图像

Semantic Kernel 旨在支持和封装来自最新 AI 研究的多种设计模式,以便开发人员可以为他们的应用程序注入复杂的技能,如提示链接、递归推理、总结、零/少镜头学习、上下文记忆、长期记忆、嵌入、语义索引、规划和访问外部知识存储以及你自己的数据。

通过加入 SK 社区,你可以更快地构建 AI 优先的应用程序,并提前了解 SDK 的构建方式。SK已经作为开源发布,以便更多开创性的开发人员可以加入我们,共同打造计算史上这一里程碑式时刻的未来。

样品

如果你想快速了解语义内核如何与你的应用程序集成,请从克隆存储库开始:

git clone https://github.com/microsoft/semantic-kernel.git

并尝试以下示例:

简单的聊天摘要 使用即用型技能,并将这些技能轻松应用到你的应用中。
图书创作者 使用规划器解构复杂的目标,并在应用中设想使用规划器。
身份验证和 API 使用基本连接器模式进行身份验证并连接到 API,并设想将外部数据集成到应用的 LLM AI 中。

要获得更多实践概述,你还可以运行入门笔记本,查看语法,创建语义函数,使用内存,并查看内核的工作原理。

请注意:

语义内核入门

下面是如何从 C# 控制台应用使用语义内核的快速示例。

  1. 创建一个面向 .NET 6 或更高版本的新项目,并添加 nuget 包:

    Microsoft.SemanticKernel

    dotnet add package Microsoft.SemanticKernel --prerelease
    

    有关最新版本和更多说明,请参阅 nuget.org

  2. 将以下代码复制并粘贴到项目中,并手持 Azure OpenAI 密钥(可在此处创建一个)。

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.KernelExtensions;

var kernel = Kernel.Builder.Build();

// For Azure Open AI service endpoint and keys please see
// https://learn.microsoft.com/azure/cognitive-services/openai/quickstart?pivots=rest-api
kernel.Config.AddAzureOpenAICompletionBackend(
    "davinci-backend",                   // Alias used by the kernel
    "text-davinci-003",                  // Azure OpenAI *Deployment ID*
    "https://contoso.openai.azure.com/", // Azure OpenAI *Endpoint*
    "...your Azure OpenAI Key..."        // Azure OpenAI *Key*
);

string skPrompt = @"
{{$input}}

Give me the TLDR in 5 words.
";

string textToSummarize = @"
1) A robot may not injure a human being or, through inaction,
allow a human being to come to harm.

2) A robot must obey orders given it by human beings except where
such orders would conflict with the First Law.

3) A robot must protect its own existence as long as such protection
does not conflict with the First or Second Law.
";

var tldrFunction = kernel.CreateSemanticFunction(skPrompt);

var summary = await kernel.RunAsync(textToSummarize, tldrFunction);

Console.WriteLine(summary);

// Output => Protect humans, follow orders, survive.

贡献和社区

我们欢迎你对SK社区的贡献和建议!最简单的参与方法之一是参与 GitHub 存储库中的讨论。欢迎错误报告和修复!

对于新功能、组件或扩展,请在发送 PR 之前提出问题并与我们讨论。这是为了避免被拒绝,因为我们可能将核心带到不同的方向,但也要考虑对更大生态系统的影响。

要了解更多信息并开始使用,请执行以下操作:

Python 开发人员:语义内核即将登陆 Python!查看正在进行的工作并在 python-preview 分支中做出贡献。

行为准则

该项目采用了微软开源行为准则。有关更多信息,请参阅行为准则常见问题解答或联系 opencode@microsoft.com 提出任何其他问题或意见。

许可证

版权所有 (c) 微软公司。保留所有权利。

根据 MIT 许可证获得许可。