.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 生态系统中充当一个统一层,使开发人员能够选择他们的首选框架和库,同时确保整个生态系统之间的无缝集成和协作。
其他与 AI 相关的 Microsoft.Extensions 库
📦 Microsoft.Extensions.VectorData.Abstractions 包提供了一个统一的抽象层,用于与各种矢量存储进行交互。 它允许在矢量存储(如 Qdrant、Azure SQL、CosmosDB、MongoDB、ElasticSearch 等)中存储已处理的区块。 有关详细信息,请参阅 生成 .NET AI 矢量搜索应用。
📦 Microsoft.Extensions.DataIngestion 包提供用于数据引入的基础 .NET 构建基块。 它使开发人员能够读取、处理和准备 AI 和机器学习工作流的文档,特别适用于检索增强生成(RAG)场景。 有关详细信息,请参阅 数据引入。
Microsoft代理框架
如果想要使用低级别服务,例如 IChatClient 和 IEmbeddingGenerator<TInput,TEmbedding>,你可以直接从应用中引用 Microsoft.Extensions.AI.Abstractions 包。 但是,如果要生成具有更高级别的业务流程功能的代理 AI 应用程序,则应使用 Microsoft Agent Framework。 代理框架在Microsoft.Extensions.AI.Abstractions包的基础上构建,并为包括 OpenAI、Azure OpenAI、Azure AI Foundry 等不同服务提供IChatClient的具体实现。
对于需要通过高级业务流程、多代理协作以及企业级安全性和可观测性构建代理 AI 系统的 .NET 应用,建议使用此框架。
Agent Framework 是一个生产就绪的开源框架,它汇集了语义内核和 Microsoft Research 的 AutoGen 的最佳功能。 代理框架提供:
- 多代理业务流程:支持顺序、并发、群聊、交接和磁性(其中主代理指导其他代理)的业务流程模式。
- 云计算和提供商灵活性:利用插件和连接器模型实现与云无关(如容器、本地或多云环境)和与提供商无关的方案(例如 OpenAI 或 Azure AI Foundry)。
- 企业级功能:内置可观测性(OpenTelemetry)、Microsoft Entra 安全集成,以及负责任的 AI 功能,包括提示注入保护和任务遵守监视。
- 基于标准的互作性:与开放标准(如代理到代理(A2A)协议和模型上下文协议(MCP)集成,以便进行代理发现和工具交互。
有关详细信息,请参阅 Microsoft Agent Framework 文档。
.NET 的语义内核
语义内核 是一个开源库,可在 .NET 应用中启用 AI 集成和业务流程功能。 语义内核依赖于Microsoft.Extensions.AI.Abstractions包,并提供了连接器,这些连接器为不同的服务(包括 OpenAI、Amazon Bedrock 和 Google Gemini)提供了具体的IChatClient和IEmbeddingGenerator<TInput,TEmbedding>实现。
但是,对于需要代理功能、多代理业务流程或企业级可观测性和安全性的新应用程序,建议的框架 Microsoft代理框架。
用于生成 AI 应用的 .NET SDK
根据目标平台或 AI 模型,可以使用许多不同的 SDK 生成具有 AI 功能的 .NET 应用。 OpenAI 模型具备强大的生成式 AI 功能,而其他 Azure AI 服务则为各种特定场景提供智能解决方案。
适用于 OpenAI 模型的 .NET SDK
| NuGet 包 | 支持的模型 | 维护商或供应商 | 文档 |
|---|---|---|---|
| Microsoft.Agents.AI.OpenAI |
OpenAI 模型 Azure OpenAI 支持的模型 |
Microsoft代理框架 (Microsoft) | Agent Framework 文档 |
| 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 模型相连接,以适应许多不同的开发场景。 Microsoft代理框架 是使用 .NET 连接到本地模型的建议工具。 此框架可以连接到跨各种平台托管的许多不同的模型,并抽象出较低级别的实现详细信息。
例如,可以使用 Ollama通过 .NET 连接到本地 AI 模型,包括由 Microsoft 开发的多个小型语言模型(SLM):
| 模型 | 说明 |
|---|---|
| phi3 模型 | 一系列功能强大的 SLM,提供突破性的性能,同时实现低成本和低延迟。 |
| orca 模型 | 对用户提供的数据进行推理、阅读理解、数学问题解决和文本摘要等任务中的研究模型。 |
注意
上述 SLA 也可以托管在其他服务(如 Azure)上。