AIFunctionFactory.Create Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
| Nombre | Description |
|---|---|
| Create(Delegate, AIFunctionFactoryOptions) |
Crea una AIFunction instancia de para un método, especificado a través de un delegado. |
| Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions) |
Crea una AIFunction instancia de para un método, especificado a través de para MethodInfo un método de instancia y un Func<T,TResult> para construir una instancia del objeto receptor cada vez que se invoca .AIFunction |
| Create(MethodInfo, Object, AIFunctionFactoryOptions) |
Crea una AIFunction instancia de para un método, especificado a través de una MethodInfo instancia y un objeto de destino opcional si el método es un método de instancia. |
| Create(Delegate, String, String, JsonSerializerOptions) |
Crea una AIFunction instancia de para un método, especificado a través de un delegado. |
| Create(MethodInfo, Object, String, String, JsonSerializerOptions) |
Crea una AIFunction instancia de para un método, especificado a través de una MethodInfo instancia y un objeto de destino opcional si el método es un método de instancia. |
Create(Delegate, AIFunctionFactoryOptions)
- Source:
- AIFunctionFactory.cs
Crea una AIFunction instancia de para un método, especificado a través de un 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
Método que se va a representar a través del objeto creado AIFunction.
- options
- AIFunctionFactoryOptions
Metadatos que se usarán para invalidar los valores predeterminados inferidos de method.
Devoluciones
Objeto creado AIFunction para invocar method.
Excepciones
method es null.
Un parámetro para method no es serializable.
Comentarios
De forma predeterminada, los parámetros que se van a method originar a partir del AIFunctionArgumentsdiccionario de pares clave-valor y se representan en el esquema JSON de la función, tal como se AIFunctionexpone en el objeto devuelto de JsonSchema. Hay algunas excepciones a esto:
- CancellationTokenLos parámetros se enlazan automáticamente al CancellationToken que se pasa a la invocación a través InvokeAsync(AIFunctionArguments, CancellationToken)del parámetro .CancellationToken El parámetro no se incluye en el esquema JSON generado. No se puede invalidar el comportamiento de CancellationToken los parámetros.
- De forma predeterminada, IServiceProvider los parámetros se enlazan desde la Services propiedad y no se incluyen en el esquema JSON. Si el parámetro es opcional, de modo que se proporciona un valor predeterminado, Services se permite que sea
null; de lo contrario, debe ser distintonullo, de lo contrario, Services se producirá un error en la invocación con una excepción debido a la naturaleza necesaria del parámetro. El control de parámetros se puede invalidar a través ConfigureParameterBindingde IServiceProvider . - De forma predeterminada, AIFunctionArguments los parámetros se enlazan directamente a la AIFunctionArguments instancia que se pasa a InvokeAsync(AIFunctionArguments, CancellationToken) y no se incluyen en el esquema JSON. Si la AIFunctionArguments instancia pasada a InvokeAsync(AIFunctionArguments, CancellationToken) es
null, la AIFunction implementación fabrica una instancia vacía, de modo que los parámetros de tipo AIFunctionArguments siempre se puedan satisfacer, independientemente de si es opcional o no. El control de parámetros se puede invalidar a través ConfigureParameterBindingde AIFunctionArguments .
options parámetro ; para cada parámetro, el delegado está habilitado para elegir si el parámetro debe incluirse en el esquema generado y cómo se debe enlazar su valor, incluido el control de la opcionalidad (de forma predeterminada, los parámetros necesarios que no se incluyen en el AIFunctionArguments diccionario producirán una excepción). La información de contexto adicional de tipo flexible se puede pasar InvokeAsync(AIFunctionArguments, CancellationToken) a través del AIFunctionArgumentsdiccionario de Context ; el enlace predeterminado omite esta colección, pero un enlace personalizado proporcionado a través ConfigureParameterBinding de puede elegir los argumentos de origen de estos datos.La serialización predeterminada de parámetros del AIFunctionArguments diccionario permite pasar los valores directamente a la methodinvocación de si el objeto ya es de un tipo compatible. De lo contrario, si el argumento es , JsonElemento , se deserializa en el tipo de parámetro, utilizando SerializerOptions si se proporciona o usa DefaultOptions.JsonNodeJsonDocument Si el argumento es cualquier otra cosa, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
En general, los datos proporcionados a través de un AIFunctionArgumentsdiccionario se proporcionan desde un servicio de IA y se deben considerar no validados y que no son de confianza. Para proporcionar datos validados y de confianza a la invocación de , considere la posibilidad de methodtener method que apuntar a un método de instancia en una instancia configurada para contener el estado adecuado. También se puede usar un IServiceProvider parámetro para resolver servicios desde un contenedor de inserción de dependencias.
De forma predeterminada, los valores devueltos se serializan para JsonElement usar "sSerializerOptions" si se proporcionan, o bien mediante DefaultOptionsoptions. Sin embargo, los valores devueltos cuyo tipo declarado es AIContent, un tipo derivado de o cualquier tipo que se pueda asignar desde IEnumerable<T> (por ejemploAIContent[], , List<AIContent>) están en mayúsculas y minúsculas especiales y no se serializan: la función creada devuelve las instancias originales directamente para habilitar a los autores de AIContentllamadas (por ejemplo, ) IChatClientpara realizar pruebas de tipos e implementar un control especializado. Si MarshalResult se proporciona, ese delegado rige el comportamiento en su lugar.
Además del esquema de parámetros, un esquema JSON también se deriva del tipo de valor devuelto del método y se expone a través de la propiedad devuelta AIFunction.ReturnJsonSchema Para los métodos que devuelven Void, Tasko ValueTask, no se genera ningún esquema devuelto (la propiedad es null). Para los métodos que devuelven Task<TResult> o ValueTask<TResult>, el esquema se deriva del tipo de resultado desajustado. La generación de esquemas devueltos se puede excluir a través ExcludeResultSchemade y su generación se rige por options.JsonSchemaCreateOptions
Se aplica a
Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)
- Source:
- AIFunctionFactory.cs
Crea una AIFunction instancia de para un método, especificado a través de para MethodInfo un método de instancia y un Func<T,TResult> para construir una instancia del objeto receptor cada vez que se invoca .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
Parámetros
- method
- MethodInfo
Método de instancia que se va a representar mediante el objeto creado AIFunction.
- createInstanceFunc
- Func<AIFunctionArguments,Object>
Devolución de llamada usada en cada invocación de función para crear una instancia del tipo en el que se invocará el método method de instancia. Si la instancia devuelta es IAsyncDisposable o IDisposable, se eliminará de después method de completar su invocación.
- options
- AIFunctionFactoryOptions
Metadatos que se usarán para invalidar los valores predeterminados inferidos de method.
Devoluciones
Objeto creado AIFunction para invocar method.
Excepciones
createInstanceFunc es null.
method contiene un parámetro sin un nombre de parámetro.
Un parámetro a method o su tipo de valor devuelto no es serializable.
Comentarios
Los valores devueltos se serializan para JsonElement usar options.s SerializerOptions. Los argumentos que aún no son del tipo esperado se serializarán con el tipo esperado a través de JSON y mediante options.s SerializerOptions. Si el argumento es , JsonElementJsonDocumento JsonNode, se deserializa directamente. Si el argumento es algo desconocido, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
De forma predeterminada, los parámetros que se van a method originar a partir del AIFunctionArgumentsdiccionario de pares clave-valor y se representan en el esquema JSON de la función, tal como se AIFunctionexpone en el objeto devuelto de JsonSchema. Hay algunas excepciones a esto:
- CancellationTokenLos parámetros se enlazan automáticamente al CancellationToken que se pasa a la invocación a través InvokeAsync(AIFunctionArguments, CancellationToken)del parámetro .CancellationToken El parámetro no se incluye en el esquema JSON generado. No se puede invalidar el comportamiento de CancellationToken los parámetros.
- De forma predeterminada, IServiceProvider los parámetros se enlazan desde la Services propiedad y no se incluyen en el esquema JSON. Si el parámetro es opcional, de modo que se proporciona un valor predeterminado, Services se permite que sea
null; de lo contrario, debe ser distintonullo, de lo contrario, Services se producirá un error en la invocación con una excepción debido a la naturaleza necesaria del parámetro. El control de parámetros se puede invalidar a través ConfigureParameterBindingde IServiceProvider . - De forma predeterminada, AIFunctionArguments los parámetros se enlazan directamente a la AIFunctionArguments instancia que se pasa a InvokeAsync(AIFunctionArguments, CancellationToken) y no se incluyen en el esquema JSON. Si la AIFunctionArguments instancia pasada a InvokeAsync(AIFunctionArguments, CancellationToken) es
null, la AIFunction implementación fabrica una instancia vacía, de modo que los parámetros de tipo AIFunctionArguments siempre se puedan satisfacer, independientemente de si es opcional o no. El control de parámetros se puede invalidar a través ConfigureParameterBindingde AIFunctionArguments .
options parámetro ; para cada parámetro, el delegado está habilitado para elegir si el parámetro debe incluirse en el esquema generado y cómo se debe enlazar su valor, incluido el control de la opcionalidad (de forma predeterminada, los parámetros necesarios que no se incluyen en el AIFunctionArguments diccionario producirán una excepción). La información de contexto adicional de tipo flexible se puede pasar InvokeAsync(AIFunctionArguments, CancellationToken) a través del AIFunctionArgumentsdiccionario de Context ; el enlace predeterminado omite esta colección, pero un enlace personalizado proporcionado a través ConfigureParameterBinding de puede elegir los argumentos de origen de estos datos.La serialización predeterminada de parámetros del AIFunctionArguments diccionario permite pasar los valores directamente a la methodinvocación de si el objeto ya es de un tipo compatible. De lo contrario, si el argumento es , JsonElemento , se deserializa en el tipo de parámetro, utilizando SerializerOptions si se proporciona o usa DefaultOptions.JsonNodeJsonDocument Si el argumento es cualquier otra cosa, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
En general, los datos proporcionados a través de un AIFunctionArgumentsdiccionario se proporcionan desde un servicio de IA y se deben considerar no validados y que no son de confianza. Para proporcionar datos validados y de confianza a la invocación de method, la instancia construida para cada invocación puede contener esos datos, de modo que luego esté disponible para method como datos de instancia. También se puede usar un IServiceProvider parámetro para resolver servicios desde un contenedor de inserción de dependencias.
De forma predeterminada, los valores devueltos se serializan para JsonElement usar "sSerializerOptions" si se proporcionan, o bien mediante DefaultOptionsoptions. Sin embargo, los valores devueltos cuyo tipo declarado es AIContent, un tipo derivado de AIContento cualquier tipo asignable de IEnumerable<T> se devuelven directamente sin serialización. El control de los valores devueltos se puede invalidar a través MarshalResultde .
Además del esquema de parámetros, un esquema JSON también se deriva del tipo de valor devuelto del método y se expone a través de la propiedad devuelta AIFunction.ReturnJsonSchema Para los métodos que devuelven Void, Tasko ValueTask, no se genera ningún esquema devuelto (la propiedad es null). Para los métodos que devuelven Task<TResult> o ValueTask<TResult>, el esquema se deriva del tipo de resultado desajustado. La generación de esquemas devueltos se puede excluir a través ExcludeResultSchemade y su generación se rige por options.JsonSchemaCreateOptions
Se aplica a
Create(MethodInfo, Object, AIFunctionFactoryOptions)
- Source:
- AIFunctionFactory.cs
Crea una AIFunction instancia de para un método, especificado a través de una MethodInfo instancia y un objeto de destino opcional si el método es un método de instancia.
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
Método que se va a representar a través del objeto creado AIFunction.
- target
- Object
Objeto de destino para method si representa un método de instancia.
Debe ser null si y solo si method es un método estático.
- options
- AIFunctionFactoryOptions
Metadatos que se usarán para invalidar los valores predeterminados inferidos de method.
Devoluciones
Objeto creado AIFunction para invocar method.
Excepciones
method representa un método de instancia, pero target es null.
method contiene un parámetro sin un nombre de parámetro.
Un parámetro a method o su tipo de valor devuelto no es serializable.
Comentarios
De forma predeterminada, los parámetros que se van a method originar a partir del AIFunctionArgumentsdiccionario de pares clave-valor y se representan en el esquema JSON de la función, tal como se AIFunctionexpone en el objeto devuelto de JsonSchema. Hay algunas excepciones a esto:
- CancellationTokenLos parámetros se enlazan automáticamente al CancellationToken que se pasa a la invocación a través InvokeAsync(AIFunctionArguments, CancellationToken)del parámetro .CancellationToken El parámetro no se incluye en el esquema JSON generado. No se puede invalidar el comportamiento de CancellationToken los parámetros.
- De forma predeterminada, IServiceProvider los parámetros se enlazan desde la Services propiedad y no se incluyen en el esquema JSON. Si el parámetro es opcional, de modo que se proporciona un valor predeterminado, Services se permite que sea
null; de lo contrario, debe ser distintonullo, de lo contrario, Services se producirá un error en la invocación con una excepción debido a la naturaleza necesaria del parámetro. El control de parámetros se puede invalidar a través ConfigureParameterBindingde IServiceProvider . - De forma predeterminada, AIFunctionArguments los parámetros se enlazan directamente a la AIFunctionArguments instancia que se pasa a InvokeAsync(AIFunctionArguments, CancellationToken) y no se incluyen en el esquema JSON. Si la AIFunctionArguments instancia pasada a InvokeAsync(AIFunctionArguments, CancellationToken) es
null, la AIFunction implementación fabrica una instancia vacía, de modo que los parámetros de tipo AIFunctionArguments siempre se puedan satisfacer, independientemente de si es opcional o no. El control de parámetros se puede invalidar a través ConfigureParameterBindingde AIFunctionArguments .
options parámetro ; para cada parámetro, el delegado está habilitado para elegir si el parámetro debe incluirse en el esquema generado y cómo se debe enlazar su valor, incluido el control de la opcionalidad (de forma predeterminada, los parámetros necesarios que no se incluyen en el AIFunctionArguments diccionario producirán una excepción). La información de contexto adicional con tipo flexible se puede pasar InvokeAsync(AIFunctionArguments, CancellationToken) a través del AIFunctionArgumentsdiccionario de Context ; el enlace predeterminado omite esta colección, pero un enlace personalizado proporcionado a través ConfigureParameterBinding de puede elegir los argumentos de origen de estos datos.La serialización predeterminada de parámetros del AIFunctionArguments diccionario permite pasar los valores directamente a la methodinvocación de si el objeto ya es de un tipo compatible. De lo contrario, si el argumento es , JsonElemento , se deserializa en el tipo de parámetro, utilizando SerializerOptions si se proporciona o usa DefaultOptions.JsonNodeJsonDocument Si el argumento es cualquier otra cosa, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
En general, los datos proporcionados a través de un AIFunctionArgumentsdiccionario se proporcionan desde un servicio de IA y se deben considerar no validados y que no son de confianza. Para proporcionar datos validados y de confianza a la invocación de , considere la posibilidad de methodtener method que apuntar a un método de instancia en una instancia configurada para contener el estado adecuado. También se puede usar un IServiceProvider parámetro para resolver servicios desde un contenedor de inserción de dependencias.
De forma predeterminada, los valores devueltos se serializan para JsonElement usar "sSerializerOptions" si se proporcionan, o bien mediante DefaultOptionsoptions. Sin embargo, los valores devueltos cuyo tipo declarado es AIContent, un tipo derivado de AIContento cualquier tipo asignable de IEnumerable<T> no se serializan y, en su lugar, se devuelven directamente. El control de los valores devueltos se puede invalidar a través MarshalResultde .
Además del esquema de parámetros, un esquema JSON también se deriva del tipo de valor devuelto del método y se expone a través de la propiedad devuelta AIFunction.ReturnJsonSchema Para los métodos que devuelven Void, Tasko ValueTask, no se genera ningún esquema devuelto (la propiedad es null). Para los métodos que devuelven Task<TResult> o ValueTask<TResult>, el esquema se deriva del tipo de resultado desajustado. La generación de esquemas devueltos se puede excluir a través ExcludeResultSchemade y su generación se rige por options.JsonSchemaCreateOptions
Se aplica a
Create(Delegate, String, String, JsonSerializerOptions)
- Source:
- AIFunctionFactory.cs
Crea una AIFunction instancia de para un método, especificado a través de un 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
Método que se va a representar a través del objeto creado AIFunction.
- name
- String
Nombre que se va a usar para .AIFunction Si nulles , el nombre se derivará de cualquiera DisplayNameAttribute de en method, si está disponible, o bien del nombre de method.
- description
- String
Descripción que se va a usar para .AIFunction Si nulles , una descripción se derivará de cualquiera DescriptionAttribute de en method, si está disponible.
- serializerOptions
- JsonSerializerOptions
utilizado JsonSerializerOptions para serializar parámetros de función y cualquier valor devuelto.
Devoluciones
Objeto creado AIFunction para invocar method.
Excepciones
method es null.
Un parámetro para method no es serializable.
Comentarios
Los parámetros que se van a method originar desde el AIFunctionArgumentsdiccionario de pares clave-valor y se representan en el esquema JSON de la función, tal como se AIFunctionexpone en el objeto devuelto de JsonSchema. Hay algunas excepciones a esto:
- CancellationTokenLos parámetros se enlazan automáticamente al CancellationToken que se pasa a la invocación a través InvokeAsync(AIFunctionArguments, CancellationToken)del parámetro .CancellationToken El parámetro no se incluye en el esquema JSON generado.
- De forma predeterminada, IServiceProvider los parámetros se enlazan desde la Services propiedad y no se incluyen en el esquema JSON. Si el parámetro es opcional, de modo que se proporciona un valor predeterminado, Services se permite que sea
null; de lo contrario, debe ser distintonullo, de lo contrario, Services se producirá un error en la invocación con una excepción debido a la naturaleza necesaria del parámetro. - De forma predeterminada, AIFunctionArguments los parámetros se enlazan directamente a la AIFunctionArguments instancia que se pasa a InvokeAsync(AIFunctionArguments, CancellationToken) y no se incluyen en el esquema JSON. Si la AIFunctionArguments instancia pasada a InvokeAsync(AIFunctionArguments, CancellationToken) es
null, la AIFunction implementación fabrica una instancia vacía, de modo que los parámetros de tipo AIFunctionArguments siempre se puedan satisfacer, independientemente de si es opcional o no.
La serialización de parámetros del AIFunctionArguments diccionario permite pasar los valores directamente a la methodinvocación de si el objeto ya es de un tipo compatible. De lo contrario, si el argumento es , JsonElementJsonDocumento JsonNode, se deserializa en el tipo de parámetro, utilizando serializerOptions si se proporciona o .DefaultOptions Si el argumento es cualquier otra cosa, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
En general, los datos proporcionados a través de un AIFunctionArgumentsdiccionario se proporcionan desde un servicio de IA y se deben considerar no validados y que no son de confianza. Para proporcionar datos validados y de confianza a la invocación de , considere la posibilidad de methodtener method que apuntar a un método de instancia en una instancia configurada para contener el estado adecuado. También se puede usar un IServiceProvider parámetro para resolver servicios desde un contenedor de inserción de dependencias.
Los valores devueltos se serializan para JsonElement usar serializerOptions si se proporcionan, o bien mediante DefaultOptions. Sin embargo, los valores devueltos cuyo tipo declarado es AIContent, un tipo derivado de AIContento cualquier tipo asignable de IEnumerable<T> no se serializan; se devuelven as-is para facilitar el control especializado.
Un esquema JSON también se deriva del tipo de valor devuelto del método y se expone a través ReturnJsonSchemade . Para los métodos que devuelven Void, Tasko ValueTask, no se genera ningún esquema devuelto. Para los métodos que devuelven Task<TResult> o ValueTask<TResult>, el esquema se deriva del tipo de resultado desajustado.
Se aplica a
Create(MethodInfo, Object, String, String, JsonSerializerOptions)
- Source:
- AIFunctionFactory.cs
Crea una AIFunction instancia de para un método, especificado a través de una MethodInfo instancia y un objeto de destino opcional si el método es un método de instancia.
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
Método que se va a representar a través del objeto creado AIFunction.
- target
- Object
Objeto de destino para method si representa un método de instancia.
Debe ser null si y solo si method es un método estático.
- name
- String
Nombre que se va a usar para .AIFunction Si nulles , el nombre se derivará de cualquiera DisplayNameAttribute de en method, si está disponible, o bien del nombre de method.
- description
- String
Descripción que se va a usar para .AIFunction Si nulles , una descripción se derivará de cualquiera DescriptionAttribute de en method, si está disponible.
- serializerOptions
- JsonSerializerOptions
utilizado JsonSerializerOptions para serializar parámetros de función y valor devuelto.
Devoluciones
Objeto creado AIFunction para invocar method.
Excepciones
method representa un método de instancia, pero target es null.
method contiene un parámetro sin un nombre de parámetro.
Un parámetro a method o su tipo de valor devuelto no es serializable.
Comentarios
Los parámetros que se van a method originar desde el AIFunctionArgumentsdiccionario de pares clave-valor y se representan en el esquema JSON de la función, tal como se AIFunctionexpone en el objeto devuelto de JsonSchema. Hay algunas excepciones a esto:
- CancellationTokenLos parámetros se enlazan automáticamente al CancellationToken que se pasa a la invocación a través InvokeAsync(AIFunctionArguments, CancellationToken)del parámetro .CancellationToken El parámetro no se incluye en el esquema JSON generado.
- De forma predeterminada, IServiceProvider los parámetros se enlazan desde la Services propiedad y no se incluyen en el esquema JSON. Si el parámetro es opcional, de modo que se proporciona un valor predeterminado, Services se permite que sea
null; de lo contrario, debe ser distintonullo, de lo contrario, Services se producirá un error en la invocación con una excepción debido a la naturaleza necesaria del parámetro. - De forma predeterminada, AIFunctionArguments los parámetros se enlazan directamente a la AIFunctionArguments instancia que se pasa a InvokeAsync(AIFunctionArguments, CancellationToken) y no se incluyen en el esquema JSON. Si la AIFunctionArguments instancia pasada a InvokeAsync(AIFunctionArguments, CancellationToken) es
null, la AIFunction implementación fabrica una instancia vacía, de modo que los parámetros de tipo AIFunctionArguments siempre se puedan satisfacer, independientemente de si es opcional o no.
La serialización de parámetros del AIFunctionArguments diccionario permite pasar los valores directamente a la methodinvocación de si el objeto ya es de un tipo compatible. De lo contrario, si el argumento es , JsonElementJsonDocumento JsonNode, se deserializa en el tipo de parámetro, utilizando serializerOptions si se proporciona o .DefaultOptions Si el argumento es cualquier otra cosa, se recorre de ida y vuelta a través de JSON, serializando el objeto como JSON y, a continuación, deserializándolo al tipo esperado.
En general, los datos proporcionados a través de un AIFunctionArgumentsdiccionario se proporcionan desde un servicio de IA y se deben considerar no validados y que no son de confianza. Para proporcionar datos validados y de confianza a la invocación de , considere la posibilidad de methodtener method que apuntar a un método de instancia en una instancia configurada para contener el estado adecuado. También se puede usar un IServiceProvider parámetro para resolver servicios desde un contenedor de inserción de dependencias.
Los valores devueltos se serializan para JsonElement usar serializerOptions si se proporcionan, o bien mediante DefaultOptions. Sin embargo, los valores devueltos cuyo tipo declarado es AIContent, un tipo derivado de AIContento cualquier tipo asignable de IEnumerable<T> se devuelven sin serialización para habilitar el control especializado.
Un esquema JSON también se deriva del tipo de valor devuelto del método y se expone a través ReturnJsonSchemade . Para los métodos que devuelven Void, Tasko ValueTask, no se genera ningún esquema devuelto. Para los métodos que devuelven Task<TResult> o ValueTask<TResult>, el esquema se deriva del tipo de resultado desajustado.