プログラミングとソフトウェア開発

Microsoft.Extensions.AI にルーティングおよびフェイルオーバー機能を追加

.NET チームは、AI リクエストをモデルやサービスプロバイダー間でルーティングし、一方が停止した場合にフェイルオーバーを実行し、Microsoft.Extensions.AI 内でカスタムルーティングポリシーを構築できる4種類の新しい実験的型を発表しました。

2026-08-13
1 分で読めます
8 閲覧数
فريق تحرير certi.news
Microsoft.Extensions.AI にルーティングおよびフェイルオーバー機能を追加

Microsoft は Microsoft.Extensions.AI ライブラリに、AI リクエストのルーティングと、モデルまたはサービスプロバイダー間のフェイルオーバーを管理する4種類の実験的な型を追加しました。これらの型はすべて IChatClient インターフェースの実装として動作するため、コスト、可用性、応答時間の制約に対応する既存のライブラリ構成内で利用できます。

ルーティングおよびフェイルオーバー機能

RoutingChatClient は、各リクエストに適したクライアントを選択して呼び出しを渡す基本クラスです。単純なコールバック関数で作成できるほか、SelectClientAsync を再定義して、より複雑なポリシーやアプリケーションの状態に依存するルーティングポリシーを適用するよう拡張できます。

SemanticRoutingChatClient は、リクエストの意味に基づいてリクエストをルーティングします。開発者は各クライアントに関連するフレーズの例をライブラリに提供し、最後のユーザーメッセージが埋め込みに変換されます。その後、例と比較して、指定されたしきい値を超える最も高い類似度を持つクライアントが選択されます。どの一致もしきい値を超えない場合は、既定のクライアントが使用されます。

ルート例の埋め込みは必要に応じて作成され、キャッシュされます。scoreThresholdtopKscoreAggregation などの設定により、類似度の最小しきい値、結果の集約に使用する例の数、平均または合計の使用を制御できます。また、この型は既定で、破棄時にクライアントと埋め込み生成器を破棄します。これは leaveOpen によって無効にできます。

フェイルオーバーと試行の監視

FailoverChatClient は、再試行ループを追加することでルーティング機能を拡張します。選択されたクライアントが、ストリーミング出力を呼び出し元へ一切送信する前に失敗した場合、この型は別のクライアントを選択するために SelectClientAsync を再度呼び出します。出力の送信が開始された後の失敗は最終的な失敗とみなされ、ストリーミング途中の復旧は実行されません。

このクラスは OnRoutingUpdateAsync を提供し、成功、失敗、または放棄に終わったかどうかにかかわらず、各試行を監視できます。試行の記録には、呼び出されたクライアント、実行時間、存在する場合は例外、応答が完了したか、またはストリーミング出力が呼び出し元に到達したか、さらに該当する場合は最初の更新までの時間が含まれます。これらのデータは、プロバイダーのパフォーマンス評価や、サーキットブレーカー、応答時間に基づくクライアントの順位付けなどのポリシー構築に利用できます。

OrderedFailoverChatClient は、この仕組みのすぐに利用できる実装を提供します。順序付けられたクライアントの一覧を受け取り、順番に試行します。すべての選択肢が失敗した場合は、最後の例外が再スローされます。MaximumAttemptsPerRequest はリクエストあたりの最大呼び出し回数を定め、リクエストのキャンセル トークンがキャンセルされると、新しいクライアントの選択も停止します。

ルーティングポリシー構築時の考慮事項

この投稿では、会話の各ターンで、その性質を検討せずに再ルーティングすることについて警告しています。推論モデルは、特定のプロバイダーに関連付けられた暗号化されたコンテンツや継続トークンに依存する場合があります。また、別のモデルやプロバイダーへ移行すると、プレフィックスのキャッシュによる恩恵が失われ、その計算コストを再び支払うことになる可能性があります。

複数ターンの会話では、プロバイダー固有の ConversationId に依存するのではなく、サービス自体が所有するセッション識別子を使用して経路を固定することを投稿では提案しています。選択された経路はセッション状態または IDistributedCache に保存でき、経路を固定するのは応答が正常に完了した後だけにします。

構築できるその他のポリシーには、応答時間、健全性、コスト、機能、地理的リージョンに基づくルーティングが含まれます。また、各ルーターは IChatClient として動作するため、複数のルーターを組み合わせることもできます。ただし、これらのツールは、成功した応答の品質に基づく逐次ルーティング、複数のクライアントの実行と結果の統合、最初の応答を選ぶためのクライアント間の競争は実行しません。これらのシナリオには、複数回の呼び出しを実行するクライアントが必要です。

提供状況と実験的ステータス

RoutingChatClientRoutingContextFailoverChatClientFailoverChatClientAttemptOrderedFailoverChatClientSemanticRoutingChatClient は、Microsoft.Extensions.AI のバージョン 10.9.0 で提供されました。これらはすべて、診断識別子 MEAI001 を使用して実験的であることが示されています。パッケージは、dotnet add package Microsoft.Extensions.AI コマンドで追加できます。

ニュースの出典
ف
著者

فريق تحرير certi.news

同じカテゴリー

おすすめ記事

すべてのニュースを見る