Jalankan contoh kode Amazon Bedrock Flows - Amazon Bedrock

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jalankan contoh kode Amazon Bedrock Flows

Contoh kode berikut mengasumsikan bahwa Anda telah memenuhi prasyarat berikut:

  1. Siapkan peran untuk memiliki izin untuk tindakan Amazon Bedrock. Jika belum, lihatMemulai dengan Amazon Bedrock.

  2. Siapkan kredensyal Anda untuk menggunakan API. AWS Jika belum, lihatMemulai dengan API.

  3. Buat peran layanan untuk melakukan tindakan terkait aliran atas nama Anda. Jika belum, lihatBuat peran layanan untuk Amazon Bedrock Flows di Amazon Bedrock.

Untuk mencoba beberapa contoh kode untuk Amazon Bedrock Flows, pilih tab untuk metode pilihan Anda, lalu ikuti langkah-langkahnya:

Python
  1. Buat alur menggunakan CreateFlowpermintaan dengan titik akhir waktu build Agents for Amazon Bedrock dengan node berikut:

    • Sebuah simpul masukan.

    • Node prompt dengan inline yang ditentukan prompt yang membuat daftar putar musik menggunakan dua variabel (genredannumber).

    • Sebuah node output yang mengembalikan penyelesaian model.

    Jalankan cuplikan kode berikut untuk memuat AWS SDK for Python (Boto3), membuat klien Amazon Bedrock Agents, dan buat alur dengan node (ganti executionRoleArn bidang dengan ARN peran layanan yang Anda buat untuk flow):

    # 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/MyFlowsRole" # 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. Buat daftar alur di akun Anda, termasuk yang baru saja Anda buat, dengan menjalankan cuplikan kode berikut untuk membuat ListFlowspermintaan dengan titik akhir waktu build Agents for Amazon Bedrock:

    client.list_flows()
  3. Dapatkan informasi tentang alur yang baru saja Anda buat dengan menjalankan cuplikan kode berikut untuk membuat GetFlowpermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

    client.get_flow(flowIdentifier=flow_id)
  4. Siapkan alur Anda sehingga perubahan terbaru dari draf kerja diterapkan dan sehingga siap untuk versi. Jalankan cuplikan kode berikut untuk membuat PrepareFlowpermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

    client.prepare_flow(flowIdentifier=flow_id)
  5. Versi draf kerja alur Anda untuk membuat snapshot statis aliran Anda dan kemudian mengambil informasi tentangnya dengan tindakan berikut:

    1. Buat versi dengan menjalankan cuplikan kode berikut untuk membuat CreateFlowVersionpermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      response = client.create_flow_version(flowIdentifier=flow_id) flow_version = response.get("version")
    2. Buat daftar semua versi alur Anda dengan menjalankan cuplikan kode berikut untuk membuat ListFlowVersionspermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      client.list_flow_versions(flowIdentifier=flow_id)
    3. Dapatkan informasi tentang versi dengan menjalankan cuplikan kode berikut untuk membuat GetFlowVersionpermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      client.get_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
  6. Buat alias untuk menunjuk ke versi alur yang Anda buat lalu ambil informasi tentangnya dengan tindakan berikut:

    1. Buat alias dan arahkan ke versi yang baru saja Anda buat dengan menjalankan cuplikan kode berikut untuk membuat CreateFlowAliaspermintaan dengan titik akhir waktu build Agents for Amazon Bedrock:

      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. Buat daftar semua alias alur Anda dengan menjalankan cuplikan kode berikut untuk membuat ListFlowAliasspermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      client.list_flow_aliases(flowIdentifier=flow_id)
    3. Dapatkan informasi tentang alias yang baru saja Anda buat dengan menjalankan cuplikan kode berikut untuk membuat GetFlowAliaspermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      client.get_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
  7. Jalankan cuplikan kode berikut untuk membuat klien Amazon Bedrock Agents Runtime dan menjalankan alur. Permintaan mengisi variabel dalam prompt di alur Anda dan menampilkan respons dari model untuk membuat InvokeFlowpermintaan dengan titik akhir waktu proses 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("Flow invocation was successful! The output of the flow is as follows:\n") print(result['flowOutputEvent']['content']['document']) else: print("The flow invocation completed because of the following reason:", result['flowCompletionEvent']['completionReason'])

    Respons harus mengembalikan daftar putar musik pop dengan tiga lagu.

  8. Hapus alias, versi, dan aliran yang Anda buat dengan tindakan berikut:

    1. Hapus alias dengan menjalankan cuplikan kode berikut untuk membuat DeleteFlowAliaspermintaan dengan titik akhir waktu build Agen untuk Amazon Bedrock:

      client.delete_flow_alias(flowIdentifier=flow_id, aliasIdentifier=flow_alias_id)
    2. Hapus versi dengan menjalankan cuplikan kode berikut untuk membuat DeleteFlowVersionpermintaan dengan titik akhir waktu pembuatan Agen untuk Amazon Bedrock:

      client.delete_flow_version(flowIdentifier=flow_id, flowVersion=flow_version)
    3. Hapus alur dengan menjalankan cuplikan kode berikut untuk membuat DeleteFlowpermintaan dengan titik akhir waktu build Agen untuk Amazon Bedrock:

      client.delete_flow(flowIdentifier=flow_id)