次の方法で共有


FunctionInvokingChatClient クラス

定義

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
継承
FunctionInvokingChatClient

注釈

このクライアントは、内部IChatClientからチャット応答でFunctionCallContentを受信すると、Tools (または AdditionalTools) で定義された対応するAIFunctionを呼び出して応答し、内部クライアントに送り返すFunctionResultContentを生成します。 このループは、実行する関数呼び出しがなくなったり、 MaximumIterationsPerRequestにヒットするなど、別の停止条件が満たされるまで繰り返されます。

要求された関数が AIFunctionDeclaration であり、 AIFunctionではない場合、 FunctionInvokingChatClient はそれを呼び出そうとせず、代わりにその FunctionCallContent が呼び出し元に戻すことを許可します。 その後、呼び出し元は、その呼び出しに対して適切な FunctionResultContent を作成し、後続の要求の一部として返送する必要があります。

さらに、要求された関数が ApprovalRequiredAIFunctionの場合、 FunctionInvokingChatClient は直接呼び出そうとしません。 代わりに、そのFunctionCallContentFunctionCallContentをラップし、関数を呼び出す前に承認が必要であることを示すToolApprovalRequestContentに置き換えます。 呼び出し元は、後続の要求で対応する ToolApprovalResponseContent を送信することによって、その承認要求に応答する責任を負います。 その後、 FunctionInvokingChatClient はその承認応答を処理し、必要に応じて関数を呼び出します。

基になる IChatClientとの対話の性質上、承認を必要とする関数に対して FunctionCallContent を受け取った場合、その同じ応答で受信したすべての FunctionCallContent も、インスタンス ApprovalRequiredAIFunction されていない場合でも承認が必要になります。 これが問題になる場合は、 AllowMultipleToolCallsfalse に設定して、1 つの応答で複数のツール呼び出し要求を行わないよう要求することを検討してください。

FunctionInvokingChatClient インスタンスは、指定されたChatOptionsの一部として使用されるAIFunction インスタンスも安全である限り、同時使用にはスレッド セーフです。 AllowConcurrentInvocation プロパティを使用すると、同じ要求の一部として複数の関数呼び出し要求を同時に呼び出すことができるかどうかを制御できますが、false (既定) に設定されている場合でも、この同じインスタンスに対する複数の同時要求と同じツールを使用すると、それらのツールが同時に使用される可能性があります (要求ごとに 1 つ)。 たとえば、特定の ASP.NET Web 要求の HttpContext にアクセスする関数は、一度に 1 つの ChatOptions の一部としてのみ使用し、内部クライアントがその同じ関数に対して複数の呼び出し要求を発行することを決定した場合に、 AllowConcurrentInvocationfalse に設定した場合にのみ使用する必要があります。

コンストラクター

名前 説明
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のオブジェクトをserviceTypeに要求します。

(継承元 DelegatingChatClient)
GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

チャット メッセージを送信し、応答をストリームします。

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

このメソッドは、try ブロック内で関数を呼び出します。

拡張メソッド

名前 説明
AsBuilder(IChatClient)

ChatClientBuilderを内部クライアントとして使用して、新しいinnerClientを作成します。

GetRequiredService(IChatClient, Type, Object)

指定した型IChatClientのオブジェクトをserviceTypeに要求し、使用できない場合は例外をスローします。

GetRequiredService<TService>(IChatClient, Object)

IChatClient型のオブジェクトをTServiceに要求し、使用できない場合は例外をスローします。

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

チャット メッセージを送信し、応答メッセージを返します。

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

ユーザー チャット テキスト メッセージを送信し、応答メッセージを返します。

GetResponseAsync<T>(IChatClient, ChatMessage, ChatOptions, Nullable<Boolean>, CancellationToken)

チャット メッセージを送信し、 Tの種類に一致する応答を要求します。

GetResponseAsync<T>(IChatClient, ChatMessage, JsonSerializerOptions, ChatOptions, Nullable<Boolean>, CancellationToken)

チャット メッセージを送信し、 Tの種類に一致する応答を要求します。

GetResponseAsync<T>(IChatClient, IEnumerable<ChatMessage>, ChatOptions, Nullable<Boolean>, CancellationToken)

チャット メッセージを送信し、 Tの種類に一致する応答を要求します。

GetResponseAsync<T>(IChatClient, IEnumerable<ChatMessage>, JsonSerializerOptions, ChatOptions, Nullable<Boolean>, CancellationToken)

チャット メッセージを送信し、 Tの種類に一致する応答を要求します。

GetResponseAsync<T>(IChatClient, String, ChatOptions, Nullable<Boolean>, CancellationToken)

ユーザー チャット テキスト メッセージを送信し、 Tの種類に一致する応答を要求します。

GetResponseAsync<T>(IChatClient, String, JsonSerializerOptions, ChatOptions, Nullable<Boolean>, CancellationToken)

ユーザー チャット テキスト メッセージを送信し、 Tの種類に一致する応答を要求します。

GetService<TService>(IChatClient, Object)

IChatClient型のオブジェクトをTServiceに求めます。

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

チャット メッセージを送信し、応答メッセージをストリーミングします。

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

ユーザー チャット テキスト メッセージを送信し、応答メッセージをストリーミングします。

適用対象