FunctionInvokingChatClient 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個委派聊天客戶端,呼叫定義在 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
- 繼承
備註
當此用戶端從內部 IChatClient聊天室 收到 FunctionCallContent 的回應時,會呼叫對應AIFunction的定義 (Tools或 ),AdditionalTools產生 並FunctionResultContent回傳給內部客戶端。 此迴圈重複,直到沒有更多函數呼叫,或滿足另一個停止條件,例如擊中 MaximumIterationsPerRequest。
如果請求的函式是 AIFunctionDeclaration 但不是 AIFunction,則 FunctionInvokingChatClient 不會嘗試呼叫,而是允許該 FunctionCallContent 函式回傳給呼叫者。 接著,呼叫者必須負責建立該通話的適當 FunctionResultContent 內容,並在後續請求中將其回傳。
此外,若請求函式為 ApprovalRequiredAIFunction,則 FunctionInvokingChatClient 不會嘗試直接呼叫該函式。 取而代之的是,它會用 a ToolApprovalRequestContent 來取代FunctionCallContent,該函式包裹 並FunctionCallContent表示該函式需要核准才能被調用。 呼叫者需負責回應該批准請求,並在後續請求中發送回應 ToolApprovalResponseContent 。 接著,他們 FunctionInvokingChatClient 會處理該批准回應,並在適當情況下啟動該功能。
由於與底層 IChatClient的互動特性,如果收到任何 FunctionCallContent 需要核准的函數,同一回應中收到 FunctionCallContent 的所有內容也都需要核准,即使它們不是 ApprovalRequiredAIFunction 實例。 如果這是個問題,可以考慮請求不要在同一個回應中同時提出多個工具呼叫請求,方法是設定 AllowMultipleToolCalls 為 false。
FunctionInvokingChatClient只要AIFunction所用ChatOptions的實例也安全,該實例在並行使用時是安全的。 此 AllowConcurrentInvocation 特性可用來控制多個功能呼叫請求是否可同時調用,但即使設定為 false (預設),同一實例使用相同工具的多個並行請求,仍可能導致這些工具同時使用(每個請求一個)。 例如,存取特定 ASP.NET 網頁請求 HttpContext 的函式,應一次只作為單一 ChatOptions 請求的一部分使用,且必須設 AllowConcurrentInvocation 為 false,以防內部用戶端對同一函式發出多次呼叫請求。
建構函式
| 名稱 | 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 指定類型的 |
| GetStreamingResponseAsync(IEnumerable<ChatMessage>, ChatOptions, CancellationToken) |
發送聊天訊息並直播回覆。 |
| InvokeFunctionAsync(FunctionInvocationContext, CancellationToken) |
此方法會在嘗試區塊中呼叫該函式。 |