Compartilhar via


FunctionInvokingChatClient Classe

Definição

Um cliente de chat de delegação que invoca funções definidas em ChatOptions. Inclua isso em um pipeline de chat para resolver chamadas de função automaticamente.

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
Herança
FunctionInvokingChatClient

Comentários

Quando esse cliente recebe uma FunctionCallContent resposta de chat de seu interior IChatClient, ele responde invocando o correspondente AIFunction definido em Tools (ou em AdditionalTools), produzindo um FunctionResultContent que ele envia de volta para o cliente interno. Esse loop é repetido até que não haja mais chamadas de função a serem feitas ou até que outra condição de parada seja atendida, como bater MaximumIterationsPerRequest.

Se uma função solicitada for uma AIFunctionDeclaration , mas não uma AIFunction, não FunctionInvokingChatClient tentará invocá-la e, em vez disso, permitirá que ela FunctionCallContent passe de volta para o chamador. Em seguida, é responsabilidade do chamador criar o apropriado FunctionResultContent para essa chamada e enviá-la de volta como parte de uma solicitação subsequente.

Além disso, se uma função solicitada for uma ApprovalRequiredAIFunction, não FunctionInvokingChatClient tentará invocá-la diretamente. Em vez disso, ele substituirá por FunctionCallContent um ToolApprovalRequestContent que encapsula e FunctionCallContent indica que a função requer aprovação antes de ser invocada. Em seguida, o chamador é responsável por responder a essa solicitação de aprovação enviando um correspondente ToolApprovalResponseContent em uma solicitação subsequente. Em FunctionInvokingChatClient seguida, processará essa resposta de aprovação e invocará a função conforme apropriado.

Devido à natureza das interações com um subjacente IChatClient, se algum FunctionCallContent for recebido para uma função que exija aprovação, todos recebidos FunctionCallContent nessa mesma resposta também exigirão aprovação, mesmo que não ApprovalRequiredAIFunction fossem instâncias. Se isso for uma preocupação, considere solicitar que várias solicitações de chamada de ferramenta não sejam feitas em uma única resposta, definindo AllowMultipleToolCalls como false.

Uma FunctionInvokingChatClient instância é thread-safe para uso simultâneo, desde que as AIFunction instâncias empregadas como parte do fornecido ChatOptions também sejam seguras. A AllowConcurrentInvocation propriedade pode ser usada para controlar se várias solicitações de invocação de função como parte da mesma solicitação são invocadas simultaneamente, mas mesmo com esse conjunto false como (o padrão), várias solicitações simultâneas para essa mesma instância e usar as mesmas ferramentas podem resultar no uso simultâneo dessas ferramentas (uma por solicitação). Por exemplo, uma função que acessa o HttpContext de uma solicitação web ASP.NET específica só deve ser usada como parte de um único ChatOptions de cada vez e apenas com AllowConcurrentInvocation definido como false, caso o cliente interno decidiu emitir várias solicitações de invocação para essa mesma função.

Construtores

Nome Description
FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider)

Inicializa uma nova instância da classe FunctionInvokingChatClient.

Propriedades

Nome Description
AdditionalTools

Obtém ou define uma coleção de ferramentas adicionais que o cliente pode invocar.

AllowConcurrentInvocation

Obtém ou define um valor que indica se deve permitir invocação simultânea de funções.

CurrentContext

Obtém ou define a FunctionInvocationContext invocação da função atual.

FunctionInvocationServices

Obtém o IServiceProvider especificado ao construir o FunctionInvokingChatClient, se houver.

FunctionInvoker

Obtém ou define um delegado usado para invocar AIFunction instâncias.

IncludeDetailedErrors

Obtém ou define um valor que indica se informações de exceção detalhadas devem ser incluídas no histórico de chat ao chamar o subjacente IChatClient.

InnerClient

Obtém o interior IChatClient.

(Herdado de DelegatingChatClient)
MaximumConsecutiveErrorsPerRequest

Obtém ou define o número máximo de iterações consecutivas que têm permissão para falhar com um erro.

MaximumIterationsPerRequest

Obtém ou define o número máximo de iterações por solicitação.

TerminateOnUnknownCalls

Obtém ou define um valor que indica se uma solicitação para chamar uma função desconhecida deve encerrar o loop de chamada de função.

Métodos

Nome Description
CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>)

Cria uma ou mais mensagens de resposta para resultados de invocação de função.

Dispose()

Executa tarefas definidas pelo aplicativo associadas à liberação, liberação ou redefinição de recursos não gerenciados.

(Herdado de DelegatingChatClient)
Dispose(Boolean)

Fornece um mecanismo para liberar recursos não gerenciados.

(Herdado de DelegatingChatClient)
GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Envia mensagens de chat e retorna a resposta.

GetService(Type, Object)

Solicita um IChatClient objeto do tipo serviceTypeespecificado.

(Herdado de DelegatingChatClient)
GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Envia mensagens de chat e transmite a resposta.

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

Esse método invocará a função dentro do bloco try.

Métodos de Extensão

Nome Description
AsBuilder(IChatClient)

Cria um novo ChatClientBuilder uso innerClient como seu cliente interno.

GetRequiredService(IChatClient, Type, Object)

Solicita um IChatClient objeto do tipo serviceType especificado e gera uma exceção se um não estiver disponível.

GetRequiredService<TService>(IChatClient, Object)

Solicita um IChatClient objeto de tipo TService e gera uma exceção se um não estiver disponível.

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Envia uma mensagem de chat e retorna as mensagens de resposta.

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Envia uma mensagem de texto de chat do usuário e retorna as mensagens de resposta.

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

Envia uma mensagem de chat solicitando uma resposta que corresponda ao tipo T.

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

Envia uma mensagem de chat solicitando uma resposta que corresponda ao tipo T.

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

Envia mensagens de chat, solicitando uma resposta que corresponda ao tipo T.

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

Envia mensagens de chat, solicitando uma resposta que corresponda ao tipo T.

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

Envia uma mensagem de texto de chat do usuário solicitando uma resposta correspondente ao tipo T.

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

Envia uma mensagem de texto de chat do usuário solicitando uma resposta correspondente ao tipo T.

GetService<TService>(IChatClient, Object)

Solicita um IChatClient objeto do tipo TService.

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Envia uma mensagem de chat e transmite as mensagens de resposta.

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Envia uma mensagem de texto de chat do usuário e transmite as mensagens de resposta.

Aplica-se a