利用流执行异步运行 Amazon Bedrock 流 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

利用流执行异步运行 Amazon Bedrock 流

利用流执行,您可以异步运行 Amazon Bedrock 流。这让流可以运行更长时间,还能释放控制权,以便应用程序执行其它任务。

当您使用 Amazon Bedrock 控制台或 InvokeFlow 操作运行一个流时,该流会一直运行到完成或在一小时后超时(以先到者为准)。当您运行流执行时,您的流可以运行更长时间:单个节点可以运行最多 5 分钟,整个流可以运行最多 24 小时。

注意

流执行在 Amazon Bedrock 中为预览版,可能会有变化。

运行流执行所需的权限

创建和管理流执行

您可以在控制台中或使用 StartFlowExecution 操作来创建流执行。

Console
  1. 按照在 Amazon Bedrock 中创建和设计流中的说明创建流。

  2. 按照在 Amazon Bedrock 中创建流的别名中的说明为流创建别名。

  3. 如果您尚未进入流生成器,请执行以下操作:

    1. 采用有权使用 Amazon Bedrock 控制台的 IAM 身份登录 AWS 管理控制台。然后,通过以下网址打开 Amazon Bedrock 控制台:https://console.aws.amazon.com/bedrock

    2. 从左侧导航窗格中选择 Amazon Bedrock 流,然后选择您的流。

  4. 选择执行选项卡,然后选择创建执行

  5. 创建执行对话框中,输入以下内容:

    1. 对于名称,输入流执行的名称。

    2. 选择别名中,选择要使用的流的别名。

    3. 对于提示输入,输入要用来启动流的提示。

    4. 选择创建以创建流执行并开始运行它。

  6. 在“流详细信息”页面上,选择执行选项卡,并在执行状态中记下流执行的状态。

  7. (可选)选择一个执行以打开流并查看执行摘要。

    执行输出中,您将看到流的输出。

  8. (可选)要停止流执行,请选择该执行并选择停止

API
启动流执行

要运行流执行,请使用 Amazon Bedrock 代理运行时端点发送 StartFlowExecution 请求。在请求中,指定要运行的流的流 ID 和流别名 ID。您也可以指定:

  • inputs – 一个数组,其中包含您希望流从中开始运行的输入节点。您可以在 content 字段中指定要发送到提示流输入节点的输入。

  • name – 流执行的名称。

{ "inputs": [{ "nodeName": "FlowInputNode", "nodeOutputName": "document", "content": { "document": "Test" } }], "name": "MyExecution" }

响应是流执行的 Amazon 资源名称(ARN)。您可以使用 executionArn 轮询流的当前状态,例如流执行完成或条件节点评测其条件的时间。

{ "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution" }
跟踪流执行的进度

使用 GetFlowExecution 操作获取您通过流的执行 ARN 识别的流当前状态。流状态为 RunningSucceededFailedTimedOutAborted

{ "endedAt": null, "errors": null, "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution", "flowAliasIdentifier": "TSTALIASID", "flowIdentifier": "FLOWID", "flowVersion": "DRAFT", "startedAt": "2025-03-20T23:32:28.899221162Z", "status": "Running" }

错误(如 Lambda 节点超时)会在 errors 数组中返回,如下例所示:

"errors": [{ "nodeName": "LambdaNode1", "errorType": "ExecutionTimedOut", "message": "Call to lambda function timed out" }],
获取流执行的结果

Amazon Bedrock 会将流的输出写入流的输出节点。您可能会在流完成后或流运行时获得输出(具体取决于您的使用案例)。

如果您希望流先完成,请调用 GetFlowExecution 并确保响应中 status 字段的值为 Succeeded

要从流执行中获取输出事件的列表,请调用 ListFlowExecutionEvents。在响应中,检查 flowExecutionEvents 中是否有 flowOutputEvent 对象。例如,您可以在 content 字段中获取流的输出:

{ "flowOutputEvent": { "content": { "document": "The model response." }, "nodeName": "FlowOutputNode" } }

通过将 eventType 查询参数设置为 Flow,您可以将 ListFlowExecutions 的输出限制为仅输入和输出节点。

查看事件

要帮助调试流执行,您可以使用 ListFlowExecutionEvents 操作来查看节点在流运行时生成的事件。将 eventType 查询参数设置为 Node,以查看响应中所有节点(包括中间节点)的输入和输出,类似于以下示例:

{ "flowExecutionEvents": [{ "nodeOutputEvent": { "fields": [{ "content": { "document": "History book" }, "name": "document" }], "nodeName": "FlowInputNode", "timestamp": "2025-05-05T18:38:56.637867516Z" } }, { "nodeInputEvent": { "fields": [{ "content": { "document": "History book" }, "name": "book" }], "nodeName": "Prompt_1", "timestamp": "2025-05-05T18:38:57.434600163Z" } }, { "nodeOutputEvent": { "fields": [{ "content": { "document": "Here's a summary of the history book." }, "name": "modelCompletion" }], "nodeName": "Prompt_1", "timestamp": "2025-05-05T18:39:06.034157077Z" } }, { "nodeInputEvent": { "fields": [{ "content": { "document": "Here's a summary of the history book." }, "name": "document" }], "nodeName": "FlowOutputNode", "timestamp": "2025-05-05T18:39:06.453128251Z" } } ] }
获取流执行的快照

当流执行开始时,Amazon Bedrock 会自动拍摄流定义和元数据的快照。这很有用,因为可以在流异步运行时对其进行更新。要检索此快照,请调用 GetExecutionFlowSnapshot 操作。响应包含以下流字段:

  • customerEncryptionKeyArn – 加密流的 AWS KMS 密钥的 ARN。

  • definition – 流的定义

  • executionRoleArn – 流执行使用的 IAM 服务角色的 ARN。

  • flowAliasIdentifier – 流的别名 ID。

  • flowIdentifier – 流的 ID。

  • flowVersion – 流的版本。

{ "customerEncryptionKeyArn": null, "definition": "{flow-definition}", "executionRoleArn": "arn:aws:iam::111122223333:role/name", "flowAliasIdentifier": "TSTALIASID", "flowIdentifier": "FLOWID", "flowVersion": "DRAFT" }
列出流执行

您可以通过调用 ListFlowExecutions 操作来获取流执行列表。响应包含一个 flowExecutionSummaries 数组,其中包含流或流别名的当前 AWS 区域中的每个流执行的相关信息。每个元素都包含执行 ARN、开始时间和流当前状态等信息。

{ "flowExecutionSummaries": [{ "createdAt": "2025-03-11T23:21:02.875598966Z", "endedAt": null, "executionArn": "arn:aws:bedrock:us-west-2:111122223333:flow/FLOWID/alias/TSTALIASID/execution/MyExecution", "flowAliasIdentifier": "TSTALIASID", "flowIdentifier": "FLOWID", "flowVersion": "DRAFT", "status": "Running" }] }
停止正在运行的流执行

如果您需要停止正在运行的流执行,请调用 StopFlowExecution 操作并传递要停止的执行的流 ID、流别名 ID 和流执行 ID。

流执行状态

流执行可能具有以下状态之一:

  • 正在运行 - 流执行正在进行中。

  • 成功 - 流执行已成功完成。

  • 失败 – 流执行因错误而失败。

  • 超时 – 流执行超过了 24 小时的最大运行时间。

  • 已中止 – 使用 StopFlowExecution 操作手动停止流执行。

不再运行的流执行将在 90 天后自动删除。

流执行的最佳实践

使用流执行时,请考虑以下几点:

  • 定期使用 GetFlowExecution 轮询流执行的状态,直到流达到最终状态(除 Running 之外的任何状态)。

  • 当流执行达到终止状态时,请使用 ListFlowExecutionEvents 来获取流的结果。例如,您可以使用这些结果来围绕流构建一些逻辑。

  • 使用 GetExecutionFlowSnapshot 获取流执行的快照,以在执行出现问题时帮助进行调试。