支持的语义内核语言
语义内核计划提供对以下语言的支持:
- 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
在 PyPI 上 Provides-Extra
,还会列出可以安装的其他附加项,以及何时使用将 SK 与该特定连接器或服务配合使用所需的包时,可以安装具有方括号语法的包,例如:
pip install semantic-kernel[azure]
这将安装语义内核,以及特定的测试版本:azure-ai-inference
、、azure-search-documents
azure-core
、azure-identity
和azure-cosmos
(以及msgraph-sdk
这些包的任何依赖项)。 同样,额外的hugging_face
将安装和transformers
sentence-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 | ✅ | ✅ | ❌ |
矢量存储连接器 (实验性)
有关现装矢量存储连接器的列表以及每个连接器的语言支持,请参阅 现用连接器。