Introducing Web Search on Amazon Bedrock AgentCore

TL;DR · AI 摘要
AWS 推出 Amazon Bedrock AgentCore 的 Web 搜索功能,解决 AI 代理知识过时问题,提供无需管理的网络搜索能力。
核心要点
- Amazon Bedrock AgentCore 的 Web 搜索功能可实时更新,确保 AI 代理获取最新信息。
- 该功能通过 Amazon 管理的网络索引实现,覆盖数十亿文档,提升搜索覆盖率。
- 无需管理搜索 API、解析结果或处理隐私问题,简化了集成流程。
结构提纲
按章节快速跳转。
- §引言
AI 代理知识过时是当前的结构性限制,Amazon Bedrock AgentCore 的 Web 搜索功能解决了这一问题。
Amazon Bedrock AgentCore 的 Web 搜索功能是完全托管的,无需管理搜索 API 或解析结果。
Amazon 管理的网络索引覆盖数十亿文档,提升搜索覆盖率和查询准确性。
Web Search 通过 AgentCore Gateway 连接 AWS 服务账户,查询流量保持在 AWS 内部。
Amazon 持续更新网络索引,确保 AI 代理获取最新内容,提升响应准确性。
Web Search 适用于需要实时信息的 AI 代理,如价格变动或最新公告的查询。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Amazon Bedrock AgentCore Web Search
- 功能优势
- 无需管理搜索 API
- 覆盖数十亿文档
- 实时更新索引
- 实现方式
- 通过 AgentCore Gateway 连接
- 查询流量保持在 AWS 内部
- 使用场景
- 价格变动查询
- 最新公告查询
金句 / Highlights
值得收藏与分享的关键句。
Amazon refreshes the index continually, reflecting new content within minutes.
There are no search APIs to provision, no outbound credentials to manage, and no result-parsing glue to maintain.
The privacy model makes sure that queries don’t leave AWS.
在 Amazon Bedrock AgentCore 上引入网络搜索 | 人工智能
在 Amazon Bedrock AgentCore 上引入网络搜索
AI 代理正在改变组织查找和采取行动的方式,但它们有一个结构性的限制:它们的知识在训练时就被固定了。当你询问一个仅依赖于其训练数据的代理有关今天的股价、体育比分或一小时前发布的消息时,它无法做出回应。
现在,Amazon Bedrock AgentCore 上的网络搜索功能已正式发布,解决了这一问题。这项完全托管且兼容 Model Context Protocol(MCP)的网络搜索功能,使你的代理能够在不增加基础设施负担的情况下从网络上获取信息。它作为托管目标或连接器提供,你可以将其连接到 AgentCore 网关。代理可以通过标准的工具/列表调用发现它,并像其他 MCP 工具一样调用它。你无需设置搜索 API,无需管理出站凭证,也无需维护结果解析的胶合代码。
在该连接器背后,是亚马逊专门构建的网络索引,覆盖数十亿文档。亚马逊会持续更新该索引,几分钟内即可反映新内容。隐私模型确保查询不会离开 AWS。检索可以结合知识图谱与针对模型上下文优化的语义片段提取。
在本文中,我们将介绍 Amazon Bedrock AgentCore 上的网络搜索有何不同之处,为什么它重要,以及如何通过几行代码将其集成。
图 1:你的应用程序连接到 AgentCore 网关(AWS 身份和访问管理(IAM)或 JSON Web Token(JWT)入站身份验证),网关将查询通过托管连接器路由到 AWS 服务账户中的网络搜索工具。查询流量保留在 AWS 内部。
将代理扎根于网络是解决知识过时问题的方法,但这也是许多团队陷入困境的地方。自行构建意味着:
- 获取第三方搜索 API 并管理密钥、配额和速率限制。
- 解析不同提供商之间不一致的结果格式。
- 推理客户查询的去向以及这些数据可能如何被保留或重复使用。
- 构建片段提取逻辑,使模型获得相关段落,而不是原始 HTML。
- 随时间保持信息的新鲜度、覆盖率和质量。
每一点本身就是一个项目。Amazon Bedrock AgentCore 上的网络搜索解决了所有这些问题。
专为网络构建的索引
许多“为你的代理添加网络搜索”的解决方案都是围绕第三方搜索引擎的包装。Amazon Bedrock AgentCore 上的网络搜索则由亚马逊直接运营的网络索引支持,覆盖数十亿文档。这种规模对于覆盖率至关重要。例如,针对某个小众图书馆或不常见产品规格的长尾问题,在索引范围较广的情况下,可以更有效地回答,而不是仅限于最热门的页面。
持续更新
亚马逊会持续更新索引,几分钟内即可反映新内容。对于需要回答价格变动或最近发布的公告的代理而言,这种更新窗口之间的差异在于,回应是否基于事实,还是自信地错误。当你的代理搜索“今天发生了什么”时,结果反映了今天实际发生的事情。
用于高置信度事实的知识图谱
在 Amazon Bedrock AgentCore 上进行网络搜索时,内置的知识图谱可以对实体及其关系进行锚定。对于事实性问题(例如谁担任某个职位或某事物的成立时间),知识图谱可以提供高置信度的响应,而不是让模型从提取的页面文本中进行推断。这可以减少当代理仅通过片段拼接响应时,可能产生的细微事实偏差。
为模型上下文优化的语义片段提取
与其将原始 HTML 内容或完整页面交给模型,希望它找到相关部分,该工具执行语义相关的片段提取。它从每个网页中提取与查询相关的段落,然后以优化模型上下文窗口的形式返回这些内容。模型可以看到关键的部分,减少用于冗余内容和导航元素的标记数量。这有助于提高引用响应的准确性。
以隐私为核心设计
对于许多企业来说,阻碍网络搜索部署的问题不是“它是否有效”,而是“用户的查询去向何处,又会发生什么?”在 Amazon Bedrock AgentCore 上的网络搜索是这样构建的,这些问题的答案非常简单。
查询不会离开 AWS
当代理发出搜索请求时,查询完全在 AWS 基础设施内处理。客户查询不会发送到第三方搜索引擎,也不会离开 AWS。网关会向 AWS 拥有的连接器进行身份验证,并将请求内部路由,因此数据路径始终在 AWS 内部完成。对于有数据驻留或第三方出站担忧的团队,这消除了一个完整的审查类别。
演示流程
要开始使用网络搜索工具,您需要创建一个 AgentCore 网关(如果您不想使用现有网关),添加网络搜索工具目标,并通过 MCP 从代理中调用它。
先决条件
要跟随本文中的设置步骤,您需要以下内容:
- 一个具有创建 IAM 角色和 Amazon Bedrock AgentCore 资源权限的 AWS 账户。
- 安装并配置了 AWS 命令行界面(AWS CLI)v2,或可以访问 AWS 管理控制台。
- Python 3.10 或更高版本(用于 SDK 和 Strands 示例)。
- 更新到最新版本的 boto3 SDK。
- 一个 Amazon Bedrock AgentCore 网关。您可以将网络搜索工具作为目标添加到现有网关,或创建一个新的网关。有关创建网关的说明,请参阅开发人员指南中的《创建 Amazon Bedrock AgentCore 网关》。
注意:按照这些步骤会创建产生费用的 AWS 资源。Amazon Bedrock AgentCore 网关和网络搜索调用会产生费用。有关详细信息,请参阅以下的定价部分,并在完成时记得清理资源以避免持续收费。
设置
将网络搜索添加到代理中,只需通过 connectorId: "web-search" 将网络搜索工具目标附加到您的网关。网关会快照工具模式,配置集成,并为您处理模式管理、参数治理、端点解析和服务身份验证。
import boto3
gateway_client = boto3.client("bedrock-agentcore-control", region_name="us-east-1")
将 Web Search 工具作为现有网关的目标添加
gateway_client.create_gateway_target( gatewayIdentifier=gateway_id, # 你的现有或新创建的网关 ID name="web-search-tool", targetConfiguration={ "mcp": { "connector": { "source": {"connectorId": "web-search"}, "configurations": [{"name": "WebSearch", "parameterValues": {}}], } } }, credentialProviderConfigurations=[ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ], )
通过调用 describe_gateway_target 或 list_gateway_targets 并确认响应中出现 Web Search-tool 来验证是否已添加目标。
### 出站角色和权限
请注意前面的 credentialProviderConfigurations。这是整个出站授权的故事:你不需要提供 API 密钥或管理搜索凭证,网关使用其自身的 IAM 服务角色来向 Web Search 后端进行身份验证。
该角色需要一个信任策略(以便 AgentCore 可以使用它,范围限定在你的账户和区域)以及一个包含两个操作的权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeGateway", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:us-east-1:<ACCOUNT_ID>:gateway/<gateway-ID>" }, { "Sid": "InvokeWebSearch", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeWebSearch", "Resource": "arn:aws:bedrock-agentcore:us-east-1:aws:tool/web-search.v1" } ] }
InvokeWebSearch 资源 ARN 由 AWS 拥有(账户 = aws)。每次调用时都会针对该 ARN 进行授权,因此在该 ARN 上授予 bedrock-agentcore:InvokeWebSearch 权限,使网关可以代表你调用 Web Search。
有几个边界需要明确:
- 该角色仅用于出站授权(网关连接到 Web Search 后端)。入站授权(谁可以调用你的网关)由其他方式处理,通常使用 OAuth 或 JWT 授权器,如 Amazon Cognito。
- 该角色不包括 bedrock:InvokeModel。模型访问权限属于运行代理的标识,而不是网关服务角色。
### 从 MCP 兼容框架调用
由于 Web Search 是通过 MCP 暴露的,因此可以使用 Strands、LangChain、LangGraph、CrewAI 或你自己的 MCP 兼容框架发现并调用它。代理调用 tools/list,找到 WebSearchTool,并在需要当前信息时自动使用它:
from datetime import date 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", ))
model = BedrockModel(model_id="us.anthropic.claude-sonnet-4-6")
system_prompt = ( f"You are a helpful assistant. Today's date is {date.today().isoformat()}. " "Use the available tools when you need current information." )
with mcp_client: tools = mcp_client.list_tools_sync() # 从网关发现 WebSearch 工具 agent = Agent(model=model, tools=tools, system_prompt=system_prompt)
result = agent("What are the latest AI breakthroughs announced this week?") print(result)
代理判断需要获取最新信息,调用 WebSearchTool 并使用适当的查询,然后结合来源引用生成一个基于事实的回应。你这边不需要编写任何特定于工具的代码。
### 回应格式
结果以标准的 MCP 工具/call 封装格式返回。工具返回一个类型为文本的单一内容块,其中包含一个序列化的 JSON 文档,文档中包含结果。解析该内部文本后,你会得到一个 id 以及一个包含观察结果的数组:
{ "publishedDate": "04:43AM, Wednesday, June 17 2026, PDT", "text": "The 2026 NBA Finals was the championship...", "title": "2026 NBA Finals", "url": "https://en.wikipedia.org/wiki/2026_NBA_Finals" }
每个网络索引观察结果(始终返回)都包含标题、URL、发布日期和文本。知识图谱观察结果(可选,用于实体查询)具有空标题和 URL,文本字段中包含结构化的键/值事实。
## Web 搜索工具的适用场景
如果你希望将代理基于你自己的企业数据进行训练,Amazon Bedrock Knowledge Bases 和 Amazon Bedrock Managed Knowledge Bases 是合适的工具。它们可以摄入、索引并检索你拥有的内容。Web 搜索工具是其补充工具。它将代理基于公共网络,用于那些答案在组织外部并不断变化的问题。许多生产环境中的代理都同时使用两者:知识库用于“我们的文档中说了什么”,而网络搜索用于“当前世界上哪些是真实的”。
## 定价
按照每 1000 次查询 7 美元的定价模型,你只需不到一美分就可以运行一个网络搜索代理。
## 清理资源
如果你在跟随教程过程中创建了资源,可以删除它们以避免持续收费:
- 删除网关目标:使用你的 gatewayIdentifier 和 targetId 调用 delete_gateway_target。
- 如果网关仅用于本教程,使用 delete_gateway 删除网关。
除了这些资源之外,AWS 端没有持久的基础设施。删除这些资源后,你将不再产生费用。
## 结论
Amazon Bedrock AgentCore Web Search Tool 通过单个 connectorId 为你的代理提供最新的网络知识。你不需要配置任何搜索 API,也不需要维护任何结果解析。在这些简单性之下,是 AWS 自己构建的网络索引(数十亿文档,几分钟内更新),一个查询不离开 AWS 的隐私模型,以及可以结合知识图谱与语义片段提取(针对模型上下文优化)的检索功能。其结果是一个能够准确回答及时问题、引用来源并确保数据保留在应有位置的代理。
由于 Amazon 运营完整的搜索堆栈,新鲜度、覆盖率、相关性和片段质量的改进会通过相同的托管连接器自动传递到你的代理。你这边不需要进行任何版本升级或迁移。
你现在可以在 us-east-1(美国东部(北弗吉尼亚))地区使用 Web Search Tool 连接器。
要开始使用,请参阅 Web Search Tool 文档。
## 作者简介
'"`