閱讀英文

共用方式為


使用 Microsoft.Extensions.AI 的 .NET 整合 AI 建置組塊

.NET 生態系統提供抽象概念,可讓您使用 Microsoft.Extensions.AIMicrosoft.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)、內嵌和中間件。

AI 延伸模組連結庫的架構圖表。

Microsoft.Extensions.AI 提供可由各種服務實作的抽象概念,全都遵守相同的核心概念。 此連結庫不打算提供針對任何特定提供者服務量身打造的 API。 目標是 Microsoft.Extensions.AI 在 .NET 生態系統中作為統一層,讓開發人員能夠選擇其慣用的架構和連結庫,同時確保生態系統之間的無縫整合和共同作業。

使用常見 AI 服務的抽象概念

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 服務的中間件實作

線上和使用 AI 服務只是建置健全應用程式的一個方面。 生產就緒的應用程式需要其他功能,例如遙測、記錄和工具呼叫功能。 抽象 Microsoft.Extensions.AI 概念可讓您使用熟悉的模式,輕鬆地將這些元件整合到您的應用程式中。

下列範例示範如何註冊 OpenAI IChatClientIChatClient 可讓您在各種提供者之間以一致的方式附加功能。

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

下一步