支持的语义内核语言

语义内核计划提供对以下语言的支持:

  • C#
  • Python
  • Java

虽然内核的整体体系结构在所有语言中都是一致的,但我们确保每种语言的 SDK 遵循每种语言的常见范例和样式,使其感觉本机且易于使用。

可用的 SDK 包

C# 包

在 C# 中,有几个包可帮助确保只需导入项目所需的功能。 下表显示了 C# 中的可用包。

包名称 说明
Microsoft.SemanticKernel 包含入门的所有内容的主包
Microsoft.SemanticKernel.Core 提供实现的核心包 Microsoft.SemanticKernel.Abstractions
Microsoft.SemanticKernel.Abstractions 语义内核的基本抽象
Microsoft.SemanticKernel.Connectors.OpenAI OpenAI 连接器
Microsoft.SemanticKernel.Connectors.HuggingFace 拥抱人脸模型的连接器
Microsoft.SemanticKernel.Connectors.Google Google 模型的连接器(例如双子座)
Microsoft.SemanticKernel.Connectors.MistralAI Mistral AI 模型的连接器
Microsoft.SemanticKernel.Plugins.OpenApi (实验性) 允许从 OpenAPI 规范加载插件
Microsoft.SemanticKernel.PromptTemplates.Handlebars 允许使用 Handlebars 模板进行提示
Microsoft.SemanticKernel.Yaml 支持使用 YAML 文件序列化提示
Microsoft.SemanticKernel.Prompty 支持使用 Prompty 文件序列化提示
Microsoft.SemanticKernel.Agents.Abstractions 提供用于创建代理的抽象
Microsoft.SemanticKernel.Agents.OpenAI 为助理 API 代理提供支持

还有其他可用的包(例如内存连接器),但它们仍然是实验性的,尚不建议用于生产用途。

若要安装这些包中的任何一个,可以使用以下命令:

dotnet add package <package-name>

Python 包

在 Python 中,有一个包包含开始使用语义内核所需的所有内容。 若要安装包,可以使用以下命令:

pip install semantic-kernel

PyPIProvides-Extra ,还会列出可以安装的其他附加项,以及何时使用将 SK 与该特定连接器或服务配合使用所需的包时,可以安装具有方括号语法的包,例如:

pip install semantic-kernel[azure]

这将安装语义内核,以及特定的测试版本:azure-ai-inference、、azure-search-documentsazure-coreazure-identityazure-cosmos(以及msgraph-sdk这些包的任何依赖项)。 同样,额外的hugging_face将安装和transformerssentence-transformers

Java 包

对于 Java,语义内核具有以下包;全部位于组 ID com.microsoft.semantic-kernel下,可以从 maven 导入。

    <dependency>
        <groupId>com.microsoft.semantic-kernel</groupId>
        <artifactId>semantickernel-api</artifactId>
    </dependency>

提供了一个 BOM,可用于定义所有语义内核包的版本。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.semantic-kernel</groupId>
                <artifactId>semantickernel-bom</artifactId>
                <version>${semantickernel.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • semantickernel-bom – 一个 Maven 项目 BOM,可用于定义所有语义内核包的版本。
  • semantickernel-api – 定义 Maven 项目的语义内核的核心公共 API 的包。
  • semantickernel-aiservices-openai –提供可用于与 OpenAI API 交互的连接器。

下面是使用 OpenAI 的简单项目的 POM XML 示例。

<project>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.microsoft.semantic-kernel</groupId>
                <artifactId>semantickernel-bom</artifactId>
                <version>${semantickernel.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.microsoft.semantic-kernel</groupId>
            <artifactId>semantickernel-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.microsoft.semantic-kernel</groupId>
            <artifactId>semantickernel-connectors-ai-openai</artifactId>
        </dependency>
    </dependencies>
</project>

每个 SDK 中的可用功能

下表显示了每种语言中可用的功能。 该 🔄 符号表示该功能已部分实现,有关详细信息,请参阅关联的注释列。 该 ❌ 符号表示该功能尚不能使用该语言;如果要看到以语言实现的功能,请考虑 为项目 做出贡献或 打开问题

核心功能

服务 C# Python Java 备注
提示 若要查看支持的模板和序列化格式的完整列表,请参阅下表
本机函数和插件
OpenAPI 插件 Java 提供了演示如何加载 OpenAPI 插件的示例
自动函数调用
打开遥测日志 🔄
挂钩和筛选器

提示模板格式

创作提示时,语义内核提供了各种模板语言,可用于嵌入变量和调用函数。 下表显示了每种语言支持哪些模板语言。

格式 C# Python Java 备注
语义内核模板语言
把手
Liquid
Jinja2

提示序列化格式

创建提示后,可以对其进行序列化,以便可以跨团队存储或共享它。 下表显示了每种语言支持哪些序列化格式。

格式 C# Python Java 备注
YAML
Prompty

AI 服务形式

服务 C# Python Java 备注
文本生成 示例:Text-Davinci-003
聊天补全 示例:GPT4、Chat-GPT
文本嵌入 (实验性) 示例:Text-Embeddings-Ada-002
文本到图像 (实验性) 示例:Dall-E
图像到文本 (实验) 示例:Pix2Struct
文本转音频(实验性) 示例:文本转语音
音频转文本 (实验性) 示例:低声

AI 服务连接器

终结点 C# Python Java 备注
OpenAI
Azure OpenAI
suppoprt OpenAI API 的其他终结点 包括 Ollama、LLM Studio、Azure 模型即服务等。
拥抱人脸推理 API 🔄 即将推出 Python,并非所有方案都适用于 .NET

内存连接器 (实验性)

重要

所有现有内存连接器目前都是实验性的,将由 Vector Store 连接器替换。 这些将通过更新的抽象层提供更多功能。

内存连接器 C# Python Java 备注
Azure AI 搜索
Chroma
DuckDB
Milvus 🔄
Pinecone
Postgres
Qdrant 🔄
Redis 🔄
Sqlite 🔄
Weaviate

矢量存储连接器 (实验性)

重要

所有现有的 Vector Store 连接器目前都是实验性的,目前正在进行积极开发,以提高使用它们的体验。 若要提供有关最新建议的反馈,请参阅活动的 搜索内存连接器 ADR。

有关现装矢量存储连接器的列表以及每个连接器的语言支持,请参阅 现用连接器