FunctionInvokingChatClient Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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 |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Sendet Chatnachrichten und streamt die Antwort. |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
Diese Methode ruft die Funktion innerhalb des Try-Blocks auf. |