FunctionInvokingChatClient Classe

Definição

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

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

Observações

Quando este cliente recebe uma FunctionCallContent resposta num chat do seu cliente interno IChatClient, responde invocando o correspondente AIFunction definido em Tools (ou em AdditionalTools), produzindo um FunctionResultContent que envia de volta ao cliente interno. Este ciclo repete-se até que não haja mais chamadas de função a fazer, ou até que outra condição de paragem seja cumprida, como atingir MaximumIterationsPerRequest.

Se uma função solicitada for um AIFunctionDeclaration mas não um AIFunction, não FunctionInvokingChatClient tentará invocá-la, permitindo que ela FunctionCallContent passe novamente para o chamador. É então responsabilidade do interlocutor criar o apropriado FunctionResultContent para essa chamada e enviá-lo de volta como parte de um pedido subsequente.

Além disso, se uma função solicitada for um ApprovalRequiredAIFunction, o FunctionInvokingChatClient não tentará invocá-la diretamente. Em vez disso, substituirá isso FunctionCallContent por um ToolApprovalRequestContent que envolve o FunctionCallContent e indica que a função requer aprovação antes de poder ser invocada. O interlocutor é então responsável por responder a esse pedido de aprovação, enviando um correspondente ToolApprovalResponseContent num pedido subsequente. Depois, FunctionInvokingChatClient processam essa resposta de aprovação e invocam a função conforme apropriado.

Devido à natureza das interações com um subjacente IChatClient, se alguma FunctionCallContent for recebida para uma função que requer aprovação, todas as recebidas FunctionCallContent nessa mesma resposta também precisarão de aprovação, mesmo que não ApprovalRequiredAIFunction fossem instâncias. Se isto for uma preocupação, considere pedir que não sejam feitas múltiplas chamadas de ferramenta numa única resposta, definindo AllowMultipleToolCalls para false.

Uma FunctionInvokingChatClient instância é segura para uso concorrente desde que as AIFunction instâncias usadas como parte do fornecido ChatOptions também sejam seguras. A AllowConcurrentInvocation propriedade pode ser usada para controlar se múltiplos pedidos de invocação de funções como parte do mesmo pedido são invocáveis em simultâneo, mas mesmo com isso definido para false (o padrão), múltiplos pedidos concorrentes para esta mesma instância e o uso das mesmas ferramentas podem resultar no uso simultâneo dessas ferramentas (um por pedido). Por exemplo, uma função que acede ao HttpContext de um pedido web ASP.NET específico só deve ser usada como parte de um único ChatOptions de cada vez, e apenas com AllowConcurrentInvocation definido para false, caso o cliente interno decida emitir múltiplos pedidos de invocação para essa mesma função.

Construtores

Name Description
FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider)

Inicializa uma nova instância da FunctionInvokingChatClient classe.

Propriedades

Name Description
AdditionalTools

Obtém ou define um conjunto de ferramentas adicionais que o cliente pode invocar.

AllowConcurrentInvocation

Recebe ou define um valor que indica se permite a invocação concorrente de funções.

CurrentContext

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

FunctionInvocationServices

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

FunctionInvoker

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

IncludeDetailedErrors

Recebe ou define um valor que indica se informação detalhada de exceção deve ser incluída 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 podem falhar com um erro.

MaximumIterationsPerRequest

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

TerminateOnUnknownCalls

Recebe ou define um valor que indica se um pedido para chamar uma função desconhecida deve terminar o ciclo de chamada da função.

Métodos

Name Description
CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>)

Cria uma ou mais mensagens de resposta para os resultados da invocação de funções.

Dispose()

Realiza tarefas definidas pela aplicação associadas à libertação, libertação ou reinício de recursos não geridos.

(Herdado de DelegatingChatClient)
Dispose(Boolean)

Fornece um mecanismo para libertar recursos não geridos.

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

Envia mensagens no chat e responde.

GetService(Type, Object)

Pergunta a IChatClient um objeto do tipo serviceTypeespecificado .

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

Envia mensagens no chat e transmite a resposta em streaming.

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

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

Métodos da Extensão

Name Description
AsBuilder(IChatClient)

Cria um novo ChatClientBuilder uso innerClient como seu cliente interno.

GetRequiredService(IChatClient, Type, Object)

Pede IChatClient um objeto do tipo serviceType especificado e lança uma exceção caso não esteja disponível.

GetRequiredService<TService>(IChatClient, Object)

Pede um IChatClient objeto do tipo TService e lança uma exceção se não estiver disponível.

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Envia uma mensagem por chat e responde às respostas.

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Envia uma mensagem de texto por chat de utilizador e responde às respostas.

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

Envia uma mensagem por chat, pedindo uma resposta correspondente ao tipo T.

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

Envia uma mensagem por chat, pedindo uma resposta correspondente ao tipo T.

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

Envia mensagens por chat, pedindo uma resposta correspondente ao tipo T.

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

Envia mensagens por chat, pedindo uma resposta correspondente ao tipo T.

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

Envia uma mensagem de texto por chat de utilizador, solicitando uma resposta correspondente ao tipo T.

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

Envia uma mensagem de texto por chat de utilizador, solicitando uma resposta correspondente ao tipo T.

GetService<TService>(IChatClient, Object)

Pede a IChatClient um objeto do tipo TService.

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Envia uma mensagem por chat e transmite as respostas.

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Envia uma mensagem de texto por chat de utilizador e transmite as mensagens de resposta.

Aplica-se a