AIFunctionFactory.Create Método

Definição

Cria uma AIFunction instância para um método, especificada através de um delegado.

Sobrecargas

Name Descrição
Create(Delegate, AIFunctionFactoryOptions)

Cria uma AIFunction instância para um método, especificada através de um delegado.

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

Cria uma AIFunction instância para um método, especificada via um MethodInfo para um método de instância e para Func<T,TResult> construir uma instância do objeto receptor cada vez que o AIFunction é invocado.

Create(MethodInfo, Object, AIFunctionFactoryOptions)

Cria uma AIFunction instância para um método, especificada através de uma MethodInfo instância e um objeto alvo opcional se o método for um método de instância.

Create(Delegate, String, String, JsonSerializerOptions)

Cria uma AIFunction instância para um método, especificada através de um delegado.

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

Cria uma AIFunction instância para um método, especificada através de uma MethodInfo instância e um objeto alvo opcional se o método for um método de instância.

Create(Delegate, AIFunctionFactoryOptions)

Origem:
AIFunctionFactory.cs

Cria uma AIFunction instância para um método, especificada através de um delegado.

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

Parâmetros

method
Delegate

O método a ser representado através do criado AIFunction.

options
AIFunctionFactoryOptions

Metadados a usar para substituir os valores definidos inferidos a methodpartir de .

Devoluções

O criado AIFunction para invocar method.

Exceções

method é null.

Um parâmetro para method não é serializável.

Observações

Por defeito, quaisquer parâmetros para method são obtidos do AIFunctionArgumentsdicionário de pares chave/valor de , e são representados no esquema JSON da função, conforme exposto no 's AIFunctiondevolvidoJsonSchema. Existem algumas exceções a isto:

Todos os outros tipos de parâmetros são, por defeito, atribuídos pelo AIFunctionArguments dicionário passado e InvokeAsync(AIFunctionArguments, CancellationToken) incluídos no esquema JSON gerado. Isto pode ser sobreposto pelo ConfigureParameterBinding fornecido através do options parâmetro; para cada parâmetro, o delegado pode escolher se o parâmetro deve ser incluído no esquema gerado e como o seu valor deve ser limitado, incluindo o tratamento da opcionalidade (por defeito, parâmetros exigidos que não estão incluídos no AIFunctionArguments dicionário resultarão numa exceção lançada). Informação adicional de contexto pouco tipicada pode ser passada InvokeAsync(AIFunctionArguments, CancellationToken) através do AIFunctionArgumentsdicionário 's Context ; a ligação por defeito ignora esta coleção, mas uma ligação personalizada fornecida via ConfigureParameterBinding pode escolher obter argumentos a partir destes dados.

O marshaling padrão dos parâmetros do AIFunctionArguments dicionário permite que valores sejam passados diretamente para a methodinvocação de , se o objeto já for de um tipo compatível. Caso contrário, se o argumento for um JsonElement, , ou JsonDocument, é desserializado no tipo de parâmetro, utilizando JsonNode se fornecido, ou então usando SerializerOptionsDefaultOptions. Se o argumento for outra coisa, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Em geral, os dados fornecidos através de um AIFunctionArgumentsdicionário de 's são fornecidos por um serviço de IA e devem ser considerados não validados e não confiáveis. Para fornecer dados validados e confiáveis à invocação de method, considere ter method apontado para um método de instância numa instância configurado para manter o estado apropriado. Um IServiceProvider parâmetro também pode ser usado para resolver serviços a partir de um contentor de injeção de dependências.

Por defeito, os valores de retorno são serializados usando JsonElementoptions's SerializerOptions se forem fornecidos, ou então usando DefaultOptions. No entanto, valores de retorno cujo tipo declarado é AIContent, um tipo derivado de AIContent, ou qualquer tipo atribuível de IEnumerable<T> (por exemplo, AIContent[]), List<AIContent>são com maiúsculas especiais e não são serializadas: a função criada devolve a(s) instância(s) original(es) diretamente para permitir que os chamadores (como um IChatClient) realizem testes de tipo e implementem tratamento especializado. Se MarshalResult for fornecido, esse delegado governa o comportamento em vez disso.

Para além do esquema de parâmetros, um esquema JSON também é derivado do tipo de retorno do método e exposto através do .AIFunctionReturnJsonSchema Para métodos que retornam Void, , ou Task, não é produzido nenhum esquema de retorno (a propriedade é ValueTasknull). Para métodos que retornam Task<TResult> ou ValueTask<TResult>, o esquema é derivado do tipo de resultado não embrulhado. A geração de esquemas de retorno pode ser excluída via ExcludeResultSchema, e a sua geração é governada por options's JsonSchemaCreateOptions.

Aplica-se a

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

Origem:
AIFunctionFactory.cs

Cria uma AIFunction instância para um método, especificada via um MethodInfo para um método de instância e para Func<T,TResult> construir uma instância do objeto receptor cada vez que o AIFunction é invocado.

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

Parâmetros

method
MethodInfo

O método da instância deve ser representado através do .AIFunction

createInstanceFunc
Func<AIFunctionArguments,Object>

O callback é usado em cada invocação de função para criar uma instância do tipo em que o método method de instância será invocado. Se a instância devolvida for IAsyncDisposable ou IDisposable, será eliminada após method completar a sua invocação.

options
AIFunctionFactoryOptions

Metadados a usar para substituir os valores definidos inferidos a methodpartir de .

Devoluções

O criado AIFunction para invocar method.

Exceções

createInstanceFunc é null.

method contém um parâmetro sem nome de parâmetro.

Um parâmetro para method ou o seu tipo de retorno não é serializável.

Observações

Os valores de retorno são serializados para JsonElement usar options's SerializerOptions. Argumentos que ainda não são do tipo esperado são orientados para o tipo esperado via JSON e usando options's SerializerOptions. Se o argumento for um JsonElement, JsonDocument, ou JsonNode, é desserializado diretamente. Se o argumento for outra coisa desconhecida, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Por defeito, quaisquer parâmetros para method são obtidos do AIFunctionArgumentsdicionário de pares chave/valor de , e são representados no esquema JSON da função, conforme exposto no 's AIFunctiondevolvidoJsonSchema. Existem algumas exceções a isto:

Todos os outros tipos de parâmetros são, por defeito, atribuídos pelo AIFunctionArguments dicionário passado e InvokeAsync(AIFunctionArguments, CancellationToken) incluídos no esquema JSON gerado. Isto pode ser sobreposto pelo ConfigureParameterBinding fornecido através do options parâmetro; para cada parâmetro, o delegado pode escolher se o parâmetro deve ser incluído no esquema gerado e como o seu valor deve ser limitado, incluindo o tratamento da opcionalidade (por defeito, parâmetros exigidos que não estão incluídos no AIFunctionArguments dicionário resultarão numa exceção lançada). Informação adicional de contexto pouco tipicada pode ser passada InvokeAsync(AIFunctionArguments, CancellationToken) através do AIFunctionArgumentsdicionário 's Context ; a ligação por defeito ignora esta coleção, mas uma ligação personalizada fornecida via ConfigureParameterBinding pode escolher obter argumentos a partir destes dados.

O marshaling padrão dos parâmetros do AIFunctionArguments dicionário permite que valores sejam passados diretamente para a methodinvocação de , se o objeto já for de um tipo compatível. Caso contrário, se o argumento for um JsonElement, , ou JsonDocument, é desserializado no tipo de parâmetro, utilizando JsonNode se fornecido, ou então usando SerializerOptionsDefaultOptions. Se o argumento for outra coisa, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Em geral, os dados fornecidos através de um AIFunctionArgumentsdicionário de 's são fornecidos por um serviço de IA e devem ser considerados não validados e não confiáveis. Para fornecer dados validados e de confiança à invocação de method, a instância construída para cada invocação pode conter esses dados, de modo que fiquem então disponíveis como method dados de instância. Um IServiceProvider parâmetro também pode ser usado para resolver serviços a partir de um contentor de injeção de dependências.

Por defeito, os valores de retorno são serializados usando JsonElementoptions's SerializerOptions se forem fornecidos, ou então usando DefaultOptions. No entanto, valores de retorno cujo tipo declarado é AIContent, um tipo derivado de AIContent, ou qualquer tipo atribuível de IEnumerable<T> são devolvidos diretamente sem serialização. O tratamento dos valores de retorno pode ser sobreposto via MarshalResult.

Para além do esquema de parâmetros, um esquema JSON também é derivado do tipo de retorno do método e exposto através do .AIFunctionReturnJsonSchema Para métodos que retornam Void, , ou Task, não é produzido nenhum esquema de retorno (a propriedade é ValueTasknull). Para métodos que retornam Task<TResult> ou ValueTask<TResult>, o esquema é derivado do tipo de resultado não embrulhado. A geração de esquemas de retorno pode ser excluída via ExcludeResultSchema, e a sua geração é governada por options's JsonSchemaCreateOptions.

Aplica-se a

Create(MethodInfo, Object, AIFunctionFactoryOptions)

Origem:
AIFunctionFactory.cs

Cria uma AIFunction instância para um método, especificada através de uma MethodInfo instância e um objeto alvo opcional se o método for um método de instância.

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

Parâmetros

method
MethodInfo

O método a ser representado através do criado AIFunction.

target
Object

O objeto alvo para o method if representa um método de instância. Isto deve ser null se, e somente se, method for um método estático.

options
AIFunctionFactoryOptions

Metadados a usar para substituir os valores definidos inferidos a methodpartir de .

Devoluções

O criado AIFunction para invocar method.

Exceções

method representa um método de instância mas target é nulo.

method contém um parâmetro sem nome de parâmetro.

Um parâmetro para method ou o seu tipo de retorno não é serializável.

Observações

Por defeito, quaisquer parâmetros para method são obtidos do AIFunctionArgumentsdicionário de pares chave/valor de , e são representados no esquema JSON da função, conforme exposto no 's AIFunctiondevolvidoJsonSchema. Existem algumas exceções a isto:

Todos os outros tipos de parâmetros são, por defeito, atribuídos pelo AIFunctionArguments dicionário passado e InvokeAsync(AIFunctionArguments, CancellationToken) incluídos no esquema JSON gerado. Isto pode ser sobreposto pelo ConfigureParameterBinding fornecido através do options parâmetro; para cada parâmetro, o delegado pode escolher se o parâmetro deve ser incluído no esquema gerado e como o seu valor deve ser limitado, incluindo o tratamento da opcionalidade (por defeito, parâmetros exigidos que não estão incluídos no AIFunctionArguments dicionário resultarão numa exceção lançada). Informação adicional de contexto pouco tipada pode ser passada InvokeAsync(AIFunctionArguments, CancellationToken) através do AIFunctionArgumentsdicionário 's Context ; a ligação por defeito ignora esta coleção, mas uma ligação personalizada fornecida via ConfigureParameterBinding pode escolher obter argumentos a partir destes dados.

O marshaling padrão dos parâmetros do AIFunctionArguments dicionário permite que valores sejam passados diretamente para a methodinvocação de , se o objeto já for de um tipo compatível. Caso contrário, se o argumento for um JsonElement, , ou JsonDocument, é desserializado no tipo de parâmetro, utilizando JsonNode se fornecido, ou então usando SerializerOptionsDefaultOptions. Se o argumento for outra coisa, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Em geral, os dados fornecidos através de um AIFunctionArgumentsdicionário de 's são fornecidos por um serviço de IA e devem ser considerados não validados e não confiáveis. Para fornecer dados validados e confiáveis à invocação de method, considere ter method apontado para um método de instância numa instância configurado para manter o estado apropriado. Um IServiceProvider parâmetro também pode ser usado para resolver serviços a partir de um contentor de injeção de dependências.

Por defeito, os valores de retorno são serializados usando JsonElementoptions's SerializerOptions se forem fornecidos, ou então usando DefaultOptions. No entanto, valores de retorno cujo tipo declarado é AIContent, um tipo derivado de AIContent, ou qualquer tipo atribuível de IEnumerable<T> não são serializados e são devolvidos diretamente. O tratamento dos valores de retorno pode ser sobreposto via MarshalResult.

Para além do esquema de parâmetros, um esquema JSON também é derivado do tipo de retorno do método e exposto através do .AIFunctionReturnJsonSchema Para métodos que retornam Void, , ou Task, não é produzido nenhum esquema de retorno (a propriedade é ValueTasknull). Para métodos que retornam Task<TResult> ou ValueTask<TResult>, o esquema é derivado do tipo de resultado não embrulhado. A geração de esquemas de retorno pode ser excluída via ExcludeResultSchema, e a sua geração é governada por options's JsonSchemaCreateOptions.

Aplica-se a

Create(Delegate, String, String, JsonSerializerOptions)

Origem:
AIFunctionFactory.cs

Cria uma AIFunction instância para um método, especificada através de um delegado.

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

Parâmetros

method
Delegate

O método a ser representado através do criado AIFunction.

name
String

O nome a usar para o AIFunction. Se null, o nome será derivado de qualquer AIFunctionNameAttribute em method, então de qualquer DisplayNameAttribute em method, se disponível, ou então do nome de method.

description
String

A descrição a usar para o AIFunction. Se null, uma descrição será derivada de qualquer DescriptionAttribute em method, se disponível.

serializerOptions
JsonSerializerOptions

É JsonSerializerOptions usado para marshalar parâmetros de função e qualquer valor de retorno.

Devoluções

O criado AIFunction para invocar method.

Exceções

method é null.

Um parâmetro para method não é serializável.

Observações

Quaisquer parâmetros para method são obtidos do AIFunctionArgumentsdicionário de pares chave/valor de , e são representados no esquema JSON da função, conforme exposto nos 's AIFunctiondevolvidosJsonSchema. Existem algumas exceções a isto:

Todos os outros tipos de parâmetros são atribuídos pelo AIFunctionArguments dicionário passado e InvokeAsync(AIFunctionArguments, CancellationToken) incluídos no esquema JSON gerado.

O agrupamento dos parâmetros a partir do AIFunctionArguments dicionário permite que valores sejam passados diretamente para a methodinvocação de , se o objeto já for de um tipo compatível. Caso contrário, se o argumento for um JsonElement, , ou JsonDocument, é desserializado no tipo de parâmetro, utilizando JsonNode se for fornecido, ou então serializerOptionsDefaultOptions. Se o argumento for outra coisa, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Em geral, os dados fornecidos através de um AIFunctionArgumentsdicionário de 's são fornecidos por um serviço de IA e devem ser considerados não validados e não confiáveis. Para fornecer dados validados e confiáveis à invocação de method, considere ter method apontado para um método de instância numa instância configurado para manter o estado apropriado. Um IServiceProvider parâmetro também pode ser usado para resolver serviços a partir de um contentor de injeção de dependências.

Os valores de retorno são serializados para JsonElement usar serializerOptions se fornecido, ou então usar DefaultOptions. No entanto, valores de retorno cujo tipo declarado é AIContent, um tipo derivado de AIContent, ou qualquer tipo atribuível de IEnumerable<T> não são serializados; são devolvidos as-is para facilitar um tratamento especializado.

Um esquema JSON também é derivado do tipo de retorno do método e exposto via ReturnJsonSchema. Para métodos que retornam Void, Task, ou ValueTask, não é produzido nenhum esquema de retorno. Para métodos que retornam Task<TResult> ou ValueTask<TResult>, o esquema é derivado do tipo de resultado não embrulhado.

Aplica-se a

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

Origem:
AIFunctionFactory.cs

Cria uma AIFunction instância para um método, especificada através de uma MethodInfo instância e um objeto alvo opcional se o método for um método de instância.

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

Parâmetros

method
MethodInfo

O método a ser representado através do criado AIFunction.

target
Object

O objeto alvo para o method if representa um método de instância. Isto deve ser null se, e somente se, method for um método estático.

name
String

O nome a usar para o AIFunction. Se null, o nome será derivado de qualquer AIFunctionNameAttribute em method, então de qualquer DisplayNameAttribute em method, se disponível, ou então do nome de method.

description
String

A descrição a usar para o AIFunction. Se null, uma descrição será derivada de qualquer DescriptionAttribute em method, se disponível.

serializerOptions
JsonSerializerOptions

Eles JsonSerializerOptions são usados para marshalar parâmetros da função e devolver o valor.

Devoluções

O criado AIFunction para invocar method.

Exceções

method representa um método de instância mas target é nulo.

method contém um parâmetro sem nome de parâmetro.

Um parâmetro para method ou o seu tipo de retorno não é serializável.

Observações

Quaisquer parâmetros para method são obtidos do AIFunctionArgumentsdicionário de pares chave/valor de , e são representados no esquema JSON da função, conforme exposto nos 's AIFunctiondevolvidosJsonSchema. Existem algumas exceções a isto:

Todos os outros tipos de parâmetros são atribuídos pelo AIFunctionArguments dicionário passado e InvokeAsync(AIFunctionArguments, CancellationToken) incluídos no esquema JSON gerado.

O agrupamento dos parâmetros a partir do AIFunctionArguments dicionário permite que valores sejam passados diretamente para a methodinvocação de , se o objeto já for de um tipo compatível. Caso contrário, se o argumento for um JsonElement, , ou JsonDocument, é desserializado no tipo de parâmetro, utilizando JsonNode se for fornecido, ou então serializerOptionsDefaultOptions. Se o argumento for outra coisa, é feito round-trip através de JSON, serializando o objeto como JSON e depois desserializando-o para o tipo esperado.

Em geral, os dados fornecidos através de um AIFunctionArgumentsdicionário de 's são fornecidos por um serviço de IA e devem ser considerados não validados e não confiáveis. Para fornecer dados validados e confiáveis à invocação de method, considere ter method apontado para um método de instância numa instância configurado para manter o estado apropriado. Um IServiceProvider parâmetro também pode ser usado para resolver serviços a partir de um contentor de injeção de dependências.

Os valores de retorno são serializados para JsonElement usar serializerOptions se fornecido, ou então usar DefaultOptions. No entanto, valores de retorno cujo tipo declarado é AIContent, um tipo derivado de AIContent, ou qualquer tipo atribuível de IEnumerable<T> são devolvidos sem serialização para permitir um tratamento especializado.

Um esquema JSON também é derivado do tipo de retorno do método e exposto via ReturnJsonSchema. Para métodos que retornam Void, Task, ou ValueTask, não é produzido nenhum esquema de retorno. Para métodos que retornam Task<TResult> ou ValueTask<TResult>, o esquema é derivado do tipo de resultado não embrulhado.

Aplica-se a