Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Konversation mit einem Amazon Bedrock-Flow

Fokusmodus
Konversation mit einem Amazon Bedrock-Flow - Amazon Bedrock

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.

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.

Anmerkung

Amazon Bedrock Flows Multi-Turn-Konversation befindet sich in der Vorschauversion für Amazon Bedrock und kann sich ändern.

Amazon Bedrock Flows Multi-Turn-Konversation ermöglicht dynamische back-and-forth Konversationen zwischen Benutzern und Flows, ähnlich einem natürlichen Dialog. Wenn ein Agent-Knoten Klarstellungen oder zusätzlichen Kontext benötigt, kann er die Ausführung des Flows intelligent unterbrechen und den Benutzer zur Eingabe bestimmter Informationen auffordern. Dies sorgt für ein interaktiveres und kontextsensitiveres Erlebnis, da der Knoten sein Verhalten an die Antworten der Benutzer anpassen kann. Wenn beispielsweise eine erste Benutzerabfrage mehrdeutig oder unvollständig ist, kann der Knoten Folgefragen stellen, um die erforderlichen Details zu sammeln. Sobald der Benutzer die angeforderten Informationen eingegeben hat, setzt der Flow die Ausführung mit der angereicherten Eingabe nahtlos fort, sodass genauere und relevantere Ergebnisse gewährleistet sind. Diese Funktion ist besonders nützlich für komplexe Szenarien, in denen eine einzige Interaktion möglicherweise nicht ausreicht, um die Bedürfnisse des Benutzers vollständig zu verstehen und zu erfüllen.

Wie verarbeitet man eine Konversation mit mehreren Turns in einem Flow

Um eine Multi-Turn-Konversation in einem Flow zu verwenden, benötigen Sie einen Agentenknoten, der mit einem Amazon Bedrock-Agenten verbunden ist. Wenn Sie den Flow ausführen, findet eine Multi-Turn-Konversation statt, wenn der Agent weitere Informationen vom Benutzer benötigt, bevor er fortfahren kann. In diesem Abschnitt wird ein Flow beschrieben, der einen Agenten verwendet, mit den folgenden Anweisungen:

You are a playlist creator for a radio station. When asked to create a playlist, ask for the number of songs, the genre of music, and a theme for the playlist.

Informationen zum Erstellen eines Agenten finden Sie unterAutomatisieren Sie Aufgaben in Ihrer Anwendung mithilfe von KI-Agenten.

Schritt 1: Starten Sie den Flow

Sie starten einen Flow, indem Sie den InvokeFlowVorgang aufrufen. Sie fügen den ursprünglichen Inhalt hinzu, den Sie an den Flow senden möchten. Im folgenden Beispiel enthält das document Feld eine Anforderung zum Erstellen einer Playlist. Jede Konversation hat eine eindeutige Kennung (Ausführungs-ID), die die Konversation innerhalb des Flows identifiziert. Um die Ausführungs-ID zu erhalten, senden Sie das executionID Feld bei Ihrem ersten Anruf nicht anInvokeFlow. Die Antwort von InvokeFlow enthält die Ausführungs-ID. Verwenden Sie in Ihrem Code die Kennung, um mehrere Konversationen nachzuverfolgen und eine Konversation bei weiteren Aufrufen des InvokeFlow Vorgangs zu identifizieren.

Im Folgenden finden Sie ein JSON-Beispiel für eine Anfrage anInvokeFlow.

{ "flowIdentifier": "XXXXXXXXXX", "flowAliasIdentifier": "YYYYYYYYYY", "inputs": [ { "content": { "document": "Create a playlist." }, "nodeName": "FlowInputNode", "nodeOutputName": "document" } ] }

Schritt 2: Agentenanfragen abrufen

Wenn der Agentknoten im Flow entscheidet, dass er weitere Informationen vom Benutzer benötigt, InvokeFlow enthält der Antwortstream (responseStream) von ein FlowMultiTurnInputRequestEvent Ereignisobjekt. Das Ereignis enthält die angeforderten Informationen im Feld content (FlowMultiTurnInputContent). Im folgenden Beispiel bezieht sich die Anfrage in dem document Feld auf Informationen über die Anzahl der Songs, das Musikgenre und das Thema für die Playlist. In Ihrem Code müssen Sie diese Informationen dann vom Benutzer abrufen.

Das Folgende ist ein Beispiel für ein FlowMultiTurnInputRequestEvent JSON-Objekt.

{ "nodeName": "AgentsNode_1", "nodeType": "AgentNode", "content": { "document": "Certainly! I'd be happy to create a playlist for you. To make sure it's tailored to your preferences, could you please provide me with the following information: 1. How many songs would you like in the playlist? 2. What genre of music do you prefer? 3. Is there a specific theme or mood you'd like for the playlist? Once you provide these details, I'll be able to create a customized playlist just for you." } }

Da der Flow erst fortgesetzt werden kann, wenn weitere Eingaben eingegangen sind, gibt der Flow auch ein FlowCompletionEvent Ereignis aus. Ein Flow gibt immer das FlowMultiTurnInputRequestEvent vor dem aus. FlowCompletionEvent Wenn der Wert von completionReason in dem FlowCompletionEvent Ereignis gleich istINPUT_REQUIRED, benötigt der Flow weitere Informationen, bevor er fortgesetzt werden kann.

Im Folgenden finden Sie ein Beispiel für ein FlowCompletionEvent JSON-Objekt.

{ "completionReason": "INPUT_REQUIRED" }

Schritt 3: Senden Sie die Benutzerantwort auf den Flow

Senden Sie die Benutzerantwort zurück an den Flow, indem Sie den InvokeFlow Vorgang erneut aufrufen. Stellen Sie sicher, dass Sie das executionId für die Konversation angeben.

Im Folgenden finden Sie ein JSON-Beispiel für die Anfrage anInvokeFlow. Das document Feld enthält die Antwort des Benutzers.

{ "flowIdentifier": "AUS7BMHXBE", "flowAliasIdentifier": "4KUDB8VBEF", "executionId": "b6450554-f8cc-4934-bf46-f66ed89b60a0", "inputs": [ { "content": { "document": "1. 5 songs 2. Welsh rock music 3. Castles" }, "nodeName": "AgentsNode_1", "nodeInputName": "agentInputText" } ] }

Wenn der Flow mehr Informationen benötigt, erzeugt der Flow weitere FlowMultiTurnInputRequestEvent Ereignisse.

Schritt 4: Beenden Sie den Flow

Wenn keine weiteren Informationen benötigt werden, gibt der Flow ein FlowOutputEvent Ereignis aus, das die endgültige Antwort enthält.

Im Folgenden finden Sie ein Beispiel für ein FlowOutputEvent JSON-Objekt.

{ "nodeName": "FlowOutputNode", "content": { "document": "Great news! I've created a 5-song Welsh rock playlist centered around the theme of castles. Here's the playlist I've put together for you: Playlist Name: Welsh Rock Castle Anthems Description: A 5-song Welsh rock playlist featuring songs about castles Songs: 1. Castell y Bere - Super Furry Animals 2. The Castle - Manic Street Preachers 3. Caerdydd (Cardiff Castle) - Stereophonics 4. Castell Coch - Catatonia 5. Chepstow Castle - Feeder This playlist combines Welsh rock bands with songs that reference castles or specific Welsh castles. Enjoy your castle-themed Welsh rock music experience!" } }

Der Flow gibt auch ein FlowCompletionEvent Ereignis aus. Der Wert von completionReason ist SUCCESS.

Im Folgenden finden Sie ein Beispiel für ein FlowCompletionEvent JSON-Objekt.

{ "completionReason": "SUCCESS" }

Das folgende Sequenzdiagramm zeigt die Schritte in einem Multiturn-Flow.

Ablaufschritte für eine Konversation mit mehreren Runden.

Einen Beispiel-Flow erstellen und ausführen

In diesem Beispiel erstellen Sie einen Flow, der mithilfe eines Agenten Playlisten für einen Radiosender erstellt. Der Agent stellt klärende Fragen, um die Anzahl der Songs, das Musikgenre und das Thema für die Playlist zu ermitteln.

Um den Flow zu erstellen
  1. Erstellen Sie einen Agenten in der Amazon Bedrock-Konsole, indem Sie den Anweisungen unter Agenten manuell erstellen und konfigurieren folgen.

    • Geben Sie für Schritt 2.d ein. You are a playlist creator for a radio station. When asked to create a playlist, ask for the number of songs, the genre of music, and a theme for the playlist.

    • Wählen Sie für Schritt 2.e unter Benutzereingabe die Option Aktiviert aus. Auf diese Weise kann der Agent bei Bedarf weitere Informationen anfordern.

  2. Erstellen Sie den Flow, indem Sie den Anweisungen unter folgenErstellen Sie einen Flow in Amazon Bedrock. Stellen Sie sicher, dass der Flow über einen Eingabeknoten, einen Agentenknoten und einen Ausgabeknoten verfügt.

  3. Verknüpfen Sie den Agentenknoten mit dem Agenten, den Sie in Schritt 1 erstellt haben. Der Flow sollte wie in der folgenden Abbildung aussehen.

    Flow-Konversation mit mehreren Runden
  4. Führen Sie den Flow in der Amazon Bedrock-Konsole aus. Zum Testen können Sie die Schritte verfolgen, die der Flow ausführt. Weitere Informationen finden Sie unter Testen Sie einen Flow in Amazon Bedrock.

Das folgende Python-Codebeispiel zeigt, wie der Flow verwendet wird.

Um den Code auszuführen, geben Sie Folgendes an:

  • region_name— Die AWS Region, in der Sie den Flow ausführen.

  • FLOW_ID— Die ID des Flows.

  • FLOW_ALIAS_ID— Die Alias-ID des Flows.

Hinweise zum Abrufen von finden Sie unterInformationen zu Flows in Amazon Bedrock anzeigen. IDs Der Code fordert Sie auf, eine erste Anfrage an den Flow zu senden, und fordert je nach Bedarf weitere Eingaben an. Der Code verwaltet keine anderen Anfragen des Agenten, z. B. Anfragen zum Aufrufen von AWS Lambda Funktionen. Weitere Informationen finden Sie unter So funktioniert Amazon Bedrock Agents. Während der Ausführung generiert der Code FlowTraceEvent Objekte, mit denen Sie den Pfad von der Eingabe bis zur Antwort verfolgen können, die der Flow zurückgibt. Weitere Informationen finden Sie unter Verfolgen Sie jeden Schritt in Ihrem Arbeitsablauf, indem Sie sich seinen Verlauf in Amazon Bedrock ansehen.

""" Runs an Amazon Bedrock flow and handles muli-turn interaction for a single conversation. """ import logging import boto3 import botocore import botocore.exceptions logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def invoke_flow(client, flow_id, flow_alias_id, input_data, execution_id): """ Invoke an Amazon Bedrock flow and handle the response stream. Args: client: Boto3 client for Amazon Bedrock agent runtime flow_id: The ID of the flow to invoke flow_alias_id: The alias ID of the flow input_data: Input data for the flow execution_id: Execution ID for continuing a flow. Use the value None on first run. Returns: Dict containing flow_complete status, input_required info, and execution_id """ response = None request_params = None if execution_id is None: # Don't pass execution ID for first run. request_params = { "flowIdentifier": flow_id, "flowAliasIdentifier": flow_alias_id, "inputs": [input_data], "enableTrace": True } else: request_params = { "flowIdentifier": flow_id, "flowAliasIdentifier": flow_alias_id, "executionId": execution_id, "inputs": [input_data], "enableTrace": True } response = client.invoke_flow(**request_params) if "executionId" not in request_params: execution_id = response['executionId'] input_required = None flow_status = "" # Process the streaming response for event in response['responseStream']: # Check if flow is complete. if 'flowCompletionEvent' in event: flow_status = event['flowCompletionEvent']['completionReason'] # Check if more input us needed from user. elif 'flowMultiTurnInputRequestEvent' in event: input_required = event # Print the model output. elif 'flowOutputEvent' in event: print(event['flowOutputEvent']['content']['document']) elif 'flowTraceEvent' in event: logger.info("Flow trace: %s", event['flowTraceEvent']) return { "flow_status": flow_status, "input_required": input_required, "execution_id": execution_id } if __name__ == "__main__": session = boto3.Session(profile_name='default', region_name='YOUR_FLOW_REGION') bedrock_agent_client = session.client('bedrock-agent-runtime') # Replace these with your actual flow ID and alias ID FLOW_ID = 'YOUR_FLOW_ID' FLOW_ALIAS_ID = 'YOUR_FLOW_ALIAS_ID' flow_execution_id = None finished = False # Get the intial prompt from the user. user_input = input("Enter input: ") flow_input_data = { "content": { "document": user_input }, "nodeName": "FlowInputNode", "nodeOutputName": "document" } logger.info("Starting flow %s", FLOW_ID) try: while not finished: # Invoke the flow until successfully finished. result = invoke_flow( bedrock_agent_client, FLOW_ID, FLOW_ALIAS_ID, flow_input_data, flow_execution_id) status = result['flow_status'] flow_execution_id = result['execution_id'] more_input = result['input_required'] if status == "INPUT_REQUIRED": # The flow needs more information from the user. logger.info("The flow %s requires more input", FLOW_ID) user_input = input( more_input['flowMultiTurnInputRequestEvent']['content']['document'] + ": ") flow_input_data = { "content": { "document": user_input }, "nodeName": more_input['flowMultiTurnInputRequestEvent']['nodeName'], "nodeInputName": "agentInputText" } elif status == "SUCCESS": # The flow completed successfully. finished = True logger.info("The flow %s successfully completed.", FLOW_ID) except botocore.exceptions.ClientError as e: print(f"Client error: {str(e)}") logger.error("Client error: %s", {str(e)}) except Exception as e: print(f"An error occurred: {str(e)}") logger.error("An error occurred: %s", {str(e)}) logger.error("Error type: %s", {type(e)})
DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.