深入解析 Strands Agents + Exa 集成:构建能联网搜索的 AI 深度研究助手

概述

亚马逊云科技开源的 Strands Agents SDK 近日发布了与 Exa 搜索引擎的集成。这篇文章详细拆解这个集成的架构设计、代码实现和实际效果。

Strands Agents SDK 简介

Strands Agents 是一个模型驱动的 Agent 框架。核心理念:开发者提供模型、system prompt 和工具列表,模型在 agent loop 中自主决定工具调用顺序和时机。

每次迭代中,模型接收完整对话历史(包括之前所有工具调用及其结果)。如果需要更多信息就请求工具,Strands 执行后把结果反馈给模型。循环持续到模型产出最终答案。

框架自带 40+ 预构建工具,支持 Model Context Protocol (MCP)。

Exa 搜索引擎

Exa 是专为 LLM 设计的搜索引擎:

  • 语义匹配而非关键词匹配
  • 返回结构化文本而非 HTML
  • 支持分类过滤(news/research paper/github/company 等)
  • 提供多种搜索模式:instant (~200ms) / fast (~450ms) / auto (~1s) / deep (~3-6s)

集成架构

两个核心工具:

语义搜索,支持:

  • 4 种搜索模式(instant/fast/auto/deep)
  • 分类过滤(news/research paper/github/PDF 等)
  • 域名/日期/文本内容过滤
  • 行内摘要和 JSON Schema 结构化输出

exa_get_contents

URL 全文提取,支持:

  • 缓存优先,未命中则实时爬取
  • 可配置 livecrawl 模式(fallback/always)
  • 字符数限制控制 token 消耗
  • 子页面追踪

完整实现:6 步深度研究助手

from strands import Agent
from strands.models.bedrock import BedrockModel
from strands_tools.exa import exa_search, exa_get_contents

def create_research_agent() -> Agent:
    model = BedrockModel(
        model_id="us.anthropic.claude-sonnet-4-6",
        region_name="us-west-2",
        max_tokens=20000,
    )
    return Agent(
        model=model,
        system_prompt=load_system_prompt(),
        tools=[exa_search, exa_get_contents],
    )

System prompt 定义 6 步工作流:

Step 1 — 概览搜索:auto 模式,5 条结果,2000 字摘要,限最近一周。

Step 2 — 新闻搜索:news 分类,30 天窗口,24 小时缓存。

Step 3 — 学术论文:research paper 分类,JSON Schema 约束输出(title/findings/methodology/conclusions)。

Step 4 — GitHub 项目:github 分类,4000 字 highlights。

Step 5 — 深度阅读:选 2-3 个高价值 URL,exa_get_contents 抓全文,强制实时爬取,追踪参考文献和方法论子页面。

Step 6 — 综合报告:无工具调用,整合前 5 步输出结构化研究简报。

多步工作流的优势

  • 有据可查:每个结论追溯到源 URL
  • Token 高效:搜索时就做摘要,LLM 处理的是精炼知识
  • 自主深入:跨源类型迭代,不需要人工干预

可观测性

集成 Amazon Bedrock AgentCore Observability(基于 OpenTelemetry):

  • 每次工具调用和 LLM 推理生成 span
  • 父子关系可视化完整调用链
  • CloudWatch GenAI Observability Dashboard 展示平均 span 延迟
  • 支持检查每步的搜索参数、延迟和 token 消耗

Agent 行为非确定性,tracing 把调试从猜测变成检查。

实践建议

  1. 默认用 auto 搜索模式,deep 仅用于需要全面覆盖的研究任务
  2. 用 maxCharacters 控制 highlights,管理 token 预算
  3. 分类过滤在源类型明确时效果好
  4. JSON Schema 摘要适合需要结构化数据的场景

参考资料

posted @ 2026-05-15 00:34  亚马逊云开发者  阅读(5)  评论(0)    收藏  举报