本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从您的应用程序中调用代理
通过使用适用于 A mazon Bedrock 的代理运行时终端节点InvokeAgent提出请求,在应用程序中使用您的代理。
默认情况下,来自的响应InvokeAgent
包括一个块,其中包含代理的完整响应,可能需要一段时间才能完成。或者,您可以配置为InvokeAgent
以多个较小的区块流式传输响应。这样可以减少代理初始响应的延迟。
直播回复
您可以选择通过在流媒体配置true
中将设置streamFinalResponse
为来启用响应流式传输(StreamingConfigurations)。响应流包含多个事件,响应的每个部分按顺序分块。
要流式传输响应,请确保代理执行角色包含已配置代理模型的bedrock:InvokeModelWithResponseStream
权限。有关更多信息,请参阅 代理服务角色的基于身份的权限。。
如果您的代理配置了 Guardrail,则还可以在applyGuardrailInterval
中指定StreamingConfigurations
,以控制拨出响应字符的ApplyGuardrail
呼叫频率(例如,每 50 个字符)。
默认情况下,护栏间隔设置为 50 个字符。如果指定了较大的间隔,则响应将以较大的区块生成,ApplyGuardrail
调用次数更少。以下示例显示了为 Hello,我是代理输入字符串生成的响应。
分块响应示例:间隔设置为 3 个字符
'Hel', 'lo, ', 'I am', ' an', ' Age', 'nt'
除最后一个区块外,每个区块至少有 3 个字符。
分块响应示例:间隔设置为 20 个或更多字符
'Hello, I am an Agent'
调用代理
以下Python示例说明如何调用该InvokeAgent操作并显示代理的输出以及该呼叫生成的任何跟踪信息。
调用代理
-
按照中的说明创建代理手动创建和配置代理。记下代理的 ID。如有必要,您可以稍后获取身份证。有关更多信息,请参阅 查看关于代理的信息。
按照中的说明为代理创建别名为代理创建别名。记下别名的 ID。如有必要,您可以稍后获取身份证。有关更多信息,请参阅 在 Amazon Bedrock 中查看有关代理别名的信息。
运行以下代码。将的值更新
agent_id
为代理的 ID,将的值更新alias_id
为代理的别名 ID。要流式传输来自代理的响应,请将的值更改streamFinalResponse
为True
。您也可以通过更改的值来更改护栏间隔。applyGuardrailInterval
import boto3 import logging from botocore.exceptions import ClientError logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def invoke_agent(client, agent_id, alias_id, prompt, session_id): response = client.invoke_agent( agentId=agent_id, agentAliasId=alias_id, enableTrace=True, sessionId = session_id, inputText=prompt, streamingConfigurations = { "applyGuardrailInterval" :
20
, "streamFinalResponse" :False
} ) completion = "" for event in response.get("completion"): #Collect agent output. if 'chunk' in event: chunk = event["chunk"] completion += chunk["bytes"].decode() # Log trace output. if 'trace' in event: trace_event = event.get("trace") trace = trace_event['trace'] for key, value in trace.items(): logging.info("%s: %s",key,value) print(f"Agent response: {completion}") if __name__ == "__main__": client=boto3.client( service_name="bedrock-agent-runtime" ) agent_id = "AGENT_ID
" alias_id = "ALIAS_ID
" session_id = "MY_SESSION_ID
" prompt = "Prompt to send to agent
" try: invoke_agent(client, agent_id, alias_id, prompt, session_id) except ClientError as e: print(f"Client error: {str(e)}") logger.error("Client error: %s", {str(e)})