FunctionInvokingChatClient Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Un client de conversation délégué qui appelle des fonctions définies sur ChatOptions. Incluez-le dans un pipeline de conversation pour résoudre automatiquement les appels de fonction.
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
- Héritage
Remarques
Lorsque ce client reçoit une FunctionCallContent réponse de conversation à partir de son intérieur IChatClient, il répond en appelant le correspondant AIFunction défini dans Tools (ou dans AdditionalTools), en produisant un FunctionResultContent retour au client interne. Cette boucle est répétée jusqu’à ce qu’il n’y ait plus d’appels de fonction à effectuer, ou jusqu’à ce qu’une autre condition d’arrêt soit remplie, comme atteindre MaximumIterationsPerRequest.
Si une fonction demandée est une AIFunctionDeclaration fonction mais pas une AIFunction, elle FunctionInvokingChatClient n’essaie pas de l’appeler, et autorise à la place cela FunctionCallContent à passer à l’appelant. Il incombe ensuite à l’appelant de créer l’élément approprié FunctionResultContent pour cet appel et de le renvoyer dans le cadre d’une demande ultérieure.
En outre, si une fonction demandée est une ApprovalRequiredAIFunctionfonction, elle FunctionInvokingChatClient ne tente pas de l’appeler directement. Au lieu de cela, il remplace cela FunctionCallContent par un ToolApprovalRequestContent qui encapsule et FunctionCallContent indique que la fonction nécessite une approbation avant qu’elle puisse être appelée. L’appelant est ensuite chargé de répondre à cette demande d’approbation en envoyant un correspondant ToolApprovalResponseContent dans une demande ultérieure. Le FunctionInvokingChatClient processus traitera ensuite cette réponse d’approbation et appellera la fonction selon les besoins.
En raison de la nature des interactions avec un sous-jacent IChatClient, si un FunctionCallContent élément est reçu pour une fonction qui nécessite une approbation, tous reçus FunctionCallContent dans cette même réponse nécessitent également l’approbation, même s’ils n’étaient pas ApprovalRequiredAIFunction des instances. S’il s’agit d’une préoccupation, envisagez de demander que plusieurs demandes d’appel d’outil ne soient pas effectuées dans une seule réponse, en définissant AllowMultipleToolCalls sur false.
Une FunctionInvokingChatClient instance est thread-safe pour une utilisation simultanée tant que les AIFunction instances utilisées dans le cadre de l’offre sont ChatOptions également sécurisées. La AllowConcurrentInvocation propriété peut être utilisée pour contrôler si plusieurs demandes d’appel de fonction dans le cadre de la même requête sont invocables simultanément, mais même avec cette valeur définie false sur (valeur par défaut), plusieurs demandes simultanées à cette même instance et l’utilisation des mêmes outils peuvent entraîner l’utilisation simultanée de ces outils (un par demande). Par exemple, une fonction qui accède à HttpContext d’une requête web ASP.NET spécifique ne doit être utilisée que dans le cadre d’un seul ChatOptions à la fois, et uniquement avec AllowConcurrentInvocation défini sur false, dans le cas où le client interne a décidé d’émettre plusieurs demandes d’appel à cette même fonction.
Constructeurs
| Nom | Description |
|---|---|
| FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider) |
Initialise une nouvelle instance de la classe FunctionInvokingChatClient. |
Propriétés
| Nom | Description |
|---|---|
| AdditionalTools |
Obtient ou définit une collection d’outils supplémentaires que le client peut appeler. |
| AllowConcurrentInvocation |
Obtient ou définit une valeur indiquant s’il faut autoriser l’appel simultané de fonctions. |
| CurrentContext |
Obtient ou définit l’appel FunctionInvocationContext de fonction actuel. |
| FunctionInvocationServices |
Obtient la IServiceProvider valeur spécifiée lors de la construction du FunctionInvokingChatClient, le cas échéant. |
| FunctionInvoker |
Obtient ou définit un délégué utilisé pour appeler des AIFunction instances. |
| IncludeDetailedErrors |
Obtient ou définit une valeur indiquant si les informations d’exception détaillées doivent être incluses dans l’historique des conversations lors de l’appel du sous-jacent IChatClient. |
| InnerClient |
Obtient le fichier interne IChatClient. (Hérité de DelegatingChatClient) |
| MaximumConsecutiveErrorsPerRequest |
Obtient ou définit le nombre maximal d’itérations consécutives autorisées à échouer avec une erreur. |
| MaximumIterationsPerRequest |
Obtient ou définit le nombre maximal d’itérations par requête. |
| TerminateOnUnknownCalls |
Obtient ou définit une valeur indiquant si une demande d’appel d’une fonction inconnue doit mettre fin à la boucle d’appel de fonction. |
Méthodes
| Nom | Description |
|---|---|
| CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>) |
Crée un ou plusieurs messages de réponse pour les résultats d’appel de fonction. |
| Dispose() |
Effectue des tâches définies par l’application associées à la libération, à la libération ou à la réinitialisation des ressources non managées. (Hérité de DelegatingChatClient) |
| Dispose(Boolean) |
Fournit un mécanisme permettant de libérer des ressources non managées. (Hérité de DelegatingChatClient) |
| GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Envoie des messages de conversation et retourne la réponse. |
| GetService(Type, Object) |
Demande l’objet IChatClient du type |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Envoie des messages de conversation et diffuse la réponse. |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
Cette méthode appelle la fonction dans le bloc try. |