Exemples de code Run Prompt Flows - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de code Run Prompt Flows

Note

Prompt Flows est en cours d'aperçu et est sujet à modification.

Les exemples de code suivants supposent que vous avez rempli les conditions préalables suivantes :

  1. Configurez un rôle pour qu'il soit autorisé à effectuer des actions sur Amazon Bedrock. Si ce n'est pas le cas, reportez-vous àCommencer à utiliser Amazon Bedrock.

  2. Configurez vos informations d'identification pour utiliser le AWS API. Si ce n'est pas le cas, reportez-vous àCommencer à utiliser l' AWS API.

  3. Créez un rôle de service pour effectuer des actions rapides liées au flux en votre nom. Si ce n'est pas le cas, reportez-vous àCréation d'un rôle de service pour Prompt flows dans Amazon Bedrock.

Pour tester des exemples de code pour Prompt flows, sélectionnez l'onglet correspondant à la méthode de votre choix et suivez les étapes.

Python
  1. Créez un flux rapide à l'aide d'une CreateFlowdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) avec un point de terminaison Agents for Amazon Bedrock créé au moment de la création avec les nœuds suivants :

    • Un nœud d'entrée.

    • Un nœud d'invite avec une invite définie en ligne qui crée une liste de lecture musicale à l'aide de deux variables (genreetnumber).

    • Un nœud de sortie qui renvoie l'achèvement du modèle.

    Exécutez l'extrait de code suivant pour charger AWS SDK for Python (Boto3), créez un client Amazon Bedrock Agents et créez un flux rapide avec les nœuds (remplacez le executionRoleArn champ par le rôle ARN de service que vous avez créé pour le flux rapide) :

    # Import Python SDK and create client import boto3 client = boto3.client(service_name='bedrock-agent') # Replace with the service role that you created. For more information, see https://docs.aws.amazon.com/bedrock/latest/userguide/flows-permissions.html FLOWS_SERVICE_ROLE = "arn:aws:iam::123456789012:role/MyPromptFlowsRole" # Define each node # The input node validates that the content of the InvokeFlow request is a JSON object. input_node = { "type": "Input", "name": "FlowInput", "outputs": [ { "name": "document", "type": "Object" } ] } # This prompt node defines an inline prompt that creates a music playlist using two variables. # 1. {{genre}} - The genre of music to create a playlist for # 2. {{number}} - The number of songs to include in the playlist # It validates that the input is a JSON object that minimally contains the fields "genre" and "number", which it will map to the prompt variables. # The output must be named "modelCompletion" and be of the type "String". prompt_node = { "type": "Prompt", "name": "MakePlaylist", "configuration": { "prompt": { "sourceConfiguration": { "inline": { "modelId": "amazon.titan-text-express-v1", "templateType": "TEXT", "inferenceConfiguration": { "text": { "temperature": 0.8 } }, "templateConfiguration": { "text": { "text": "Make me a {{genre}} playlist consisting of the following number of songs: {{number}}." } } } } } }, "inputs": [ { "name": "genre", "type": "String", "expression": "$.data.genre" }, { "name": "number", "type": "Number", "expression": "$.data.number" } ], "outputs": [ { "name": "modelCompletion", "type": "String" } ] } # The output node validates that the output from the last node is a string and returns it as is. The name must be "document". output_node = { "type": "Output", "name": "FlowOutput", "inputs": [ { "name": "document", "type": "String", "expression": "$.data" } ] } # Create connections between the nodes connections = [] # First, create connections between the output of the flow input node and each input of the prompt node for input in prompt_node["inputs"]: connections.append( { "name": "_".join([input_node["name"], prompt_node["name"], input["name"]]), "source": input_node["name"], "target": prompt_node["name"], "type": "Data", "configuration": { "data": { "sourceOutput": input_node["outputs"][0]["name"], "targetInput": input["name"] } } } ) # Then, create a connection between the output of the prompt node and the input of the flow output node connections.append( { "name": "_".join([prompt_node["name"], output_node["name"]]), "source": prompt_node["name"], "target": output_node["name"], "type": "Data", "configuration": { "data": { "sourceOutput": prompt_node["outputs"][0]["name"], "targetInput": output_node["inputs"][0]["name"] } } } ) # Create the flow from the nodes and connections response = client.create_flow( name="FlowCreatePlaylist", description="A flow that creates a playlist given a genre and number of songs to include in the playlist.", executionRoleArn=FLOWS_SERVICE_ROLE, definition={ "nodes": [input_node, prompt_node, output_node], "connections": connections } ) flow_id = response.get("id")
  2. Répertoriez les flux d'invite de votre compte, y compris celui que vous venez de créer, en exécutant l'extrait de code suivant pour effectuer une ListFlowsdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

    client.list_flows()
  3. Obtenez des informations sur le flux d'invite que vous venez de créer en exécutant l'extrait de code suivant pour effectuer une GetFlowdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

    client.get_flow(flowIdentifier=flow_id)
  4. Préparez votre flux de messages de manière à ce que les dernières modifications apportées au brouillon soient appliquées et qu'il soit prêt à être mis à jour. Exécutez l'extrait de code suivant pour effectuer une PrepareFlowdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

    client.prepare_flow(flowIdentifier=flow_id)
  5. Versionnez le brouillon de votre flux d'appels pour créer un instantané statique de votre flux d'appels, puis récupérez les informations le concernant en effectuant les actions suivantes :

    1. Créez une version en exécutant l'extrait de code suivant pour effectuer une CreateFlowVersiondemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      response = client.create_flow_version(flowIdentifier=flow_id) flow_version = response.get("version")
    2. Répertoriez toutes les versions de votre flux d'invite en exécutant l'extrait de code suivant pour effectuer une ListFlowVersionsdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.list_flow_versions(flowIdentifier=flow_id)
    3. Obtenez des informations sur la version en exécutant l'extrait de code suivant pour effectuer une GetFlowVersiondemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.get_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
  6. Créez un alias pour pointer vers la version de votre flux d'invite que vous avez créée, puis récupérez les informations le concernant en effectuant les actions suivantes :

    1. Créez un alias et pointez-le vers la version que vous venez de créer en exécutant l'extrait de code suivant pour effectuer une CreateFlowAliasdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      response = client.create_flow_alias( flowIdentifier="FLOW123456", name="latest", description="Alias pointing to the latest version of the flow.", routingConfiguration=[ { "flowVersion": flow_version } ] ) flow_alias_id = response.get("id")
    2. Répertoriez tous les alias de votre flux d'invite en exécutant l'extrait de code suivant pour effectuer une ListFlowAliassdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.list_flow_aliases(flowIdentifier=flow_id)
    3. Obtenez des informations sur l'alias que vous venez de créer en exécutant l'extrait de code suivant pour effectuer une GetFlowAliasdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.get_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
  7. Exécutez l'extrait de code suivant pour créer un client Amazon Bedrock Agents Runtime et appeler un flux. La demande remplit les variables de l'invite dans votre flux d'invite et renvoie la réponse du modèle pour effectuer une InvokeFlowdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock :

    client_runtime = boto3.client('bedrock-agent-runtime') response = client_runtime.invoke_flow( flowIdentifier=flow_id, flowAliasIdentifier=flow_alias_id, inputs=[ { "content": { "document": { "genre": "pop", "number": 3 } }, "nodeName": "FlowInput", "nodeOutputName": "document" } ] ) result = {} for event in response.get("responseStream"): result.update(event) if result['flowCompletionEvent']['completionReason'] == 'SUCCESS': print("Prompt flow invocation was successful! The output of the prompt flow is as follows:\n") print(result['flowOutputEvent']['content']['document']) else: print("The prompt flow invocation completed because of the following reason:", result['flowCompletionEvent']['completionReason'])

    La réponse devrait renvoyer une playlist de musique pop avec trois chansons.

  8. Supprimez l'alias, la version et le flux d'invite que vous avez créés en effectuant les actions suivantes :

    1. Supprimez l'alias en exécutant l'extrait de code suivant pour effectuer une DeleteFlowAliasdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.delete_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
    2. Supprimez la version en exécutant l'extrait de code suivant pour effectuer une DeleteFlowVersiondemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.delete_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
    3. Supprimez le flux en exécutant l'extrait de code suivant pour effectuer une DeleteFlowdemande (voir le lien pour les formats de demande et de réponse et les détails des champs) auprès d'un point de terminaison Agents for Amazon Bedrock au moment de la création :

      client.delete_flow(flowIdentifier=flow_id)