語言

AIFunctionFactory.Create 方法

定義

建立 AIFunction 一個方法的實例,透過代理指定。

多載

名稱 Description
Create(Delegate, AIFunctionFactoryOptions)

建立 AIFunction 一個方法的實例,透過代理指定。

Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)

為某方法建立 AIFunction 一個實例,透過 a MethodInfo 作為實例方法,以及 a Func<T,TResult> 用於每次呼叫時建構接收 AIFunction 對象的實例。

Create(MethodInfo, Object, AIFunctionFactoryOptions)

為某個方法建立 AIFunction 一個實例,該實例透過 MethodInfo 實例及一個可選的目標物件指定,若該方法是實例方法。

Create(Delegate, String, String, JsonSerializerOptions)

建立 AIFunction 一個方法的實例,透過代理指定。

Create(MethodInfo, Object, String, String, JsonSerializerOptions)

為某個方法建立 AIFunction 一個實例,該實例透過 MethodInfo 實例及一個可選的目標物件指定,若該方法是實例方法。

Create(Delegate, AIFunctionFactoryOptions)

來源:
AIFunctionFactory.cs

建立 AIFunction 一個方法的實例,透過代理指定。

public:
 static Microsoft::Extensions::AI::AIFunction ^ Create(Delegate ^ method, Microsoft::Extensions::AI::AIFunctionFactoryOptions ^ options);
public static Microsoft.Extensions.AI.AIFunction Create(Delegate method, Microsoft.Extensions.AI.AIFunctionFactoryOptions? options);
static member Create : Delegate * Microsoft.Extensions.AI.AIFunctionFactoryOptions -> Microsoft.Extensions.AI.AIFunction
Public Shared Function Create (method As Delegate, options As AIFunctionFactoryOptions) As AIFunction

參數

method
Delegate

將用所建立 AIFunction的 表示的方法。

options
AIFunctionFactoryOptions

用於覆蓋從 method推斷出的預設值的元資料。

傳回

創造 AIFunction 出來是為了召喚 method。

例外狀況

method 是 null。

參數 是 method 不可序列化的。

備註

預設情況下,任何參數 method 都來自 AIFunctionArguments的鍵值對字典,並以函式的 JSON 架構表示,如返回 AIFunction的 所示 JsonSchema。 但也有少數例外:

所有其他參數類型預設都是從 AIFunctionArguments 傳入 InvokeAsync(AIFunctionArguments, CancellationToken) 的字典綁定,並包含在產生的 JSON 架構中。 此參數可ConfigureParameterBindingoptions透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含AIFunctionArguments的必填參數會拋出例外)。 透過 的InvokeAsync(AIFunctionArguments, CancellationToken)字典可以傳遞AIFunctionArgumentsContext鬆散類型的額外上下文資訊;預設綁定會忽略此集合,但透過提供的自訂綁定ConfigureParameterBinding可選擇從這些資料中取得參數來源。

從字典預設 AIFunctionArguments 的參數編組允許若物件已是相容型態,則可直接將值傳遞至 method的調用中。 否則,若參數為 JsonElement、 JsonDocument或 JsonNode,則反序列化為參數型別,若提供 則使用 SerializerOptions ,否則使用 DefaultOptions。 如果參數是其他,則會以 JSON進行循環運算,先將物件序列化為 JSON 並反序列化成預期型別。

一般而言,透過 AIFunctionArguments字典提供的資料來自 AI 服務,應視為未經驗證且不值得信任。 為了在呼叫 時提供經過驗證且可信 method的資料,考慮指向 method 一個實例方法,該實例設定為持有適當狀態。 IServiceProvider參數也可用來解析依賴注入容器中的服務。

預設情況下,回傳值會序列化為 JsonElement 使用 options' SerializerOptions (若提供),否則則使用 DefaultOptions。 然而,宣告型別為 AIContent的回傳值,或 AIContent可從 IEnumerable<T> 指派的任何型別(例如 AIContent[]、 List<AIContent>)則是特殊案例,且不會序列化:所建立函式會直接回傳原始實例,使呼叫者(如 ) IChatClient能執行型別測試並實作專用處理。 如果 MarshalResult 是 ,該代理人將負責管理行為。

除了參數結構外,JSON 結構也會從方法的回傳類型衍生,並透過回傳 AIFunction的 s ReturnJsonSchema來暴露。 對於回 Void傳 、 Task或 ValueTask的方法,則不會產生回傳結構(性質為 null)。 對於回 Task<TResult> 傳 或 ValueTask<TResult>的方法,結構是從未包裝的結果型態衍生出來。 回傳模式的產生可以透過 排除 ExcludeResultSchema,其生成由 options的 JsonSchemaCreateOptions控制。

適用於

Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)

來源:
AIFunctionFactory.cs

為某方法建立 AIFunction 一個實例,透過 a MethodInfo 作為實例方法,以及 a Func<T,TResult> 用於每次呼叫時建構接收 AIFunction 對象的實例。

public static Microsoft.Extensions.AI.AIFunction Create(System.Reflection.MethodInfo method, Func<Microsoft.Extensions.AI.AIFunctionArguments,object> createInstanceFunc, Microsoft.Extensions.AI.AIFunctionFactoryOptions? options = default);
static member Create : System.Reflection.MethodInfo * Func<Microsoft.Extensions.AI.AIFunctionArguments, obj> * Microsoft.Extensions.AI.AIFunctionFactoryOptions -> Microsoft.Extensions.AI.AIFunction
Public Shared Function Create (method As MethodInfo, createInstanceFunc As Func(Of AIFunctionArguments, Object), Optional options As AIFunctionFactoryOptions = Nothing) As AIFunction

參數

method
MethodInfo

實例方法將以所建立 AIFunction的 表示。

createInstanceFunc
Func<AIFunctionArguments,Object>

每次函式呼叫時使用回調,建立實例方法 method 將被呼叫的類型實例。 若回傳的實例為 IAsyncDisposable 或 IDisposable,則在完成調用後 method 會被處置。

options
AIFunctionFactoryOptions

用於覆蓋從 method推斷出的預設值的元資料。

傳回

創造 AIFunction 出來是為了召喚 method。

例外狀況

createInstanceFunc 是 null。

method 包含一個沒有參數名稱的參數。

參數 或 method 其回傳類型無法序列化。

備註

回傳值以序列化為 JsonElementoptions的 SerializerOptions。 非預期型別的參數會透過 JSON 和 options的 來 SerializerOptions封組成預期型別。 若參數為 JsonElement、 JsonDocument或 JsonNode,則直接反序列化。 如果參數還有其他未知,則會透過 JSON 進行循環運算,先將物件序列化為 JSON,然後再反序列化成預期型別。

預設情況下,任何參數 method 都來自 AIFunctionArguments的鍵值對字典,並以函式的 JSON 架構表示,如返回 AIFunction的 所示 JsonSchema。 但也有少數例外:

所有其他參數類型預設都是從 AIFunctionArguments 傳入 InvokeAsync(AIFunctionArguments, CancellationToken) 的字典綁定,並包含在產生的 JSON 架構中。 此參數可ConfigureParameterBindingoptions透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含AIFunctionArguments的必填參數會拋出例外)。 透過 的InvokeAsync(AIFunctionArguments, CancellationToken)字典可以傳遞AIFunctionArgumentsContext鬆散類型的額外上下文資訊;預設綁定會忽略此集合,但透過提供的自訂綁定ConfigureParameterBinding可選擇從這些資料中取得參數來源。

從字典預設 AIFunctionArguments 的參數編組允許若物件已是相容型態,則可直接將值傳遞至 method的調用中。 否則,若參數為 JsonElement、 JsonDocument或 JsonNode,則反序列化為參數型別,若提供 則使用 SerializerOptions ,否則使用 DefaultOptions。 如果參數是其他,則會以 JSON進行循環運算,先將物件序列化為 JSON 並反序列化成預期型別。

一般而言,透過 AIFunctionArguments字典提供的資料來自 AI 服務,應視為未經驗證且不值得信任。 為了提供經過驗證且可信的資料, method呼叫時,為每個呼叫建構的實例可以包含該資料,這樣它就能作為實例資料提供 method 。 IServiceProvider參數也可用來解析依賴注入容器中的服務。

預設情況下,回傳值會序列化為 JsonElement 使用 options' SerializerOptions (若提供),否則則使用 DefaultOptions。 然而,宣告型別為 AIContent、的派生型別 AIContent或任何可指派的 IEnumerable<T> 的回傳值,則可直接回傳,無需序列化。 回傳值的處理可透過 MarshalResult覆蓋。

除了參數結構外,JSON 結構也會從方法的回傳類型衍生,並透過回傳 AIFunction的 s ReturnJsonSchema來暴露。 對於回 Void傳 、 Task或 ValueTask的方法,則不會產生回傳結構(性質為 null)。 對於回 Task<TResult> 傳 或 ValueTask<TResult>的方法,結構是從未包裝的結果型態衍生出來。 回傳模式的產生可以透過 排除 ExcludeResultSchema,其生成由 options的 JsonSchemaCreateOptions控制。

適用於

Create(MethodInfo, Object, AIFunctionFactoryOptions)

來源:
AIFunctionFactory.cs

為某個方法建立 AIFunction 一個實例,該實例透過 MethodInfo 實例及一個可選的目標物件指定,若該方法是實例方法。

public:
 static Microsoft::Extensions::AI::AIFunction ^ Create(System::Reflection::MethodInfo ^ method, System::Object ^ target, Microsoft::Extensions::AI::AIFunctionFactoryOptions ^ options);
public static Microsoft.Extensions.AI.AIFunction Create(System.Reflection.MethodInfo method, object? target, Microsoft.Extensions.AI.AIFunctionFactoryOptions? options);
static member Create : System.Reflection.MethodInfo * obj * Microsoft.Extensions.AI.AIFunctionFactoryOptions -> Microsoft.Extensions.AI.AIFunction
Public Shared Function Create (method As MethodInfo, target As Object, options As AIFunctionFactoryOptions) As AIFunction

參數

method
MethodInfo

將用所建立 AIFunction的 表示的方法。

target
Object

如果目標物件 method 代表實例方法,則為 。 當且僅當null是靜態方法時,才會如此method。

options
AIFunctionFactoryOptions

用於覆蓋從 method推斷出的預設值的元資料。

傳回

創造 AIFunction 出來是為了召喚 method。

例外狀況

method 表示一個實例方法,但 target 為空。

method 包含一個沒有參數名稱的參數。

參數 或 method 其回傳類型無法序列化。

備註

預設情況下,任何參數 method 都來自 AIFunctionArguments的鍵值對字典,並以函式的 JSON 架構表示,如返回 AIFunction的 所示 JsonSchema。 但也有少數例外:

所有其他參數類型預設都是從 AIFunctionArguments 傳入 InvokeAsync(AIFunctionArguments, CancellationToken) 的字典綁定,並包含在產生的 JSON 架構中。 此參數可ConfigureParameterBindingoptions透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含AIFunctionArguments的必填參數會拋出例外)。 可透過 InvokeAsync(AIFunctionArguments, CancellationToken)的AIFunctionArguments字典傳遞Context鬆散打字的額外上下文資訊;預設綁定會忽略此集合,但透過提供的自訂綁定ConfigureParameterBinding可選擇從這些資料中取得參數來源。

從字典預設 AIFunctionArguments 的參數編組允許若物件已是相容型態,則可直接將值傳遞至 method的調用中。 否則,若參數為 JsonElement、 JsonDocument或 JsonNode,則反序列化為參數型別,若提供 則使用 SerializerOptions ,否則使用 DefaultOptions。 如果參數是其他,則會以 JSON進行循環運算,先將物件序列化為 JSON 並反序列化成預期型別。

一般而言,透過 AIFunctionArguments字典提供的資料來自 AI 服務,應視為未經驗證且不值得信任。 為了在呼叫 時提供經過驗證且可信 method的資料,考慮指向 method 一個實例方法,該實例設定為持有適當狀態。 IServiceProvider參數也可用來解析依賴注入容器中的服務。

預設情況下,回傳值會序列化為 JsonElement 使用 options' SerializerOptions (若提供),否則則使用 DefaultOptions。 然而,宣告型別為 AIContent、導出型態 AIContent或任何可指派 的 IEnumerable<T> 回傳值不會被序列化,而是直接回傳。 回傳值的處理可透過 MarshalResult覆蓋。

除了參數結構外,JSON 結構也會從方法的回傳類型衍生,並透過回傳 AIFunction的 s ReturnJsonSchema來暴露。 對於回 Void傳 、 Task或 ValueTask的方法,則不會產生回傳結構(性質為 null)。 對於回 Task<TResult> 傳 或 ValueTask<TResult>的方法,結構是從未包裝的結果型態衍生出來。 回傳模式的產生可以透過 排除 ExcludeResultSchema,其生成由 options的 JsonSchemaCreateOptions控制。

適用於

Create(Delegate, String, String, JsonSerializerOptions)

來源:
AIFunctionFactory.cs

建立 AIFunction 一個方法的實例,透過代理指定。

public static Microsoft.Extensions.AI.AIFunction Create(Delegate method, string? name = default, string? description = default, System.Text.Json.JsonSerializerOptions? serializerOptions = default);
static member Create : Delegate * string * string * System.Text.Json.JsonSerializerOptions -> Microsoft.Extensions.AI.AIFunction
Public Shared Function Create (method As Delegate, Optional name As String = Nothing, Optional description As String = Nothing, Optional serializerOptions As JsonSerializerOptions = Nothing) As AIFunction

參數

method
Delegate

將用所建立 AIFunction的 表示的方法。

name
String

該名稱 AIFunction為 . 若 null,則該名稱可由任意 AIFunctionNameAttributemethod上 推導,則可由任意 DisplayNameAttributemethod (若有)推導,或由 的名稱method推導。

description
String

用於 AIFunction的描述。 若 null,則可從任意 DescriptionAttributemethod上推導出描述(若有)。

serializerOptions
JsonSerializerOptions

它們 JsonSerializerOptions 用來編組函式參數和任何回傳值。

傳回

創造 AIFunction 出來是為了召喚 method。

例外狀況

method 是 null。

參數 是 method 不可序列化的。

備註

任何參數 method 都來自 AIFunctionArguments的鍵值對字典,並以函式的 JSON 架構表示,並以返回 AIFunction的 的 JsonSchema中顯示。 但也有少數例外:

所有其他參數類型皆由傳遞進AIFunctionArguments去的字典綁定InvokeAsync(AIFunctionArguments, CancellationToken),並包含在產生的 JSON 架構中。

從字典中將參數 AIFunctionArguments 編組,若物件已是相容型別,則可直接將值傳遞至 method的調用中。 否則,若參數為 、 或 ,則在提供時會反JsonElement序列化為參數型別,否則 JsonDocument。JsonNodeserializerOptionsDefaultOptions 如果參數是其他,則會以 JSON進行循環運算,先將物件序列化為 JSON 並反序列化成預期型別。

一般而言,透過 AIFunctionArguments字典提供的資料來自 AI 服務,應視為未經驗證且不值得信任。 為了在呼叫 時提供經過驗證且可信 method的資料,考慮指向 method 一個實例方法,該實例設定為持有適當狀態。 IServiceProvider參數也可用來解析依賴注入容器中的服務。

回傳值會序列化為 JsonElement 使用 serializerOptions (若提供),否則則使用 DefaultOptions。 然而,宣告型別為 AIContent、衍生型別 AIContent的 或任何可指派的 IEnumerable<T> 回傳值並不會序列化;它們會回傳 as-is 以便專門處理。

JSON 架構也由方法的回傳類型推導,並透過 ReturnJsonSchema公開。 對於回 Void傳 、 Task或 ValueTask的方法,則不會產生回傳結構。 對於回 Task<TResult> 傳 或 ValueTask<TResult>的方法,結構是從未包裝的結果型態衍生出來。

適用於

Create(MethodInfo, Object, String, String, JsonSerializerOptions)

來源:
AIFunctionFactory.cs

為某個方法建立 AIFunction 一個實例,該實例透過 MethodInfo 實例及一個可選的目標物件指定,若該方法是實例方法。

public static Microsoft.Extensions.AI.AIFunction Create(System.Reflection.MethodInfo method, object? target, string? name = default, string? description = default, System.Text.Json.JsonSerializerOptions? serializerOptions = default);
static member Create : System.Reflection.MethodInfo * obj * string * string * System.Text.Json.JsonSerializerOptions -> Microsoft.Extensions.AI.AIFunction
Public Shared Function Create (method As MethodInfo, target As Object, Optional name As String = Nothing, Optional description As String = Nothing, Optional serializerOptions As JsonSerializerOptions = Nothing) As AIFunction

參數

method
MethodInfo

將用所建立 AIFunction的 表示的方法。

target
Object

如果目標物件 method 代表實例方法,則為 。 當且僅當null是靜態方法時,才會如此method。

name
String

該名稱 AIFunction為 . 若 null,則該名稱可由任意 AIFunctionNameAttributemethod上 推導,則可由任意 DisplayNameAttributemethod (若有)推導,或由 的名稱method推導。

description
String

用於 AIFunction的描述。 若 null,則可從任意 DescriptionAttributemethod上推導出描述(若有)。

serializerOptions
JsonSerializerOptions

它們 JsonSerializerOptions 用來整理函數參數和回傳值。

傳回

創造 AIFunction 出來是為了召喚 method。

例外狀況

method 表示一個實例方法,但 target 為空。

method 包含一個沒有參數名稱的參數。

參數 或 method 其回傳類型無法序列化。

備註

任何參數 method 都來自 AIFunctionArguments的鍵值對字典,並以函式的 JSON 架構表示,並以返回 AIFunction的 的 JsonSchema中顯示。 但也有少數例外:

所有其他參數類型皆由傳遞進AIFunctionArguments去的字典綁定InvokeAsync(AIFunctionArguments, CancellationToken),並包含在產生的 JSON 架構中。

從字典中將參數 AIFunctionArguments 編組,若物件已是相容型別,則可直接將值傳遞至 method的調用中。 否則,若參數為 、 或 ,則在提供時會反JsonElement序列化為參數型別,否則 JsonDocument。JsonNodeserializerOptionsDefaultOptions 如果參數是其他,則會以 JSON進行循環運算,先將物件序列化為 JSON 並反序列化成預期型別。

一般而言,透過 AIFunctionArguments字典提供的資料來自 AI 服務,應視為未經驗證且不值得信任。 為了在呼叫 時提供經過驗證且可信 method的資料,考慮指向 method 一個實例方法,該實例設定為持有適當狀態。 IServiceProvider參數也可用來解析依賴注入容器中的服務。

回傳值會序列化為 JsonElement 使用 serializerOptions (若提供),否則則使用 DefaultOptions。 然而,宣告型別為 AIContent、衍生型別 的 AIContent或任何可指派的 IEnumerable<T> 的回傳值,則在未進行序列化的情況下回傳,以實現專門處理。

JSON 架構也由方法的回傳類型推導,並透過 ReturnJsonSchema公開。 對於回 Void傳 、 Task或 ValueTask的方法,則不會產生回傳結構。 對於回 Task<TResult> 傳 或 ValueTask<TResult>的方法,結構是從未包裝的結果型態衍生出來。

適用於