跳到主要內容
AI News HubLIVE
站內改寫5 分鐘閱讀

使用 Strands 和 Exa 構建支持網絡搜索的 AI 智能體

文章摘要

本文介紹瞭如何將 Exa 搜索集成到 Strands Agents SDK 中,使 AI 智能體能夠進行語義搜索和內容提取,從而實現多步驟研究任務。詳細説明了兩個核心工具(exa_search 和 exa_get_contents)的用法、設置步驟以及一個深度研究助手的實踐案例。

來源AWS Machine Learning Blog作者: Manoj Selvakumar
使用 Strands 和 Exa 構建支持網絡搜索的 AI 智能體
報告錯誤

更正渠道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

本文由來自 Exa 的 Ishan Goswami 和 Nitya Sridhar 共同撰寫。

如果你正在為研究、事實核查或競爭情報構建支持網絡搜索的 AI 智能體,那麼獲取當前可靠的信息至關重要。大多數通用搜索 API 並非為智能體工作流程設計。它們返回的是針對人類瀏覽優化的 HTML 頁面和簡短摘要,而不是智能體可以直接使用的結構化數據。因此,開發者通常需要構建額外的層——自定義爬蟲、解析器和排序邏輯——來將這些內容轉化為智能體工作流程中可用的格式。

Exa 與 Strands Agents SDK 的集成通過在工具接口中直接內置 AI 原生搜索和檢索層來解決這一缺口。Exa 提供乾淨、結構化的內容,這些內容經過格式化可直接用於 LLM 上下文窗口,無需後處理來剝離標記或重新格式化輸出。結合 Strands Agents SDK 的模型驅動架構(模型決定何時調用工具以及如何使用其輸出),智能體可以將實時的網絡知識融入其推理循環。

在實踐中,你的智能體通過兩個工具訪問此集成:exa_search,它執行語義搜索並支持新聞、研究論文和代碼倉庫等類別;以及 exa_get_contents,它從選定的 URL 中檢索完整內容。本文中,你將學習如何在 Strands Agents 中設置 Exa 集成,瞭解它暴露的兩個核心工具,並逐步瞭解展示智能體如何使用網絡搜索完成多步驟任務的真實用例。

Strands Agents

Strands Agents SDK 是一個來自 AWS 的開源框架,用於使用模型驅動的方法構建 AI 智能體。開發者提供模型、系統提示和一個工具列表,而不是編寫硬編碼的工作流程。模型本身決定下一步做什麼:調用哪些工具、以什麼順序調用以及任務何時完成。Strands Agents 的核心是智能體循環。每次迭代中,模型接收完整的對話歷史,包括之前的每一個工具調用及其結果。如果模型需要更多信息,它會請求一個工具;Strands Agents 執行工具並將結果反饋。循環持續直到模型產生最終答案。這種跨迭代的上下文積累使得智能體能夠處理超出單個 LLM 調用範圍的多步驟任務。Strands Agents SDK 附帶超過 40 個預建工具,涵蓋文件 I/O、shell 執行、網絡搜索、AWS API、內存、代碼執行等。它還支持模型上下文協議(MCP),因此 MCP 服務器暴露的工具無需額外集成工作即可供智能體使用。添加新工具(包括 Exa 網絡搜索工具)遵循相同的模式:將它們放入 tools=[] 列表中,模型從其簽名中學習如何使用它們。

Exa

Exa 是一個專門為 LLM 和 AI 智能體構建的網絡規模搜索引擎。Exa 是一個理解查詢含義而不僅僅是關鍵詞的搜索引擎。像“構建氣候解決方案的初創公司”這樣的查詢會返回實際的氣候初創公司,即使這些頁面從未使用過這個確切的短語。模型在語義相似性上匹配,而不是字符串重疊。結果以乾淨、結構化的內容形式返回,沒有廣告或 SEO 噪聲,可供 LLM 直接消費。

Strands Agents 和 Exa:集成概述

Exa 集成可通過 strands-agents-tools 包獲得。它為你的智能體提供兩個功能:搜索網絡查找相關內容,以及從特定 URL 提取全文。下圖可視化了深度研究助手的示例,我們將在博客後面部分深入討論。

兩者都針對 AI 消費進行了優化,返回結構化內容,智能體可以直接在之上進行推理。

  • exa_search:使用多種模式(包括 auto、fast 和 deep)搜索網絡。你的智能體可以使用類別、域、日期和文本內容等過濾器細化結果。
  • exa_get_contents:從智能體發現的 URL(無論是來自之前的搜索還是其自身推理)中檢索完整頁面內容。該工具首先檢查緩存結果以加快重複請求速度。如果需要新鮮內容,它可以自動回退到實時爬取以檢索頁面的最新版本。

使用 exa_search 搜索網絡

exa_search 工具為你的智能體提供了超越基本查詢字符串的搜索控制。該工具支持四種搜索模式:

  • Instant (~200ms) – 專為自動完成、實時建議和語音智能體等實時應用設計。
  • Fast (~450ms) – 為速度優化,同時仍訪問 Exa 的高質量索引。適用於智能體進行數十次搜索調用的工作流程。
  • Auto (~1s) [推薦] – 平衡延遲與高質量結果。推薦用於大多數用例。
  • Deep (~3-6s) – 跨查詢變體運行並行搜索以獲得最大覆蓋率。最適合需要完整性的研究任務。

除了搜索模式,exa_search 還為你的智能體提供對結果過濾和範圍的精細控制。您可以將搜索縮小到特定內容類別,如新聞文章、公司網站、GitHub 倉庫、PDF、個人資料或財務報告。當智能體已經知道需要什麼類型的來源時,類別過濾最為有效。例如,查詢技術性時過濾到研究論文,或者優先考慮時效性時過濾到新聞來源。您還可以在搜索結果的同一行中請求內容和摘要:

agent.tool.exa_search(
    query="recent advances in AI safety research",
    num_results=10,
    summary={"query": "key research areas and findings"}
)

響應包含標題、URL 以及每個結果針對您指定查詢的合成摘要。您的智能體可以在不閲讀每個完整頁面的情況下建立對主題的基礎理解。

使用 exa_get_contents 提取內容

一旦您的智能體找到了相關的 URL,無論是來自之前的搜索還是其自身推理,exa_get_contents 工具就會檢索完整頁面內容。您向其傳遞一個 URL 列表,它返回提取的文本,供智能體處理。Exa 維護一個內容緩存,對於已經爬取的頁面,可以即時提供結果。對於不在緩存中的頁面,或者當您的智能體需要頁面的最新版本時,該工具支持實時爬取。您可以使用 livecrawl 模式控制此行為。可配置的超時控制等待實時爬取完成的時間。您還可以控制返回的文本量。例如,從頁面檢索最多 5000 個字符的純文本:

agent.tool.exa_get_contents(
    urls=["https://example.com/blog-post"],
    highlight={"maxCharacters": 5000}
)

前提條件

要跟隨本文中的示例,您需要:

  • Python 3.10 或更高版本
  • 具有 Amazon Bedrock 訪問權限的 AWS 賬户
  • Exa API 密鑰
  • 安裝 strands-agents 和 strands-agents-tools 包:
pip install strands-agents strands-agents-tools

設置

Exa 工具遵循與 Strands Agents 框架中每個其他工具相同的模式,因此如果您使用過其他 Strands 工具,體驗是相同的。Strands Agents SDK 包含一個預建工具庫,涵蓋文件操作、網絡搜索、代碼執行、AWS 服務、內存管理等。Exa 工具是該庫的一部分。導入它們並通過 tools 參數傳遞給 Agent 構造函數。然後智能體的底層 LLM 在其推理循環中決定何時調用每個工具。由於集成直接與 Exa REST API 通信,因此您無需安裝或管理單獨的 SDK。唯一的新的依賴是 strands-agents-tools 包。

要使用 Exa 結合 Strands Agents,請按照以下步驟操作:

  1. 設置您的 Exa API 密鑰

Exa 需要 API 密鑰進行身份驗證訪問。在運行您的智能體之前,使用您的密鑰設置 EXA_API_KEY 環境變量。您可以從 Exa 儀表板獲取密鑰:

```bash export EXA_API_KEY="your_exa_api_key_here" ```

  1. 導入並註冊工具

在您的智能體代碼中,從 strands_tools.exa 導入 exa_search 和 exa_get_contents,並將它們包含在智能體的工具列表中:

```python from strands import Agent from strands_tools.exa import exa_search, exa_get_contents

agent = Agent(tools=[exa_search, exa_get_contents]) ```

  1. 調用您的智能體

註冊工具後,您的智能體可以自然地在其推理流程中交錯搜索和內容提取:

```python response = agent( "Search for the most recent trends in AI agents and provide a concise summary of key developments" ) ```

設置好智能體後,您就可以開始為不同的搜索場景使用 Exa 工具了。

示例:使用 Exa 構建深度研究智能體

為了查看兩個工具如何協同工作,以下示例構建了一個深度研究助手,在多步驟工作流程中演示了這兩個 Exa 工具。給定一個研究問題,智能體跨不同源類型運行四個目標搜索,從最有希望的結果中提取完整內容,並將所有內容綜合成一個結構化的研究簡報。整個工作流程在單個智能體調用中執行,推理循環中涉及多個工具調用。

關鍵設計見解是,不同的源類型需要不同的搜索參數,但不需要不同的工具。兩個 Exa 工具在工作流程中重複使用,每個步驟具有不同的參數配置:類別用於定位新聞、PDF 或倉庫;日期過濾器用於時效性;JSON 模式用於結構化提取;以及用於新鮮度的實時爬取。

開始使用

  • 在 Exa 儀表板註冊 Exa API 密鑰
  • 克隆示例倉庫並運行深度研究助手
  • 修改系統提示以針對您的領域:切換類別過濾器、日期範圍和 JSON 模式以匹配您的用例

設置智能體

設置需要一個模型、一個系統提示和兩個 Exa 工具:

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],
    )

系統提示定義了研究工作流程,引導智能體完成六個步驟:四次針對不同源類型的目標搜索,一次深入內容提取,以及一次最終綜合傳遞。智能體決定何時以及如何調用每個工具,如何解釋結果,以及何時在其推理循環中移動到下一步。

6 步驟研究工作流程

每個步驟指示智能體使用針對該內容類型調整的不同參數調用 Exa 工具。

步驟 1:概覽搜索 – 使用 auto 模式進行廣泛掃描以建立基礎理解。系統提示指示智能體使用以下參數調用 exa_search:

  • type: "auto"
  • num_results: 5
  • text: {"maxCharacters": 2000}
  • highlights: {"maxCharacters": 4000}
  • summary: {"query": "What are the key concepts, main points, and important details?"}
  • subpages: 2
  • subpage_target: ["overview", "about", "introduction"]
  • max_age_hours: 168

步驟 2:新聞搜索 – 重點縮小到 30 天日期窗口內的新聞來源。日期邊界在 Python 中計算並注入到提示中。max_age_hours 設置緩存內容的最大可接受年齡(小時數)。

  • category: "news"
  • num_results: 5
  • start_published_date: (計算值)
  • text: {"maxCharacters": 1500}
  • summary: {"query": "What are the key announcements, developments, and news?"}
  • max_age_hours: 24

步驟 3:研究論文 – 繼續執行後續步驟,針對研究論文和其他來源。由於篇幅限制,此處省略詳細配置。

通過這種方式,深度研究智能體能夠自主完成複雜的研究任務,實時獲取並綜合網絡信息。

展開要點與分析

文章情報

工程師中級

要點

  • Strands Agents SDK 是一個開源框架,採用模型驅動方式構建 AI 智能體。
  • Exa 是一個專為 LLM 設計的網絡搜索引擎,返回結構化內容,無廣告和 SEO 噪聲。
  • 集成提供兩個工具:exa_search(多種搜索模式)和 exa_get_contents(獲取頁面全文)。
  • 通過一個深度研究助手示例展示了多步驟工作流程。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。