Freigeben über


FunctionInvokingChatClient Klasse

Definition

Ein delegierender Chatclient, der funktionen aufruft, die für ChatOptions. Fügen Sie dies in eine Chatpipeline ein, um Funktionsaufrufe automatisch aufzulösen.

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
Vererbung
FunctionInvokingChatClient

Hinweise

Wenn dieser Client eine FunctionCallContent In-Chat-Antwort von seinem inneren IChatClienterhält, antwortet er, indem er den entsprechenden AIFunction definierten ( Tools oder in AdditionalTools) aufruft, um eine FunctionResultContent , die er an den inneren Client zurücksendet. Diese Schleife wird wiederholt, bis es keine weiteren Funktionsaufrufe gibt, die ausgeführt werden sollen, oder bis eine andere Stoppbedingung erfüllt ist, z. B. Durch Drücken MaximumIterationsPerRequest.

Wenn es sich bei einer angeforderten Funktion um eine aber nicht um eine AIFunctionDeclaration Funktion handelt, wird nicht FunctionInvokingChatClient versucht, sie aufzurufen, und dies FunctionCallContent stattdessen zulassen, dass sie an den Aufrufer zurückgesendet AIFunctionwird. Es liegt dann in der Verantwortung des Anrufers, den entsprechenden FunctionResultContent Anruf zu erstellen und ihn als Teil einer nachfolgenden Anforderung zurückzusenden.

Wenn es sich bei einer angeforderten Funktion um eine ApprovalRequiredAIFunctionFunktion handelt, wird nicht versucht, FunctionInvokingChatClient sie direkt aufzurufen. Stattdessen wird FunctionCallContent dies durch ein ToolApprovalRequestContent Umbruch FunctionCallContent ersetzt und angibt, dass die Funktion eine Genehmigung erfordert, bevor sie aufgerufen werden kann. Der Anrufer ist dann für die Beantwortung dieser Genehmigungsanforderung verantwortlich, indem er eine entsprechende ToolApprovalResponseContent in einer nachfolgenden Anforderung sendet. Anschließend FunctionInvokingChatClient wird diese Genehmigungsantwort verarbeitet und die Funktion entsprechend aufgerufen.

Aufgrund der Art der Interaktionen mit einer zugrunde liegenden IChatClientFunktion, wenn eine FunctionCallContent funktion empfangen wird, die eine Genehmigung erfordert, benötigen alle, die in derselben Antwort empfangen FunctionCallContent werden, auch dann eine Genehmigung, auch wenn sie keine ApprovalRequiredAIFunction Instanzen waren. Wenn dies ein Problem ist, sollten Sie in Erwägung ziehen, dass mehrere Toolanrufanforderungen nicht in einer einzigen Antwort erfolgen, indem Sie auf "false.AllowMultipleToolCalls

Eine FunctionInvokingChatClient Instanz ist threadsicher für die gleichzeitige Verwendung, solange die AIFunction im Rahmen der bereitgestellten ChatOptions Instanzen ebenfalls sicher sind. Die AllowConcurrentInvocation Eigenschaft kann verwendet werden, um zu steuern, ob mehrere Funktionsaufrufe als Teil derselben Anforderung gleichzeitig aufrufbar sind, aber auch mit dieser Einstellung false (Standardeinstellung) können mehrere gleichzeitige Anforderungen an diese Instanz und die Verwendung derselben Tools dazu führen, dass diese Tools gleichzeitig verwendet werden (eine pro Anforderung). Beispielsweise sollte eine Funktion, die auf den HttpContext einer bestimmten ASP.NET-Webanforderung zugreift, nur als Teil einer Einzelnen ChatOptions gleichzeitig verwendet werden, und nur für AllowConcurrentInvocationfalseden Fall, dass der innere Client beschlossen hat, mehrere Aufrufanforderungen an dieselbe Funktion auszustellen.

Konstruktoren

Name Beschreibung
FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider)

Initialisiert eine neue Instanz der FunctionInvokingChatClient-Klasse.

Eigenschaften

Name Beschreibung
AdditionalTools

Dient zum Abrufen oder Festlegen einer Auflistung zusätzlicher Tools, die der Client aufrufen kann.

AllowConcurrentInvocation

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob gleichzeitiger Aufruf von Funktionen zulässig ist.

CurrentContext

Dient zum Abrufen oder Festlegen des FunctionInvocationContext Aufrufs der aktuellen Funktion.

FunctionInvocationServices

Ruft den IServiceProvider angegebenen Beim Erstellen des FunctionInvokingChatClient, falls vorhanden.

FunctionInvoker

Dient zum Abrufen oder Festlegen eines Delegaten, der zum Aufrufen von AIFunction Instanzen verwendet wird.

IncludeDetailedErrors

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob detaillierte Ausnahmeinformationen beim Aufrufen des zugrunde liegenden IChatClientChats in den Chatverlauf einbezogen werden sollen.

InnerClient

Ruft das innere IChatClientab.

(Geerbt von DelegatingChatClient)
MaximumConsecutiveErrorsPerRequest

Ruft die maximale Anzahl aufeinander folgender Iterationen ab, die mit einem Fehler fehlschlagen dürfen, oder legt diese fest.

MaximumIterationsPerRequest

Ruft die maximale Anzahl von Iterationen pro Anforderung ab oder legt sie fest.

TerminateOnUnknownCalls

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob eine Anforderung zum Aufrufen einer unbekannten Funktion die Funktionsaufrufschleife beenden soll.

Methoden

Name Beschreibung
CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>)

Erstellt mindestens eine Antwortnachricht für Funktionsaufrufe.

Dispose()

Führt anwendungsdefinierte Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen nicht verwalteter Ressourcen verknüpft sind.

(Geerbt von DelegatingChatClient)
Dispose(Boolean)

Stellt einen Mechanismus zum Freigeben nicht verwalteter Ressourcen bereit.

(Geerbt von DelegatingChatClient)
GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Sendet Chatnachrichten und gibt die Antwort zurück.

GetService(Type, Object)

Fragt nach IChatClient einem Objekt des angegebenen Typs serviceType.

(Geerbt von DelegatingChatClient)
GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Sendet Chatnachrichten und streamt die Antwort.

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

Diese Methode ruft die Funktion innerhalb des Try-Blocks auf.

Erweiterungsmethoden

Name Beschreibung
AsBuilder(IChatClient)

Erstellt eine neue ChatClientBuilder Verwendung innerClient als inneren Client.

GetRequiredService(IChatClient, Type, Object)

Fragt nach IChatClient einem Objekt des angegebenen Typs serviceType und löst eine Ausnahme aus, wenn eine nicht verfügbar ist.

GetRequiredService<TService>(IChatClient, Object)

Fragt nach IChatClient einem Objekt vom Typ TService und löst eine Ausnahme aus, wenn ein Objekt nicht verfügbar ist.

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Sendet eine Chatnachricht und gibt die Antwortnachrichten zurück.

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Sendet eine Benutzerchattextnachricht und gibt die Antwortnachrichten zurück.

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

Sendet eine Chatnachricht, die eine Antwort anfordert, die dem Typ Tentspricht.

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

Sendet eine Chatnachricht, die eine Antwort anfordert, die dem Typ Tentspricht.

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

Sendet Chatnachrichten und fordert eine Antwort an, die dem Typ Tentspricht.

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

Sendet Chatnachrichten und fordert eine Antwort an, die dem Typ Tentspricht.

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

Sendet eine Benutzerchattextnachricht, die eine Antwort anfordert, die dem Typ Tentspricht.

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

Sendet eine Benutzerchattextnachricht, die eine Antwort anfordert, die dem Typ Tentspricht.

GetService<TService>(IChatClient, Object)

Fragt nach IChatClient einem Objekt vom Typ TService.

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Sendet eine Chatnachricht und streamt die Antwortnachrichten.

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Sendet eine Benutzerchattextnachricht und streamt die Antwortnachrichten.

Gilt für: