Microsoft.Extensions.AI を使用した .NET 用の統合 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 ライブラリのセットです。 これらのライブラリは、小規模および大規模言語モデル (SMS と LLM)、埋め込み、ミドルウェアなど、AI サービスと対話するための C# 抽象化の統一されたレイヤーを提供します。
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 サービスへの接続と使用は、堅牢なアプリケーションの構築の 1 つの側面にすぎません。 運用対応アプリケーションには、テレメトリ、ログ記録、ツール呼び出し機能などの追加機能が必要です。 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 が維持されます。
- エコシステム共同作成者: エコシステムへの貢献に関心がある場合は、カスタム ミドルウェア コンポーネントの作成を検討してください。 開始するには、gitHub リポジトリの dotnet/ai-samples のサンプルを参照してください。
Microsoft.Extensions.AI
を使用したエンドツーエンドのサンプルについては、eShopSupportを参照してください。
次のステップ
.NET