AWS Bedrock AgentCore 的 Web Answer 工具正式可用,一次调用返回带引用的答案
Getting started with Web Answer on Amazon Bedrock AgentCore
AWS 宣布 Amazon Bedrock AgentCore 的 Web Answer 正式可用,Agent 通过一次 MCP 工具调用即可获得基于当前网页来源、逐条引用 URL 的综合答案,无需自建搜索、检索、合成与引用管线。
今天,我们宣布 Web Answer 在 Amazon Bedrock AgentCore 上正式发布(General Availability)。借助 Web Answer,智能体开发者只需一次工具调用,就能获得针对自然语言问题的、带来源引用的合成答案。他们不再需要自行构建搜索、检索、合成和引用流水线。
如果你构建过需要从最新网络来源回答问题的智能体,你一定熟悉这个模式:调用搜索 API,判断哪些结果可信,检索并清理页面内容,提示模型进行合成,再设计引用提取逻辑使输出能够溯源。每一步都是需要维护的代码,每一步也都是可能出问题的地方:证据不足时产生幻觉,索引更新时内容过时,论断与来源分离时归因失效。
Web Answer 将这整条流水线压缩为一次请求。你发送一个问题,几秒内就能收到带引用的答案。在本文中,我们将介绍 Web Answer 的功能,将其与 AgentCore 上的 Web Search 进行对比,展示它的工作方式和返回内容,并演示如何将 Web Answer 添加到网关以及从智能体中调用它。
Web Answer 的功能
图 1:从智能体经网关到 Web Answer 再返回的请求流程
你的智能体将问题发送到你的 AgentCore 网关(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 网关工具,接收自然语言问题,并在几秒内返回基于最新网络来源的合成答案。你将获得:
- 一个有依据、带引用的答案,其中每条有依据的论断都映射到一条引用,并在有来源可查时提供来源 URL。
- 最新的来源。Web Answer 为每个问题执行全新搜索,其模型会获知今天的日期,以便搜索最新信息。
- 智能体式搜索:Web Answer 自行规划搜索、并行运行多个搜索、阅读页面核实事实,并判断何时已有足够证据作答。
- 负责任的 AI 防护:Web Answer 在设计和测试中融入了负责任的 AI 防护措施。
图 2:演示视频,展示如何将 Web Answer 添加到 AgentCore 网关,从设置到生成带引用的完整答案
它与 Web Search 的区别
Web Answer 和 Web Search 工具都支持检索用例,但集成复杂度不同。分界线在于由谁来运行模型:
- Web Search:返回经过排序的 URL、标题、摘要和元数据。你保留自己的模型并控制合成过程。当你想完全掌控结果的处理方式时,使用 Web Search。
- Web Answer:为你运行模型、智能体式检索循环、合成和归因。你会得到一个带引用的完整答案。当问题是较大智能体中的一个子任务、而你不想为其维护检索流水线时,使用 Web Answer。
许多客户会同时使用两者。智能体可以用 Web Search 执行需要原始结果的宽泛研究任务,用 Web Answer 获取需要快速、带引用答案的特定事实性问题。
设置并调用 Web Answer
Web Answer 是 AWS 拥有的一个连接器。你通过 ID 引用它,网关会处理工具架构、参数治理、端点解析以及对后端的身份验证。在本演练中,你将为网关的服务角色授予调用 Web Answer 的权限,添加一个 Web Answer 目标,并从 Strands 智能体中调用它。
入门
入门只需几分钟。网关管理员在现有的 AgentCore Gateway 上添加 Web Answer 作为目标,该工具就会通过 tools/list 和 tools/call 以 MCP 方式提供给任何关联的智能体。
前提条件
- 一个拥有 AgentCore Gateway 访问权限的 AWS 账户。
- 位于 us-east-1 且使用 IAM(
AWS_IAM)入站身份验证的 AgentCore Gateway。要创建一个,请参阅开发者指南中的 创建 Amazon Bedrock AgentCore Gateway。 - 一个在网关上拥有
bedrock-agentcore:InvokeGateway权限的身份的 AWS 凭证,以及智能体所用模型的 Amazon Bedrock 访问权限。 - Python 3.10 or later, with the required packages:
pip install boto3 strands-agents mcp mcp-proxy-for-aws
注意:按照这些步骤操作会创建产生费用的 AWS 资源。网关和 Web Answer 调用都是计费的。详情请参阅后面的定价部分,完成后请删除你创建的资源(参见“清理资源”)。
第 1 步:授予网关服务角色访问 Web Answer 的权限
网关使用其服务角色代表你执行操作。该角色的信任策略允许 bedrock-agentcore.amazonaws.com 代入它,范围限定在你的账户内。对于 Web Answer,该角色需要:
bedrock-agentcore:InvokeWebAnswer,用于调用 Web Answer。网关会在每次请求时对照 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",
}
],
}),
)该角色仅控制网关的出站调用。谁可以调用你的网关由其入站授权器决定。该角色也不需要 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-<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)当问题需要最新信息时,你的智能体会调用 Web Answer 工具(web-answer-tool___WebAnswer)。Web Answer 运行智能体式搜索并返回带有引用的完整答案。
除了问题之外,Web Answer 工具还接受智能体可在每次调用时设置的可选参数:包含或排除网站的域过滤器、发布日期范围,以及用于本地化结果的国家/地区。智能体的域过滤器会与目标的过滤器合并。智能体可以排除更多域,或将结果限制为目标所包含域中的一部分,但不能添加目标过滤器所阻止的域。
响应格式
Web Answer 返回一个同时包含 content 和 structuredContent 字段的 MCP 工具结果。答案是以 [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 帮助智能体检索带有引用的最新信息,以支持一系列知识密集型工作流。示例场景包括:
- 金融服务。回答有关合规要求、市场法规和政策变更问题的监管问答智能体,其中每个答案都必须可追溯至权威来源。
- 医疗健康。以网络上发布的最新医学文献和治疗指南为依据来支撑回答的临床支持智能体。
- 客户服务。实时回答产品和政策问题的支持智能体,在这种场景下十条排名链接没有用,而带引用的答案才有用。
- 法律与合规。以可审计的引用回答有关判例法、监管备案和政策解读问题的研究助理。
- 企业知识工作者。基于最新公开信息回答问题的内部副驾驶,无需员工自行构建搜索和综合工作流。
可用性
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
- 支持的区域
关于作者
来源: AWS Machine Learning Blog · aws.amazon.com
