Sdílet prostřednictvím


FunctionInvokingChatClient Třída

Definice

Delegování chatovacího klienta, který volá funkce definované na ChatOptions. Zahrňte ho do chatovacího kanálu pro automatické řešení volání funkcí.

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
Dědičnost
FunctionInvokingChatClient

Poznámky

Když tento klient obdrží odpověď v chatu FunctionCallContent z jeho vnitřního IChatClient, odpoví vyvoláním odpovídajícího AIFunction definovaného ( Tools nebo in AdditionalTools) vytvoření FunctionResultContent , který odešle zpět do vnitřního klienta. Tato smyčka se opakuje, dokud nebudou k dispozici žádná další volání funkce, která se mají provést, nebo dokud nebude splněna jiná podmínka zastavení, jako je například stisknutí MaximumIterationsPerRequestklávesy .

Pokud požadovaná funkce představuje funkci AIFunctionDeclaration , která není, ale ne AIFunction, FunctionInvokingChatClient pokusí se ji vyvolat a místo toho umožní, FunctionCallContent aby se volajícímu vrátila zpět. Pak je odpovědnost volajícího vytvořit odpovídající FunctionResultContent pro tento hovor a odeslat ho zpět jako součást dalšího požadavku.

Dále platí, že pokud je požadovaná funkce , ApprovalRequiredAIFunctionFunctionInvokingChatClient nepokusí se ji vyvolat přímo. Místo toho ji nahradí FunctionCallContentToolApprovalRequestContent zalomením FunctionCallContent a označuje, že funkce před vyvolání vyžaduje schválení. Volající pak odpovídá za reakci na tuto žádost o schválení odesláním odpovídající ToolApprovalResponseContent v následné žádosti. Potom FunctionInvokingChatClient tuto odpověď schválení zpracuje a podle potřeby vyvolá funkci.

Vzhledem k povaze interakcí s podkladovým objektem IChatClient, pokud je pro FunctionCallContent funkci, která vyžaduje schválení, budou všechny přijaté FunctionCallContent ve stejné odpovědi také vyžadovat schválení, i když nebyly ApprovalRequiredAIFunction instance. Pokud se jedná o problém, zvažte žádost, aby více žádostí o volání nástroje nebyly provedeny v jedné odpovědi nastavením AllowMultipleToolCalls na false.

Instance FunctionInvokingChatClient je bezpečná pro souběžné použití, pokud AIFunction jsou instance použité v rámci dodaného ChatOptions prostředí také bezpečné. AllowConcurrentInvocation Vlastnost se dá použít k řízení, jestli se žádosti o vyvolání více funkcí v rámci stejného požadavku vyvolá souběžně, ale i když je nastaveno na false (výchozí), může to mít za následek souběžné volání více souběžných požadavků na tuto instanci a použití stejných nástrojů může vést k tomu, že se tyto nástroje používají souběžně (jeden na požadavek). Například funkce, která přistupuje k HttpContext konkrétního webového požadavku ASP.NET, by se měla používat pouze jako součást jednoho ChatOptions najednou, a pouze s AllowConcurrentInvocation nastavenou na false, v případě, že se vnitřní klient rozhodl vydat více žádostí o vyvolání této stejné funkce.

Konstruktory

Name Description
FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider)

Inicializuje novou instanci FunctionInvokingChatClient třídy.

Vlastnosti

Name Description
AdditionalTools

Získá nebo nastaví kolekci dalších nástrojů, které klient může vyvolat.

AllowConcurrentInvocation

Získá nebo nastaví hodnotu určující, zda povolit souběžné vyvolání funkcí.

CurrentContext

Získá nebo nastaví FunctionInvocationContext pro vyvolání aktuální funkce.

FunctionInvocationServices

Získá zadaný IServiceProvider při vytváření FunctionInvokingChatClient, pokud existuje.

FunctionInvoker

Získá nebo nastaví delegáta, který se používá k vyvolání AIFunction instancí.

IncludeDetailedErrors

Získá nebo nastaví hodnotu určující, zda podrobné informace o výjimce by měly být zahrnuty do historie chatu při volání podkladové IChatClient.

InnerClient

Získá vnitřní IChatClient.

(Zděděno od DelegatingChatClient)
MaximumConsecutiveErrorsPerRequest

Získá nebo nastaví maximální počet po sobě jdoucích iterací, které mohou selhat s chybou.

MaximumIterationsPerRequest

Získá nebo nastaví maximální počet iterací na požadavek.

TerminateOnUnknownCalls

Získá nebo nastaví hodnotu určující, zda požadavek na volání neznámé funkce by měl ukončit volání smyčky funkce.

Metody

Name Description
CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>)

Vytvoří jednu nebo více zpráv odpovědí pro výsledky vyvolání funkce.

Dispose()

Provádí úlohy definované aplikací související s uvolněním, uvolněním nebo resetováním nespravovaných prostředků.

(Zděděno od DelegatingChatClient)
Dispose(Boolean)

Poskytuje mechanismus pro uvolnění nespravovaných prostředků.

(Zděděno od DelegatingChatClient)
GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Odešle chatové zprávy a vrátí odpověď.

GetService(Type, Object)

Požádá o IChatClient objekt zadaného typu serviceType.

(Zděděno od DelegatingChatClient)
GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

Odešle chatové zprávy a streamuje odpověď.

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

Tato metoda vyvolá funkci v rámci bloku try.

Metody rozšíření

Name Description
AsBuilder(IChatClient)

Vytvoří nové ChatClientBuilder použití innerClient jako jeho vnitřní klient.

GetRequiredService(IChatClient, Type, Object)

IChatClient Požádá o objekt zadaného typu serviceType a vyvolá výjimku, pokud není k dispozici.

GetRequiredService<TService>(IChatClient, Object)

IChatClient Požádá o objekt typu TService a vyvolá výjimku, pokud není k dispozici.

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Odešle chatovou zprávu a vrátí zprávy s odpovědí.

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Odešle textovou zprávu chatu uživatele a vrátí zprávy s odpovědí.

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

Odešle chatovou zprávu a požádá o odpověď odpovídající typu T.

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

Odešle chatovou zprávu a požádá o odpověď odpovídající typu T.

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

Odesílá chatové zprávy a žádá o odpověď odpovídající typu T.

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

Odesílá chatové zprávy a žádá o odpověď odpovídající typu T.

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

Odešle textovou zprávu chatu uživatele s žádostí o odpověď odpovídající typu T.

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

Odešle textovou zprávu chatu uživatele s žádostí o odpověď odpovídající typu T.

GetService<TService>(IChatClient, Object)

Požádá o IChatClient objekt typu TService.

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

Odešle chatovou zprávu a streamuje zprávy s odpověďmi.

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

Odešle textovou zprávu chatu uživatele a streamuje zprávy odpovědí.

Platí pro