.NET + AI 生态系统工具和 SDK

.NET 生态系统提供了许多强大的工具、库和服务来开发 AI 应用程序。 .NET 支持云和本地 AI 模型连接、适用于各种 AI 和矢量数据库服务的许多不同的 SDK 以及其他工具,有助于构建范围和复杂性不同的智能应用。

重要

本文中介绍的所有 SDK 和服务并非都由Microsoft维护。 在考虑 SDK 时,请务必评估其质量、许可、支持和兼容性,以确保它们满足你的要求。

Microsoft.Extensions.AI 库

Microsoft.Extensions.AI 是一组核心 .NET 库,提供统一的 C# 抽象层,用于与 AI 服务交互,例如小型和大型语言模型(SLM 和 LLM)、嵌入和中间件。 这些 API 是在与 .NET 生态系统中的开发人员(包括语义内核)协作创建的。 低级别 API(例如 IChatClient ,和 IEmbeddingGenerator<TInput,TEmbedding>)是从语义内核中提取的,并已移动到 Microsoft.Extensions.AI 命名空间中。

Microsoft.Extensions.AI 提供可由各种服务实现的抽象,所有这些概念都遵循相同的核心概念。 此库不旨在提供针对任何特定提供商服务定制的 API。 Microsoft.Extensions.AI目标是在 .NET 生态系统中充当一个统一层,使开发人员能够选择他们的首选框架和库,同时确保整个生态系统之间的无缝集成和协作。

.NET 的语义内核

如果只想使用低级别服务,例如IChatClientIEmbeddingGenerator<TInput,TEmbedding>,可以直接从应用引用Microsoft.Extensions.AI.Abstractions包。 但是,如果要使用更高级别、更有意见的 AI 方法,则应使用 语义内核

语义内核依赖于 Microsoft.Extensions.AI.Abstractions 包,是一个开源库,可在 .NET 应用中启用 AI 集成和业务流程功能。 其连接器为不同服务提供了IChatClientIEmbeddingGenerator<TInput,TEmbedding>的具体实现,包括 OpenAI、Amazon Bedrock 和 Google Gemini。

语义内核 SDK 通常是适用于 .NET 应用的推荐 AI 业务流程工具,可将一个或多个 AI 服务与其他 API 或 Web 服务、数据存储和自定义代码结合使用。 语义内核以以下方式使企业开发人员受益:

  • 简化将 AI 功能集成到现有应用程序中的过程,从而为企业产品提供统一的解决方案。
  • 通过可降低复杂性的抽象,最大限度地缩短使用不同 AI 模型或服务的学习曲线。
  • 通过减少 AI 模型提示和响应的不可预测行为来提高可靠性。 可以微调提示并计划任务,以创建可控且可预测的用户体验。

有关更多信息,请参阅语义内核文档

用于生成 AI 应用的 .NET SDK

根据目标平台或 AI 模型,可以使用许多不同的 SDK 生成具有 AI 功能的 .NET 应用。 OpenAI 模型具备强大的生成式 AI 功能,而其他 Azure AI 服务则为各种特定场景提供智能解决方案。

适用于 OpenAI 模型的 .NET SDK

NuGet 包 支持的模型 维护商或供应商 文档
Microsoft.SemanticKernel OpenAI 模型
Azure OpenAI 支持的模型
语义内核 (Microsoft) 语义内核文档
Azure OpenAI SDK Azure OpenAI 支持的模型 用于 .NET 的 Azure SDK (Microsoft) Azure OpenAI 服务文档
OpenAI SDK OpenAI 支持的模型 适用于 .NET 的 OpenAI SDK (OpenAI) OpenAI 服务文档

适用于 Azure AI 服务的 .NET SDK

Azure 提供了许多其他 AI 服务来生成特定的应用程序功能和工作流。 其中大多数服务都提供 .NET SDK,用于将其功能集成到自定义应用中。 下表显示了一些最常用的服务。 有关可用服务和学习资源的完整列表,请参阅 Azure AI 服务文档。

服务 说明
Azure AI 搜索 将 AI 支持的云搜索引入你的移动应用和 Web 应用。
Azure AI 内容安全 检测不需要的内容或冒犯性内容。
Azure AI 文档智能 将文档转换为智能数据驱动解决方案。
Azure AI 语言 使用行业领先的自然语言理解功能构建应用。
Azure AI 语音 语音转文本、文本转语音、翻译和说话人辨识。
Azure AI 翻译器 支持 100 多种语言和方言的 AI 支持的翻译技术。
Azure AI 视觉技术 分析图像和视频中的内容。

使用本地 AI 模型开发

.NET 应用程序还可以与本地 AI 模型相连接,以适应许多不同的开发场景。 语义内核是使用 .NET 连接本地模型的推荐工具。 语义内核可以连接到托管在各种平台上的许多不同模型,并将较低级别的实现详细信息抽象化。

例如,可以使用 Ollama通过 .NET 连接到本地 AI 模型,包括由 Microsoft 开发的多个小型语言模型(SLM):

模型 说明
phi3 模型 一系列功能强大的 SLM,提供突破性的性能,同时实现低成本和低延迟。
orca 模型 对用户提供的数据进行推理、阅读理解、数学问题解决和文本摘要等任务中的研究模型。

注意

上述 SLA 也可以托管在其他服务(如 Azure)上。

连接到矢量数据库和服务

AI 应用程序通常使用数据矢量数据库和服务来提高相关性并提供自定义功能。 其中许多服务为 .NET 提供本机 SDK,而另一些服务则提供 REST 服务,可以通过自定义代码进行连接。 语义内核提供了一个可扩展的组件模型,让你能够使用不同的矢量存储,而无需了解每个 SDK。

语义内核为以下矢量数据库和服务提供连接器:

矢量服务 语义核心连接器 .NET SDK
Azure AI 搜索 Microsoft.SemanticKernel.Connectors.AzureAISearch Azure.Search.Documents
Azure Cosmos DB(用于NoSQL) Microsoft.SemanticKernel.Connectors.AzureCosmosDBNoSQL Microsoft.Azure.Cosmos
Azure Cosmos 数据库适用于 MongoDB Microsoft.SemanticKernel.Connectors.AzureCosmosDBMongoDB MongoDb.Driver
Azure PostgreSQL 服务器 Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Azure SQL 数据库 Microsoft.SemanticKernel.Connectors.SqlServer Microsoft.Data.SqlClient
色度 Microsoft.SemanticKernel.Connectors.Chroma
DuckDB Microsoft.SemanticKernel.Connectors.DuckDB DuckDB.NET.Data.Full
Milvus Microsoft.SemanticKernel.Connectors.Milvus Milvus.Client
MongoDB Atlas 矢量搜索 Microsoft.SemanticKernel.Connectors.MongoDB MongoDb.Driver
松果 Microsoft.SemanticKernel.Connectors.Pinecone REST API
Postgres Microsoft.SemanticKernel.Connectors.Postgres Npgsql
Qdrant Microsoft.SemanticKernel.Connectors.Qdrant Qdrant.Client
雷迪斯 Microsoft.SemanticKernel.Connectors.Redis StackExchange.Redis 文件
Weaviate Microsoft.SemanticKernel.Connectors.Weaviate REST API

若要发现 .NET SDK 和 API 支持,请访问每个相应服务的文档。

后续步骤