AIFunctionFactory.Create Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee maakt u een AIFunction exemplaar voor een methode die is opgegeven via een gemachtigde.
Overloads
| Name | Description |
|---|---|
| Create(Delegate, AIFunctionFactoryOptions) |
Hiermee maakt u een AIFunction exemplaar voor een methode die is opgegeven via een gemachtigde. |
| Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions) |
Hiermee maakt u een AIFunction exemplaar voor een methode, die is opgegeven via een MethodInfo instantiemethode en een Func<T,TResult> instantie van het ontvangerobject telkens wanneer het AIFunction wordt aangeroepen. |
| Create(MethodInfo, Object, AIFunctionFactoryOptions) |
Hiermee maakt u een AIFunction exemplaar voor een methode, opgegeven via een MethodInfo exemplaar en een optioneel doelobject als de methode een instantiemethode is. |
| Create(Delegate, String, String, JsonSerializerOptions) |
Hiermee maakt u een AIFunction exemplaar voor een methode die is opgegeven via een gemachtigde. |
| Create(MethodInfo, Object, String, String, JsonSerializerOptions) |
Hiermee maakt u een AIFunction exemplaar voor een methode, opgegeven via een MethodInfo exemplaar en een optioneel doelobject als de methode een instantiemethode is. |
Create(Delegate, AIFunctionFactoryOptions)
- Bron:
- AIFunctionFactory.cs
Hiermee maakt u een AIFunction exemplaar voor een methode die is opgegeven via een gemachtigde.
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
Parameters
- method
- Delegate
De methode die moet worden weergegeven via de gemaakte AIFunction.
- options
- AIFunctionFactoryOptions
Metagegevens die moeten worden gebruikt om standaardwaarden te overschrijven die zijn afgeleid van method.
Retouren
De gemaakt AIFunction voor het aanroepen method.
Uitzonderingen
method is null.
Een parameter is method niet serialiseerbaar.
Opmerkingen
Standaard worden parameters method afkomstig uit de AIFunctionArgumentswoordenlijst van sleutel-waardeparen en worden deze weergegeven in het JSON-schema voor de functie, zoals weergegeven in de geretourneerde AIFunctionwaarden JsonSchema. Er zijn enkele uitzonderingen op:
- CancellationTokenparameters worden automatisch gebonden aan de CancellationToken doorgegeven aan de aanroep via InvokeAsync(AIFunctionArguments, CancellationToken)de parameter.CancellationToken De parameter is niet opgenomen in het gegenereerde JSON-schema. Het gedrag van CancellationToken parameters kan niet worden overschreven.
- Parameters zijn standaard IServiceProvider afhankelijk van de Services eigenschap en zijn niet opgenomen in het JSON-schema. Als de parameter optioneel is, zodat er een standaardwaarde wordt opgegeven, Services mag dit zijn
null; anders Services moet de parameter nietnullzijn, anders mislukt de aanroep met een uitzondering vanwege de vereiste aard van de parameter. De verwerking van IServiceProvider parameters kan worden overschreven via ConfigureParameterBinding. - Parameters zijn standaard AIFunctionArguments rechtstreeks gebonden aan AIFunctionArguments exemplaren die worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) aan en worden niet opgenomen in het JSON-schema. Als het AIFunctionArguments exemplaar waarnaar wordt doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) ,
nullproduceert de AIFunction implementatie een leeg exemplaar, zodat aan de parameters van het type AIFunctionArguments altijd kan worden voldaan, ongeacht of dit optioneel is of niet. De verwerking van AIFunctionArguments parameters kan worden overschreven via ConfigureParameterBinding.
options parameter. Voor elke parameter kan de gemachtigde kiezen of de parameter moet worden opgenomen in het gegenereerde schema en hoe de waarde ervan moet worden gebonden, inclusief de verwerking van optioneel (standaard worden vereiste parameters die niet in de AIFunctionArguments woordenlijst zijn opgenomen, resulteren in een uitzondering). Losjes getypte aanvullende contextinformatie kan worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) via de woordenlijst van de AIFunctionArguments's Context ; de standaardbinding negeert deze verzameling, maar een aangepaste binding die via deze ConfigureParameterBinding gegevens wordt opgegeven, kan ervoor kiezen om bronargumenten uit deze gegevens te verkrijgen.Met de standaard marshaling van parameters uit de AIFunctionArguments woordenlijst kunnen waarden rechtstreeks worden doorgegeven aan de methodaanroep als het object al van een compatibel type is. Als het argument anders een JsonElement, JsonDocumentof JsonNode, het wordt gedeserialiseerd in het parametertype, gebruikt SerializerOptions indien opgegeven of anders.DefaultOptions Als het argument iets anders is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Over het algemeen worden de gegevens die via de woordenlijst van een AIFunctionArgumentsAI-service worden geleverd, opgegeven en moeten ze als niet-gevalideerd en niet-vertrouwd worden beschouwd. Als u gevalideerde en vertrouwde gegevens aan de aanroep van methodwilt bieden, kunt u overwegen om een exemplaarmethode te laten method verwijzen op een exemplaar dat is geconfigureerd voor de juiste status. Een IServiceProvider parameter kan ook worden gebruikt om services op te lossen vanuit een container voor afhankelijkheidsinjectie.
Standaard worden retourwaarden geserialiseerd voor JsonElement het gebruik van options's SerializerOptions indien opgegeven, of anders met behulp van DefaultOptions. Retourwaarden waarvan het gedeclareerde type isAIContent, een afgeleid type AIContentof een type dat kan worden toegewezen aan IEnumerable<T> (bijvoorbeeld AIContent[]List<AIContent>, ) zijn echter speciaal geserialiseerd en worden niet geserialiseerd: de gemaakte functie retourneert de oorspronkelijke exemplaren rechtstreeks om bellers (zoals een IChatClient) in staat te stellen typetests uit te voeren en gespecialiseerde verwerking te implementeren. Indien MarshalResult opgegeven, bepaalt die gemachtigde in plaats daarvan het gedrag.
Naast het parameterschema wordt ook een JSON-schema afgeleid van het retourtype van de methode en weergegeven via de geretourneerde AIFunction's ReturnJsonSchema. Voor methoden die worden geretourneerd Void, Taskof ValueTask, wordt er geen retourschema geproduceerd (de eigenschap is null). Voor methoden die worden geretourneerd Task<TResult> of ValueTask<TResult>, wordt het schema afgeleid van het niet-uitgepakte resultaattype. Retourschemageneratie kan worden uitgesloten via ExcludeResultSchema, en de generatie ervan valt onder options's JsonSchemaCreateOptions.
Van toepassing op
Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)
- Bron:
- AIFunctionFactory.cs
Hiermee maakt u een AIFunction exemplaar voor een methode, die is opgegeven via een MethodInfo instantiemethode en een Func<T,TResult> instantie van het ontvangerobject telkens wanneer het AIFunction wordt aangeroepen.
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
Parameters
- method
- MethodInfo
De instantiemethode die moet worden weergegeven via de gemaakte AIFunction.
- createInstanceFunc
- Func<AIFunctionArguments,Object>
Callback die wordt gebruikt voor elke functieaanroep om een exemplaar te maken van het type waarop de instantiemethode method wordt aangeroepen. Als het geretourneerde exemplaar is IAsyncDisposable of IDisposable, wordt het verwijderd nadat method de aanroep is voltooid.
- options
- AIFunctionFactoryOptions
Metagegevens die moeten worden gebruikt om standaardwaarden te overschrijven die zijn afgeleid van method.
Retouren
De gemaakt AIFunction voor het aanroepen method.
Uitzonderingen
createInstanceFunc is null.
method bevat een parameter zonder parameternaam.
Een parameter naar method of het retourtype kan niet worden geserialiseerbaar.
Opmerkingen
Retourwaarden worden geserialiseerd voor JsonElement het gebruik van options's SerializerOptions. Argumenten die nog niet van het verwachte type zijn, worden via JSON aan het verwachte type gekoppeld en met behulp van options's SerializerOptions. Als het argument een JsonElement, JsonDocumentof JsonNode, het rechtstreeks gedeserialiseerd is. Als het argument iets anders onbekend is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Standaard worden parameters method afkomstig uit de AIFunctionArgumentswoordenlijst van sleutel-waardeparen en worden deze weergegeven in het JSON-schema voor de functie, zoals weergegeven in de geretourneerde AIFunctionwaarden JsonSchema. Er zijn enkele uitzonderingen op:
- CancellationTokenparameters worden automatisch gebonden aan de CancellationToken doorgegeven aan de aanroep via InvokeAsync(AIFunctionArguments, CancellationToken)de parameter.CancellationToken De parameter is niet opgenomen in het gegenereerde JSON-schema. Het gedrag van CancellationToken parameters kan niet worden overschreven.
- Parameters zijn standaard IServiceProvider afhankelijk van de Services eigenschap en zijn niet opgenomen in het JSON-schema. Als de parameter optioneel is, zodat er een standaardwaarde wordt opgegeven, Services mag dit zijn
null; anders Services moet de parameter nietnullzijn, anders mislukt de aanroep met een uitzondering vanwege de vereiste aard van de parameter. De verwerking van IServiceProvider parameters kan worden overschreven via ConfigureParameterBinding. - Parameters zijn standaard AIFunctionArguments rechtstreeks gebonden aan AIFunctionArguments exemplaren die worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) aan en worden niet opgenomen in het JSON-schema. Als het AIFunctionArguments exemplaar waarnaar wordt doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) ,
nullproduceert de AIFunction implementatie een leeg exemplaar, zodat aan de parameters van het type AIFunctionArguments altijd kan worden voldaan, ongeacht of dit optioneel is of niet. De verwerking van AIFunctionArguments parameters kan worden overschreven via ConfigureParameterBinding.
options parameter. Voor elke parameter kan de gemachtigde kiezen of de parameter moet worden opgenomen in het gegenereerde schema en hoe de waarde ervan moet worden gebonden, inclusief de verwerking van optioneel (standaard worden vereiste parameters die niet in de AIFunctionArguments woordenlijst zijn opgenomen, resulteren in een uitzondering). Losjes getypte aanvullende contextinformatie kan worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) via de woordenlijst van de AIFunctionArguments's Context ; de standaardbinding negeert deze verzameling, maar een aangepaste binding die via deze ConfigureParameterBinding gegevens wordt opgegeven, kan ervoor kiezen om bronargumenten uit deze gegevens te verkrijgen.Met de standaard marshaling van parameters uit de AIFunctionArguments woordenlijst kunnen waarden rechtstreeks worden doorgegeven aan de methodaanroep als het object al van een compatibel type is. Als het argument anders een JsonElement, JsonDocumentof JsonNode, het wordt gedeserialiseerd in het parametertype, gebruikt SerializerOptions indien opgegeven of anders.DefaultOptions Als het argument iets anders is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Over het algemeen worden de gegevens die via de woordenlijst van een AIFunctionArgumentsAI-service worden geleverd, opgegeven en moeten ze als niet-gevalideerd en niet-vertrouwd worden beschouwd. Als u gevalideerde en vertrouwde gegevens wilt verstrekken aan de aanroep van method, kan het exemplaar dat voor elke aanroep is gemaakt, die gegevens bevatten, zodat deze vervolgens beschikbaar method zijn als instantiegegevens. Een IServiceProvider parameter kan ook worden gebruikt om services op te lossen vanuit een container voor afhankelijkheidsinjectie.
Standaard worden retourwaarden geserialiseerd voor JsonElement het gebruik van options's SerializerOptions indien opgegeven, of anders met behulp van DefaultOptions. Retourwaarden waarvan het gedeclareerde type is AIContent, een afgeleid type of AIContenteen type dat kan IEnumerable<T> worden toegewezen, worden echter rechtstreeks zonder serialisatie geretourneerd. Verwerking van retourwaarden kan worden overschreven via MarshalResult.
Naast het parameterschema wordt ook een JSON-schema afgeleid van het retourtype van de methode en weergegeven via de geretourneerde AIFunction's ReturnJsonSchema. Voor methoden die worden geretourneerd Void, Taskof ValueTask, wordt er geen retourschema geproduceerd (de eigenschap is null). Voor methoden die worden geretourneerd Task<TResult> of ValueTask<TResult>, wordt het schema afgeleid van het niet-uitgepakte resultaattype. Retourschemageneratie kan worden uitgesloten via ExcludeResultSchema, en de generatie ervan valt onder options's JsonSchemaCreateOptions.
Van toepassing op
Create(MethodInfo, Object, AIFunctionFactoryOptions)
- Bron:
- AIFunctionFactory.cs
Hiermee maakt u een AIFunction exemplaar voor een methode, opgegeven via een MethodInfo exemplaar en een optioneel doelobject als de methode een instantiemethode is.
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
Parameters
- method
- MethodInfo
De methode die moet worden weergegeven via de gemaakte AIFunction.
- target
- Object
Het doelobject voor de method als het een exemplaarmethode vertegenwoordigt.
Dit moet zijn null als en alleen als method het een statische methode is.
- options
- AIFunctionFactoryOptions
Metagegevens die moeten worden gebruikt om standaardwaarden te overschrijven die zijn afgeleid van method.
Retouren
De gemaakt AIFunction voor het aanroepen method.
Uitzonderingen
method vertegenwoordigt een exemplaarmethode, maar target is null.
method bevat een parameter zonder parameternaam.
Een parameter naar method of het retourtype kan niet worden geserialiseerbaar.
Opmerkingen
Standaard worden parameters method afkomstig uit de AIFunctionArgumentswoordenlijst van sleutel-waardeparen en worden deze weergegeven in het JSON-schema voor de functie, zoals weergegeven in de geretourneerde AIFunctionwaarden JsonSchema. Er zijn enkele uitzonderingen op:
- CancellationTokenparameters worden automatisch gebonden aan de CancellationToken doorgegeven aan de aanroep via InvokeAsync(AIFunctionArguments, CancellationToken)de parameter.CancellationToken De parameter is niet opgenomen in het gegenereerde JSON-schema. Het gedrag van CancellationToken parameters kan niet worden overschreven.
- Parameters zijn standaard IServiceProvider afhankelijk van de Services eigenschap en zijn niet opgenomen in het JSON-schema. Als de parameter optioneel is, zodat er een standaardwaarde wordt opgegeven, Services mag dit zijn
null; anders Services moet de parameter nietnullzijn, anders mislukt de aanroep met een uitzondering vanwege de vereiste aard van de parameter. De verwerking van IServiceProvider parameters kan worden overschreven via ConfigureParameterBinding. - Parameters zijn standaard AIFunctionArguments rechtstreeks gebonden aan AIFunctionArguments exemplaren die worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) aan en worden niet opgenomen in het JSON-schema. Als het AIFunctionArguments exemplaar waarnaar wordt doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) ,
nullproduceert de AIFunction implementatie een leeg exemplaar, zodat aan de parameters van het type AIFunctionArguments altijd kan worden voldaan, ongeacht of dit optioneel is of niet. De verwerking van AIFunctionArguments parameters kan worden overschreven via ConfigureParameterBinding.
options parameter. Voor elke parameter kan de gemachtigde kiezen of de parameter moet worden opgenomen in het gegenereerde schema en hoe de waarde ervan moet worden gebonden, inclusief de verwerking van optioneel (standaard worden vereiste parameters die niet in de AIFunctionArguments woordenlijst zijn opgenomen, resulteren in een uitzondering). Losjes getypte aanvullende contextinformatie kan worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) via de woordenlijst van AIFunctionArguments de Contextwoordenlijst. De standaardbinding negeert deze verzameling, maar een aangepaste binding die via deze ConfigureParameterBinding gegevens wordt opgegeven, kan ervoor kiezen om bronargumenten uit deze gegevens te verkrijgen.Met de standaard marshaling van parameters uit de AIFunctionArguments woordenlijst kunnen waarden rechtstreeks worden doorgegeven aan de methodaanroep als het object al van een compatibel type is. Als het argument anders een JsonElement, JsonDocumentof JsonNode, het wordt gedeserialiseerd in het parametertype, gebruikt SerializerOptions indien opgegeven of anders.DefaultOptions Als het argument iets anders is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Over het algemeen worden de gegevens die via de woordenlijst van een AIFunctionArgumentsAI-service worden geleverd, opgegeven en moeten ze als niet-gevalideerd en niet-vertrouwd worden beschouwd. Als u gevalideerde en vertrouwde gegevens aan de aanroep van methodwilt bieden, kunt u overwegen om een exemplaarmethode te laten method verwijzen op een exemplaar dat is geconfigureerd voor de juiste status. Een IServiceProvider parameter kan ook worden gebruikt om services op te lossen vanuit een container voor afhankelijkheidsinjectie.
Standaard worden retourwaarden geserialiseerd voor JsonElement het gebruik van options's SerializerOptions indien opgegeven, of anders met behulp van DefaultOptions. Retourwaarden waarvan het gedeclareerde type is AIContent, een afgeleid type AIContentof een type dat kan IEnumerable<T> worden toegewezen, worden echter niet geserialiseerd en worden in plaats daarvan rechtstreeks geretourneerd. Verwerking van retourwaarden kan worden overschreven via MarshalResult.
Naast het parameterschema wordt ook een JSON-schema afgeleid van het retourtype van de methode en weergegeven via de geretourneerde AIFunction's ReturnJsonSchema. Voor methoden die worden geretourneerd Void, Taskof ValueTask, wordt er geen retourschema geproduceerd (de eigenschap is null). Voor methoden die worden geretourneerd Task<TResult> of ValueTask<TResult>, wordt het schema afgeleid van het niet-uitgepakte resultaattype. Retourschemageneratie kan worden uitgesloten via ExcludeResultSchema, en de generatie ervan valt onder options's JsonSchemaCreateOptions.
Van toepassing op
Create(Delegate, String, String, JsonSerializerOptions)
- Bron:
- AIFunctionFactory.cs
Hiermee maakt u een AIFunction exemplaar voor een methode die is opgegeven via een gemachtigde.
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
Parameters
- method
- Delegate
De methode die moet worden weergegeven via de gemaakte AIFunction.
- name
- String
De naam die moet worden gebruikt voor de AIFunction. Als null, de naam wordt afgeleid van een AIFunctionNameAttribute van de on method, dan van een DisplayNameAttribute op method, indien beschikbaar , of anders uit de naam van method.
- description
- String
De beschrijving die moet worden gebruikt voor de AIFunction. Indien null, wordt een beschrijving afgeleid van een DescriptionAttributemethodvan de op , indien beschikbaar.
- serializerOptions
- JsonSerializerOptions
De JsonSerializerOptions parameters voor marshal-functies en elke retourwaarde.
Retouren
De gemaakt AIFunction voor het aanroepen method.
Uitzonderingen
method is null.
Een parameter is method niet serialiseerbaar.
Opmerkingen
Parameters die method afkomstig zijn uit de AIFunctionArgumentswoordenlijst van sleutel-waardeparen en worden weergegeven in het JSON-schema voor de functie, zoals weergegeven in de geretourneerde AIFunctionwaarden JsonSchema. Er zijn enkele uitzonderingen op:
- CancellationTokenparameters worden automatisch gebonden aan de CancellationToken doorgegeven aan de aanroep via InvokeAsync(AIFunctionArguments, CancellationToken)de parameter.CancellationToken De parameter is niet opgenomen in het gegenereerde JSON-schema.
- Parameters zijn standaard IServiceProvider afhankelijk van de Services eigenschap en zijn niet opgenomen in het JSON-schema. Als de parameter optioneel is, zodat er een standaardwaarde wordt opgegeven, Services mag dit zijn
null; anders Services moet de parameter nietnullzijn, anders mislukt de aanroep met een uitzondering vanwege de vereiste aard van de parameter. - Parameters zijn standaard AIFunctionArguments rechtstreeks gebonden aan AIFunctionArguments exemplaren die worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) aan en worden niet opgenomen in het JSON-schema. Als het AIFunctionArguments exemplaar waarnaar wordt doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) ,
nullproduceert de AIFunction implementatie een leeg exemplaar, zodat aan de parameters van het type AIFunctionArguments altijd kan worden voldaan, ongeacht of dit optioneel is of niet.
Door de marshaling van parameters uit de AIFunctionArguments woordenlijst kunnen waarden rechtstreeks worden doorgegeven aan de methodaanroep als het object al van een compatibel type is. Als het argument anders een , of , het wordt gedeserialiseerd in het parametertype, gebruikt JsonElement indien opgegeven, of andersJsonDocument.JsonNodeserializerOptionsDefaultOptions Als het argument iets anders is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Over het algemeen worden de gegevens die via de woordenlijst van een AIFunctionArgumentsAI-service worden geleverd, opgegeven en moeten ze als niet-gevalideerd en niet-vertrouwd worden beschouwd. Als u gevalideerde en vertrouwde gegevens aan de aanroep van methodwilt bieden, kunt u overwegen om een exemplaarmethode te laten method verwijzen op een exemplaar dat is geconfigureerd voor de juiste status. Een IServiceProvider parameter kan ook worden gebruikt om services op te lossen vanuit een container voor afhankelijkheidsinjectie.
Retourwaarden worden geserialiseerd voor JsonElement gebruik serializerOptions indien opgegeven, of anders met behulp van DefaultOptions. Retourwaarden waarvan het gedeclareerde type is AIContent, een afgeleid type AIContentof een type dat kan IEnumerable<T> worden toegewezen, worden niet geserialiseerd; ze worden geretourneerd as-is om gespecialiseerde verwerking te vergemakkelijken.
Een JSON-schema wordt ook afgeleid van het retourtype van de methode en beschikbaar gemaakt via ReturnJsonSchema. Voor methoden die worden geretourneerd Void, Taskof ValueTask, wordt er geen retourschema geproduceerd. Voor methoden die worden geretourneerd Task<TResult> of ValueTask<TResult>, wordt het schema afgeleid van het niet-uitgepakte resultaattype.
Van toepassing op
Create(MethodInfo, Object, String, String, JsonSerializerOptions)
- Bron:
- AIFunctionFactory.cs
Hiermee maakt u een AIFunction exemplaar voor een methode, opgegeven via een MethodInfo exemplaar en een optioneel doelobject als de methode een instantiemethode is.
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
Parameters
- method
- MethodInfo
De methode die moet worden weergegeven via de gemaakte AIFunction.
- target
- Object
Het doelobject voor de method als het een exemplaarmethode vertegenwoordigt.
Dit moet zijn null als en alleen als method het een statische methode is.
- name
- String
De naam die moet worden gebruikt voor de AIFunction. Als null, de naam wordt afgeleid van een AIFunctionNameAttribute van de on method, dan van een DisplayNameAttribute op method, indien beschikbaar , of anders uit de naam van method.
- description
- String
De beschrijving die moet worden gebruikt voor de AIFunction. Indien null, wordt een beschrijving afgeleid van een DescriptionAttributemethodvan de op , indien beschikbaar.
- serializerOptions
- JsonSerializerOptions
De JsonSerializerOptions gebruikte parameters voor marshal-functie en retourwaarde.
Retouren
De gemaakt AIFunction voor het aanroepen method.
Uitzonderingen
method vertegenwoordigt een exemplaarmethode, maar target is null.
method bevat een parameter zonder parameternaam.
Een parameter naar method of het retourtype kan niet worden geserialiseerbaar.
Opmerkingen
Parameters die method afkomstig zijn uit de AIFunctionArgumentswoordenlijst van sleutel-waardeparen en worden weergegeven in het JSON-schema voor de functie, zoals weergegeven in de geretourneerde AIFunctionwaarden JsonSchema. Er zijn enkele uitzonderingen op:
- CancellationTokenparameters worden automatisch gebonden aan de CancellationToken doorgegeven aan de aanroep via InvokeAsync(AIFunctionArguments, CancellationToken)de parameter.CancellationToken De parameter is niet opgenomen in het gegenereerde JSON-schema.
- Parameters zijn standaard IServiceProvider afhankelijk van de Services eigenschap en zijn niet opgenomen in het JSON-schema. Als de parameter optioneel is, zodat er een standaardwaarde wordt opgegeven, Services mag dit zijn
null; anders Services moet de parameter nietnullzijn, anders mislukt de aanroep met een uitzondering vanwege de vereiste aard van de parameter. - Parameters zijn standaard AIFunctionArguments rechtstreeks gebonden aan AIFunctionArguments exemplaren die worden doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) aan en worden niet opgenomen in het JSON-schema. Als het AIFunctionArguments exemplaar waarnaar wordt doorgegeven InvokeAsync(AIFunctionArguments, CancellationToken) ,
nullproduceert de AIFunction implementatie een leeg exemplaar, zodat aan de parameters van het type AIFunctionArguments altijd kan worden voldaan, ongeacht of dit optioneel is of niet.
Door de marshaling van parameters uit de AIFunctionArguments woordenlijst kunnen waarden rechtstreeks worden doorgegeven aan de methodaanroep als het object al van een compatibel type is. Als het argument anders een , of , het wordt gedeserialiseerd in het parametertype, gebruikt JsonElement indien opgegeven, of andersJsonDocument.JsonNodeserializerOptionsDefaultOptions Als het argument iets anders is, wordt het afgerond via JSON, waarbij het object wordt geserialiseerd als JSON en het vervolgens wordt gedeserialiseerd naar het verwachte type.
Over het algemeen worden de gegevens die via de woordenlijst van een AIFunctionArgumentsAI-service worden geleverd, opgegeven en moeten ze als niet-gevalideerd en niet-vertrouwd worden beschouwd. Als u gevalideerde en vertrouwde gegevens aan de aanroep van methodwilt bieden, kunt u overwegen om een exemplaarmethode te laten method verwijzen op een exemplaar dat is geconfigureerd voor de juiste status. Een IServiceProvider parameter kan ook worden gebruikt om services op te lossen vanuit een container voor afhankelijkheidsinjectie.
Retourwaarden worden geserialiseerd voor JsonElement gebruik serializerOptions indien opgegeven, of anders met behulp van DefaultOptions. Retourwaarden waarvan het gedeclareerde type is AIContent, een afgeleid type AIContentof een type dat kan IEnumerable<T> worden toegewezen, worden geretourneerd zonder serialisatie om gespecialiseerde verwerking mogelijk te maken.
Een JSON-schema wordt ook afgeleid van het retourtype van de methode en beschikbaar gemaakt via ReturnJsonSchema. Voor methoden die worden geretourneerd Void, Taskof ValueTask, wordt er geen retourschema geproduceerd. Voor methoden die worden geretourneerd Task<TResult> of ValueTask<TResult>, wordt het schema afgeleid van het niet-uitgepakte resultaattype.