使用 Microsoft.Extensions.AI 的 .NET 整合 AI 建置組塊
本文內容
什麼是 Microsoft.Extensions.AI 連結庫?
使用常見 AI 服務的抽象概念
AI 服務的中間件實作
使用 Microsoft.Extensions.AI 建置
下一步
.NET 生態系統提供抽象概念,可讓您使用 Microsoft.Extensions.AI
和 Microsoft.Extensions.AI.Abstractions
連結庫將 AI 服務整合到 .NET 應用程式和連結庫。 .NET 小組也會使用這些適用於 .NET Generative AI 應用程式和連結庫的抽象概念來增強核心 Microsoft.Extensions.*
連結庫。 在以下各節,您將了解:
連結庫的核心概念和功能 Microsoft.Extensions.AI
。
如何在您的應用程式中使用 AI 抽象概念,以及它們所提供的優點。
基本 AI 中間件概念。
什麼是 Microsoft.Extensions.AI 連結庫?
Microsoft.Extensions.AI
是一組核心 .NET 連結庫,是與整個 .NET 生態系統的開發人員共同作業所建立的核心 .NET 連結庫,包括語意核心。 這些連結庫提供一個統一的 C# 抽象層,可與 AI 服務互動,例如小型和大型語言模型(SLM 和 LLM)、內嵌和中間件。
Microsoft.Extensions.AI
提供可由各種服務實作的抽象概念,全都遵守相同的核心概念。 此連結庫不打算提供針對任何特定提供者服務量身打造的 API。 目標是 Microsoft.Extensions.AI
在 .NET 生態系統中作為統一層,讓開發人員能夠選擇其慣用的架構和連結庫,同時確保生態系統之間的無縫整合和共同作業。
AI 功能正在快速演進,一般功能的模式正在出現:
聊天功能會以交談方式提示 AI 進行資訊或數據分析。
內嵌產生以與向量搜尋功能整合。
與其他服務、平臺或程式碼整合的工具呼叫。
連結 Microsoft.Extensions.AI
庫提供這些類型工作的抽象概念,讓開發人員可以專注於針對概念 AI 功能撰寫程式代碼,而不是特定平臺或提供者實作。 整合抽象概念對於開發人員在不同來源之間有效運作至關重要。
例如, IChatClient
不論您要連線到 Azure OpenAI 服務,還是執行本機 Ollama 安裝,介面都允許從各種提供者取用語言模型。 任何提供 AI 用戶端的 .NET 套件都可以實 IChatClient
作 介面,以便與取用 .NET 程式代碼緊密整合:
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
然後,不論您使用的提供者為何,您都可以傳送要求,如下所示:
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
這些抽象概念允許使用最少程式碼變更的各種案例使用慣用 C# 程式代碼,不論您是針對開發和生產環境使用不同的服務、解決混合式案例,還是探索其他服務提供者。
實作這些抽象概念的連結庫作者可讓用戶端與更廣泛的 Microsoft.Extensions.AI
生態系統互通。 如有需要,服務特定 API 仍可存取,可讓取用者根據標準抽象概念撰寫程式代碼,並在必要時才傳遞至專屬 API。
Microsoft.Extensions.AI
透過其他套件提供下列服務的實作:
在未來,這些 Microsoft.Extensions.AI
抽象概念的實作將會是個別客戶端連結庫的一部分,而不是需要安裝其他套件。
線上和使用 AI 服務只是建置健全應用程式的一個方面。 生產就緒的應用程式需要其他功能,例如遙測、記錄和工具呼叫功能。 抽象 Microsoft.Extensions.AI
概念可讓您使用熟悉的模式,輕鬆地將這些元件整合到您的應用程式中。
下列範例示範如何註冊 OpenAI IChatClient
。 IChatClient
可讓您在各種提供者之間以一致的方式附加功能。
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
此代碼段中示範的功能會包含在 Microsoft.Extensions.AI
連結庫中,但它們只是可使用此方法分層的一小部分功能。 .NET 開發人員能夠公開許多類型的中間件,以建立功能強大的 AI 功能。
使用 Microsoft.Extensions.AI 建置
您可以使用下列方式開始建置 Microsoft.Extensions.AI
:
連結庫開發人員 :如果您擁有提供 AI 服務用戶端的連結庫,請考慮在連結庫中實作介面。 這可讓使用者透過抽象概念輕鬆地整合 NuGet 套件。
服務取用者 :如果您正在開發取用 AI 服務的連結庫,請使用抽象概念,而不是將硬式編碼至特定的 AI 服務。 這種方法可讓取用者彈性地選擇其慣用的服務。
應用程式開發人員 :使用抽象概念來簡化應用程式的整合。 這可讓您跨模型和服務進行可移植性、促進測試和模擬、利用生態系統提供的中間件,並在整個應用程式中維護一致的API,即使您在應用程式的不同部分使用不同的服務也一樣。
生態系統參與者 :如果您有興趣參與生態系統,請考慮撰寫自定義中間件元件。
若要開始使用,請參閱 dotnet/ai-samples GitHub 存放庫中的 範例。
如需使用 Microsoft.Extensions.AI
的端對端範例,請參閱 eShopSupport 。