FunctionInvokingChatClient Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Client di chat di delega che richiama le funzioni definite in ChatOptions. Includerlo in una pipeline di chat per risolvere automaticamente le chiamate di funzione.
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
- Ereditarietà
Commenti
Quando questo client riceve un oggetto FunctionCallContent in una risposta di chat dal suo interno IChatClient, risponde richiamando il corrispondente AIFunction definito in Tools (o in AdditionalTools), producendo un oggetto FunctionResultContent che invia al client interno. Questo ciclo viene ripetuto fino a quando non sono presenti altre chiamate di funzione da effettuare o fino a quando non viene soddisfatta un'altra condizione di arresto, ad esempio il raggiungimento di MaximumIterationsPerRequest.
Se una funzione richiesta è un oggetto AIFunctionDeclaration ma non un AIFunctionoggetto , non FunctionInvokingChatClient tenterà di richiamarlo e invece di consentirlo FunctionCallContent di passare di nuovo al chiamante. È quindi responsabilità del chiamante creare il appropriato FunctionResultContent per tale chiamata e inviarlo come parte di una richiesta successiva.
Inoltre, se una funzione richiesta è un ApprovalRequiredAIFunctionoggetto , non FunctionInvokingChatClient tenterà di richiamarla direttamente. Sostituirà invece con FunctionCallContent un ToolApprovalRequestContent oggetto che esegue il FunctionCallContent wrapping di e indica che la funzione richiede l'approvazione prima che possa essere richiamata. Il chiamante è quindi responsabile della risposta alla richiesta di approvazione inviando un oggetto corrispondente ToolApprovalResponseContent in una richiesta successiva. Elaborerà FunctionInvokingChatClient quindi la risposta di approvazione e richiamerà la funzione in base alle esigenze.
A causa della natura delle interazioni con un oggetto sottostante IChatClient, se viene FunctionCallContent ricevuto un oggetto per una funzione che richiede l'approvazione, tutto ricevuto FunctionCallContent nella stessa risposta richiederà anche l'approvazione, anche se non ApprovalRequiredAIFunction erano istanze. Se si tratta di un problema, è consigliabile richiedere che più richieste di chiamata dello strumento non vengano effettuate in una singola risposta, impostando su AllowMultipleToolCallsfalse.
Un'istanza FunctionInvokingChatClient è thread-safe per l'uso simultaneo, purché le AIFunction istanze usate come parte dell'oggetto fornito ChatOptions siano sicure. La AllowConcurrentInvocation proprietà può essere usata per controllare se più richieste di chiamata di funzione come parte della stessa richiesta sono chiamate simultaneamente, ma anche con tale impostazione su false (impostazione predefinita), più richieste simultanee alla stessa istanza e l'uso degli stessi strumenti potrebbe comportare l'uso simultaneo di tali strumenti (uno per richiesta). Ad esempio, una funzione che accede a HttpContext di una specifica richiesta Web di ASP.NET deve essere usata solo come parte di un singolo ChatOptions oggetto alla volta e solo con AllowConcurrentInvocation impostato su false, nel caso in cui il client interno ha deciso di inviare più richieste di chiamata a tale funzione.
Costruttori
| Nome | Descrizione |
|---|---|
| FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider) |
Inizializza una nuova istanza della classe FunctionInvokingChatClient. |
Proprietà
| Nome | Descrizione |
|---|---|
| AdditionalTools |
Ottiene o imposta una raccolta di strumenti aggiuntivi che il client può richiamare. |
| AllowConcurrentInvocation |
Ottiene o imposta un valore che indica se consentire la chiamata simultanea delle funzioni. |
| CurrentContext |
Ottiene o imposta l'oggetto FunctionInvocationContext per la chiamata alla funzione corrente. |
| FunctionInvocationServices |
Ottiene l'oggetto IServiceProvider specificato durante la costruzione dell'oggetto FunctionInvokingChatClient, se presente. |
| FunctionInvoker |
Ottiene o imposta un delegato utilizzato per richiamare AIFunction le istanze. |
| IncludeDetailedErrors |
Ottiene o imposta un valore che indica se le informazioni dettagliate sulle eccezioni devono essere incluse nella cronologia delle chat quando si chiama l'oggetto sottostante IChatClient. |
| InnerClient |
Ottiene l'oggetto interno IChatClient. (Ereditato da DelegatingChatClient) |
| MaximumConsecutiveErrorsPerRequest |
Ottiene o imposta il numero massimo di iterazioni consecutive che possono avere esito negativo con un errore. |
| MaximumIterationsPerRequest |
Ottiene o imposta il numero massimo di iterazioni per richiesta. |
| TerminateOnUnknownCalls |
Ottiene o imposta un valore che indica se una richiesta di chiamare una funzione sconosciuta deve terminare il ciclo di chiamata della funzione. |
Metodi
| Nome | Descrizione |
|---|---|
| CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>) |
Crea uno o più messaggi di risposta per i risultati della chiamata di funzione. |
| Dispose() |
Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione di risorse non gestite. (Ereditato da DelegatingChatClient) |
| Dispose(Boolean) |
Fornisce un meccanismo per il rilascio di risorse non gestite. (Ereditato da DelegatingChatClient) |
| GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Invia messaggi di chat e restituisce la risposta. |
| GetService(Type, Object) |
Richiede un IChatClient oggetto del tipo |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Invia messaggi di chat e trasmette la risposta. |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
Questo metodo richiamerà la funzione all'interno del blocco try. |