Amazon Bedrock AgentCore 上的 Web Answer 正式可用
Getting started with Web Answer on Amazon Bedrock AgentCore
Amazon Bedrock AgentCore 的 Web Answer 正式可用,智能体开发者只需一次工具调用即可获得带来源引用的合成答案,无需自建搜索、检索、合成与引用提取流水线。
今天,我们宣布 Amazon Bedrock AgentCore 上的 Web Answer 正式可用。借助 Web Answer,智能体构建者只需一次工具调用,即可获得针对自然语言问题的、经过综合并标注来源的答案。他们不再需要自行构建搜索、检索、综合与引用提取的流水线。
如果你构建过需要从当前网络来源回答问题的智能体,你就熟悉这个模式:调用搜索 API、判断哪些结果可信、检索并清理页面内容、提示模型进行综合,并设计引用提取逻辑,使输出能够追溯到来源。每一步都是你需要维护的代码,每一步也都是可能出错的环节:证据不足时产生幻觉、索引变动导致内容过时,以及论断与来源脱节时归属断裂。
Web Answer 将整个流水线浓缩为一次请求。你发送一个问题,几秒钟内就能收到带引用的答案。在本文中,我们将说明 Web Answer 的功能,将其与 AgentCore 上的 Web Search 进行对比,展示其工作原理和返回内容,并演示如何将 Web Answer 添加到网关并从智能体中调用它。
Web Answer 的功能
图 1:从智能体经网关到 Web Answer 再返回的请求流程
你的智能体向 AgentCore Gateway(Amazon Bedrock AgentCore 的一项能力)发送问题。网关使用 AWS Identity and Access Management(AWS IAM)或 JSON Web Token(JWT)对调用进行身份验证。网关使用自己的服务角色调用 Web Answer——一个由 AWS 拥有的托管连接器。Web Answer 规划搜索、并行执行多次搜索,并阅读关键页面以核实事实。当证据不足时,它会再次搜索。随后它撰写答案,将每项论断与其来源 URL 关联。网关将答案及其引用作为 Model Context Protocol(MCP)工具结果返回给你的智能体。
Web Answer 是一个托管的 AgentCore Gateway 工具,接收自然语言问题,并在几秒钟内返回基于当前网络来源综合生成的答案。以下是你会得到的内容:
- 有依据、带引用的答案,其中每项有依据的论断都映射到一条引用,并在可用时提供来源 URL。
- 当前来源。Web Answer 会针对每个问题执行新的搜索,并且其模型会被告知今天的日期,以便搜索最新信息。
- 智能体式搜索:Web Answer 自行规划搜索、并行执行多次搜索、阅读页面以核实事实,并判断何时已有足够证据来作答。
- 负责任 AI 保障:Web Answer 在设计时考虑了负责任 AI 保障,并经过相应测试。
图 2:演示视频,展示如何将 Web Answer 添加到 AgentCore Gateway,从设置到获得最终的带引用答案
与 Web Search 的区别
Web Answer 和 Web Search 工具都支持检索用例,但集成复杂度不同。分界线在于由谁运行模型:
- Web Search:返回排序后的 URL、标题、摘要和元数据。你保留自己的模型并控制综合过程。当你希望完全控制结果处理方式时,使用 Web Search。
- Web Answer:为你运行模型、智能体式检索循环、综合和归属。你获得一个最终的、带引用的答案。当问题只是更大智能体中的一个子任务,而你不希望为其维护检索流水线时,使用 Web Answer。
许多客户会同时使用两者。Agent 可能会在需要原始结果的广泛研究任务中使用 Web Search,而在需要快速、带引用的答案的具体事实性问题中使用 Web Answer。
设置并调用 Web Answer
Web Answer 是 AWS 拥有的连接器。你通过 ID 引用它,Gateway 负责处理工具 schema、参数治理、端点解析以及对后端的身份验证。在本演练中,你为 Gateway 的服务角色授予调用 Web Answer 的权限,添加一个 Web Answer 目标,并从 Strands agent 中调用它。
开始使用
开始使用只需几分钟。Gateway 管理员将 Web Answer 作为目标添加到现有的 AgentCore Gateway 上,该工具就会通过 tools/list 和 tools/call 以 MCP 形式出现在任何已连接的 agent 面前。
先决条件
- 一个具有 AgentCore Gateway 访问权限的 AWS 账户。
- 一个位于 us-east-1、使用 IAM(
AWS_IAM)入站身份验证的 AgentCore Gateway。要创建一个,请参阅 Developer Guide 中的 Create an Amazon Bedrock AgentCore Gateway。 - 一个身份的 AWS 凭证,该身份对 Gateway 具有
bedrock-agentcore:InvokeGateway权限,并且对你的 agent 所使用的模型具有 Amazon Bedrock 访问权限。 - Python 3.10 or later, with the required packages:
pip install boto3 strands-agents mcp mcp-proxy-for-aws
注意:执行这些步骤会创建产生费用的 AWS 资源。Gateway 和 Web Answer 的调用均需计费。详情请参阅后面的定价部分,完成后请删除你创建的资源(参见“清理资源”)。
步骤 1:授予 Gateway 服务角色访问 Web Answer 的权限
Gateway 使用其服务角色代表你执行操作。该角色的信任策略允许 bedrock-agentcore.amazonaws.com 代入它,范围限定在你的账户内。对于 Web Answer,该角色需要:
bedrock-agentcore:InvokeWebAnswer,用于调用 Web Answer。Gateway 会针对 AWS 拥有的 ARNarn:aws:bedrock-agentcore:us-east-1:aws:tool/web-answer.v1在每次请求时检查此权限。
将该策略作为内联策略附加到服务角色:
import json
import boto3
iam = boto3.client("iam")
iam.put_role_policy(
RoleName="<gateway-service-role>",
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",
}
],
}),
)该角色仅控制 Gateway 的出站调用。谁可以调用你的 Gateway 由其入站授权方设置。该角色也不需要 bedrock:InvokeModel:你的 agent 的模型在 agent 自己的身份下运行。
步骤 2:创建 Web Answer 目标
将 Web Answer 添加为连接器目标。connectorId 告诉 Gateway 要预置哪个托管集成:在本例中,是一个搜索网络并撰写带引用答案的 agent。
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,Gateway 会使用步骤 1 中的服务角色调用 Web Answer 后端,因此你无需为该工具创建或存储任何凭证。在调用之前,请等待 get_gateway_target 报告目标状态为 READY。
作为 Gateway 管理员,你还可以在目标上设置域过滤器。该过滤器适用于通过该目标的所有调用。要将目标限制为一组域,请将 parameterValues 设置为 {"domainFilter": {"include": ["bis.org"], "exclude": ["unreliable-source.net"]}}。
步骤 3:从 Strands agent 调用 Web Answer
你的 agent 通过 Gateway 的 tools/list 发现 Web Answer,并像调用任何其他 MCP 工具一样使用 tools/call 调用它。这适用于 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-<id>.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="<aws-profile-id>", # 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)当问题需要最新信息时,你的 agent 会调用 Web Answer 工具(web-answer-tool___WebAnswer)。Web Answer 会运行 agentic 搜索并返回带有引用的完整答案。
除了问题之外,Web Answer 工具还接受你的 agent 可以在每次调用时设置的可选参数:用于包含或排除站点的域过滤器、发布日期范围以及用于本地化结果的国家/地区。agent 的域过滤器会与目标的过滤器合并。agent 可以排除更多域,或将结果限制在目标包含的某些域内,但不能添加被目标过滤器阻止的域。
响应格式
Web Answer 返回一个 MCP 工具结果,其中同时包含 content 和 structuredContent 字段。答案是带有内联引用标记(如 [1])的 markdown 文本,而 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](https://www.bis.org/...)]..."
}
],
"structuredContent": {
"answer": [
{
"text": "Under Basel III, banks must hold Common Equity Tier 1 capital of at least 4.5% of risk-weighted assets [[1](https://www.bis.org/...)]...",
"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)如果你仅为本次演练创建了 Gateway,请先删除其目标,然后删除 Gateway(delete_gateway),最后删除服务角色及其策略。除这些资源外,AWS 侧不存在持久性基础设施。移除它们后,你将停止产生费用。
内置的企业级控制
Web Answer 继承与其他 AgentCore 工具相同的企业级控制:
- Gateway 身份验证。无需为 Web Answer 单独预置、轮换或管理 API 密钥。调用方使用你配置的入站方法向网关进行身份验证,例如 AWS IAM(SigV4)或来自身份提供商的 JSON Web Token。随后网关使用其自身的服务角色调用 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。
- 管理员时策略边界。Gateway 管理员在目标设置时设定域名过滤边界。代理可以在每次调用时收窄过滤边界,但不能放宽。
- 查询保留在 AWS 内。Web Answer 搜索由 Amazon 运营的网页索引和 Amazon 知识图谱,不会将你的问题发送给第三方搜索引擎或外部网站。
使用场景
Web Answer 帮助代理检索带有引用的最新信息,以支持一系列知识密集型工作流。示例场景包括:
- 金融服务。监管问答代理回答有关合规要求、市场法规和政策变化的问题,其中每个答案都必须追溯到权威来源。
- 医疗保健。临床支持代理将回答建立在网络上发布的最新医学文献和治疗指南之上。
- 客户服务。支持代理实时回答产品和政策问题,在这种情况下,十个排名链接并无用处,而带有引用的答案才有用。
- 法律与合规。研究助理回答有关判例法、监管备案和政策解释的问题,并提供可审计的引用。
- 企业知识工作者。内部 copilot 基于最新公开信息回答问题,无需员工自行构建搜索与综合工作流。
可用性
Web Answer 在美国东部(弗吉尼亚北部)(us-east-1)可用,更多 AWS 区域即将推出。
定价
Amazon Bedrock AgentCore 上的 Web Answer 定价为每 1,000 次工具调用 10 美元。
结论
在本文中,我们展示了 Web Answer 如何通过代理式搜索为你的代理提供带有引用的最新答案,而无需你构建或维护任何搜索管道。我们为 Gateway 服务角色授予了访问 Web Answer 的权限,添加了一个 Web Answer 目标,从 Strands 代理中调用它,并从响应中读取答案及其引用。当你希望自己的模型对原始结果进行推理时,请使用 AgentCore 上的 Web Search;当你的代理需要一份完成且带有引用的答案时,请使用 Web Answer。
要开始使用,请参阅:
- Amazon Bedrock AgentCore 上的 Web Answer 文档
- Web Answer 结构化输出架构
- 将 Web Answer 添加到 Amazon Bedrock AgentCore Gateway
- 支持的区域
关于作者
Adrianna Chudy
Adrianna 是 Amazon AGI 的高级软件开发工程师,负责开发 Amazon Bedrock AgentCore 上的 Web Answer。她致力于为基座模型和 AI 代理提供网络搜索和代理式问答能力,帮助它们基于最新信息给出准确且带有引用的答案。自 2020 年加入 Amazon 以来,她一直构建大规模知识系统,最初服务于 Alexa,现在服务于 AWS。
Gaurav Deshmukh
Gaurav 是 Amazon AGI 的高级软件开发工程师,在 Amazon 拥有九年构建大规模分布式系统的经验。他致力于信息检索、基础支撑和代理式 AI 服务,为基座模型和 AI 代理提供支持,包括通过 Amazon Bedrock AgentCore 提供的各项能力。他的工作帮助 AI 代理获取准确的实时信息并执行复杂的研究任务,从而提升大规模代理式应用的可靠性。
Kalyan Garimella
Kalyan 是 Amazon AGI 的首席产品经理,负责领导 Amazon Bedrock AgentCore 网络搜索能力的开发和发布。他的工作重点是解决现代 AI 代理的一个核心局限——无法获取实时的事实信息——通过让代理将其推理建立在实时网络数据之上。Kalyan 与家人住在湾区。
Kamrul Tarafder
Kamrul 是 AWS 产品营销演示工程团队的解决方案架构师,专攻 Amazon Bedrock 和 Amazon Bedrock AgentCore 相关的 AI/ML 领域。他将交互式演示与技术叙事相结合,让复杂技术更易于理解。工作之余,他喜欢在太平洋西北地区徒步、阅读和参加电子音乐演出。
Omar Abdelwahab
Omar 是 Amazon Web Services (AWS) 的技术产品营销经理,专注于 Agentic AI 和 Web Search 等 AI 产品。他拥有计算机科学博士学位,乐于在 AI、技术和市场推广策略的交汇处工作,帮助客户构建创新应用。
来源:AWS Machine Learning Blog · aws.amazon.com
