共用方式為


FunctionInvokingChatClient 類別

定義

一個委派聊天客戶端,呼叫定義在 ChatOptions. 上的函式。 將此功能納入聊天管道,以自動解決函式呼叫。

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
繼承
FunctionInvokingChatClient

備註

當此用戶端從內部 IChatClient聊天室 收到 FunctionCallContent 的回應時,會呼叫對應AIFunction的定義 (Tools或 ),AdditionalTools產生 並FunctionResultContent回傳給內部客戶端。 此迴圈重複,直到沒有更多函數呼叫,或滿足另一個停止條件,例如擊中 MaximumIterationsPerRequest

如果請求的函式是 AIFunctionDeclaration 但不是 AIFunction,則 FunctionInvokingChatClient 不會嘗試呼叫,而是允許該 FunctionCallContent 函式回傳給呼叫者。 接著,呼叫者必須負責建立該通話的適當 FunctionResultContent 內容,並在後續請求中將其回傳。

此外,若請求函式為 ApprovalRequiredAIFunction,則 FunctionInvokingChatClient 不會嘗試直接呼叫該函式。 取而代之的是,它會用 a ToolApprovalRequestContent 來取代FunctionCallContent,該函式包裹 並FunctionCallContent表示該函式需要核准才能被調用。 呼叫者需負責回應該批准請求,並在後續請求中發送回應 ToolApprovalResponseContent 。 接著,他們 FunctionInvokingChatClient 會處理該批准回應,並在適當情況下啟動該功能。

由於與底層 IChatClient的互動特性,如果收到任何 FunctionCallContent 需要核准的函數,同一回應中收到 FunctionCallContent 的所有內容也都需要核准,即使它們不是 ApprovalRequiredAIFunction 實例。 如果這是個問題,可以考慮請求不要在同一個回應中同時提出多個工具呼叫請求,方法是設定 AllowMultipleToolCallsfalse

FunctionInvokingChatClient只要AIFunction所用ChatOptions的實例也安全,該實例在並行使用時是安全的。 此 AllowConcurrentInvocation 特性可用來控制多個功能呼叫請求是否可同時調用,但即使設定為 false (預設),同一實例使用相同工具的多個並行請求,仍可能導致這些工具同時使用(每個請求一個)。 例如,存取特定 ASP.NET 網頁請求 HttpContext 的函式,應一次只作為單一 ChatOptions 請求的一部分使用,且必須設 AllowConcurrentInvocationfalse,以防內部用戶端對同一函式發出多次呼叫請求。

建構函式

名稱 Description
FunctionInvokingChatClient(IChatClient, ILoggerFactory, IServiceProvider)

初始化 FunctionInvokingChatClient 類別的新執行個體。

屬性

名稱 Description
AdditionalTools

取得或設定一組額外工具,讓客戶能夠調用。

AllowConcurrentInvocation

取得或設定一個值,指示是否允許函式並行調用。

CurrentContext

取得或設定 用於 FunctionInvocationContext 目前函式調用。

FunctionInvocationServices

當構造 FunctionInvokingChatClient時會得到IServiceProvider指定的 ,若有的話。

FunctionInvoker

取得或設定一個代理,用來呼叫 AIFunction 實例。

IncludeDetailedErrors

在呼叫底層 IChatClient時,會取得或設定一個值,指示聊天歷史中是否應包含詳細的例外資訊。

InnerClient

得到內層 IChatClient

(繼承來源 DelegatingChatClient)
MaximumConsecutiveErrorsPerRequest

取得或設定允許連續迭代次數最多且錯誤失敗的次數。

MaximumIterationsPerRequest

接收或設定每個請求的最大迭代次數。

TerminateOnUnknownCalls

會取得或設定一個值,指示呼叫未知函式的請求是否應該終止函式呼叫迴圈。

方法

名稱 Description
CreateResponseMessages(ReadOnlySpan<FunctionInvokingChatClient.FunctionInvocationResult>)

為功能調用結果建立一個或多個回應訊息。

Dispose()

執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。

(繼承來源 DelegatingChatClient)
Dispose(Boolean)

提供釋放 Unmanaged 資源的機制。

(繼承來源 DelegatingChatClient)
GetResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

發送聊天訊息並回覆。

GetService(Type, Object)

請求 給 IChatClient 指定類型的 serviceType物件。

(繼承來源 DelegatingChatClient)
GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken)

發送聊天訊息並直播回覆。

InvokeFunctionAsync(FunctionInvocationContext, CancellationToken)

此方法會在嘗試區塊中呼叫該函式。

擴充方法

名稱 Description
AsBuilder(IChatClient)

創造一個新的 ChatClientBuilder 使用 innerClient ,作為其內在客戶。

GetRequiredService(IChatClient, Type, Object)

會要求 需要 IChatClient 指定類型的 serviceType 物件,若無法使用則拋出例外。

GetRequiredService<TService>(IChatClient, Object)

會請求 一個 IChatClient 類型的 TService 物件,若無法使用則拋出例外。

GetResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

發送聊天訊息並回覆訊息。

GetResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

發送用戶聊天簡訊並回覆訊息。

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

發送聊天訊息,請求回應類型為 T

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

發送聊天訊息,請求回應類型為 T

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

發送聊天訊息,請求符合 的回應 T類型。

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

發送聊天訊息,請求符合 的回應 T類型。

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

發送用戶聊天簡訊,請求符合類型 T的回應。

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

發送用戶聊天簡訊,請求符合類型 T的回應。

GetService<TService>(IChatClient, Object)

請求 一個 IChatClient 類型的 TService物件。

GetStreamingResponseAsync(IChatClient, ChatMessage, ChatOptions, CancellationToken)

發送聊天訊息並串流回覆訊息。

GetStreamingResponseAsync(IChatClient, String, ChatOptions, CancellationToken)

發送用戶聊天簡訊並串流回應訊息。

適用於