AIFunctionFactory.Create Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| Create(Delegate, AIFunctionFactoryOptions) |
Erstellt eine AIFunction Instanz für eine Methode, die über einen Delegaten angegeben wird. |
| Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions) |
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanzmethode angegeben wird, und eine Func<T,TResult> zum Erstellen einer Instanz des Empfängerobjekts jedes Mal, wenn die AIFunction Methode aufgerufen wird. |
| Create(MethodInfo, Object, AIFunctionFactoryOptions) |
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanz und ein optionales Zielobjekt angegeben wird, wenn es sich bei der Methode um eine Instanzmethode handelt. |
| Create(Delegate, String, String, JsonSerializerOptions) |
Erstellt eine AIFunction Instanz für eine Methode, die über einen Delegaten angegeben wird. |
| Create(MethodInfo, Object, String, String, JsonSerializerOptions) |
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanz und ein optionales Zielobjekt angegeben wird, wenn es sich bei der Methode um eine Instanzmethode handelt. |
Create(Delegate, AIFunctionFactoryOptions)
- Quelle:
- AIFunctionFactory.cs
Erstellt eine AIFunction Instanz für eine Methode, die über einen Delegaten angegeben wird.
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
Parameter
- method
- Delegate
Die Methode, die über die erstellte AIFunctionDargestellt werden soll.
- options
- AIFunctionFactoryOptions
Metadaten, die verwendet werden sollen, um Standardwerte außer Kraft zu setzen, die von method.
Gibt zurück
Das erstellt AIFunction für das Aufrufen method.
Ausnahmen
method ist null.
Ein Parameter kann method nicht serialisiert werden.
Hinweise
Standardmäßig werden alle Parameter method , die aus dem AIFunctionArgumentsWörterbuch von Schlüssel-Wert-Paaren stammen und im JSON-Schema für die Funktion dargestellt werden, wie in den zurückgegebenen AIFunction's JsonSchemaverfügbar gemacht. Es gibt einige Ausnahmen:
- CancellationToken Parameter werden automatisch an den CancellationToken übergebenen Aufruf über InvokeAsync(AIFunctionArguments, CancellationToken)den Parameter 's CancellationToken gebunden. Der Parameter ist nicht im generierten JSON-Schema enthalten. Das Verhalten von CancellationToken Parametern kann nicht außer Kraft gesetzt werden.
- Standardmäßig IServiceProvider sind Parameter an die Services Eigenschaft gebunden und nicht im JSON-Schema enthalten. Wenn der Parameter optional ist, sodass ein Standardwert angegeben wird, Services darf er sein
null; andernfalls Services mussnullder Aufruf nicht sein, sonst schlägt der Aufruf aufgrund der erforderlichen Art des Parameters mit einer Ausnahme fehl. Die Behandlung von IServiceProvider Parametern kann überschrieben ConfigureParameterBindingwerden. - Standardmäßig AIFunctionArguments werden Parameter direkt an AIFunctionArguments die instanz übergebene InvokeAsync(AIFunctionArguments, CancellationToken) Instanz gebunden und sind nicht im JSON-Schema enthalten. Wenn die AIFunctionArguments an die Instanz übergeben wird
nullInvokeAsync(AIFunctionArguments, CancellationToken), stellt die AIFunction Implementierung eine leere Instanz her, sodass Parameter vom Typ AIFunctionArguments immer erfüllt werden können, unabhängig davon, ob optional oder nicht. Die Behandlung von AIFunctionArguments Parametern kann überschrieben ConfigureParameterBindingwerden.
options den ConfigureParameterBinding bereitgestellten Parameter überschrieben werden. Für jeden Parameter ist der Delegat aktiviert, auszuwählen, ob der Parameter in das generierte Schema aufgenommen werden soll und wie der Wert gebunden werden soll, einschließlich der Verarbeitung der Optionalität (standardmäßig werden erforderliche Parameter, die AIFunctionArguments nicht im Wörterbuch enthalten sind, zu einer Ausnahme ausgelöst). Lose typierte zusätzliche Kontextinformationen können über das AIFunctionArgumentsWörterbuch Context übergeben InvokeAsync(AIFunctionArguments, CancellationToken) werden. Die Standardbindung ignoriert diese Auflistung, aber eine benutzerdefinierte Bindung, die über ConfigureParameterBinding diese Daten bereitgestellt wird, kann auswählen, dass Argumente aus diesen Daten stammen.Durch das Standardmäßige Marshalling von Parametern aus dem AIFunctionArguments Wörterbuch können Werte direkt an den methodAufruf des Objekts übergeben werden, wenn das Objekt bereits einen kompatiblen Typ aufweist. Andernfalls ist das Argument ein JsonElement, JsonDocument, oder JsonNode, wird es in den Parametertyp deserialisiert, wobei SerializerOptions verwendet wird, wenn angegeben oder anderweitig verwendet DefaultOptions. Wenn das Argument etwas anderes ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Im Allgemeinen werden die über ein AIFunctionArgumentsWörterbuch bereitgestellten Daten von einem KI-Dienst bereitgestellt und sollten als nichtvalidiert und nicht vertrauenswürdig betrachtet werden. Um validierte und vertrauenswürdige Daten für den Aufruf methodbereitzustellen, sollten Sie erwägen method , auf eine Instanzmethode für eine Instanz zu verweisen, die für den geeigneten Zustand konfiguriert ist. Ein IServiceProvider Parameter kann auch verwendet werden, um Dienste aus einem Abhängigkeitseinfügungscontainer aufzulösen.
Standardmäßig werden Rückgabewerte serialisiert, um JsonElementoptions"s SerializerOptions sofern angegeben" oder eine andere Verwendung zu verwenden DefaultOptions. Rückgabewerte, deren deklarierter Typ ist, ein abgeleiteter Typ AIContentAIContentoder ein beliebiger Typ, der IEnumerable<T> zugewiesen werden kann (z. B. , List<AIContent>), sind jedoch spezialgeschrieben und nicht serialisiert: Die erstellte Funktion gibt die ursprünglichen Instanzen direkt zurück, um Aufrufer (z. B. AIContent[]ein IChatClient) zum Ausführen von Typtests und zur Implementierung spezieller Behandlung zu ermöglichen. Wenn MarshalResult angegeben, steuert diese Stellvertretung stattdessen das Verhalten.
Zusätzlich zum Parameterschema wird ein JSON-Schema auch vom Rückgabetyp der Methode abgeleitet und über die zurückgegebenen AIFunction's ReturnJsonSchemaverfügbar gemacht. Für Methoden, die Voidein Rückgabeschema zurückgeben , Taskoder ValueTask, wird kein Rückgabeschema erzeugt (die Eigenschaft ist null). Bei Methoden, die Task<TResult> zurückgegeben werden oder ValueTask<TResult>, wird das Schema vom ergebnistyp "unwrapped" abgeleitet. Die Rückgabeschemagenerierung kann über ExcludeResultSchema"s" ausgeschlossen werden, und die Generierung wird von options's JsonSchemaCreateOptionsgesteuert.
Gilt für:
Create(MethodInfo, Func<AIFunctionArguments,Object>, AIFunctionFactoryOptions)
- Quelle:
- AIFunctionFactory.cs
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanzmethode angegeben wird, und eine Func<T,TResult> zum Erstellen einer Instanz des Empfängerobjekts jedes Mal, wenn die AIFunction Methode aufgerufen wird.
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
Parameter
- method
- MethodInfo
Die Instanzmethode, die über die erstellte AIFunctionDargestellt werden soll.
- createInstanceFunc
- Func<AIFunctionArguments,Object>
Rückruf, der für jeden Funktionsaufruf verwendet wird, um eine Instanz des Typs zu erstellen, für den die Instanzmethode method aufgerufen wird. Wenn die zurückgegebene Instanz vorhanden ist IAsyncDisposable oder IDisposable, wird sie nach method Abschluss des Aufrufs verworfen.
- options
- AIFunctionFactoryOptions
Metadaten, die verwendet werden sollen, um Standardwerte außer Kraft zu setzen, die von method.
Gibt zurück
Das erstellt AIFunction für das Aufrufen method.
Ausnahmen
createInstanceFunc ist null.
method enthält einen Parameter ohne Parameternamen.
Ein Parameter an method oder sein Rückgabetyp kann nicht serialisiert werden.
Hinweise
Rückgabewerte werden mithilfe JsonElement von options's SerializerOptionsserialisiert. Argumente, die noch nicht vom erwarteten Typ sind, werden über JSON an den erwarteten Typ gemarstet und verwenden options's SerializerOptions. Wenn es sich bei dem Argument um ein JsonElement, JsonDocumentoder JsonNodeum ein deserialisiertes Argument handelt, wird es direkt deserialisiert. Wenn das Argument etwas anderes unbekannt ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Standardmäßig werden alle Parameter method , die aus dem AIFunctionArgumentsWörterbuch von Schlüssel-Wert-Paaren stammen und im JSON-Schema für die Funktion dargestellt werden, wie in den zurückgegebenen AIFunction's JsonSchemaverfügbar gemacht. Es gibt einige Ausnahmen:
- CancellationToken Parameter werden automatisch an den CancellationToken übergebenen Aufruf über InvokeAsync(AIFunctionArguments, CancellationToken)den Parameter 's CancellationToken gebunden. Der Parameter ist nicht im generierten JSON-Schema enthalten. Das Verhalten von CancellationToken Parametern kann nicht außer Kraft gesetzt werden.
- Standardmäßig IServiceProvider sind Parameter an die Services Eigenschaft gebunden und nicht im JSON-Schema enthalten. Wenn der Parameter optional ist, sodass ein Standardwert angegeben wird, Services darf er sein
null; andernfalls Services mussnullder Aufruf nicht sein, sonst schlägt der Aufruf aufgrund der erforderlichen Art des Parameters mit einer Ausnahme fehl. Die Behandlung von IServiceProvider Parametern kann überschrieben ConfigureParameterBindingwerden. - Standardmäßig AIFunctionArguments werden Parameter direkt an AIFunctionArguments die instanz übergebene InvokeAsync(AIFunctionArguments, CancellationToken) Instanz gebunden und sind nicht im JSON-Schema enthalten. Wenn die AIFunctionArguments an die Instanz übergeben wird
nullInvokeAsync(AIFunctionArguments, CancellationToken), stellt die AIFunction Implementierung eine leere Instanz her, sodass Parameter vom Typ AIFunctionArguments immer erfüllt werden können, unabhängig davon, ob optional oder nicht. Die Behandlung von AIFunctionArguments Parametern kann überschrieben ConfigureParameterBindingwerden.
options den ConfigureParameterBinding bereitgestellten Parameter überschrieben werden. Für jeden Parameter ist der Delegat aktiviert, auszuwählen, ob der Parameter in das generierte Schema aufgenommen werden soll und wie der Wert gebunden werden soll, einschließlich der Verarbeitung der Optionalität (standardmäßig werden erforderliche Parameter, die AIFunctionArguments nicht im Wörterbuch enthalten sind, zu einer Ausnahme ausgelöst). Lose typierte zusätzliche Kontextinformationen können über das AIFunctionArgumentsWörterbuch Context übergeben InvokeAsync(AIFunctionArguments, CancellationToken) werden. Die Standardbindung ignoriert diese Auflistung, aber eine benutzerdefinierte Bindung, die über ConfigureParameterBinding diese Daten bereitgestellt wird, kann auswählen, dass Argumente aus diesen Daten stammen.Durch das Standardmäßige Marshalling von Parametern aus dem AIFunctionArguments Wörterbuch können Werte direkt an den methodAufruf des Objekts übergeben werden, wenn das Objekt bereits einen kompatiblen Typ aufweist. Andernfalls ist das Argument ein JsonElement, JsonDocument, oder JsonNode, wird es in den Parametertyp deserialisiert, wobei SerializerOptions verwendet wird, wenn angegeben oder anderweitig verwendet DefaultOptions. Wenn das Argument etwas anderes ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Im Allgemeinen werden die über ein AIFunctionArgumentsWörterbuch bereitgestellten Daten von einem KI-Dienst bereitgestellt und sollten als nichtvalidiert und nicht vertrauenswürdig betrachtet werden. Um validierte und vertrauenswürdige Daten für den Aufruf methodbereitzustellen, kann die für jeden Aufruf erstellte Instanz diese Daten enthalten, sodass sie dann als Instanzdaten verfügbar method ist. Ein IServiceProvider Parameter kann auch verwendet werden, um Dienste aus einem Abhängigkeitseinfügungscontainer aufzulösen.
Standardmäßig werden Rückgabewerte serialisiert, um JsonElementoptions"s SerializerOptions sofern angegeben" oder eine andere Verwendung zu verwenden DefaultOptions. Rückgabewerte, deren deklarierter Typ AIContent, ein abgeleiteter Typ AIContentoder ein beliebiger Typ, der IEnumerable<T> zugewiesen werden kann, werden jedoch direkt ohne Serialisierung zurückgegeben. Die Behandlung von Rückgabewerten kann überschrieben werden.MarshalResult
Zusätzlich zum Parameterschema wird ein JSON-Schema auch vom Rückgabetyp der Methode abgeleitet und über die zurückgegebenen AIFunction's ReturnJsonSchemaverfügbar gemacht. Für Methoden, die Voidein Rückgabeschema zurückgeben , Taskoder ValueTask, wird kein Rückgabeschema erzeugt (die Eigenschaft ist null). Bei Methoden, die Task<TResult> zurückgegeben werden oder ValueTask<TResult>, wird das Schema vom ergebnistyp "unwrapped" abgeleitet. Die Rückgabeschemagenerierung kann über ExcludeResultSchema"s" ausgeschlossen werden, und die Generierung wird von options's JsonSchemaCreateOptionsgesteuert.
Gilt für:
Create(MethodInfo, Object, AIFunctionFactoryOptions)
- Quelle:
- AIFunctionFactory.cs
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanz und ein optionales Zielobjekt angegeben wird, wenn es sich bei der Methode um eine Instanzmethode handelt.
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
Parameter
- method
- MethodInfo
Die Methode, die über die erstellte AIFunctionDargestellt werden soll.
- target
- Object
Das Zielobjekt für den method Fall, dass es eine Instanzmethode darstellt.
Dies sollte nur dann erfolgen null , wenn method es sich um eine statische Methode handelt.
- options
- AIFunctionFactoryOptions
Metadaten, die verwendet werden sollen, um Standardwerte außer Kraft zu setzen, die von method.
Gibt zurück
Das erstellt AIFunction für das Aufrufen method.
Ausnahmen
method stellt eine Instanzmethode dar, ist jedoch target NULL.
method enthält einen Parameter ohne Parameternamen.
Ein Parameter an method oder sein Rückgabetyp kann nicht serialisiert werden.
Hinweise
Standardmäßig werden alle Parameter method , die aus dem AIFunctionArgumentsWörterbuch von Schlüssel-Wert-Paaren stammen und im JSON-Schema für die Funktion dargestellt werden, wie in den zurückgegebenen AIFunction's JsonSchemaverfügbar gemacht. Es gibt einige Ausnahmen:
- CancellationToken Parameter werden automatisch an den CancellationToken übergebenen Aufruf über InvokeAsync(AIFunctionArguments, CancellationToken)den Parameter 's CancellationToken gebunden. Der Parameter ist nicht im generierten JSON-Schema enthalten. Das Verhalten von CancellationToken Parametern kann nicht außer Kraft gesetzt werden.
- Standardmäßig IServiceProvider sind Parameter an die Services Eigenschaft gebunden und nicht im JSON-Schema enthalten. Wenn der Parameter optional ist, sodass ein Standardwert angegeben wird, Services darf er sein
null; andernfalls Services mussnullder Aufruf nicht sein, sonst schlägt der Aufruf aufgrund der erforderlichen Art des Parameters mit einer Ausnahme fehl. Die Behandlung von IServiceProvider Parametern kann überschrieben ConfigureParameterBindingwerden. - Standardmäßig AIFunctionArguments werden Parameter direkt an AIFunctionArguments die instanz übergebene InvokeAsync(AIFunctionArguments, CancellationToken) Instanz gebunden und sind nicht im JSON-Schema enthalten. Wenn die AIFunctionArguments an die Instanz übergeben wird
nullInvokeAsync(AIFunctionArguments, CancellationToken), stellt die AIFunction Implementierung eine leere Instanz her, sodass Parameter vom Typ AIFunctionArguments immer erfüllt werden können, unabhängig davon, ob optional oder nicht. Die Behandlung von AIFunctionArguments Parametern kann überschrieben ConfigureParameterBindingwerden.
options den ConfigureParameterBinding bereitgestellten Parameter überschrieben werden. Für jeden Parameter ist der Delegat aktiviert, auszuwählen, ob der Parameter in das generierte Schema aufgenommen werden soll und wie der Wert gebunden werden soll, einschließlich der Verarbeitung der Optionalität (standardmäßig werden erforderliche Parameter, die AIFunctionArguments nicht im Wörterbuch enthalten sind, zu einer Ausnahme ausgelöst). Lose eingegebene zusätzliche Kontextinformationen können über das AIFunctionArgumentsWörterbuch Context übergeben InvokeAsync(AIFunctionArguments, CancellationToken) werden. Die Standardbindung ignoriert diese Auflistung, aber eine benutzerdefinierte Bindung, die über ConfigureParameterBinding diese Daten bereitgestellt wird, kann auswählen, dass Argumente aus diesen Daten stammen.Durch das Standardmäßige Marshalling von Parametern aus dem AIFunctionArguments Wörterbuch können Werte direkt an den methodAufruf des Objekts übergeben werden, wenn das Objekt bereits einen kompatiblen Typ aufweist. Andernfalls ist das Argument ein JsonElement, JsonDocument, oder JsonNode, wird es in den Parametertyp deserialisiert, wobei SerializerOptions verwendet wird, wenn angegeben oder anderweitig verwendet DefaultOptions. Wenn das Argument etwas anderes ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Im Allgemeinen werden die über ein AIFunctionArgumentsWörterbuch bereitgestellten Daten von einem KI-Dienst bereitgestellt und sollten als nichtvalidiert und nicht vertrauenswürdig betrachtet werden. Um validierte und vertrauenswürdige Daten für den Aufruf methodbereitzustellen, sollten Sie erwägen method , auf eine Instanzmethode für eine Instanz zu verweisen, die für den geeigneten Zustand konfiguriert ist. Ein IServiceProvider Parameter kann auch verwendet werden, um Dienste aus einem Abhängigkeitseinfügungscontainer aufzulösen.
Standardmäßig werden Rückgabewerte serialisiert, um JsonElementoptions"s SerializerOptions sofern angegeben" oder eine andere Verwendung zu verwenden DefaultOptions. Rückgabewerte, deren deklarierter Typ AIContentist , ein abgeleiteter Typ AIContentoder ein beliebiger Typ, der IEnumerable<T> zugewiesen werden kann, werden jedoch nicht serialisiert und stattdessen direkt zurückgegeben. Die Behandlung von Rückgabewerten kann überschrieben werden.MarshalResult
Zusätzlich zum Parameterschema wird ein JSON-Schema auch vom Rückgabetyp der Methode abgeleitet und über die zurückgegebenen AIFunction's ReturnJsonSchemaverfügbar gemacht. Für Methoden, die Voidein Rückgabeschema zurückgeben , Taskoder ValueTask, wird kein Rückgabeschema erzeugt (die Eigenschaft ist null). Bei Methoden, die Task<TResult> zurückgegeben werden oder ValueTask<TResult>, wird das Schema vom ergebnistyp "unwrapped" abgeleitet. Die Rückgabeschemagenerierung kann über ExcludeResultSchema"s" ausgeschlossen werden, und die Generierung wird von options's JsonSchemaCreateOptionsgesteuert.
Gilt für:
Create(Delegate, String, String, JsonSerializerOptions)
- Quelle:
- AIFunctionFactory.cs
Erstellt eine AIFunction Instanz für eine Methode, die über einen Delegaten angegeben wird.
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
Parameter
- method
- Delegate
Die Methode, die über die erstellte AIFunctionDargestellt werden soll.
- name
- String
Der Name, der für die AIFunction. Wenn null, wird der Name von einem DisplayNameAttributemethodvon , falls verfügbar, oder anderen vom Namen von method.
- description
- String
Die Beschreibung, die für die AIFunction. Wenn null, wird eine Beschreibung von einem von , DescriptionAttributemethodfalls verfügbar, abgeleitet.
- serializerOptions
- JsonSerializerOptions
Die JsonSerializerOptions zum Marshallen von Funktionsparametern und allen Rückgabewerten verwendeten Werte.
Gibt zurück
Das erstellt AIFunction für das Aufrufen method.
Ausnahmen
method ist null.
Ein Parameter kann method nicht serialisiert werden.
Hinweise
Alle Parameter, method die aus dem AIFunctionArgumentsWörterbuch von Schlüssel-Wert-Paaren stammen und im JSON-Schema für die Funktion dargestellt werden, wie in den zurückgegebenen AIFunction's JsonSchemaverfügbar gemacht. Es gibt einige Ausnahmen:
- CancellationToken Parameter werden automatisch an den CancellationToken übergebenen Aufruf über InvokeAsync(AIFunctionArguments, CancellationToken)den Parameter 's CancellationToken gebunden. Der Parameter ist nicht im generierten JSON-Schema enthalten.
- Standardmäßig IServiceProvider sind Parameter an die Services Eigenschaft gebunden und nicht im JSON-Schema enthalten. Wenn der Parameter optional ist, sodass ein Standardwert angegeben wird, Services darf er sein
null; andernfalls Services mussnullder Aufruf nicht sein, sonst schlägt der Aufruf aufgrund der erforderlichen Art des Parameters mit einer Ausnahme fehl. - Standardmäßig AIFunctionArguments werden Parameter direkt an AIFunctionArguments die instanz übergebene InvokeAsync(AIFunctionArguments, CancellationToken) Instanz gebunden und sind nicht im JSON-Schema enthalten. Wenn die AIFunctionArguments an die Instanz übergeben wird
nullInvokeAsync(AIFunctionArguments, CancellationToken), stellt die AIFunction Implementierung eine leere Instanz her, sodass Parameter vom Typ AIFunctionArguments immer erfüllt werden können, unabhängig davon, ob optional oder nicht.
Durch das Marshalling von Parametern aus dem AIFunctionArguments Wörterbuch können Werte direkt an den methodAufruf des Objekts übergeben werden, wenn das Objekt bereits einen kompatiblen Typ aufweist. Andernfalls, wenn das Argument ein JsonElement, , oder JsonNode, es wird in den Parametertyp deserialisiert, verwendetserializerOptions, wenn angegeben, oder sonst DefaultOptionsJsonDocument. Wenn das Argument etwas anderes ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Im Allgemeinen werden die über ein AIFunctionArgumentsWörterbuch bereitgestellten Daten von einem KI-Dienst bereitgestellt und sollten als nichtvalidiert und nicht vertrauenswürdig betrachtet werden. Um validierte und vertrauenswürdige Daten für den Aufruf methodbereitzustellen, sollten Sie erwägen method , auf eine Instanzmethode für eine Instanz zu verweisen, die für den geeigneten Zustand konfiguriert ist. Ein IServiceProvider Parameter kann auch verwendet werden, um Dienste aus einem Abhängigkeitseinfügungscontainer aufzulösen.
Rückgabewerte werden serialisiert, um sie zu JsonElement verwenden serializerOptions , sofern angegeben, oder mit anderen Verwenden DefaultOptions. Rückgabewerte, deren deklarierter Typ , ein abgeleiteter Typ AIContentAIContentoder ein beliebiger Typ, der IEnumerable<T> zugewiesen werden kann, werden jedoch nicht serialisiert. Sie werden as-is zurückgegeben, um die spezialisierte Behandlung zu erleichtern.
Ein JSON-Schema wird auch vom Rückgabetyp der Methode abgeleitet und über ReturnJsonSchema. Für Methoden, die Voidein TaskRückgabeschema zurückgeben oder ValueTaskzurückgeben, wird kein Rückgabeschema erstellt. Bei Methoden, die Task<TResult> zurückgegeben werden oder ValueTask<TResult>, wird das Schema vom ergebnistyp "unwrapped" abgeleitet.
Gilt für:
Create(MethodInfo, Object, String, String, JsonSerializerOptions)
- Quelle:
- AIFunctionFactory.cs
Erstellt eine AIFunction Instanz für eine Methode, die über eine MethodInfo Instanz und ein optionales Zielobjekt angegeben wird, wenn es sich bei der Methode um eine Instanzmethode handelt.
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
Parameter
- method
- MethodInfo
Die Methode, die über die erstellte AIFunctionDargestellt werden soll.
- target
- Object
Das Zielobjekt für den method Fall, dass es eine Instanzmethode darstellt.
Dies sollte nur dann erfolgen null , wenn method es sich um eine statische Methode handelt.
- name
- String
Der Name, der für die AIFunction. Wenn null, wird der Name von einem DisplayNameAttributemethodvon , falls verfügbar, oder anderen vom Namen von method.
- description
- String
Die Beschreibung, die für die AIFunction. Wenn null, wird eine Beschreibung von einem von , DescriptionAttributemethodfalls verfügbar, abgeleitet.
- serializerOptions
- JsonSerializerOptions
Die JsonSerializerOptions zum Marshallen von Funktionsparametern und rückgabewerten verwendeten Werte.
Gibt zurück
Das erstellt AIFunction für das Aufrufen method.
Ausnahmen
method stellt eine Instanzmethode dar, ist jedoch target NULL.
method enthält einen Parameter ohne Parameternamen.
Ein Parameter an method oder sein Rückgabetyp kann nicht serialisiert werden.
Hinweise
Alle Parameter, method die aus dem AIFunctionArgumentsWörterbuch von Schlüssel-Wert-Paaren stammen und im JSON-Schema für die Funktion dargestellt werden, wie in den zurückgegebenen AIFunction's JsonSchemaverfügbar gemacht. Es gibt einige Ausnahmen:
- CancellationToken Parameter werden automatisch an den CancellationToken übergebenen Aufruf über InvokeAsync(AIFunctionArguments, CancellationToken)den Parameter 's CancellationToken gebunden. Der Parameter ist nicht im generierten JSON-Schema enthalten.
- Standardmäßig IServiceProvider sind Parameter an die Services Eigenschaft gebunden und nicht im JSON-Schema enthalten. Wenn der Parameter optional ist, sodass ein Standardwert angegeben wird, Services darf er sein
null; andernfalls Services mussnullder Aufruf nicht sein, sonst schlägt der Aufruf aufgrund der erforderlichen Art des Parameters mit einer Ausnahme fehl. - Standardmäßig AIFunctionArguments werden Parameter direkt an AIFunctionArguments die instanz übergebene InvokeAsync(AIFunctionArguments, CancellationToken) Instanz gebunden und sind nicht im JSON-Schema enthalten. Wenn die AIFunctionArguments an die Instanz übergeben wird
nullInvokeAsync(AIFunctionArguments, CancellationToken), stellt die AIFunction Implementierung eine leere Instanz her, sodass Parameter vom Typ AIFunctionArguments immer erfüllt werden können, unabhängig davon, ob optional oder nicht.
Durch das Marshalling von Parametern aus dem AIFunctionArguments Wörterbuch können Werte direkt an den methodAufruf des Objekts übergeben werden, wenn das Objekt bereits einen kompatiblen Typ aufweist. Andernfalls, wenn das Argument ein JsonElement, , oder JsonNode, es wird in den Parametertyp deserialisiert, verwendetserializerOptions, wenn angegeben, oder sonst DefaultOptionsJsonDocument. Wenn das Argument etwas anderes ist, wird es durch JSON gerundet, das Objekt als JSON serialisiert und dann auf den erwarteten Typ deserialisieren.
Im Allgemeinen werden die über ein AIFunctionArgumentsWörterbuch bereitgestellten Daten von einem KI-Dienst bereitgestellt und sollten als nichtvalidiert und nicht vertrauenswürdig betrachtet werden. Um validierte und vertrauenswürdige Daten für den Aufruf methodbereitzustellen, sollten Sie erwägen method , auf eine Instanzmethode für eine Instanz zu verweisen, die für den geeigneten Zustand konfiguriert ist. Ein IServiceProvider Parameter kann auch verwendet werden, um Dienste aus einem Abhängigkeitseinfügungscontainer aufzulösen.
Rückgabewerte werden serialisiert, um sie zu JsonElement verwenden serializerOptions , sofern angegeben, oder mit anderen Verwenden DefaultOptions. Rückgabewerte, deren deklarierter Typ AIContent, ein abgeleiteter Typ AIContentoder ein beliebiger Typ, der IEnumerable<T> zugewiesen werden kann, werden jedoch ohne Serialisierung zurückgegeben, um eine spezielle Behandlung zu ermöglichen.
Ein JSON-Schema wird auch vom Rückgabetyp der Methode abgeleitet und über ReturnJsonSchema. Für Methoden, die Voidein TaskRückgabeschema zurückgeben oder ValueTaskzurückgeben, wird kein Rückgabeschema erstellt. Bei Methoden, die Task<TResult> zurückgegeben werden oder ValueTask<TResult>, wird das Schema vom ergebnistyp "unwrapped" abgeleitet.