Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Knotentypen für Ihren Flow
Amazon Bedrock Flows bietet die folgenden Knotentypen zum Erstellen Ihres Flows. Wenn Sie einen Knoten konfigurieren, füllen Sie die folgenden Felder aus:
-
Name – Geben Sie einen Namen für den Knoten ein.
-
Typ – In der Konsole legen Sie den zu verwendenden Knotentyp per Drag-and-Drop ab. Verwenden Sie in der API das Feld
typeund die entsprechende FlowNodeConfiguration im Feldconfiguration. -
Eingaben – Geben Sie für jede Eingabe die folgenden Informationen an:
-
Name – Einen Namen für die Eingabe. Für einige Knoten gibt es vordefinierte Namen oder Typen, die Sie verwenden müssen. Informationen zu den Knoten mit vordefinierten Namen finden Sie unter Typen von Logikknoten.
-
Ausdruck – Definieren Sie den Teil der gesamten Eingabe, der als einzelne Eingabe verwendet werden soll. Weitere Informationen finden Sie unter Verwenden von Ausdrücken zum Definieren von Eingaben durch Extrahieren des relevanten Teils der gesamten Eingabe in Amazon Bedrock Flows.
-
Typ – Der Datentyp der Eingabe. Wenn dieser Knoten während der Laufzeit erreicht wird, wendet Amazon Bedrock den Ausdruck auf die gesamte Eingabe an und überprüft, ob das Ergebnis dem Datentyp entspricht.
-
-
Ausgaben – Geben Sie für jede Ausgabe die folgenden Informationen an:
-
Name – Einen Namen für die Ausgabe. Für einige Knoten gibt es vordefinierte Namen oder Typen, die Sie verwenden müssen. Informationen zu den Knoten mit vordefinierten Namen finden Sie unter Typen von Logikknoten.
-
Typ – Der Datentyp der Ausgabe. Wenn dieser Knoten während der Laufzeit erreicht wird, überprüft Amazon Bedrock, ob die Knotenausgabe dem Datentyp entspricht.
-
-
Konfiguration – In der Konsole definieren Sie knotenspezifische Felder im oberen Bereich des Knotens. Verwenden Sie in der API die entsprechende FlowNodeConfiguration und füllen Sie die entsprechenden Felder aus.
Jeder Knotentyp wird nachstehend unter Angabe seiner Struktur in der API beschrieben. Erweitern Sie einen Abschnitt, um mehr über den betreffenden Knotentyp zu erfahren.
Knoten zur Steuerung der Flow-Logik
Verwenden Sie die folgenden Knotentypen, um die Logik Ihres Flows zu steuern.
Jeder Flow enthält nur einen Flow-Eingabeknoten und muss mit diesem beginnen. Der Flow-Eingabeknoten nimmt den content aus der InvokeFlow-Anfrage entgegen, validiert den Datentyp und sendet ihn an den folgenden Knoten.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Eingaben in der API dargestellt:
{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }
Ein Flow-Ausgabeknoten extrahiert die Eingabedaten aus dem vorherigen Knoten anhand des definierten Ausdrucks und gibt sie zurück. In der Konsole ist die Ausgabe die Antwort, die zurückgegeben wird, nachdem Sie im Testfenster auf Ausführen geklickt haben. In der API wird die Ausgabe im Feld content von flowOutputEvent in der InvokeFlow-Antwort zurückgegeben. Ein Flow kann mehrere Flow-Ausgabeknoten aufweisen.
Ein Flow kann mehrere Flow-Ausgabeknoten besitzen, wenn er mehrere Verzweigungen enthält.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Ausgaben dargestellt:
{ "name": "string", "type": "Output", "inputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "output": CONTEXT-DEPENDENT } }
Ein Bedingungsknoten sendet entsprechend den definierten Bedingungen Daten vom vorherigen Knoten an verschiedene Knoten. Ein Bedingungsknoten kann mehrere Eingaben entgegennehmen.
Ein Beispiel finden Sie unter Erstellen eines Flows mit Bedingungsknoten.
So definieren Sie einen Bedingungsknoten
-
Fügen Sie so viele Eingaben hinzu, wie Sie benötigen, um die Bedingungen zu evaluieren, die hinzugefügt werden sollen.
-
Geben Sie für jede Eingabe einen Namen ein, geben Sie den zu erwartenden Typ an und schreiben Sie einen Ausdruck, um den entsprechenden Teil aus der gesamten Eingabe zu extrahieren.
-
Verbinden Sie jede Eingabe mit der entsprechenden Ausgabe eines Upstream-Knotens.
-
Fügen Sie so viele Bedingungen wie nötig hinzu.
-
Gehen Sie für jede Bedingung wie folgt vor:
-
Geben Sie einen Namen für die Bedingung ein.
-
Verwenden Sie relationale und logische Operatoren, um eine Bedingung zu definieren, die Eingaben mit anderen Eingaben oder mit einer Konstante vergleicht.
Anmerkung
Die Bedingungen werden der Reihe nach evaluiert. Wenn mehrere Bedingungen erfüllt sind, hat die zuerst erfüllte Bedingung Vorrang.
-
Verbinden Sie jede Bedingung mit dem Downstream-Knoten, an den Sie die Daten senden möchten, wenn die betreffende Bedingung erfüllt ist.
-
Bedingungsausdrücke
Um eine Bedingung zu definieren, verweisen Sie auf eine Eingabe anhand ihres Namens und vergleichen Sie sie mithilfe eines der folgenden relationalen Operatoren mit einem Wert:
| Operator | Bedeutung | Unterstützte Datentypen | Beispielverwendung | Beispielbedeutung |
|---|---|---|---|---|
| == | Gleich (der Datentyp muss ebenfalls gleich sein) | Zeichenfolge, Zahl, boolescher Wert | A == B | Wenn A gleich B ist |
| != | Nicht gleich | Zeichenfolge, Zahl, boolescher Wert | A != B | Wenn A nicht gleich B ist |
| > | Größer als | Zahl | A > B | Wenn A größer als B ist |
| >= | Größer als oder gleich | Zahl | A >= B | Wenn A größer als oder gleich B ist |
| < | Kleiner als | Zahl | A < B | Wenn A kleiner als B ist |
| <= | Kleiner als oder gleich | Zahl | A <= B | Wenn A kleiner als oder gleich B ist |
Sie können Eingaben mit anderen Eingaben oder mit einer Konstante in einem bedingten Ausdruck vergleichen. Wenn Sie beispielsweise die numerische Eingabe profit und eine andere Eingabe mit dem Namen expenses haben, ist sowohl profit > expenses als auch profit <= 1000 ein gültiger Ausdruck.
Sie können die folgenden logischen Operatoren verwenden, um Ausdrücke für komplexere Bedingungen zu kombinieren. Es wird empfohlen, Klammern zu setzen, um Mehrdeutigkeiten bei der Gruppierung von Ausdrücken aufzulösen:
| Operator | Bedeutung | Beispielverwendung | Beispielbedeutung |
|---|---|---|---|
| and | Beide Ausdrücke sind wahr (true). | (A < B) and (C == 1) | Wenn beide Ausdrücke wahr (true) sind:
|
| or | Mindestens ein Ausdruck ist wahr (true). | (A != 2) or (B > C) | Wenn einer der Ausdrücke wahr (true) ist:
|
| not | Der Ausdruck ist nicht wahr (true). | not (A > B) | Wenn A nicht größer als B ist (entspricht A <= B) |
In der API definieren Sie Folgendes im Feld definition, wenn Sie eine CreateFlow- oder UpdateFlow-Anfrage senden:
-
Ein FlowNode-Objekt für die Bedingung im
nodes-Array. Das allgemeine Format sieht wie folgt aus (beachten Sie, dass Bedingungsknoten keineoutputsbesitzen):{ "name": "string", "type": "Condition", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "condition": { "conditions": [ { "name": "string", "expression": "string" }, ... ] } } } -
Für jede Eingabe in den Bedingungsknoten ein FlowConnection-Objekt im
connections-Array. Fügen Sie ein FlowDataConnectionConfiguration-Objekt in das Feldconfigurationdes ObjektsFlowConnectionein. Das allgemeine Format desFlowConnection-Objekts sieht folgendermaßen aus:{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } } -
Für jede Bedingung (einschließlich der Standardbedingung) im Bedingungsknoten ein FlowConnection-Objekt im
connections-Array. Fügen Sie ein FlowConditionalConnectionConfiguration-Objekt in das Feldconfigurationdes ObjektsFlowConnectionein. Das allgemeine Format des FlowConnection-Objekts sieht folgendermaßen aus:{ "name": "string", "source": "string", "target": "string", "type": "Conditional", "configuration": { "conditional": { "condition": "string" } } }Verwenden Sie relationale und logische Operatoren, um die
conditionzu definieren, die diesensource-Bedingungsknoten mit einem nachgelagertentarget-Knoten verbindet. Geben Sie für die Standardbedingung die Bedingung alsdefaultan.
Ein Iteratorknoten nimmt ein Array entgegen und gibt dessen Elemente iterativ als Ausgabe an den Downstream-Knoten zurück. Die Eingaben für den Iteratorknoten werden nacheinander und nicht parallel verarbeitet. Der Flow-Ausgabeknoten gibt das Endergebnis für jede Eingabe in einer anderen Antwort zurück. Sie können auch einen Kollektorknoten verwenden, der dem Iteratorknoten nachgelagert ist, um die iterierten Antworten zu sammeln und sie zusätzlich zur Größe des Arrays als Array zurückzugeben.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Iteratoren dargestellt:
{ "name": "string", "type": "Iterator", "inputs": [ { "name": "array", "type": "Array", "expression": "string" } ], "outputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", }, { "name": "arraySize", "type": "Number" } ], "configuration": { "iterator": CONTEXT-DEPENDENT } }
Ein Kollektorknoten nimmt zusätzlich zur Größe des Arrays eine iterierte Eingabe entgegen und gibt sie als Array zurück. Sie können einen Kollektorknoten verwenden, der einem Iteratorknoten nachgelagert ist, um die iterierten Elemente zu sammeln, nachdem Sie sie durch einige Knoten gesendet haben.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Kollektoren dargestellt:
{ "name": "string", "type": "Collector", "inputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "arraySize", "type": "Number" } ], "outputs": [ { "name": "collectedArray", "type": "Array" }, ], "configuration": { "collector": CONTEXT-DEPENDENT } }
Ein DoWhile-Schleifenknoten führt eine Sequenz von Knoten wiederholt aus, solange eine angegebene Bedingung wahr (true) bleibt. Die Schleife wird mindestens einmal ausgeführt, bevor die Bedingung evaluiert wird. Sie eignet sich daher ideal für Szenarien, in denen Sie eine Aktion ausführen und dann anhand des Ergebnisses prüfen müssen, ob sie wiederholt werden soll.
Der DoWhile-Schleifenknoten nimmt Eingabedaten entgegen und leitet sie durch den Schleifenkörper weiter. Nach jeder Iteration wird die Bedingung evaluiert, um zu bestimmen, ob der Schleifenvorgang fortgesetzt oder beendet werden soll. Die Schleife wird fortgesetzt, solange die Bedingung als wahr (true) evaluiert oder maxIterations nicht überschritten wird.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für DoWhile-Schleifen dargestellt:
{ "name": "string", "type": "DoWhile", "inputs": [ { "name": "loopInput", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "outputs": [ { "name": "loopOutput", "type": "String | Number | Boolean | Object | Array" }, { "name": "iterationCount", "type": "Number" } ], "configuration": { "doWhile": { "condition": "string", "maxIterations": "number" } } }
In der Konfiguration:
-
condition– Ein boolescher Ausdruck, der bestimmt, ob der Schleifenvorgang fortgesetzt wird. Verwenden Sie dieselben relationalen und logischen Operatoren als Bedingungsknoten. Die Bedingung wird nach jeder Iteration evaluiert. -
maxIterations– Die maximale Anzahl von Iterationen. Der Standardwert ist 10. Sie müssen eine positive Zahl angeben. Dieser Parameter hilft Ihnen, Endlosschleifen zu vermeiden.
Anmerkung
Der Parameter maxIterations besitzt den Standardwert 10 und akzeptiert nur positive Zahlen. Die Schleife wird beendet, wenn entweder die Bedingung falsch (false) wird oder die maximale Anzahl von Iterationen erreicht ist.
Knoten für die Verarbeitung von Daten im Flow
Verwenden Sie die folgenden Knotentypen, um Daten in Ihrem Flow zu verarbeiten:
Ein Prompt-Knoten definiert einen Prompt, der im Flow verwendet werden soll. Sie können einen Prompt aus dem Prompt-Management verwenden oder einen Inline-Prompt im Knoten definieren. Weitere Informationen finden Sie unter Erstellen und Speichern wiederverwendbarer Prompts mit dem Prompt-Management in Amazon Bedrock.
Ein Beispiel finden Sie unter Ausprobieren von Beispiel-Flows.
Die Eingaben für den Prompt-Knoten sind Werte zum Ausfüllen der Variablen. Die Ausgabe ist die generierte Antwort aus dem Modell.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Prompts dargestellt:
{ "name": "string", "type": "prompt", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "modelCompletion", "type": "String" } ], "configuration": { "prompt": { "sourceConfiguration": PromptFlowNodeSourceConfiguration object (see below), "guardrailConfiguration": { "guardrailIdentifier": "string", "guardrailVersion": "string" } } } }
Das PromptFlowNodeSourceConfiguration-Objekt hängt davon ab, ob Sie einen Prompt aus dem Prompt-Management verwenden oder einen Inline-Prompt definieren:
-
Wenn Sie einen Prompt aus dem Prompt-Management verwenden, sollte das Objekt die folgende allgemeine Struktur aufweisen:
{ "resource": { "promptArn": "string" } } -
Wenn Sie einen Inline-Prompt definieren, folgen Sie der Anleitung zur Definition einer Variante auf der API-Registerkarte von Erstellen eines Prompts mithilfe des Prompt-Managements (beachten Sie jedoch, dass dieses Objekt kein Feld
nameenthält). Das von Ihnen verwendete Objekt sollte die folgende allgemeine Struktur aufweisen:{ "inline": { "modelId": "string", "templateType": "TEXT", "templateConfiguration": { "text": { "text": "string", "inputVariables": [ { "name": "string" }, ... ] } }, "inferenceConfiguration": { "text": { "maxTokens": int, "stopSequences": ["string", ...], "temperature": float, "topP": float } }, "additionalModelRequestFields": { "key": "value", ... } } }
Um einen Integritätsschutz aus Amazon Bedrock auf Ihren Prompt oder die daraus generierte Antwort anzuwenden, fügen Sie das Feld guardrailConfiguration hinzu und geben Sie die ID oder den ARN des Integritätsschutzes im Feld guardrailIdentifier sowie die Version des Integritätsschutzes im Feld guardrailVersion an.
Ein Agenten-Knoten ermöglicht es Ihnen, einen Prompt an einen Agenten zu senden, der zwischen FMs und den zugehörigen Ressourcen orchestriert, um Aktionen für einen Endbenutzer zu identifizieren und auszuführen. Weitere Informationen finden Sie unter Automatisieren von Aufgaben in einer Anwendung mithilfe von KI-Agenten.
Geben Sie in der Konfiguration den Amazon-Ressourcennamen (ARN) des Alias des zu verwendenden Agenten an. Bei den Eingaben in den Knoten handelt es sich um den Prompt für den Agenten und alle zugehörigen Prompt- oder Sitzungsattribute. Der Knoten gibt die Antwort des Agenten als Ausgabe zurück.
Ein Agenten-Knoten kann Multi-Turn-Aufrufe unterstützen und ermöglicht so interaktive Konversationen zwischen Benutzern und dem Agenten während der Flow-Ausführung. Wenn ein Agenten-Knoten zusätzliche Informationen oder Erläuterungen benötigt, kann er die Flow-Ausführung unterbrechen und bestimmte Eingaben vom Benutzer anfordern. Sobald der Benutzer die angeforderten Informationen bereitgestellt hat, setzt der Agenten-Knoten die Verarbeitung mit der neuen Eingabe fort. Dieser Vorgang wird fortgesetzt, bis der Agenten-Knoten über alle erforderlichen Informationen verfügt, um die Ausführung abzuschließen
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Agenten dargestellt:
{ "name": "string", "type": "Agent", "inputs": [ { "name": "agentInputText" "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "promptAttributes" "type": "Object", "expression": "string" }, { "name": "sessionAttributes" "type": "Object", "expression": "string" } ], "outputs": [ { "name": "agentResponse", "type": "String" } ], "configuration": { "agent": { "agentAliasArn": "string" } } }
Mit einem Wissensdatenbank-Knoten können Sie eine Abfrage von Wissensdatenbanken für Amazon Bedrock an eine Wissensdatenbank senden. Weitere Informationen finden Sie unter Abrufen von Daten und Generieren von KI-Antworten mit Wissensdatenbanken für Amazon Bedrock.
Geben Sie in der Konfiguration mindestens knowledgeBaseId an. Je nach Anwendungsfall können Sie optional die folgenden Felder hinzufügen:
-
modelId– Geben Sie eine Modell-ID an, die verwendet werden soll, wenn Sie auf der Grundlage der abgerufenen Ergebnisse eine Antwort generieren möchten. Um die abgerufenen Ergebnisse als Array zurückzugeben, lassen Sie die Modell-ID weg. -
guardrailConfiguration– Geben Sie die ID oder den ARN des Integritätsschutzes, die bzw. der im Integritätsschutz für Amazon Bedrock definiert ist, in das FeldguardrailIdentifierund die Version des Integritätsschutzes in das FeldguardrailVersionein.Anmerkung
Integritätsschutz kann nur bei Verwendung von
RetrieveAndGeneratein einem Wissensdatenbank-Knoten angewendet werden.
Die Eingabe in den Knoten ist die Abfrage an die Wissensdatenbank. Die Ausgabe ist entweder die Modellantwort als Zeichenfolge oder ein Array der abgerufenen Ergebnisse.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Wissensdatenbanken dargestellt:
{ "name": "string", "type": "KnowledgeBase", "inputs": [ { "name": "retrievalQuery", "type": "String", "expression": "string" } ], "outputs": [ { "name": "retrievalResults" | "outputText", "type": "Array | String" } ], "configuration": { "knowledgeBase": { "knowledgeBaseId": "string", "modelId": "string", "guardrailConfiguration": { "guardrailIdentifier": "string", "guardrailVersion": "string" } } } }
Ein S3-Speicherknoten ermöglicht das Speichern von Daten im Flow in einen Amazon-S3-Bucket. In der Konfiguration geben Sie den S3-Bucket an, der für die Datenspeicherung verwendet werden soll. Die Eingaben in den Knoten sind der zu speichernde Inhalt und der Objektschlüssel. Der Knoten gibt den URI des S3-Speicherorts als Ausgabe zurück.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für S3-Speicher dargestellt:
{ "name": "string", "type": "Storage", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Uri", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }
Mit einem S3-Abrufknoten können Sie Daten von einem Amazon-S3-Speicherort abrufen und in den Flow einführen. In der Konfiguration geben Sie den S3-Bucket an, aus dem Daten abgerufen werden sollen. Die Eingabe in den Knoten ist der Objektschlüssel. Der Knoten gibt den Inhalt am S3-Speicherort als Ausgabe zurück.
Anmerkung
Aktuell müssen die Daten am S3-Speicherort eine UTF-8-codierte Zeichenfolge sein.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für S3-Abrufe dargestellt:
{ "name": "string", "type": "Retrieval", "inputs": [ { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Content", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }
Mit einem Lambda-Funktionsknoten können Sie eine Lambda-Funktion aufrufen, in der Sie Code zur Ausführung der Geschäftslogik definieren können. Wenn Sie einen Lambda-Knoten in einen Flow einbeziehen, sendet Amazon Bedrock ein Eingabeereignis an die von Ihnen angegebene Lambda-Funktion.
Geben Sie in der Konfiguration den Amazon-Ressourcennamen (ARN) der Lambda-Funktion an. Definieren Sie Eingaben, die im Lambda-Eingabeereignis gesendet werden. Sie können auf der Grundlage dieser Eingaben Code schreiben und definieren, was die Funktion zurückgibt. Die Funktionsantwort wird in der Ausgabe zurückgegeben.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Lambda-Funktionen dargestellt:
{ "name": "string", "type": "LambdaFunction", "inputs": [ { "name": "codeHookInput", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "functionResponse", "type": "String | Number | Boolean | Object | Array" } ], "configuration": { "lambdaFunction": { "lambdaArn": "string" } } }
Lambda-Eingabeereignis für einen Flow
Das Eingabeereignis, das an eine Lambda-Funktion in einem Lambda-Knoten gesendet wird, besitzt das folgende Format:
{ "messageVersion": "1.0", "flow": { "flowArn": "string", "flowAliasArn": "string" }, "node": { "name": "string", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string", "value": ... }, ... ] } }
Die Felder für jede Eingabe entsprechen den Feldern, die Sie bei der Definition des Lambda-Knotens angeben, während der Wert des Felds value mit der gesamten Eingabe in den Knoten gefüllt wird, nachdem er durch den Ausdruck aufgelöst wurde. Wenn beispielsweise die gesamte Eingabe in den Knoten [1, 2, 3] und der Ausdruck $.data[1] ist, wäre der Wert, der im Eingabeereignis an die Lambda-Funktion gesendet wird, 2.
Weitere Informationen zu Ereignissen in Lambda finden Sie unter Lambda-Konzepte im Entwicklerhandbuch zu AWS Lambda.
Lambda-Antwort für einen Flow
Wenn Sie eine Lambda-Funktion schreiben, definieren Sie die von ihr zurückgegebene Antwort. Diese Antwort wird als Ausgabe des Lambda-Knotens an Ihren Flow zurückgegeben.
Mit einem Inline-Code-Knoten können Sie Code direkt im Flow schreiben und ausführen und so Datentransformationen, benutzerdefinierte Logik und Integrationen ermöglichen, ohne eine externe Lambda-Funktion zu verwenden. Wenn Sie einen Inline-Code-Knoten in den Flow aufnehmen, führt Amazon Bedrock den Code in einer isolierten, von AWS verwalteten Umgebung aus, die für niemanden freigegeben wird und die über keinen Internetzugang verfügt.
Anmerkung
Der Inline-Code-Knoten ist als Vorabversion für Amazon Bedrock verfügbar und unterliegt Änderungen.
Geben Sie in der Knotenkonfiguration den auszuführenden Code zusammen mit der Programmiersprache (Python_3 ist derzeit die einzige Option) an. Definieren Sie Eingaben, auf die Ihr Code zugreifen kann, als Variablen. Das Ergebnis der letzten ausgeführten Zeile im Code wird als Knotenausgabe zurückgegeben.
Das folgende Beispiel zeigt die allgemeine Struktur eines FlowNode-Objekts für Inline-Code:
{ "name": "string", "type": "InlineCode", "inputs": [{ "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [{ "name": "response", "type": "String | Number | Boolean | Object | Array" }], "configuration": { "inlineCode": { "code": "string", "language": "Python_3" } } }
Überlegungen zur Verwendung von Inline-Code-Knoten
Bei Verwendung von Inline-Code-Knoten im Flow sollten Sie folgende Punkte berücksichtigen:
Wichtig
Wir empfehlen, Ihren Code zu testen, bevor Sie ihn zu einem Inline-Code-Knoten hinzufügen.
-
Inline-Code-Knoten werden bei asynchroner Flow-Ausführung nicht unterstützt.
-
Derzeit ist Python 3.12 (
Python_3)die einzige Programmiersprache, die von Inline-Code-Knoten unterstützt wird. -
Inline-Code verhält sich wie eine interaktive Python-Sitzung. Nur das Ergebnis der zuletzt ausgeführten Zeile wird erfasst und als Knotenausgabe zurückgegeben.
-
Die Python-Konsolenausgabe (z. B. die Ausgabe von der
print-Funktion) wird nicht erfasst. -
Eingaben für Ihren Inline-Code-Knoten sind als Python-Variablen im Code verfügbar. Verwenden Sie den exakten Namen der Knoteneingabe, um auf sie zu verweisen.
-
Konfigurieren Sie die Eingabe- und Ausgabetypen korrekt, um Laufzeitfehler zu vermeiden. Sie können bis zu fünf Knoteneingaben konfigurieren.
-
Es sind bis zu fünf Inline-Code-Knoten pro Flow möglich.
-
Sie können maximal 25 Inline-Code-Knoten pro AWS-Konto gleichzeitig ausführen.
-
Ihr Code darf 5 MB nicht überschreiten.
Inline-Code-Knoteneingaben
Die Eingaben, die Sie für einen Inline-Code-Knoten definieren, sind als Python-Variablen im Code verfügbar. Wenn Sie beispielsweise eine Eingabe mit dem Namen userData definieren, können Sie direkt in Ihrem Code als userData darauf zugreifen.
Der Wert jeder Eingabe wird auf der Grundlage des von Ihnen definierten Ausdrucks eingetragen. Wenn die Eingabe für den Knoten beispielsweise {"name": "John",
"age": 30} lautet und der Ausdruck $.name ist, wäre der Wert der Eingabevariablen "John".
Inline-Code-Knotenausgabe
Das Ergebnis der letzten ausgeführten Zeile in Ihrem Code wird als Ausgabe des Inline-Code-Knotens zurückgegeben. Diese Ausgabe ist für nachfolgende Knoten im Flow verfügbar.
Der folgende Code gibt beispielsweise ein Wörterbuch als Knotenausgabe zurück:
# Process input data result = {"processed": True, "data": userData} # The last line's result is returned as the node output result
Anmerkung
Der Lex-Knoten basiert auf dem Service „Amazon Lex“, der Kundeninhalte speichern und verwenden kann, um andere AWS-Services zu entwickeln und kontinuierlich zu verbessern. Als AWS-Kunde können Sie sich entscheiden, dass Ihre Inhalte gespeichert oder für Serviceverbesserungen verwendet werden. Weitere Informationen zur Implementierung einer Opt-Out-Richtlinie für Amazon Lex finden Sie unter Opt-out-Richtlinie für KI-Services.
Mit einem Lex-Knoten können Sie einen Amazon Lex-Bot aufrufen, um eine Äußerung mithilfe natürlicher Sprachverarbeitung zu verarbeiten und eine Absicht auf der Grundlage der Bot-Definition zu identifizieren. Weitere Informationen finden Sie im Entwicklerhandbuch zu Amazon Lex.
Geben Sie in der Konfiguration den Amazon-Ressourcennamen (ARN) des Alias des zu verwendenden Bots sowie das zu verwendende Gebietsschema an. Die Eingaben in den Knoten sind die Äußerung und alle zugehörigen Anforderungsattribute oder Sitzungsattribute. Der Knoten gibt die identifizierte Absicht als Ausgabe zurück.
Anmerkung
Derzeit unterstützt der Lex-Knoten keine Multi-Turn-Konversationen. Ein Lex-Knoten kann nur jeweils eine Äußerung verarbeiten.
Nachstehend ist die allgemeine Struktur eines FlowNode-Objekts für Lex dargestellt:
{ "name": "string", "type": "Lex", "inputs": [ { "name": "inputText", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "requestAttributes", "type": "Object", "expression": "string" }, { "name": "sessionAttributes", "type": "Object", "expression": "string" } ], "outputs": [ { "name": "predictedIntent", "type": "String" } ], "configuration": { "lex": { "botAliasArn": "string", "localeId": "string" } } }
Übersichtstabellen für Knotentypen
In den folgenden Tabellen sind die für alle Knotentypen zulässigen Ein- und Ausgaben aufgeführt. Beachten Sie Folgendes:
-
Wenn ein Name als Beliebig markiert ist, können Sie eine beliebige Zeichenfolge als Namen angeben. Ansonsten müssen Sie den in der Tabelle angegebenen Wert verwenden.
-
Wenn ein Typ als Beliebig markiert ist, können Sie einen der folgenden Datentypen angeben: Zeichenfolge, Zahl, boolescher Wert, Objekt, Array. Ansonsten müssen Sie den in der Tabelle angegebenen Typ verwenden.
-
Sie können mehrere Eingaben für die Knoten Bedingung, Prompt, Lambda-Funktion und Inline-Code definieren.
| Eingabe-Informationen | Ausgabe-Informationen | |||||
|---|---|---|---|---|---|---|
| Knotentyp | Eingabe | Name | Typ | Ausgabe | Name | Typ |
| Eingabe | – | – | – | Das Feld content in der InvokeFlow-Anfrage |
document |
Beliebig |
| Ausgabe | Daten, die in der InvokeFlow-Antwort zurückgegeben werden sollen |
document |
Beliebig | – | – | – |
| Bedingung |
Daten, die basierend auf einer Bedingung gesendet werden (mehrere Eingaben zulässig) |
Beliebig | Beliebig |
Daten, die basierend auf einer Bedingung gesendet werden (Bedingungen für verschiedene Pfade angeben) |
Beliebig | Beliebig |
| Iterator | Ein Array, für das Sie den/die folgenden Knoten iterativ auf jedes Element anwenden möchten | array |
Array | Jedes Element aus dem Array | arrayItem |
Beliebig |
| Die Größe des Eingabe-Arrays | arraySize |
Zahl | ||||
| Kollektor | Eine Iteration, die Sie zu einem Array konsolidieren möchten | arrayItem |
Beliebig | Ein Array, an das alle Ausgaben des vorherigen Knotens angehängt sind | collectedArray |
Array |
| Die Größe des Ausgabe-Arrays | arraySize |
Zahl | ||||
| DoWhile-Schleife | Daten, die in der Schleife verarbeitet werden | loopInput |
Beliebig | Die endgültige Ausgabe der Schleife nach allen Iterationen | loopOutput |
Beliebig |
| Anzahl der durchgeführten Iterationen | iterationCount |
Zahl | ||||
| Eingabe-Informationen | Ausgabe-Informationen | |||||
|---|---|---|---|---|---|---|
| Knotentyp | Eingabe | Name | Typ | Ausgabe | Name | Typ |
| Prompt |
Ein Wert zum Ausfüllen einer Variablen im Prompt (mehrere Eingaben zulässig) |
|
Beliebig | Die vom Modell zurückgegebene Antwort | modelCompletion |
Zeichenfolge |
| S3-Speicher | Daten zum Speichern in einem S3-Bucket | content |
Beliebig | Der URI des S3-Speicherorts | s3Uri |
Zeichenfolge |
| Der Objektschlüssel, der für das S3-Objekt verwendet werden soll | objectKey |
Zeichenfolge | ||||
| S3-Abruf | Der Objektschlüssel für das S3-Objekt | objectKey |
Zeichenfolge | Die Daten, die aus einem S3-Bucket abgerufen werden sollen | s3Content |
Beliebig |
| Agent | Der Prompt, der an den Agenten gesendet werden soll | agentInputText |
Zeichenfolge | Die Antwort, die vom Agenten zurückgegeben wurde | agentResponse |
Zeichenfolge |
| Alle Prompt-Attribute, die zusammen mit dem Prompt gesendet werden sollen | promptAttributes |
Objekt | ||||
| Alle Sitzungsattribute, die zusammen mit dem Prompt gesendet werden sollen | sessionAttributes |
Objekt | ||||
| Wissensdatenbank | Die an die Wissensdatenbank gesendete Abfrage | retrievalQuery |
Zeichenfolge | Die zurückgegebenen Ergebnisse oder die generierte Antwort aus der Wissensdatenbank | retrievalResults |
Array |
| Lambda-Funktion |
Daten, die an die Funktion gesendet werden sollen (mehrere Eingaben zulässig) |
Beliebig | Beliebig | Die von der Funktion zurückgegebene Antwort | functionResponse |
Beliebig |
| Inline-Code-Knoten |
Variablen für die Ausführung Ihres Codes (mehrere Eingaben zulässig) |
Beliebig | Beliebig | Die letzte Zeile, die in Ihrem Code ausgeführt wurde | response |
Beliebig |
| Lex | Die Äußerung, die an den Bot gesendet werden soll | inputText |
Zeichenfolge | Die Absicht, die der Bot für die Äußerung annimmt | predictedIntent |
Zeichenfolge |
| Alle Anforderungsattribute, die zusammen mit der Äußerung gesendet werden sollen | requestAttributes |
Objekt | ||||
| Alle Sitzungsattribute, die zusammen mit der Äußerung gesendet werden sollen | sessionAttributes |
Objekt | ||||