AIFunctionFactory.Create Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
| Nome | Descrizione |
|---|---|
| Create(Delegate, AIFunctionFactoryOptions) |
Crea un'istanza AIFunction di per un metodo, specificato tramite un delegato. |
| Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions) |
Crea un'istanza AIFunction di per un metodo, specificata tramite un MethodInfo per un metodo di istanza e un Func<T,TResult> oggetto per la costruzione di un'istanza dell'oggetto ricevitore ogni volta AIFunction che viene richiamato . |
| Create(MethodInfo, Object, AIFunctionFactoryOptions) |
Crea un'istanza AIFunction di per un metodo, specificata tramite un'istanza MethodInfo e un oggetto di destinazione facoltativo se il metodo è un metodo di istanza. |
| Create(Delegate, String, String, JsonSerializerOptions) |
Crea un'istanza AIFunction di per un metodo, specificato tramite un delegato. |
| Create(MethodInfo, Object, String, String, JsonSerializerOptions) |
Crea un'istanza AIFunction di per un metodo, specificata tramite un'istanza MethodInfo e un oggetto di destinazione facoltativo se il metodo è un metodo di istanza. |
Create(Delegate, AIFunctionFactoryOptions)
- Origine:
- AIFunctionFactory.cs
Crea un'istanza AIFunction di per un metodo, specificato tramite un delegato.
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
Parametri
- method
- Delegate
Metodo da rappresentare tramite l'oggetto creato AIFunction.
- options
- AIFunctionFactoryOptions
Metadati da usare per eseguire l'override dei valori predefiniti dedotti da method.
Valori restituiti
Oggetto creato AIFunction per richiamare method.
Eccezioni
method è null.
Parametro da method non serializzabile.
Commenti
Per impostazione predefinita, tutti i parametri di method vengono originati dal AIFunctionArgumentsdizionario delle coppie chiave/valore e sono rappresentati nello schema JSON per la funzione, come esposto nell'oggetto restituito AIFunction.JsonSchema Esistono alcune eccezioni a questo scopo:
- CancellationToken i parametri vengono associati automaticamente all'oggetto CancellationToken passato nella chiamata tramite InvokeAsync(AIFunctionArguments, CancellationToken)il parametro di CancellationToken . Il parametro non è incluso nello schema JSON generato. Non è possibile eseguire l'override del comportamento dei CancellationToken parametri.
- Per impostazione predefinita, IServiceProvider i parametri vengono associati dalla Services proprietà e non sono inclusi nello schema JSON. Se il parametro è facoltativo, in modo che venga fornito un valore predefinito, Services può essere
null; in caso contrario, Services deve essere diversonullo la chiamata avrà esito negativo con un'eccezione a causa della natura richiesta del parametro. La gestione dei IServiceProvider parametri può essere sottoposta a override tramite ConfigureParameterBinding. - Per impostazione predefinita, AIFunctionArguments i parametri vengono associati direttamente all'istanza AIFunctionArguments passata in InvokeAsync(AIFunctionArguments, CancellationToken) e non sono inclusi nello schema JSON. Se l'istanza AIFunctionArguments passata a InvokeAsync(AIFunctionArguments, CancellationToken) è
null, l'implementazione AIFunction produce un'istanza vuota, in modo che i parametri di tipo AIFunctionArguments possano essere sempre soddisfatti, se facoltativi o meno. La gestione dei AIFunctionArguments parametri può essere sottoposta a override tramite ConfigureParameterBinding.
options parametro . Per ogni parametro, il delegato è abilitato per scegliere se il parametro deve essere incluso nello schema generato e come deve essere associato il relativo valore, inclusa la gestione della facoltatività (per impostazione predefinita, i parametri obbligatori non inclusi nel AIFunctionArguments dizionario genereranno un'eccezione generata). È possibile passare InvokeAsync(AIFunctionArguments, CancellationToken) informazioni di contesto aggiuntive di tipo libero tramite il AIFunctionArgumentsdizionario del Context . L'associazione predefinita ignora questa raccolta, ma un'associazione personalizzata fornita tramite ConfigureParameterBinding può scegliere di usare argomenti di origine da questi dati.Il marshalling predefinito dei parametri dal AIFunctionArguments dizionario consente di passare i valori direttamente alla methodchiamata dell'oggetto se l'oggetto è già di un tipo compatibile. In caso contrario, se l'argomento è un JsonElementoggetto , JsonDocumento JsonNode, viene deserializzato nel tipo di parametro, utilizzando SerializerOptions se specificato o usando DefaultOptions. Se l'argomento è qualcos'altro, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
In generale, i dati forniti tramite un AIFunctionArgumentsdizionario vengono forniti da un servizio di intelligenza artificiale e devono essere considerati non convalidati e non attendibili. Per fornire dati convalidati e attendibili alla chiamata di , valutare la possibilità di methodpuntare method a un metodo di istanza in un'istanza configurata per mantenere lo stato appropriato. È anche possibile usare un IServiceProvider parametro per risolvere i servizi da un contenitore di inserimento delle dipendenze.
Per impostazione predefinita, i valori restituiti vengono serializzati per JsonElement l'uso di SerializerOptions se optionsspecificato oppure tramite DefaultOptions. Tuttavia, i valori restituiti il cui tipo dichiarato è AIContent, un tipo derivato di AIContento qualsiasi tipo assegnabile da IEnumerable<T> (ad AIContent[]esempio , List<AIContent>) sono maiuscole e minuscole speciali e non vengono serializzate: la funzione creata restituisce direttamente le istanze originali per consentire ai chiamanti (ad esempio IChatClientun ) di eseguire test di tipo e implementare la gestione specializzata. Se MarshalResult viene specificato, tale delegato controlla invece il comportamento.
Oltre allo schema dei parametri, uno schema JSON è derivato anche dal tipo restituito del metodo ed esposto tramite l'oggetto restituito AIFunction.ReturnJsonSchema Per i metodi che Voidrestituiscono , Tasko ValueTask, non viene generato alcuno schema restituito (la proprietà è null). Per i metodi che Task<TResult> restituiscono o ValueTask<TResult>, lo schema è derivato dal tipo di risultato non sottoposto a wrapping. La generazione dello schema restituito può essere esclusa tramite ExcludeResultSchemae la relativa generazione è governata da options.JsonSchemaCreateOptions
Si applica a
Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)
- Origine:
- AIFunctionFactory.cs
Crea un'istanza AIFunction di per un metodo, specificata tramite un MethodInfo per un metodo di istanza e un Func<T,TResult> oggetto per la costruzione di un'istanza dell'oggetto ricevitore ogni volta AIFunction che viene richiamato .
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
Parametri
- method
- MethodInfo
Metodo di istanza da rappresentare tramite l'oggetto creato AIFunction.
- createInstanceFunc
- Func<AIFunctionArguments,Object>
Callback usato in ogni chiamata di funzione per creare un'istanza del tipo in cui verrà richiamato il metodo method di istanza. Se l'istanza restituita è IAsyncDisposable o IDisposable, verrà eliminata dopo method il completamento della chiamata.
- options
- AIFunctionFactoryOptions
Metadati da usare per eseguire l'override dei valori predefiniti dedotti da method.
Valori restituiti
Oggetto creato AIFunction per richiamare method.
Eccezioni
createInstanceFunc è null.
method contiene un parametro senza un nome di parametro.
Un parametro per method o il relativo tipo restituito non è serializzabile.
Commenti
I valori restituiti vengono serializzati per JsonElement l'uso optionsdi SerializerOptions. Gli argomenti che non sono già del tipo previsto vengono sottoposto a marshalling al tipo previsto tramite JSON e usando options's SerializerOptions. Se l'argomento è , JsonElementJsonDocumento JsonNode, viene deserializzato direttamente. Se l'argomento è sconosciuto, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
Per impostazione predefinita, tutti i parametri di method vengono originati dal AIFunctionArgumentsdizionario delle coppie chiave/valore e sono rappresentati nello schema JSON per la funzione, come esposto nell'oggetto restituito AIFunction.JsonSchema Esistono alcune eccezioni a questo scopo:
- CancellationToken i parametri vengono associati automaticamente all'oggetto CancellationToken passato nella chiamata tramite InvokeAsync(AIFunctionArguments, CancellationToken)il parametro di CancellationToken . Il parametro non è incluso nello schema JSON generato. Non è possibile eseguire l'override del comportamento dei CancellationToken parametri.
- Per impostazione predefinita, IServiceProvider i parametri vengono associati dalla Services proprietà e non sono inclusi nello schema JSON. Se il parametro è facoltativo, in modo che venga fornito un valore predefinito, Services può essere
null; in caso contrario, Services deve essere diversonullo la chiamata avrà esito negativo con un'eccezione a causa della natura richiesta del parametro. La gestione dei IServiceProvider parametri può essere sottoposta a override tramite ConfigureParameterBinding. - Per impostazione predefinita, AIFunctionArguments i parametri vengono associati direttamente all'istanza AIFunctionArguments passata in InvokeAsync(AIFunctionArguments, CancellationToken) e non sono inclusi nello schema JSON. Se l'istanza AIFunctionArguments passata a InvokeAsync(AIFunctionArguments, CancellationToken) è
null, l'implementazione AIFunction produce un'istanza vuota, in modo che i parametri di tipo AIFunctionArguments possano essere sempre soddisfatti, se facoltativi o meno. La gestione dei AIFunctionArguments parametri può essere sottoposta a override tramite ConfigureParameterBinding.
options parametro . Per ogni parametro, il delegato è abilitato per scegliere se il parametro deve essere incluso nello schema generato e come deve essere associato il relativo valore, inclusa la gestione della facoltatività (per impostazione predefinita, i parametri obbligatori non inclusi nel AIFunctionArguments dizionario genereranno un'eccezione generata). È possibile passare InvokeAsync(AIFunctionArguments, CancellationToken) informazioni di contesto aggiuntive di tipo libero tramite il AIFunctionArgumentsdizionario del Context . L'associazione predefinita ignora questa raccolta, ma un'associazione personalizzata fornita tramite ConfigureParameterBinding può scegliere di usare argomenti di origine da questi dati.Il marshalling predefinito dei parametri dal AIFunctionArguments dizionario consente di passare i valori direttamente alla methodchiamata dell'oggetto se l'oggetto è già di un tipo compatibile. In caso contrario, se l'argomento è un JsonElementoggetto , JsonDocumento JsonNode, viene deserializzato nel tipo di parametro, utilizzando SerializerOptions se specificato o usando DefaultOptions. Se l'argomento è qualcos'altro, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
In generale, i dati forniti tramite un AIFunctionArgumentsdizionario vengono forniti da un servizio di intelligenza artificiale e devono essere considerati non convalidati e non attendibili. Per fornire dati convalidati e attendibili alla chiamata di method, l'istanza costruita per ogni chiamata può contenere tali dati, in modo che sia quindi disponibile come dati dell'istanza method . È anche possibile usare un IServiceProvider parametro per risolvere i servizi da un contenitore di inserimento delle dipendenze.
Per impostazione predefinita, i valori restituiti vengono serializzati per JsonElement l'uso di SerializerOptions se optionsspecificato oppure tramite DefaultOptions. Tuttavia, i valori restituiti il cui tipo dichiarato è AIContent, un tipo derivato di AIContento qualsiasi tipo assegnabile da IEnumerable<T> vengono restituiti direttamente senza serializzazione. La gestione dei valori restituiti può essere sottoposta a override tramite MarshalResult.
Oltre allo schema dei parametri, uno schema JSON è derivato anche dal tipo restituito del metodo ed esposto tramite l'oggetto restituito AIFunction.ReturnJsonSchema Per i metodi che Voidrestituiscono , Tasko ValueTask, non viene generato alcuno schema restituito (la proprietà è null). Per i metodi che Task<TResult> restituiscono o ValueTask<TResult>, lo schema è derivato dal tipo di risultato non sottoposto a wrapping. La generazione dello schema restituito può essere esclusa tramite ExcludeResultSchemae la relativa generazione è governata da options.JsonSchemaCreateOptions
Si applica a
Create(MethodInfo, Object, AIFunctionFactoryOptions)
- Origine:
- AIFunctionFactory.cs
Crea un'istanza AIFunction di per un metodo, specificata tramite un'istanza MethodInfo e un oggetto di destinazione facoltativo se il metodo è un metodo di istanza.
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
Parametri
- method
- MethodInfo
Metodo da rappresentare tramite l'oggetto creato AIFunction.
- target
- Object
Oggetto di destinazione per l'oggetto method se rappresenta un metodo di istanza.
Deve essere null se e solo se method è un metodo statico.
- options
- AIFunctionFactoryOptions
Metadati da usare per eseguire l'override dei valori predefiniti dedotti da method.
Valori restituiti
Oggetto creato AIFunction per richiamare method.
Eccezioni
method rappresenta un metodo di istanza ma target è Null.
method contiene un parametro senza un nome di parametro.
Un parametro per method o il relativo tipo restituito non è serializzabile.
Commenti
Per impostazione predefinita, tutti i parametri di method vengono originati dal AIFunctionArgumentsdizionario delle coppie chiave/valore e sono rappresentati nello schema JSON per la funzione, come esposto nell'oggetto restituito AIFunction.JsonSchema Esistono alcune eccezioni a questo scopo:
- CancellationToken i parametri vengono associati automaticamente all'oggetto CancellationToken passato nella chiamata tramite InvokeAsync(AIFunctionArguments, CancellationToken)il parametro di CancellationToken . Il parametro non è incluso nello schema JSON generato. Non è possibile eseguire l'override del comportamento dei CancellationToken parametri.
- Per impostazione predefinita, IServiceProvider i parametri vengono associati dalla Services proprietà e non sono inclusi nello schema JSON. Se il parametro è facoltativo, in modo che venga fornito un valore predefinito, Services può essere
null; in caso contrario, Services deve essere diversonullo la chiamata avrà esito negativo con un'eccezione a causa della natura richiesta del parametro. La gestione dei IServiceProvider parametri può essere sottoposta a override tramite ConfigureParameterBinding. - Per impostazione predefinita, AIFunctionArguments i parametri vengono associati direttamente all'istanza AIFunctionArguments passata in InvokeAsync(AIFunctionArguments, CancellationToken) e non sono inclusi nello schema JSON. Se l'istanza AIFunctionArguments passata a InvokeAsync(AIFunctionArguments, CancellationToken) è
null, l'implementazione AIFunction produce un'istanza vuota, in modo che i parametri di tipo AIFunctionArguments possano essere sempre soddisfatti, se facoltativi o meno. La gestione dei AIFunctionArguments parametri può essere sottoposta a override tramite ConfigureParameterBinding.
options parametro . Per ogni parametro, il delegato è abilitato per scegliere se il parametro deve essere incluso nello schema generato e come deve essere associato il relativo valore, inclusa la gestione della facoltatività (per impostazione predefinita, i parametri obbligatori non inclusi nel AIFunctionArguments dizionario genereranno un'eccezione generata). È possibile passare InvokeAsync(AIFunctionArguments, CancellationToken) informazioni di contesto aggiuntive tiptate in modo libero tramite il AIFunctionArgumentsdizionario del dizionario. Context L'associazione predefinita ignora questa raccolta, ma un'associazione personalizzata fornita tramite ConfigureParameterBinding può scegliere di usare argomenti di origine da questi dati.Il marshalling predefinito dei parametri dal AIFunctionArguments dizionario consente di passare i valori direttamente alla methodchiamata dell'oggetto se l'oggetto è già di un tipo compatibile. In caso contrario, se l'argomento è un JsonElementoggetto , JsonDocumento JsonNode, viene deserializzato nel tipo di parametro, utilizzando SerializerOptions se specificato o usando DefaultOptions. Se l'argomento è qualcos'altro, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
In generale, i dati forniti tramite un AIFunctionArgumentsdizionario vengono forniti da un servizio di intelligenza artificiale e devono essere considerati non convalidati e non attendibili. Per fornire dati convalidati e attendibili alla chiamata di , valutare la possibilità di methodpuntare method a un metodo di istanza in un'istanza configurata per mantenere lo stato appropriato. È anche possibile usare un IServiceProvider parametro per risolvere i servizi da un contenitore di inserimento delle dipendenze.
Per impostazione predefinita, i valori restituiti vengono serializzati per JsonElement l'uso di SerializerOptions se optionsspecificato oppure tramite DefaultOptions. Tuttavia, i valori restituiti il cui tipo dichiarato è AIContent, un tipo derivato di AIContento qualsiasi tipo assegnabile da IEnumerable<T> non vengono serializzati e vengono invece restituiti direttamente. La gestione dei valori restituiti può essere sottoposta a override tramite MarshalResult.
Oltre allo schema dei parametri, uno schema JSON è derivato anche dal tipo restituito del metodo ed esposto tramite l'oggetto restituito AIFunction.ReturnJsonSchema Per i metodi che Voidrestituiscono , Tasko ValueTask, non viene generato alcuno schema restituito (la proprietà è null). Per i metodi che Task<TResult> restituiscono o ValueTask<TResult>, lo schema è derivato dal tipo di risultato non sottoposto a wrapping. La generazione dello schema restituito può essere esclusa tramite ExcludeResultSchemae la relativa generazione è governata da options.JsonSchemaCreateOptions
Si applica a
Create(Delegate, String, String, JsonSerializerOptions)
- Origine:
- AIFunctionFactory.cs
Crea un'istanza AIFunction di per un metodo, specificato tramite un delegato.
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
Parametri
- method
- Delegate
Metodo da rappresentare tramite l'oggetto creato AIFunction.
- name
- String
Nome da utilizzare per l'oggetto AIFunction. Se null, il nome verrà derivato da qualsiasi DisplayNameAttribute in method, se disponibile o altro dal nome di method.
- description
- String
Descrizione da utilizzare per .AIFunction Se null, una descrizione verrà derivata da qualsiasi DescriptionAttribute in method, se disponibile.
- serializerOptions
- JsonSerializerOptions
Oggetto JsonSerializerOptions utilizzato per effettuare il marshalling dei parametri della funzione e di qualsiasi valore restituito.
Valori restituiti
Oggetto creato AIFunction per richiamare method.
Eccezioni
method è null.
Parametro da method non serializzabile.
Commenti
Tutti i parametri da method vengono originati dal AIFunctionArgumentsdizionario delle coppie chiave/valore e sono rappresentati nello schema JSON per la funzione, come esposto nella classe restituita AIFunction.JsonSchema Esistono alcune eccezioni a questo scopo:
- CancellationToken i parametri vengono associati automaticamente all'oggetto CancellationToken passato nella chiamata tramite InvokeAsync(AIFunctionArguments, CancellationToken)il parametro di CancellationToken . Il parametro non è incluso nello schema JSON generato.
- Per impostazione predefinita, IServiceProvider i parametri vengono associati dalla Services proprietà e non sono inclusi nello schema JSON. Se il parametro è facoltativo, in modo che venga fornito un valore predefinito, Services può essere
null; in caso contrario, Services deve essere diversonullo la chiamata avrà esito negativo con un'eccezione a causa della natura richiesta del parametro. - Per impostazione predefinita, AIFunctionArguments i parametri vengono associati direttamente all'istanza AIFunctionArguments passata in InvokeAsync(AIFunctionArguments, CancellationToken) e non sono inclusi nello schema JSON. Se l'istanza AIFunctionArguments passata a InvokeAsync(AIFunctionArguments, CancellationToken) è
null, l'implementazione AIFunction produce un'istanza vuota, in modo che i parametri di tipo AIFunctionArguments possano essere sempre soddisfatti, se facoltativi o meno.
Il marshalling dei parametri dal AIFunctionArguments dizionario consente di passare i valori direttamente alla methodchiamata dell'oggetto se l'oggetto è già di un tipo compatibile. In caso contrario, se l'argomento è , JsonElemento , viene deserializzato nel tipo di parametro, utilizzando serializerOptions se specificato o altrimenti DefaultOptions.JsonNodeJsonDocument Se l'argomento è qualcos'altro, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
In generale, i dati forniti tramite un AIFunctionArgumentsdizionario vengono forniti da un servizio di intelligenza artificiale e devono essere considerati non convalidati e non attendibili. Per fornire dati convalidati e attendibili alla chiamata di , valutare la possibilità di methodpuntare method a un metodo di istanza in un'istanza configurata per mantenere lo stato appropriato. È anche possibile usare un IServiceProvider parametro per risolvere i servizi da un contenitore di inserimento delle dipendenze.
I valori restituiti vengono serializzati per JsonElement l'uso se serializerOptions specificato oppure tramite DefaultOptions. Tuttavia, i valori restituiti il cui tipo dichiarato è AIContent, un tipo derivato di AIContento qualsiasi tipo assegnabile da IEnumerable<T> non vengono serializzati; vengono restituiti as-is per facilitare la gestione specializzata.
Uno schema JSON è derivato anche dal tipo restituito del metodo ed esposto tramite ReturnJsonSchema. Per i metodi che Voidrestituiscono , Tasko ValueTask, non viene generato alcuno schema restituito. Per i metodi che Task<TResult> restituiscono o ValueTask<TResult>, lo schema è derivato dal tipo di risultato non sottoposto a wrapping.
Si applica a
Create(MethodInfo, Object, String, String, JsonSerializerOptions)
- Origine:
- AIFunctionFactory.cs
Crea un'istanza AIFunction di per un metodo, specificata tramite un'istanza MethodInfo e un oggetto di destinazione facoltativo se il metodo è un metodo di istanza.
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
Parametri
- method
- MethodInfo
Metodo da rappresentare tramite l'oggetto creato AIFunction.
- target
- Object
Oggetto di destinazione per l'oggetto method se rappresenta un metodo di istanza.
Deve essere null se e solo se method è un metodo statico.
- name
- String
Nome da utilizzare per l'oggetto AIFunction. Se null, il nome verrà derivato da qualsiasi DisplayNameAttribute in method, se disponibile o altro dal nome di method.
- description
- String
Descrizione da utilizzare per .AIFunction Se null, una descrizione verrà derivata da qualsiasi DescriptionAttribute in method, se disponibile.
- serializerOptions
- JsonSerializerOptions
Oggetto JsonSerializerOptions utilizzato per effettuare il marshalling dei parametri della funzione e il valore restituito.
Valori restituiti
Oggetto creato AIFunction per richiamare method.
Eccezioni
method rappresenta un metodo di istanza ma target è Null.
method contiene un parametro senza un nome di parametro.
Un parametro per method o il relativo tipo restituito non è serializzabile.
Commenti
Tutti i parametri da method vengono originati dal AIFunctionArgumentsdizionario delle coppie chiave/valore e sono rappresentati nello schema JSON per la funzione, come esposto nella classe restituita AIFunction.JsonSchema Esistono alcune eccezioni a questo scopo:
- CancellationToken i parametri vengono associati automaticamente all'oggetto CancellationToken passato nella chiamata tramite InvokeAsync(AIFunctionArguments, CancellationToken)il parametro di CancellationToken . Il parametro non è incluso nello schema JSON generato.
- Per impostazione predefinita, IServiceProvider i parametri vengono associati dalla Services proprietà e non sono inclusi nello schema JSON. Se il parametro è facoltativo, in modo che venga fornito un valore predefinito, Services può essere
null; in caso contrario, Services deve essere diversonullo la chiamata avrà esito negativo con un'eccezione a causa della natura richiesta del parametro. - Per impostazione predefinita, AIFunctionArguments i parametri vengono associati direttamente all'istanza AIFunctionArguments passata in InvokeAsync(AIFunctionArguments, CancellationToken) e non sono inclusi nello schema JSON. Se l'istanza AIFunctionArguments passata a InvokeAsync(AIFunctionArguments, CancellationToken) è
null, l'implementazione AIFunction produce un'istanza vuota, in modo che i parametri di tipo AIFunctionArguments possano essere sempre soddisfatti, se facoltativi o meno.
Il marshalling dei parametri dal AIFunctionArguments dizionario consente di passare i valori direttamente alla methodchiamata dell'oggetto se l'oggetto è già di un tipo compatibile. In caso contrario, se l'argomento è , JsonElemento , viene deserializzato nel tipo di parametro, utilizzando serializerOptions se specificato o altrimenti DefaultOptions.JsonNodeJsonDocument Se l'argomento è qualcos'altro, viene arrotondato tramite JSON, serializzando l'oggetto come JSON e quindi deserializzandolo nel tipo previsto.
In generale, i dati forniti tramite un AIFunctionArgumentsdizionario vengono forniti da un servizio di intelligenza artificiale e devono essere considerati non convalidati e non attendibili. Per fornire dati convalidati e attendibili alla chiamata di , valutare la possibilità di methodpuntare method a un metodo di istanza in un'istanza configurata per mantenere lo stato appropriato. È anche possibile usare un IServiceProvider parametro per risolvere i servizi da un contenitore di inserimento delle dipendenze.
I valori restituiti vengono serializzati per JsonElement l'uso se serializerOptions specificato oppure tramite DefaultOptions. Tuttavia, i valori restituiti il cui tipo dichiarato è AIContent, un tipo derivato di AIContento qualsiasi tipo assegnabile da IEnumerable<T> vengono restituiti senza serializzazione per abilitare la gestione specializzata.
Uno schema JSON è derivato anche dal tipo restituito del metodo ed esposto tramite ReturnJsonSchema. Per i metodi che Voidrestituiscono , Tasko ValueTask, non viene generato alcuno schema restituito. Per i metodi che Task<TResult> restituiscono o ValueTask<TResult>, lo schema è derivato dal tipo di risultato non sottoposto a wrapping.