AIFunctionFactory.Create 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立 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)
建立 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。 但也有少數例外:
- CancellationToken參數會自動綁定到CancellationToken透過 的InvokeAsync(AIFunctionArguments, CancellationToken)參數傳送到呼叫中CancellationToken。 該參數未包含在產生的 JSON 架構中。 參數的 CancellationToken 行為無法被覆蓋。
- 預設情況下, IServiceProvider 參數是綁定於 Services 屬性,且不包含在 JSON 架構中。 若參數為可選,且預設 Services 值為 ,則允許為
null;否則必須 Services 為非null,否則因參數需求性質,呼叫將因例外而失敗。 參數的處理 IServiceProvider 可透過 ConfigureParameterBinding覆寫。 - 預設情況下, AIFunctionArguments 參數會直接綁定到 AIFunctionArguments 傳遞的 InvokeAsync(AIFunctionArguments, CancellationToken) 實例,且不包含在 JSON 架構中。 若 AIFunctionArguments 傳遞給 InvokeAsync(AIFunctionArguments, CancellationToken) 的實例為
null,實 AIFunction 作會製造一個空實例,使得參數 AIFunctionArguments 型態總是可滿足,無論是否為可選。 參數的處理 AIFunctionArguments 可透過 ConfigureParameterBinding覆寫。
options透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含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)
為某方法建立 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。 但也有少數例外:
- CancellationToken參數會自動綁定到CancellationToken透過 的InvokeAsync(AIFunctionArguments, CancellationToken)參數傳送到呼叫中CancellationToken。 該參數未包含在產生的 JSON 架構中。 參數的 CancellationToken 行為無法被覆蓋。
- 預設情況下, IServiceProvider 參數是綁定於 Services 屬性,且不包含在 JSON 架構中。 若參數為可選,且預設 Services 值為 ,則允許為
null;否則必須 Services 為非null,否則因參數需求性質,呼叫將因例外而失敗。 參數的處理 IServiceProvider 可透過 ConfigureParameterBinding覆寫。 - 預設情況下, AIFunctionArguments 參數會直接綁定到 AIFunctionArguments 傳遞的 InvokeAsync(AIFunctionArguments, CancellationToken) 實例,且不包含在 JSON 架構中。 若 AIFunctionArguments 傳遞給 InvokeAsync(AIFunctionArguments, CancellationToken) 的實例為
null,實 AIFunction 作會製造一個空實例,使得參數 AIFunctionArguments 型態總是可滿足,無論是否為可選。 參數的處理 AIFunctionArguments 可透過 ConfigureParameterBinding覆寫。
options透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含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)
為某個方法建立 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。 但也有少數例外:
- CancellationToken參數會自動綁定到CancellationToken透過 的InvokeAsync(AIFunctionArguments, CancellationToken)參數傳送到呼叫中CancellationToken。 該參數未包含在產生的 JSON 架構中。 參數的 CancellationToken 行為無法被覆蓋。
- 預設情況下, IServiceProvider 參數是綁定於 Services 屬性,且不包含在 JSON 架構中。 若參數為可選,且預設 Services 值為 ,則允許為
null;否則必須 Services 為非null,否則因參數需求性質,呼叫將因例外而失敗。 參數的處理 IServiceProvider 可透過 ConfigureParameterBinding覆寫。 - 預設情況下, AIFunctionArguments 參數會直接綁定到 AIFunctionArguments 傳遞的 InvokeAsync(AIFunctionArguments, CancellationToken) 實例,且不包含在 JSON 架構中。 若 AIFunctionArguments 傳遞給 InvokeAsync(AIFunctionArguments, CancellationToken) 的實例為
null,實 AIFunction 作會製造一個空實例,使得參數 AIFunctionArguments 型態總是可滿足,無論是否為可選。 參數的處理 AIFunctionArguments 可透過 ConfigureParameterBinding覆寫。
options透過參數覆蓋;對於每個參數,代理可選擇是否包含該參數及值綁定方式,包括可選性處理(預設情況下,字典中未包含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)
建立 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中顯示。 但也有少數例外:
- CancellationToken參數會自動綁定到CancellationToken透過 的InvokeAsync(AIFunctionArguments, CancellationToken)參數傳送到呼叫中CancellationToken。 該參數未包含在產生的 JSON 架構中。
- 預設情況下, IServiceProvider 參數是綁定於 Services 屬性,且不包含在 JSON 架構中。 若參數為可選,且預設 Services 值為 ,則允許為
null;否則必須 Services 為非null,否則因參數需求性質,呼叫將因例外而失敗。 - 預設情況下, AIFunctionArguments 參數會直接綁定到 AIFunctionArguments 傳遞的 InvokeAsync(AIFunctionArguments, CancellationToken) 實例,且不包含在 JSON 架構中。 若 AIFunctionArguments 傳遞給 InvokeAsync(AIFunctionArguments, CancellationToken) 的實例為
null,實 AIFunction 作會製造一個空實例,使得參數 AIFunctionArguments 型態總是可滿足,無論是否為可選。
從字典中將參數 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)
為某個方法建立 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中顯示。 但也有少數例外:
- CancellationToken參數會自動綁定到CancellationToken透過 的InvokeAsync(AIFunctionArguments, CancellationToken)參數傳送到呼叫中CancellationToken。 該參數未包含在產生的 JSON 架構中。
- 預設情況下, IServiceProvider 參數是綁定於 Services 屬性,且不包含在 JSON 架構中。 若參數為可選,且預設 Services 值為 ,則允許為
null;否則必須 Services 為非null,否則因參數需求性質,呼叫將因例外而失敗。 - 預設情況下, AIFunctionArguments 參數會直接綁定到 AIFunctionArguments 傳遞的 InvokeAsync(AIFunctionArguments, CancellationToken) 實例,且不包含在 JSON 架構中。 若 AIFunctionArguments 傳遞給 InvokeAsync(AIFunctionArguments, CancellationToken) 的實例為
null,實 AIFunction 作會製造一個空實例,使得參數 AIFunctionArguments 型態總是可滿足,無論是否為可選。
從字典中將參數 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>的方法,結構是從未包裝的結果型態衍生出來。