跳转到内容

Tavily 搜索工具

TavilySearchTool 提供了 Tavily Search API 的接口,使 CrewAI 智能体能够执行全面的网络搜索。它支持指定搜索深度、主题、时间范围、包含/排除的域名,以及是否在结果中包含直接答案、原始内容或图片。

要使用 TavilySearchTool,你需要安装 tavily-python 库:

Terminal window
uv add 'crewai[tools]' tavily-python

确保 Tavily API key 已设置为环境变量:

Terminal window
export TAVILY_API_KEY='your_tavily_api_key'

可在 https://app.tavily.com/ 获取 API key(注册后创建密钥)。

下面展示如何在 CrewAI 智能体中初始化并使用 TavilySearchTool

import os
from crewai import Agent, Task, Crew
from crewai_tools import TavilySearchTool
# 确保环境变量 TAVILY_API_KEY 已设置
# os.environ["TAVILY_API_KEY"] = "YOUR_TAVILY_API_KEY"
# 初始化工具
tavily_tool = TavilySearchTool()
# 创建使用该工具的智能体
researcher = Agent(
role='Market Researcher',
goal='Find information about the latest AI trends',
backstory='An expert market researcher specializing in technology.',
tools=[tavily_tool],
verbose=True
)
# 为智能体创建任务
research_task = Task(
description='Search for the top 3 AI trends in 2024.',
expected_output='A JSON report summarizing the top 3 AI trends found.',
agent=researcher
)
# 组建 crew 并启动
crew = Crew(
agents=[researcher],
tasks=[research_task],
verbose=2
)
result = crew.kickoff()
print(result)

TavilySearchTool 在初始化时或调用 run 方法时接受以下参数:

  • query (str):必需。搜索查询字符串。
  • search_depth (Literal[“basic”, “advanced”], optional):搜索深度。默认值为 "basic"
  • topic (Literal[“general”, “news”, “finance”], optional):搜索聚焦的主题。默认值为 "general"
  • time_range (Literal[“day”, “week”, “month”, “year”], optional):搜索的时间范围。默认值为 None
  • days (int, optional):向前搜索的天数。当未设置 time_range 时相关。默认值为 7
  • max_results (int, optional):返回的最大搜索结果数。默认值为 5
  • include_domains (Sequence[str], optional):在搜索中优先包含的域名列表。默认值为 None
  • exclude_domains (Sequence[str], optional):在搜索中排除的域名列表。默认值为 None
  • include_answer (Union[bool, Literal[“basic”, “advanced”]], optional):是否包含由搜索结果综合生成的直接答案。默认值为 False
  • include_raw_content (bool, optional):是否包含被搜索页面的原始 HTML 内容。默认值为 False
  • include_images (bool, optional):是否包含图片结果。默认值为 False
  • timeout (int, optional):请求超时时间(秒)。默认值为 60

你可以使用自定义参数配置工具:

# 示例:使用特定参数初始化
custom_tavily_tool = TavilySearchTool(
search_depth='advanced',
max_results=10,
include_answer=True
)
# 智能体将使用这些默认值
agent_with_custom_tool = Agent(
role="Advanced Researcher",
goal="Conduct detailed research with comprehensive results",
tools=[custom_tavily_tool]
)
  • 全面搜索:访问 Tavily 强大的搜索索引
  • 可配置深度:可在基础和高级搜索模式之间选择
  • 主题过滤:聚焦于一般、新闻或金融主题
  • 时间范围控制:将结果限制在特定时间段
  • 域名控制:包含或排除特定域名
  • 直接答案:从搜索结果中获得综合答案
  • 内容过滤:通过自动截断内容避免上下文窗口问题

工具会以 JSON 字符串返回搜索结果,其中包括:

  • 带标题、URL 和内容片段的搜索结果
  • 可选的查询直接答案
  • 可选的图片结果
  • 可选的原始 HTML 内容(启用时)

每个结果的内容都会被自动截断,以避免上下文窗口问题,同时保留最相关的信息。