FunctionInvokingChatClient クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ChatOptionsで定義されている関数を呼び出す委任チャット クライアント。 これをチャット パイプラインに含め、関数呼び出しを自動的に解決します。
public ref class FunctionInvokingChatClient : Microsoft::Extensions::AI::DelegatingChatClient
public class FunctionInvokingChatClient : Microsoft.Extensions.AI.DelegatingChatClient
type FunctionInvokingChatClient = class
inherit DelegatingChatClient
Public Class FunctionInvokingChatClient
Inherits DelegatingChatClient
- 継承
注釈
このクライアントは、内部IChatClientからチャット応答でFunctionCallContentを受信すると、Tools (または AdditionalTools) で定義された対応するAIFunctionを呼び出して応答し、内部クライアントに送り返すFunctionResultContentを生成します。 このループは、実行する関数呼び出しがなくなったり、 MaximumIterationsPerRequestにヒットするなど、別の停止条件が満たされるまで繰り返されます。
要求された関数が AIFunctionDeclaration であり、 AIFunctionではない場合、 FunctionInvokingChatClient はそれを呼び出そうとせず、代わりにその FunctionCallContent が呼び出し元に戻すことを許可します。 その後、呼び出し元は、その呼び出しに対して適切な FunctionResultContent を作成し、後続の要求の一部として返送する必要があります。
さらに、要求された関数が ApprovalRequiredAIFunctionの場合、 FunctionInvokingChatClient は直接呼び出そうとしません。 代わりに、そのFunctionCallContentをFunctionCallContentをラップし、関数を呼び出す前に承認が必要であることを示すToolApprovalRequestContentに置き換えます。 呼び出し元は、後続の要求で対応する ToolApprovalResponseContent を送信することによって、その承認要求に応答する責任を負います。 その後、 FunctionInvokingChatClient はその承認応答を処理し、必要に応じて関数を呼び出します。
基になる IChatClientとの対話の性質上、承認を必要とする関数に対して FunctionCallContent を受け取った場合、その同じ応答で受信したすべての FunctionCallContent も、インスタンス ApprovalRequiredAIFunction されていない場合でも承認が必要になります。 これが問題になる場合は、 AllowMultipleToolCalls を false に設定して、1 つの応答で複数のツール呼び出し要求を行わないよう要求することを検討してください。
FunctionInvokingChatClient インスタンスは、指定されたChatOptionsの一部として使用されるAIFunction インスタンスも安全である限り、同時使用にはスレッド セーフです。
AllowConcurrentInvocation プロパティを使用すると、同じ要求の一部として複数の関数呼び出し要求を同時に呼び出すことができるかどうかを制御できますが、false (既定) に設定されている場合でも、この同じインスタンスに対する複数の同時要求と同じツールを使用すると、それらのツールが同時に使用される可能性があります (要求ごとに 1 つ)。 たとえば、特定の ASP.NET Web 要求の HttpContext にアクセスする関数は、一度に 1 つの ChatOptions の一部としてのみ使用し、内部クライアントがその同じ関数に対して複数の呼び出し要求を発行することを決定した場合に、 AllowConcurrentInvocation を false に設定した場合にのみ使用する必要があります。
コンストラクター
| 名前 | 説明 |
|---|---|
| FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider) |
FunctionInvokingChatClient クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AdditionalTools |
クライアントが呼び出すことができる追加ツールのコレクションを取得または設定します。 |
| AllowConcurrentInvocation |
関数の同時呼び出しを許可するかどうかを示す値を取得または設定します。 |
| CurrentContext |
現在の関数呼び出しの FunctionInvocationContext を取得または設定します。 |
| FunctionInvocationServices |
FunctionInvokingChatClientを構築するときに指定したIServiceProviderを取得します (存在する場合)。 |
| FunctionInvoker |
AIFunction インスタンスの呼び出しに使用するデリゲートを取得または設定します。 |
| IncludeDetailedErrors |
基になる IChatClientを呼び出すときに、詳細な例外情報をチャット履歴に含めるかどうかを示す値を取得または設定します。 |
| InnerClient |
内部 IChatClientを取得します。 (継承元 DelegatingChatClient) |
| MaximumConsecutiveErrorsPerRequest |
エラーで失敗できる連続するイテレーションの最大数を取得または設定します。 |
| MaximumIterationsPerRequest |
要求あたりのイテレーションの最大数を取得または設定します。 |
| TerminateOnUnknownCalls |
不明な関数を呼び出す要求で関数呼び出しループを終了するかどうかを示す値を取得または設定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>) |
関数呼び出し結果の 1 つ以上の応答メッセージを作成します。 |
| Dispose() |
アンマネージド リソースの解放、解放、またはリセットに関連付けられているアプリケーション定義のタスクを実行します。 (継承元 DelegatingChatClient) |
| Dispose(Boolean) |
アンマネージ リソースを解放するためのメカニズムを提供します。 (継承元 DelegatingChatClient) |
| GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
チャット メッセージを送信し、応答を返します。 |
| GetService(Type, Object) |
指定した型IChatClientのオブジェクトを |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
チャット メッセージを送信し、応答をストリームします。 |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
このメソッドは、try ブロック内で関数を呼び出します。 |