跳到正文
AWS Machine Learning Blog· Shubham Divekar·· 12 小时前AI 评分55

Amazon Bedrock AgentCore 推出 Web Search API

Introducing the Web Search API on Amazon Bedrock AgentCore

AI 导读

AWS 发布 Amazon Bedrock AgentCore 的 Web Search API,开发者用一次 InvokeWebSearch 调用即可获得带文本摘录、标题、URL 和发布时间的排序搜索结果,无需先创建网关等资源。

正文 · AI 翻译

回答有关近期事件、产品发布、价格或法规问题的 AI 智能体和应用,需要比其模型训练数据更新的信息。在此之前,Amazon Bedrock AgentCore 上的 Web Search 通过 AgentCore Gateway(Amazon Bedrock AgentCore 的一项能力)向智能体提供这些信息。这意味着需要创建网关和 Web 搜索目标,并从 MCP 客户端调用该工具。这种设置适合在多个智能体之间共享同一搜索策略的平台团队,但当你自己的代码只需要搜索结果时,它就超出了所需。

今天,我们宣布推出 Amazon Bedrock AgentCore 上的 Web Search API。借助它,你自己的代码只需一次 API 调用即可搜索网络。它从 Amazon 运营的 Web 索引中返回排序后的结果,每条结果都包含文本摘录,并在可用时包含页面标题、URL 和发布时间。你可以从 AWS SDK 或 AWS Command Line Interface(AWS CLI)调用它,并使用与其他 AWS 服务相同的 AWS Identity and Access Management(IAM)凭证进行签名。无需先创建任何资源。认证、调用、获取结果。可将其用于应用程序、你自己编写的智能体循环或数据管道。

为什么需要独立 API?

对于大多数智能体工作负载,AgentCore Gateway 是推荐路径。它为智能体提供一个安全的 Model Context Protocol(MCP)端点,将 Web 搜索与其他工具整合在一起。它还处理入站和出站身份验证、语义工具选择以及可选的 MCP 会话。但开发者告诉我们,在网关不适合的场景中,他们还需要一个更低层级的集成点:

  • 自定义编排框架 – 构建自己的智能体循环或使用 LangChain、LlamaIndex 等框架的开发者,希望在其编排逻辑中直接调用 Web 搜索作为工具,而不是通过网关路由。
  • 非智能体用例 – 并非所有需要 Web 基础信息的应用都是智能体。搜索驱动的仪表板、事实核查管道、内容增强工作流和监控系统都能从实时 Web 结果中受益,而无需智能体基础设施。
  • 对请求生命周期更紧密的控制 – 一些开发者希望自行管理重试、缓存和错误处理,而不是委托给网关。
  • 现有应用的更简单集成 – 已经拥有自己 API 层的应用可以直接调用 Web Search API,在不采用完整 AgentCore Gateway 技术栈的情况下添加 Web 基础信息。

Web Search API 是对网关的补充。它运行在支撑 Alexa+、Kiro、Quick 和其他 Amazon 产品的同一搜索基础设施上,具有相同的质量和合规态势,并以直接的 API 操作形式对外提供。

工作原理

Web Search API 是 bedrock-agentcore 数据平面上的 InvokeWebSearch 操作,该端点与其他 AgentCore 工具(例如 Amazon Bedrock AgentCore 的一项能力 AgentCore Browser)使用的端点相同。请求使用标准 AWS 凭证通过 AWS Signature Version 4(SigV4)签名,因此无需管理 API 密钥或密钥。

Diagram of a Web Search API request flowing from the caller through IAM authorization and filtering to the Amazon web index and back

图 1:Web Search API 请求的流转方式

编号步骤如下:

  1. 你的应用程序通过 AWS SDK 或 AWS CLI 调用 InvokeWebSearch,这些工具会使用其 AWS 凭证通过 SigV4 对请求进行签名。从虚拟私有云(VPC)中,该调用可以通过接口 VPC 端点进行。
  2. API 会通过 AWS Identity and Access Management(IAM)检查调用方是否在 AWS 托管 Web 搜索工具上具有 bedrock-agentcore:InvokeWebSearch。
  3. API 会应用请求中的筛选条件:要包含或排除的域名以及发布时间范围。
  4. API 会搜索由 Amazon 运营的 Web 索引。查询在 AWS 内部处理,不会发送到第三方搜索引擎。
  5. API 最多返回 maxResults 条排序结果,每条结果包含文本摘录,并在可用时包含页面标题、URL 和发布时间。

调用身份需要在 AWS 托管资源上具有一项 IAM 权限。这与网关的服务角色用于 Web 搜索的操作和资源相同,因此一个策略即可覆盖两种途径。有关详细信息,请参阅 授予调用 API 的权限。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokeWebSearch",
            "Effect": "Allow",
            "Action": "bedrock-agentcore:InvokeWebSearch",
            "Resource": "arn:aws:bedrock-agentcore:us-west-2:aws:tool/web-search.v1"
        }
    ]
}

首次搜索请求

以下示例使用 AWS SDK for Python (Boto3) 在美国西部(俄勒冈)区域(us-west-2)搜索两个受信任域名中 2026 年发布的页面:

import boto3

client = boto3.client("bedrock-agentcore", region_name="us-west-2")

response = client.invoke_web_search(
    webSearchId="web-search.v1",
    searchQuery="multi-region EKS cluster deployment best practices",
    maxResults=10,
    filters={
        "domainFilter": {"include": ["aws.amazon.com", "kubernetes.io"]},
        "publishedDateFilter": {"publishedAfter": "2026-01-01T00:00:00Z"},
    },
)

for result in response["results"]:
    print(result.get("publishedAt"), result.get("title"), result.get("url"))

每条结果都包含文本摘录。当索引中有标题、URL 和发布日期时,这些信息会一并返回,因此请使用 get 读取它们。以下是一次实际调用中的一条结果(已缩短):

{
    "title": "One Amazon EKS, many edges: How to choose your edge container strategy on AWS",
    "url": "https://aws.amazon.com/blogs/containers/one-amazon-eks-many-edges-how-to-choose-your-edge-container-strategy-on-aws/",
    "text": "Separate the standard from the deployment model Choosing the wrong platform isn't really the issue. ...",
    "publishedAt": "2026-09-25T15:52:00Z"
}

这就是完整的集成。如果你的代码运行在 AWS Lambda、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Compute Cloud (Amazon EC2) 或 Amazon Elastic Kubernetes Service (Amazon EKS) 上,执行角色会自动提供凭证。将权限添加到该角色,同一代码即可原样运行。

关键 API 功能

  • 域名筛选 – 包含或排除特定域名,将搜索结果限定在受信任来源(例如,对于专注于 AWS 的助手,仅限 aws.amazon.com 和 kubernetes.io)。每个列表最多包含 100 个域名,根域名也会匹配其子域名。
  • 日期筛选 – 使用 publishedAfter 和 publishedBefore 将结果限制在某个发布时间范围内,以 UTC 的 RFC 3339 日期时间格式给出,例如 2026-01-01T00:00:00Z。两个边界均包含在内。
  • 可配置的结果数量 – 每次查询可请求 1 到 25 条结果。如果未设置 maxResults,API 最多返回 25 条。搜索文本 searchQuery 最多可包含 200 个字符。
  • 带文本摘录的结果 – 每条结果都包含文本摘录,并在可用时包含页面标题、URL 和发布时间,可直接送入模型的上下文窗口。

5 分钟内快速上手

以下是获得首个结果的两种方法:

选项 1:AWS CloudShell(无需本地设置)

  1. 在浏览器中打开 AWS CloudShell。它会使用你控制台会话的凭证。
  2. 你的角色将具有 bedrock-agentcore:InvokeWebSearch 权限,该权限来自前面的策略或更广泛的 AWS 托管策略 BedrockAgentCoreFullAccess。
  3. Run:
    aws bedrock-agentcore invoke-web-search \
        --web-search-id web-search.v1 \
        --search-query "latest EKS features" \
        --max-results 5

选项 2:本地开发

  1. 安装 AWS CLI,或安装适用于你所使用语言的 AWS SDK。对于 Python,请使用 Boto3 1.43.127 或更高版本。
  2. 使用前面的策略创建 IAM 角色。
  3. 获取该角色的凭证:从你的应用程序或 AWS CLI 配置文件代入该角色,或通过你的身份提供商使用该角色登录。
  4. 运行前面的 Python 示例,或从任意 AWS SDK 调用 API。

无需创建资源,也无需管理 API 密钥。进行身份验证、调用并获取结果。

将 Web Search API 与智能体框架配合使用

Web Search API 可以自然地融入流行的智能体框架。LangChain 智能体可通过 langchain-aws 1.9.3 及更高版本中的 AgentCore Web Search 工具使用它:

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain_aws.tools import create_web_search_toolkit

toolkit, tools = create_web_search_toolkit(region="us-west-2")
model = init_chat_model("bedrock_converse:us.anthropic.claude-sonnet-5", region_name="us-west-2")
agent = create_agent(model, tools=tools, system_prompt="Cite the URL of every fact you use.")

该工具还可以持有模型无法更改的规则,例如要排除的域名、日期下限和搜索预算。它把结果作为数据返回,你的代码可以对其进行检查。完整示例请参阅每日依赖监控示例。它使用 LangGraph 并行研究三个包生态系统,并在报告任何内容之前对照来源核实每一项发现。

如果你更愿意自己封装调用,普通的 LangChain 工具也可以:

from langchain.tools import tool
import boto3
import json

client = boto3.client("bedrock-agentcore", region_name="us-west-2")

@tool
def web_search(query: str) -> str:
    """Search the web for current information."""
    response = client.invoke_web_search(
        webSearchId="web-search.v1",
        searchQuery=query,
        maxResults=5,
    )
    return json.dumps(response["results"], indent=2, default=str)

# Pass web_search to an agent, for example create_agent(model, tools=[web_search])

如果不使用框架,AgentCore Python SDK 中的 WebSearchClient 会封装相同的调用,并返回带有已解析日期的结果。langchain-aws 1.9.3 和 AgentCore Python SDK 1.26.0 新增了对 Web Search API 的支持,因此请安装这些版本或更高版本。

内置的企业级控制

由于 Web Search API 使用标准 IAM 身份验证,你从第一次调用起就能获得企业级控制:

  • IAM 策略。按用户、组或角色授予或拒绝 bedrock-agentcore:InvokeWebSearch。使用服务控制策略(SCP)在各账户间强制执行防护措施。
  • AWS CloudTrail 日志记录。CloudTrail 将 InvokeWebSearch 请求记录为数据事件。数据事件默认不会被记录,因此请为跟踪或事件数据存储添加针对 AWS::BedrockAgentCore::WebSearch 资源类型的事件选择器。事件会记录 Web 搜索工具和 maxResults,但不会记录搜索文本或筛选条件。详情请参阅使用 AWS CloudTrail 记录 AgentCore Web Search API 调用。
  • VPC 支持。使用 AWS PrivateLink 通过私有网络而非公共互联网路由 API 调用。有关设置和端点策略,请参阅本文后面的“使用 AWS PrivateLink 的私有连接”。
  • 合规性。有关涵盖 AgentCore 的合规计划列表,请参阅Amazon Bedrock AgentCore 的合规性验证。
  • 搜索保留在 AWS 内。查询由 Amazon 运营的 Web 索引提供,不会发送到第三方搜索引擎。
  • 可接受使用。详情请参阅Web Search API 可接受使用文档。

配额按账户适用。有关默认值以及如何申请提高配额,请参阅Amazon Bedrock AgentCore 的配额。

默认情况下,每个账户在每个区域每秒最多可发送 10 个请求,你可以申请提高配额。详情请参阅AgentCore Web Search 服务配额。

使用 AWS PrivateLink 的私有连接

处理敏感数据的智能体和管道通常运行在没有互联网路由的私有子网中。借助 AWS PrivateLink,这些代码可以通过你的 VPC 中的接口 VPC 端点调用 Web Search API。你的 VPC 与 API 之间的流量保留在 AWS 网络上,你无需互联网网关、NAT 网关或代理即可访问它。

Diagram of a Web Search API call routed through an interface VPC endpoint over AWS PrivateLink, staying on the AWS network

图 2:通过 AWS PrivateLink 调用 Web Search API

编号步骤如下:

  1. 你的应用程序使用 API 的标准区域名称调用 InvokeWebSearch。使用私有 DNS 时,该名称会解析到你的子网中的接口端点。
  2. 端点策略生效,请求通过 AWS 网络到达 API。
  3. API 通过 IAM 检查调用方是否具有 bedrock-agentcore:InvokeWebSearch,包括任何 aws:SourceVpce 条件。
  4. API 应用请求的筛选条件,并搜索 Amazon 运营的 Web 索引。
  5. 结果通过端点返回到你的应用程序。

要进行设置,请为 AgentCore 数据平面服务 com.amazonaws.<Region>.bedrock-agentcore 在调用该 API 的每个 VPC 和区域中创建一个接口端点,并开启私有 DNS:

aws ec2 create-vpc-endpoint \
    --region us-west-2 \
    --vpc-id vpc-0123456789abcdef0 \
    --vpc-endpoint-type Interface \
    --service-name com.amazonaws.us-west-2.bedrock-agentcore \
    --subnet-ids subnet-0123456789abcdef0 subnet-0fedcba9876543210 \
    --security-group-ids sg-0123456789abcdef0 \
    --private-dns-enabled

开启私有 DNS 后,该 API 的标准区域名称 bedrock-agentcore.us-west-2.amazonaws.com 会在您的 VPC 内解析为端点的私有 IP 地址。本文中的 Boto3 和 AWS CLI 示例无需修改即可运行,无需设置端点 URL。端点的安全组必须允许来自调用该 API 的资源的入站 HTTPS(端口 443)流量。

PrivateLink 还为您提供 IAM 之上的控制能力:

  1. Endpoint policies – A VPC endpoint policy applies to InvokeWebSearch requests in addition to your IAM policies, so you decide which principals can search through the endpoint. The same endpoint also carries the other AgentCore data plane APIs, such as AgentCore runtime, a capability of Amazon Bedrock AgentCore, Memory, Identity, Browser, and Code Interpreter. If workloads in the VPC call them too, add statements that allow those calls. The following policy lets only one role call the API through the endpoint:
    {
        "Effect": "Allow",
        "Principal": { "AWS": "arn:aws:iam::111122223333:role/WebSearchAppRole" },
        "Action": "bedrock-agentcore:InvokeWebSearch",
        "Resource": "arn:aws:bedrock-agentcore:us-west-2:aws:tool/web-search.v1"
    }
  2. Require the private path – Add an aws:SourceVpce condition to the IAM policy that grants the permission. The role can then search only through your endpoint, and the same call from outside the VPC is denied:
    {
        "Effect": "Allow",
        "Action": "bedrock-agentcore:InvokeWebSearch",
        "Resource": "arn:aws:bedrock-agentcore:us-west-2:aws:tool/web-search.v1",
        "Condition": { "StringEquals": { "aws:SourceVpce": "vpce-0123456789abcdef0" } }
    }
  3. 网络级控制 – 安全组和子网放置决定哪些实例、容器和函数能够访问该端点。

PrivateLink 在 Web Search API 可用的每个区域中的工作方式都相同。接口端点按标准 AWS PrivateLink 定价计费。有关详细信息,请参阅通过 AWS PrivateLink 调用 AgentCore Web Search。

在控制台中试用

您可以在编写任何代码之前,在 Amazon Bedrock AgentCore 控制台中试用 Web Search API。在导航窗格中,在 Connections 下,选择 Web Search。

Web Search in the Amazon Bedrock AgentCore console

图 3:Amazon Bedrock AgentCore 控制台中的 Web Search

  1. Configure. In the Configure panel, set:
    1. 最大结果数:每次查询返回的结果数量,范围为 1–25。控制台默认为 10。
    2. 发布日期:采用 YYYY/MM/DD 格式的日期范围。仅返回在该范围内发布的结果。留空则包含任意日期的结果。
    3. 域筛选:最多可包含 100 个域,最多可排除 100 个域。选择 View and manage domains 以编辑列表。
  2. 测试。在 Test Web Search API 面板中输入最多 200 个字符的查询。每次查询都会使用您的设置调用 Web Search API。该面板显示返回的结果数量以及调用耗时。对于每个结果,它会显示标题、文本片段、发布日期和源 URL。图 4 显示了对“How do I set up Amazon S3 lifecycle rules?”的搜索,结果限制为 aws.amazon.com 和 docs.aws.amazon.com。

A test search with included domains

图 4:包含指定域的测试搜索

  1. Integrate. When the results look right, you have two options:
    1. 生成代码片段:获取使用相同设置调用该 API 的代码,可直接粘贴到您的代理或应用程序中。
    2. 创建网关目标:将 Web Search 作为工具添加到 AgentCore Gateway 上,以便代理可以通过 MCP 调用它。

控制台使用您自己的 IAM 身份对每次调用进行签名,因此您的角色需要 bedrock-agentcore:InvokeWebSearch 权限。

何时使用 API 与网关

场景 推荐路径
使用兼容 MCP 的工具构建代理 AgentCore Gateway
多个工具位于一个 MCP 端点之后,可选 MCP 会话 AgentCore Gateway
为多个代理和团队使用一个管理员源策略 AgentCore Gateway
需要搜索的 MCP 客户端,例如使用 AWS Web Search 连接器的 Claude AgentCore Gateway
自定义编排 Web Search API
非代理用例(仪表板、管道) Web Search API
希望直接控制重试和缓存 Web Search API
向现有应用程序添加 Web 搜索 Web Search API

两条路径搜索同一个索引,但在几个方面有所不同。网关还可以使用 JSON Web Token (JWT) 对调用方进行授权,而 API 仅使用 IAM 进行授权。在网关上,管理员可以在目标上设置适用于每个请求的域列表,而调用代理看不到这些列表。使用 API 时,每个请求都携带自己的筛选条件。字段名称也不同:API 采用 searchQuery、publishedAfter 和 publishedBefore,而网关的 MCP 工具采用 query、from 和 to。如需更多指导,请参阅在 API 和 Gateway 连接器之间进行选择。

定价

Web Search API 与网关连接器按相同的用量类型计量,因此按每 1,000 次查询 7 美元的 Web Search 费率计费。由于不涉及网关,因此没有网关费用。有关详细信息,请参阅Amazon Bedrock AgentCore 定价。

可用性

Web Search API 在以下区域可用:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(俄勒冈)、欧洲(爱尔兰)、亚太地区(东京)和亚太地区(悉尼)。如需当前列表,请参阅支持的 AWS 区域。

开始使用

使用以下资源来帮助您开始使用。


关于作者

Shubham Divekar

Shubham Divekar

Shubham 是 Amazon Web Services (AWS) 的高级软件开发工程师,在 Amazon Bedrock AgentCore 工作。他专注于在云上开发可扩展系统,为 AI 应用框架和编排提供支持。Shubham 还拥有在 IoT 架构中构建分布式、可扩展、高容量高吞吐量系统的背景。工作之余,他会打乒乓球、羽毛球,并在 PNW 的壮丽山脉中徒步。

Sundar Raghavan

Sundar Raghavan

Sundar 是 AWS Agentic AI Foundations 团队的高级解决方案架构师。他负责 Amazon Bedrock AgentCore 的开发者体验,掌管 SDK 和 CLI,并推动框架与生态系统集成策略。他专注于开发者如何在 AWS 上构建、部署和扩展生产级 AI 代理。他还通过 Strands Robots 将同样的代理开发者体验带到 Physical AI。

Uday PB

Uday PB

Uday 是 Amazon AGI 的软件开发工程师,从事大规模分布式系统、信息检索、接地和代理式 AI 基础设施方面的工作。他的工作重点是构建可扩展的服务,将基础模型和 AI 代理与实时信息和外部工具连接起来,从而在 AI 应用中实现可靠的信息检索、复杂推理和研究能力。

Kalyan Garimella

Kalyan Garimella

Kalyan 是 Amazon AGI 的首席产品经理,负责领导 Amazon Bedrock AgentCore 的 Web 搜索能力的开发和发布。他的工作重点是解决现代 AI 代理的一个核心局限——无法访问实时、事实性信息——通过让代理将其推理建立在实时网络数据之上。Kalyan 与家人住在湾区。

Omar Abdelwahab

Omar Abdelwahab

Omar 是 Amazon Web Services (AWS) 的技术产品营销经理,专注于 AI 产品,包括 Agentic AI 和 Web Search。他拥有计算机科学博士学位,乐于在 AI、技术和上市策略的交汇处工作,帮助客户构建创新应用。

来源:AWS Machine Learning Blog · aws.amazon.com