通过


AIFunctionFactory.Create 方法

定义

重载

名称 说明
Create(Delegate, AIFunctionFactoryOptions)

AIFunction为通过委托指定的方法创建实例。

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

为方法创建一个 AIFunction 实例,该实例通过 MethodInfo 实例方法指定,并在 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)

Source:
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中推断的默认值的元数据。

返回

为调用method创建的 AIFunction

例外

methodnull

不可序列化的参数 method

注解

默认情况下,要 methodAIFunctionArguments键/值对字典中获取的任何参数,并在函数的 JSON 架构中表示,如返回 AIFunction的 's JsonSchema中所示。 此情况有一些例外情况:

默认情况下,所有其他参数类型都是从传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments字典绑定的,并包含在生成的 JSON 架构中。 这可以通过参数提供options来替代ConfigureParameterBinding;对于每个参数,委托都能够选择是否应包含在生成的架构中,以及其值应如何绑定,包括处理可选性(默认情况下,字典中AIFunctionArguments不包含的必需参数将导致引发异常)。 松散类型的附加上下文信息可以通过“字典Context”传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments;默认绑定将忽略此集合,但通过提供的ConfigureParameterBinding自定义绑定可以选择从此数据源参数。

字典中参数 AIFunctionArguments 的默认封送允许在对象已具有兼容类型的情况下直接传入 method'调用's 调用的值。 否则,如果参数是一个 JsonElementJsonDocument或者 JsonNode反序列化为参数类型,则 SerializerOptions 使用(如果提供)或使用 DefaultOptions参数类型。 如果参数是任何其他参数,则通过 JSON 进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

一般情况下,通过 AIFunctionArguments字典提供的数据是从 AI 服务提供的,应被视为未经验证且不受信任。 若要向调用 method提供经过验证和受信任的数据,请考虑在 method 配置为保留适当状态的实例上指向实例方法。 IServiceProvider还可以使用参数从依赖项注入容器解析服务。

默认情况下,返回值序列化为JsonElement使用 'sSerializerOptions(如果提供)或者使用 。否则使用 DefaultOptionsoptions。 但是,返回声明类型为AIContent、派生类型的AIContent值或可从IEnumerable<T>(例如,List<AIContent>例如)分配的任何类型的值(例如AIContent[],特殊大小写),并且未序列化:创建的函数直接返回原始实例,使调用方(如 aIChatClient)能够执行类型测试并实现专用处理。 如果 MarshalResult 已提供,该委托将改为控制该行为。

除了参数架构,JSON 架构还派生自方法的返回类型,并通过返回 AIFunction的 's ReturnJsonSchema公开。 对于返回 Void的方法, Task或者 ValueTask不生成返回架构(属性为 null)。 对于返回Task<TResult>ValueTask<TResult>或返回的方法,架构派生自未包装的结果类型。 可以通过以下方式排除 ExcludeResultSchema返回架构生成,其生成由 options's JsonSchemaCreateOptions管理。

适用于

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

Source:
AIFunctionFactory.cs

为方法创建一个 AIFunction 实例,该实例通过 MethodInfo 实例方法指定,并在 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 的类型实例。 如果返回的实例为 IAsyncDisposableIDisposable返回的实例,它将在完成调用后 method 将其释放。

options
AIFunctionFactoryOptions

用于替代从 method中推断的默认值的元数据。

返回

为调用method创建的 AIFunction

例外

createInstanceFuncnull

method 包含不带参数名称的参数。

参数或其 method 返回类型不可序列化。

注解

返回值序列化为 JsonElement using options's SerializerOptions。 尚未属于预期类型的参数通过 JSON 封送至预期类型并使用 options's SerializerOptions。 如果参数是一个 JsonElement参数, JsonDocument或者 JsonNode直接反序列化。 如果参数是未知的,则通过 JSON 对对象进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

默认情况下,要 methodAIFunctionArguments键/值对字典中获取的任何参数,并在函数的 JSON 架构中表示,如返回 AIFunction的 's JsonSchema中所示。 此情况有一些例外情况:

默认情况下,所有其他参数类型都是从传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments字典绑定的,并包含在生成的 JSON 架构中。 这可以通过参数提供options来替代ConfigureParameterBinding;对于每个参数,委托都能够选择是否应包含在生成的架构中,以及其值应如何绑定,包括处理可选性(默认情况下,字典中AIFunctionArguments不包含的必需参数将导致引发异常)。 松散类型的附加上下文信息可以通过“字典Context”传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments;默认绑定将忽略此集合,但通过提供的ConfigureParameterBinding自定义绑定可以选择从此数据源参数。

字典中参数 AIFunctionArguments 的默认封送允许在对象已具有兼容类型的情况下直接传入 method'调用's 调用的值。 否则,如果参数是一个 JsonElementJsonDocument或者 JsonNode反序列化为参数类型,则 SerializerOptions 使用(如果提供)或使用 DefaultOptions参数类型。 如果参数是任何其他参数,则通过 JSON 进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

一般情况下,通过 AIFunctionArguments字典提供的数据是从 AI 服务提供的,应被视为未经验证且不受信任。 为了向调用 method提供经过验证和受信任的数据,为每个调用构造的实例可以包含其中的数据,以便将其 method 用作实例数据。 IServiceProvider还可以使用参数从依赖项注入容器解析服务。

默认情况下,返回值序列化为JsonElement使用 'sSerializerOptions(如果提供)或者使用 。否则使用 DefaultOptionsoptions。 但是,返回其声明类型为 AIContent、派生类型的 AIContent值或可从中分配 IEnumerable<T> 的任何类型直接返回,而无需序列化。 可以通过 .. 重写 MarshalResult返回值的处理。

除了参数架构,JSON 架构还派生自方法的返回类型,并通过返回 AIFunction的 's ReturnJsonSchema公开。 对于返回 Void的方法, Task或者 ValueTask不生成返回架构(属性为 null)。 对于返回Task<TResult>ValueTask<TResult>或返回的方法,架构派生自未包装的结果类型。 可以通过以下方式排除 ExcludeResultSchema返回架构生成,其生成由 options's JsonSchemaCreateOptions管理。

适用于

Create(MethodInfo, Object, AIFunctionFactoryOptions)

Source:
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中推断的默认值的元数据。

返回

为调用method创建的 AIFunction

例外

method 表示实例方法,但 target 为 null。

method 包含不带参数名称的参数。

参数或其 method 返回类型不可序列化。

注解

默认情况下,要 methodAIFunctionArguments键/值对字典中获取的任何参数,并在函数的 JSON 架构中表示,如返回 AIFunction的 's JsonSchema中所示。 此情况有一些例外情况:

默认情况下,所有其他参数类型都是从传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments字典绑定的,并包含在生成的 JSON 架构中。 这可以通过参数提供options来替代ConfigureParameterBinding;对于每个参数,委托都能够选择是否应包含在生成的架构中,以及其值应如何绑定,包括处理可选性(默认情况下,字典中AIFunctionArguments不包含的必需参数将导致引发异常)。 松散类型的其他上下文信息可以通过“字典Context”传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments;默认绑定将忽略此集合,但通过ConfigureParameterBinding提供的自定义绑定可以选择从此数据源参数。

字典中参数 AIFunctionArguments 的默认封送允许在对象已具有兼容类型的情况下直接传入 method'调用's 调用的值。 否则,如果参数是一个 JsonElementJsonDocument或者 JsonNode反序列化为参数类型,则 SerializerOptions 使用(如果提供)或使用 DefaultOptions参数类型。 如果参数是任何其他参数,则通过 JSON 进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

一般情况下,通过 AIFunctionArguments字典提供的数据是从 AI 服务提供的,应被视为未经验证且不受信任。 若要向调用 method提供经过验证和受信任的数据,请考虑在 method 配置为保留适当状态的实例上指向实例方法。 IServiceProvider还可以使用参数从依赖项注入容器解析服务。

默认情况下,返回值序列化为JsonElement使用 'sSerializerOptions(如果提供)或者使用 。否则使用 DefaultOptionsoptions。 但是,返回其声明类型为 AIContent、派生类型的 AIContent值或任何可从 IEnumerable<T> 中分配的类型不序列化,而是直接返回。 可以通过 .. 重写 MarshalResult返回值的处理。

除了参数架构,JSON 架构还派生自方法的返回类型,并通过返回 AIFunction的 's ReturnJsonSchema公开。 对于返回 Void的方法, Task或者 ValueTask不生成返回架构(属性为 null)。 对于返回Task<TResult>ValueTask<TResult>或返回的方法,架构派生自未包装的结果类型。 可以通过以下方式排除 ExcludeResultSchema返回架构生成,其生成由 options's JsonSchemaCreateOptions管理。

适用于

Create(Delegate, String, String, JsonSerializerOptions)

Source:
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,则名称将派生自任何 DisplayNameAttribute on method、如果可用,或者从名称 method中派生。

description
String

要用于 . 的说明 AIFunction。 如果 null存在,说明将派生自任何 DescriptionAttribute on method(如果可用)。

serializerOptions
JsonSerializerOptions

JsonSerializerOptions用于封送函数参数和任何返回值。

返回

为调用method创建的 AIFunction

例外

methodnull

不可序列化的参数 method

注解

methodAIFunctionArguments键/值对字典中获取的任何参数,并在函数的 JSON 架构中表示,如返回 AIFunction的 's JsonSchema中公开。 此情况有一些例外情况:

所有其他参数类型都从传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments字典绑定,并包含在生成的 JSON 架构中。

如果对象已是兼容类型,则字典中的 AIFunctionArguments 参数封送允许将值直接传递到 method's 调用中。 否则,如果参数为参数 JsonElementJsonDocument或者 JsonNode反序列化为参数类型,则 serializerOptions 使用(如果提供的话) DefaultOptions或其他参数类型。 如果参数是任何其他参数,则通过 JSON 进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

一般情况下,通过 AIFunctionArguments字典提供的数据是从 AI 服务提供的,应被视为未经验证且不受信任。 若要向调用 method提供经过验证和受信任的数据,请考虑在 method 配置为保留适当状态的实例上指向实例方法。 IServiceProvider还可以使用参数从依赖项注入容器解析服务。

返回值序列化为 JsonElement 使用 serializerOptions (如果提供)或者使用 DefaultOptions。 但是,返回其声明类型为 AIContent、派生类型的 AIContent值或不可从 IEnumerable<T> 中分配的任何类型的值;返回这些值 as-is 以方便进行专用处理。

JSON 架构也派生自方法的返回类型,并通过该 ReturnJsonSchema类型公开。 对于返回 Void的方法, TaskValueTask不生成任何返回架构。 对于返回Task<TResult>ValueTask<TResult>或返回的方法,架构派生自未包装的结果类型。

适用于

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

Source:
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,则名称将派生自任何 DisplayNameAttribute on method、如果可用,或者从名称 method中派生。

description
String

要用于 . 的说明 AIFunction。 如果 null存在,说明将派生自任何 DescriptionAttribute on method(如果可用)。

serializerOptions
JsonSerializerOptions

JsonSerializerOptions用于封送函数参数和返回值。

返回

为调用method创建的 AIFunction

例外

method 表示实例方法,但 target 为 null。

method 包含不带参数名称的参数。

参数或其 method 返回类型不可序列化。

注解

methodAIFunctionArguments键/值对字典中获取的任何参数,并在函数的 JSON 架构中表示,如返回 AIFunction的 's JsonSchema中公开。 此情况有一些例外情况:

所有其他参数类型都从传入InvokeAsync(AIFunctionArguments, CancellationToken)AIFunctionArguments字典绑定,并包含在生成的 JSON 架构中。

如果对象已是兼容类型,则字典中的 AIFunctionArguments 参数封送允许将值直接传递到 method's 调用中。 否则,如果参数为参数 JsonElementJsonDocument或者 JsonNode反序列化为参数类型,则 serializerOptions 使用(如果提供的话) DefaultOptions或其他参数类型。 如果参数是任何其他参数,则通过 JSON 进行舍入,将对象序列化为 JSON,然后将其反序列化为预期类型。

一般情况下,通过 AIFunctionArguments字典提供的数据是从 AI 服务提供的,应被视为未经验证且不受信任。 若要向调用 method提供经过验证和受信任的数据,请考虑在 method 配置为保留适当状态的实例上指向实例方法。 IServiceProvider还可以使用参数从依赖项注入容器解析服务。

返回值序列化为 JsonElement 使用 serializerOptions (如果提供)或者使用 DefaultOptions。 但是,返回其声明类型为 AIContent、派生类型的 AIContent值或可从 IEnumerable<T> 中分配的任何类型,而不进行序列化以启用专用处理。

JSON 架构也派生自方法的返回类型,并通过该 ReturnJsonSchema类型公开。 对于返回 Void的方法, TaskValueTask不生成任何返回架构。 对于返回Task<TResult>ValueTask<TResult>或返回的方法,架构派生自未包装的结果类型。

适用于