跳转到内容

Exa 搜索工具

ExaSearchTool 让 CrewAI 智能体可以使用 Exa 搜索网络,这是一个最快且最准确的网络搜索 API。它会针对任何查询返回最相关的结果,并支持节省 token 的高亮内容以及完整页面内容。

安装 CrewAI tools 包:

Terminal window
pip install 'crewai[tools]'

将你的 Exa API key 设置为环境变量:

Terminal window
export EXA_API_KEY='your_exa_api_key'

可在 Exa 控制台 获取 API key。

下面是如何在 CrewAI 智能体中使用 ExaSearchTool

import os
from crewai import Agent, Task, Crew
from crewai_tools import ExaSearchTool
# 初始化工具
exa_tool = ExaSearchTool()
# 创建使用该工具的智能体
researcher = Agent(
role='研究分析师',
goal='查找任何主题的最新信息',
backstory='一位擅长寻找最相关、最新信息的专家研究员。',
tools=[exa_tool],
verbose=True
)
# 为智能体创建任务
research_task = Task(
description='查找量子计算领域最近的 3 项突破。',
expected_output='前 3 项突破的摘要以及来源 URL。',
agent=researcher
)
# 组建 crew 并启动
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=True
)
result = crew.kickoff()
print(result)

ExaSearchTool 在初始化时接受以下参数:

  • type (str, optional):要使用的搜索类型。默认是 "auto"。可选项:"auto""instant""fast""deep"
  • highlights (bool or dict, optional):返回与查询最相关、节省 token 的摘录,而不是整页内容。默认值为 True。可传入如 {"max_characters": 4000} 的字典进行配置,或传入 False 关闭。
  • content (bool, optional):是否在结果中包含完整页面内容。默认值为 False
  • api_key (str, optional):你的 Exa API key。如果未提供,则回退到 EXA_API_KEY 环境变量。
  • base_url (str, optional):自定义 API 服务器 URL。如果未提供,则回退到 EXA_BASE_URL 环境变量。

调用工具时(或智能体调用时),可用以下搜索参数:

  • search_query (str):必需。搜索查询字符串。
  • start_published_date (str, optional):筛选发布日期晚于该日期的结果(ISO 8601 格式,例如 "2024-01-01")。
  • end_published_date (str, optional):筛选发布日期早于该日期的结果(ISO 8601 格式)。
  • include_domains (list[str], optional):限制搜索域名列表。

对于大多数智能体工作流,我们建议使用 highlights - 它会返回每个结果中最相关的摘录,并且使用的 token 比完整页面内容少得多:

# 获取与查询最相关、节省 token 的摘录
exa_tool = ExaSearchTool(
highlights=True,
type="auto",
)
# 在智能体中使用
agent = Agent(
role="Researcher",
goal="使用当前网络数据回答问题",
tools=[exa_tool]
)

对于深入的多步骤搜索,请使用 type="deep"

exa_tool = ExaSearchTool(
highlights=True,
type="deep",
)

关于如何在 highlights 和完整内容之间做选择的更多信息,请参阅 Exa 搜索最佳实践

你也可以把智能体连接到 Exa 托管的 MCP 服务器。通过 x-api-key 头部传入你的 API key:

from crewai import Agent
from crewai.mcp import MCPServerHTTP
agent = Agent(
role="研究分析师",
goal="在网络上查找并分析信息",
backstory="可以访问 Exa 工具的专家研究员",
mcps=[
MCPServerHTTP(
url="https://mcp.exa.ai/mcp",
headers={"x-api-key": "YOUR_EXA_API_KEY"},
),
],
)

可在 Exa 控制台 获取 API key。关于 CrewAI 中的 MCP,请参阅 MCP 概览

  • 节省 token 的高亮内容:获取每个结果中最相关的摘录,相比完整文本可节省约 10 倍 token
  • 语义搜索:基于含义而不仅仅是关键词查找结果
  • 完整内容获取:在搜索结果旁获取网页完整文本
  • 日期过滤:使用发布日期过滤限制结果的时间范围
  • 域名过滤:将搜索限制在特定域名