在线AI教程 / AI入门

[Amazon Bedrock] Amazon Bedrock AgentCore 上的 Web Answer 入门

· 转自:aws.amazon.com

人工智能 Amazon Bedrock AgentCore 上的 Web Answer 入门 今天,我们宣布 Web Answer 在 Amazon Bedrock AgentCo

转载本文转自「aws.amazon.com」,版权归原作者所有,内容已摘录正文、去除外部链接。

人工智能

Amazon Bedrock AgentCore 上的 Web Answer 入门

今天,我们宣布 Web Answer 在 Amazon Bedrock AgentCore 上全面可用。借助 Web Answer,代理构建者只需调用一次工具即可获得自然语言问题的综合、引用来源的答案。他们不再自己构建搜索、检索、综合和引用管道。

如果您构建了需要回答当前网络资源问题的代理,那么您就知道该模式:调用搜索 API、决定信任哪些结果、检索和清理页面内容、提示模型进行合成以及设计引文提取,以便输出可追溯到源。每一步都是您维护的代码,每一步都是可能出错的另一个地方:证据不足时产生幻觉,索引移动时内容陈旧,声明及其来源偏离时归因失效。

Web Answer 将整个管道折叠成一个请求。您发送一个问题。您可以在几秒钟内得到引用的答案。在这篇文章中,我们将解释 Web Answer 的作用,将其与 AgentCore 上的 Web 搜索进行比较,展示其工作原理及其返回的内容,并演练将 Web Answer 添加到网关并从代理调用它。

Web Answer 的作用

图 1:从代理通过网关到 Web 应答并返回的请求流

您的代理将问题发送到您的 AgentCore 网关,这是 Amazon Bedrock AgentCore 的一项功能。网关使用 AWS Identity and Access Management (AWS IAM) 或 JSON Web 令牌 (JWT) 对调用进行身份验证。网关使用自己的服务角色调用 Web Answer,这是 AWS 拥有的托管连接器。 Web Answer 计划其搜索,并行运行多个搜索,并读取关键页面以检查事实。当证据不足时,它会再次搜索。然后,它会编写一个答案,将每个声明与其源 URL 联系起来。网关将答案及其引用作为模型上下文协议 (MCP) 工具结果返回给您的代理。

Web Answer 是一种托管 AgentCore Gateway 工具,它接受自然语言问题,并在几秒钟内返回基于当前 Web 资源的综合答案。这是您得到的返回结果:

一个有根据的、被引用的答案,其中每个有根据的声明都映射到一个引文,并带有可用的源 URL。 当前来源。 Web Answer 会对每个问题运行新的搜索,其模型会给出今天的日期,以便它可以搜索最新信息。 代理搜索:Web Answer 计划自己的搜索,并行运行多个搜索,读取页面以验证事实,并决定何时有足够的证据来回答。 负责任的人工智能保障措施:Web Answer 是根据负责任的人工智能保障措施进行设计和测试的。

图 2:演示视频展示了如何将 Web Answer 添加到 AgentCore 网关,从设置到完成的引用答案

它与网络搜索有何不同

Web Answer 和 Web Search 工具都支持检索用例,具有不同级别的集成复杂性。分界线是谁运行模型:

网络搜索: 返回排名的 URL、标题、片段和元数据。您保留自己的模型并控制合成。当您想要完全控制结果的处理方式时,请使用 Web 搜索。 网络答案: 为您运行模型、代理检索循环、合成和归因。您会得到一个完整的、被引用的答案。当问题是较大代理内的子任务并且您不想为其拥有检索管道时,请使用 Web Answer。

许多客户都会同时使用两者。代理可能会使用 Web 搜索来执行需要原始结果的广泛研究任务,并使用 Web Answer 来执行需要快速引用的答案的特定事实问题。

设置并调用 Web Answer

Web Answer 是 AWS 拥有的连接器。您可以通过 ID 引用它,网关会处理工具架构、参数治理、端点解析和后端身份验证。在本演练中,您将授予网关的服务角色调用 Web Answer 的权限、添加 Web Answer 目标并从 Strands 代理调用它。

开始使用

开始需要几分钟。网关管理员将 Web Answer 添加为现有 AgentCore 网关上的目标,并且该工具通过“tools/list”和“tools/call”向通过 MCP 连接的任何代理显示。

先决条件

具有 AgentCore 网关访问权限的 AWS 账户。 us-east-1 中使用 IAM (AWS_IAM) 入站身份验证的 AgentCore 网关。要创建网关,请参阅开发人员指南中的创建 Amazon Bedrock AgentCore 网关。 在网关上具有“bedrock-agentcore:InvokeGateway”的身份的 AWS 凭证,以及对您的代理使用的模型的 Amazon Bedrock 访问权限。 Python 3.10 或更高版本,带有所需的软件包:pip install boto3strides-agents mcp mcp-proxy-for-aws

注意:执行这些步骤将创建会产生费用的 AWS 资源。网关和 Web 应答调用是计费的。有关详细信息,请参阅下面的定价部分,完成后,删除您创建的资源(请参阅“清理资源”)。

步骤 1:授予网关服务角色对 Web Answer 的访问权限

网关使用其服务角色代表您执行操作。该角色的信任策略允许“bedrock-agentcore.amazonaws.com”代入该角色,范围仅限于您的账户。对于 Web Answer,该角色需要:

bedrock-agentcore:InvokeWebAnswer,调用 Web Answer。网关针对 AWS 拥有的 ARN“arn:aws:bedrock-agentcore:us-east-1:aws:tool/web-answer.v1”的每个请求检查此权限。

将策略作为内联策略附加到服务角色:

import json import boto3

iam = boto3.client("iam")

iam.put_role_policy( RoleName="", PolicyName="WebAnswerGuide", PolicyDocument=json.dumps({ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeWebAnswer", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeWebAnswer", "Resource": "arn:aws:bedrock-agentcore:us-east-1:aws:tool/web-answer.v1", } ], }), )

该角色仅控制网关的呼出。谁可以呼叫您的网关由其入站授权者设置。该角色也不需要“bedrock:InvokeModel”:您的代理的模型在您的代理自己的身份下运行。

步骤 2:创建 Web Answer 目标

添加 Web Answer 作为连接器目标。 “connectorId”告诉网关要配置哪个管理集成:在本例中,是一个搜索网络并写入引用答案的代理。

import boto3

gateway_client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")

target_response = gateway_client.create_gateway_target( name="web-answer-tool", gatewayIdentifier=gateway_id, targetConfiguration={ "mcp": { "connector": { "source": {"connectorId": "web-answer"}, "configurations": [{"name": "WebAnswer", "parameterValues": {}}], } } }, credentialProviderConfigurations=[ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ], ) target_id = target_response["targetId"]

连接器的出站身份验证是自动的。通过“GATEWAY_IAM_ROLE”,网关使用步骤 1 中的服务角色调用 Web Answer 后端,因此您无需为该工具创建或存储任何凭据。等到“get_gateway_target”将目标状态报告为“READY”后再调用它。

作为网关管理员,您还可以在目标上设置域过滤器。该过滤器适用于通过目标的每个调用。要将目标限制为一组域,请将 parameterValues 设置为 {"domainFilter": {"include": ["bis.org"], "exclude": ["unreliable-source.net"]}}。

步骤 3:从 Strands 代理调用 Web Answer

您的代理通过网关的“tools/list”发现 Web Answer,并使用“tools/call”调用它,就像任何其他 MCP 工具一样。这适用于 Strands Agents、LangChain、LangGraph、CrewAI 或任何其他 MCP 兼容客户端。

from strands import Agent from strands.models.bedrock import BedrockModel from strands.tools.mcp import MCPClient from mcp_proxy_for_aws.client import aws_iam_streamablehttp_client

gateway_url = "https://gateway-.gateway.bedrock-agentcore.us-east-1.amazonaws.com/mcp"

mcp_client = MCPClient(lambda: aws_iam_streamablehttp_client( endpoint=gateway_url, aws_region="us-east-1", aws_service="bedrock-agentcore", aws_profile="", # identity with bedrock-agentcore:InvokeGateway on the Gateway ))

model = BedrockModel(model_id="us.anthropic.claude-sonnet-5", max_tokens=1024)

with mcp_client: tools = mcp_client.list_tools_sync() # Web Answer tool discovered from the Gateway agent = Agent(model=model, tools=tools)

result = agent("What are the Basel III minimum requirements for Tier 1 capital?") print(result.message)

当问题需要当前信息时,您的客服人员会调用 Web Answer 工具 (web-answer-tool___WebAnswer)。 Web Answer 运行代理搜索并返回带有引文的最终答案。

除了问题之外,Web Answer 工具还采用您的代理可以在每次呼叫中设置的可选参数:用于包含或排除网站的域过滤器、发布日期范围以及用于本地化结果的国家/地区。代理的域过滤器与目标的过滤器相结合。代理可以排除更多域,或将结果限制为目标包含的某些域,但它无法添加目标过滤器阻止的域。

响应格式

Web Answer 返回包含内容和结构化内容字段的 MCP 工具结果。答案是带有内联引用标记的 Markdown 文本,例如 [1],并且 StructuredContent.answer 带有相同的文本以及结构化引用列表:

{ "content": [ { "type": "text", "text": "Under Basel III, banks must hold Common Equity Tier 1 capital of at least 4.5% of risk-weighted assets [1]..." } ], "structuredContent": { "answer": [ { "text": "Under Basel III, banks must hold Common Equity Tier 1 capital of at least 4.5% of risk-weighted assets [1]...", "citations": [ { "domain": "bis.org", "url": "https://www.bis.org/..." } ] } ] }, "isError": false, "_meta": { "latencyMs": 5210 } }

StructuredContent.answer 通常包含一个块。每个引文都带有源 URL 和域(如果有)。

清理资源

当您不再需要 Web Answer 目标时将其删除:

gateway_client.delete_gateway_target(gatewayIdentifier=gateway_id, targetId=target_id)

如果您仅为本演练创建了网关,请先删除其目标,然后删除网关 (delete_gateway),最后删除服务角色及其策略。除了这些资源之外,AWS 端没有持久的基础设施。删除它们后,您将不再产生费用。

企业控件,内置

Web Answer 继承了与其他 AgentCore 工具相同的企业控件:

网关身份验证。 无需为 Web Answer 提供、轮换或管理单独的 API 密钥。调用者使用您配置的入站方法(例如 AWS IAM (SigV4) 或来自身份提供商的 JSON Web 令牌)对网关进行身份验证。然后,网关使用自己的服务角色调用 Web Answer,该角色需要“bedrock-agentcore:InvokeWebAnswer”权限。 VPC 和 AWS PrivateLink。 您的代理可以通过接口虚拟私有云 (VPC) 终端节点 (com.amazonaws.us-east-1.bedrock-agentcore.gateway) 调用网关,因此流量不会与公共互联网连接。 零数据流出。 您的查询和结果保留在您的 AWS 环境中。 Amazon CloudWatch 指标。 操作指标从第一次调用就发布到 CloudWatch。 每个账户的速率限制。 自发布起强制实施,美国东部(弗吉尼亚北部)(us-east-1) 的每个账户每秒 10 笔交易。要请求增加,请联系 AWS Support。 管理时策略范围。 网关管理员在目标设置时设置域过滤器范围。代理可以缩小每次调用的过滤范围,但不能扩大范围。 查询保留在 AWS 内。 Web Answer 搜索 Amazon 运营的 Web 索引和 Amazon 的知识图,并且不会将您的问题发送到第三方搜索引擎或外部网站。

用例

Web Answer 帮助客服人员检索当前引用的信息,以支持一系列知识密集型工作流程。示例场景包括:

金融服务。 监管问答代理回答有关合规要求、市场监管和政策变化的问题,每个答案都必须追溯到权威来源。 医疗保健。 临床支持代理根据当前医学文献和网络上发布的治疗指南做出反应。 客户服务。 支持代理实时回答产品和政策问题,其中十个排名链接没有用,引用的答案有用。 法律与合规性。 研究助理回答有关判例法、监管文件和政策解释以及可审计引文的问题。 企业知识工作者。 内部副驾驶可以根据当前公共信息回答问题,无需员工构建自己的搜索和综合工作流程。

可用性

Web Answer 已在美国东部(弗吉尼亚北部)(us-east-1) 推出,更多 AWS 区域即将推出。

定价

Amazon Bedrock AgentCore 上的 Web Answer 的价格为每 1,000 次工具调用 10 美元。

## 结论

在这篇文章中,我们展示了 Web Answer 如何通过代理搜索为您的代理提供最新的引用答案,而无需您构建或维护搜索管道。我们授予网关服务角色对 Web Answer 的访问权限,添加 Web Answer 目标,从 Strands 代理调用它,并从响应中读取答案及其引用。当您自己的模型应该对原始结果进行推理时,请使用 AgentCore 上的 Web 搜索,而当您的代理需要完成的引用答案时,请使用 Web Answer。

要开始使用,请参阅:

Amazon Bedrock AgentCore 文档上的 Web Answer Web Answer 结构化输出架构 向 Amazon Bedrock AgentCore 网关添加 Web 应答 支持的区域

关于作者