支持的语义内核语言

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

  • C#
  • Python
  • Java

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

C# 包

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

包名称 说明
Microsoft.SemanticKernel 包含入门的所有内容的主包
Microsoft.SemanticKernel.Core 提供实现的核心包 Microsoft.SemanticKernel.Abstractions
Microsoft.SemanticKernel.Abstractions 语义内核的基本抽象
Microsoft.SemanticKernel.Connectors.Amazon 适用于 Amazon AI 的 AI 连接器
Microsoft.SemanticKernel.Connectors.AzureAIInference 适用于 Azure AI 推理的 AI 连接器
Microsoft.SemanticKernel.Connectors.AzureOpenAI 适用于 Azure OpenAI 的 AI 连接器
Microsoft.SemanticKernel.Connectors.Google Google 模型的 AI 连接器(例如 Gemini)
Microsoft.SemanticKernel.Connectors.HuggingFace 用于拥抱人脸模型的 AI 连接器
Microsoft.SemanticKernel.Connectors.MistralAI 适用于 Mistral AI 模型的 AI 连接器
Microsoft.SemanticKernel.Connectors.Ollama Ollama 的 AI 连接器
Microsoft.SemanticKernel.Connectors.Onnx Onnx 的 AI 连接器
Microsoft.SemanticKernel.Connectors.OpenAI OpenAI 的 AI 连接器
Microsoft.SemanticKernel.Connectors.AzureAISearch 适用于 AzureAISearch 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.CosmosMongoDB AzureCosmosDBMongoDB 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.CosmosNoSql 适用于 AzureAISearch 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.MongoDB MongoDB 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.Pinecone Pinecone 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.Qdrant Qdrant 的向量存储连接器
Microsoft.SemanticKernel.Connectors.Redis Redis 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.SqliteVec Sqlite 的矢量存储连接器
Microsoft.SemanticKernel.Connectors.Weaviate Weaviate 的矢量存储连接器
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 备注
Amazon Bedrock
Anthropic
Azure AI 推理
Azure OpenAI
谷歌
拥抱人脸推理 API
米斯特拉尔
Ollama
ONNX
OpenAI
支持 OpenAI API 的其他终结点 包括 LLM Studio 等。

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

警告

语义内核向量存储功能目前处于预览状态,并且在发布前的某些有限情况下,可能仍需要实施会引发重大更改的改进。

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

内存存储连接器(旧版)

重要

内存存储连接器是旧连接器,已替换为 Vector Store 连接器。 有关详细信息,请参阅 旧内存存储

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