Bedrock 新增了“Amazon Bedrock 的提示流”功能。🎉🎉🎉 目前该功能处于预览状态,并且在东京区域也可以使用。
https://docs.aws.amazon.com/bedrock/latest/userguide/flows.html
关于同时新增的“Prompt management in Amazon Bedrock”功能,请参见以下链接:
Bedrock的新功能“Amazon Bedrock中的提示管理”
我已经迫不及待地试用了。
界面如下所示。
从左侧选择节点并添加。用于调用Bedrock的节点是Prompts(或Agents)。 可以简单理解为它们分别调用了“Amazon Bedrock中的提示管理”和“Amazon Bedrock的代理”。
在Prompts节点中,可以选择通过“Amazon Bedrock中的提示管理”定义的提示,或者直接在此界面中指定提示。 截至今天,如果选择通过“Prompt management”定义的提示,尚未成功连接,因此我将尝试直接指定。
提示中的变量会自动被识别,并且会反映在节点中。
节点的输出可以定义类型。如果类型定义不匹配,在保存时会出现错误。
如果将流程的输入定义为以下格式,可以在接收端指定要设置的值。(在下面的例子中,分别接收language和content)
{
"language": "english",
"content": "ニューヨークで開催されているAWS Summitでは、Bedrockに関する様々な新機能が発表されています"
}
流程完成后就可以保存了。 此时,调用Bedrock等所需的权限会自动分配给IAM角色。(类似于Step Functions的角色创建,但这个过程是自动进行的)
保存后,可以进行测试执行。
下面介绍一下可以选择的节点:
- Logic
- Orchestration和Code
- Data
S3 Retrieval 用于获取存储在 S3 中的对象内容(例如文本)。
S3 Storage 用于将文本保存为 S3 中的对象。
- Ai Services
现时点可选用的只有Lex。
如果要通过API调用,需要使用“InvokeFlow” API。
https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeFlow.html
Boto3 已经在最新的 1.34.143 版本中支持该功能。
请使用 “bedrock-agent-runtime”,而不是 “bedrock-runtime”。
import boto3
client = boto3.client("bedrock-agent-runtime")
response = client.invoke_flow(
flowIdentifier="9GPLBZE7SF",
flowAliasIdentifier="TSTALIASID",
inputs=[
{
"content": {
"document": {
"language": "english",
"content": "ニューヨークで開催されているAWS Summitでは、Bedrockに関する様々な新機能が発表されています",
},
},
"nodeName": "FlowInputNode",
"nodeOutputName": "document",
}
],
)
event_stream = response["responseStream"]
for event in event_stream:
print(event)
{'flowOutputEvent': {'content': {'document': "Here's the English translation:\n\nVarious new features related to Bedrock are being announced at the AWS Summit being held in New York."}, 'nodeName': 'FlowOutputNode'}}
{'flowCompletionEvent': {'completionReason': 'SUCCESS'}}
虽然这种格式不太常见,但我成功获取到了数据。