语义内核计划提供对以下语言的支持:
- 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
在 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 | 备注 |
---|---|---|---|---|
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 | ✅ | ✅ | ❌ |