FunctionInvokingChatClient Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Delegowanie klienta czatu, który wywołuje funkcje zdefiniowane na .ChatOptions Uwzględnij to w potoku czatu, aby automatycznie rozpoznawać wywołania funkcji.
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
- Dziedziczenie
Uwagi
Gdy ten klient otrzyma element FunctionCallContent w odpowiedzi czatu z jego wewnętrznego IChatClientelementu , odpowiada przez wywołanie odpowiedniego AIFunction zdefiniowanego elementu Tools (lub w AdditionalTools), tworząc element FunctionResultContent , który wysyła z powrotem do klienta wewnętrznego. Ta pętla jest powtarzana do momentu, gdy nie ma więcej wywołań funkcji do wykonania lub do momentu spełnienia innego warunku zatrzymania, takiego jak naciśnięcie klawisza MaximumIterationsPerRequest.
Jeśli żądana funkcja jest AIFunctionDeclaration funkcją AIFunction, ale nie , FunctionInvokingChatClient nie podejmie próby wywołania tej funkcji i zamiast tego zezwoli na FunctionCallContent przekazanie jej z powrotem do wywołującego. Wówczas obiekt wywołujący odpowiada za utworzenie odpowiedniego FunctionResultContent dla tego wywołania i wysłanie go z powrotem w ramach kolejnego żądania.
Ponadto jeśli żądana funkcja jest funkcją ApprovalRequiredAIFunction, FunctionInvokingChatClient element nie będzie próbował wywołać go bezpośrednio. Zamiast tego zastąpi ją FunctionCallContent elementem ToolApprovalRequestContent , który opakowuje FunctionCallContent element i wskazuje, że funkcja wymaga zatwierdzenia, zanim będzie można ją wywołać. Obiekt wywołujący jest następnie odpowiedzialny za odpowiadanie na to żądanie zatwierdzenia przez wysłanie odpowiedniego ToolApprovalResponseContent żądania w kolejnym żądaniu. Następnie FunctionInvokingChatClient przetworzy tę odpowiedź zatwierdzenia i wywoła funkcję odpowiednio.
Ze względu na charakter interakcji z bazowym IChatClientelementem , jeśli zostanie FunctionCallContent odebrany dla funkcji wymagającej zatwierdzenia, wszystkie odebrane FunctionCallContent w tej samej odpowiedzi będą również wymagać zatwierdzenia, nawet jeśli nie ApprovalRequiredAIFunction były wystąpieniami. Jeśli jest to problem, rozważ zażądanie, aby wiele żądań wywołań narzędzia nie zostało złożonych w jednej odpowiedzi, ustawiając wartość AllowMultipleToolCalls .false
FunctionInvokingChatClient Wystąpienie jest bezpieczne wątkowo w przypadku współbieżnego użycia, tak długo, jak AIFunction wystąpienia stosowane w ramach dostarczonej ChatOptions części są również bezpieczne. Właściwość AllowConcurrentInvocation może służyć do kontrolowania, czy wiele żądań wywołań funkcji w ramach tego samego żądania jest wywoływanych współbieżnie, ale nawet w przypadku tego ustawionego na false (wartość domyślna), wiele współbieżnych żądań do tego samego wystąpienia i używanie tych samych narzędzi może spowodować jednoczesne użycie tych narzędzi (jeden na żądanie). Na przykład funkcja, która uzyskuje dostęp do obiektu HttpContext określonego żądania internetowego ASP.NET, powinna być używana tylko jako część pojedynczego ChatOptions w danym momencie i tylko z AllowConcurrentInvocation ustawioną wartością false, w przypadku gdy klient wewnętrzny postanowił wydać wiele żądań wywołań do tej samej funkcji.
Konstruktory
| Nazwa | Opis |
|---|---|
| FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider) |
Inicjuje nowe wystąpienie klasy FunctionInvokingChatClient. |
Właściwości
| Nazwa | Opis |
|---|---|
| AdditionalTools |
Pobiera lub ustawia kolekcję dodatkowych narzędzi, które klient może wywołać. |
| AllowConcurrentInvocation |
Pobiera lub ustawia wartość wskazującą, czy zezwalać na współbieżne wywołanie funkcji. |
| CurrentContext |
Pobiera lub ustawia FunctionInvocationContext dla wywołania bieżącej funkcji. |
| FunctionInvocationServices |
IServiceProvider Pobiera określony podczas konstruowania FunctionInvokingChatClientelementu , jeśli istnieje. |
| FunctionInvoker |
Pobiera lub ustawia delegata używanego do wywoływania AIFunction wystąpień. |
| IncludeDetailedErrors |
Pobiera lub ustawia wartość wskazującą, czy szczegółowe informacje o wyjątku powinny być zawarte w historii czatu podczas wywoływania bazowego IChatClientelementu . |
| InnerClient |
Pobiera wewnętrzny IChatClientelement . (Odziedziczone po DelegatingChatClient) |
| MaximumConsecutiveErrorsPerRequest |
Pobiera lub ustawia maksymalną liczbę kolejnych iteracji, które mogą zakończyć się niepowodzeniem z powodu błędu. |
| MaximumIterationsPerRequest |
Pobiera lub ustawia maksymalną liczbę iteracji na żądanie. |
| TerminateOnUnknownCalls |
Pobiera lub ustawia wartość wskazującą, czy żądanie wywołania nieznanej funkcji powinno zakończyć pętlę wywoływania funkcji. |
Metody
| Nazwa | Opis |
|---|---|
| CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>) |
Tworzy co najmniej jeden komunikat odpowiedzi dla wyników wywołania funkcji. |
| Dispose() |
Wykonuje zadania zdefiniowane przez aplikację skojarzone z zwalnianiem, wydawaniem lub resetowaniem niezarządzanych zasobów. (Odziedziczone po DelegatingChatClient) |
| Dispose(Boolean) |
Udostępnia mechanizm zwalniania niezarządzanych zasobów. (Odziedziczone po DelegatingChatClient) |
| GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Wysyła wiadomości czatu i zwraca odpowiedź. |
| GetService(Type, Object) |
IChatClient Pyta o obiekt określonego typu |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
Wysyła wiadomości czatu i przesyła strumieniowo odpowiedź. |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
Ta metoda wywoła funkcję w bloku try. |