Tavily Search:一个专为 AI Agent 打造的专属搜索引擎 API
在构建高级 AI Agent 或 RAG (Retrieval-Augmented Generation) 系统时,开发者们经常面临一个棘手的问题:如何从浩瀚的互联网中,快速、准确地获取最相关的信息?传统的搜索引擎虽然强大,但其结果充满了广告、SEO 优化内容和导航链接,对于需要纯净、高密度信息的 AI 模型来说,这无异于在噪音中寻找信号。
“垃圾进,垃圾出”(Garbage In, Garbage Out,简称 GIGO)。如果输入到AI模型中的训练数据是低质量、有偏见、不准确或不相关的上下文,那么模型产出的结果也必然是低质量、不可靠或有害的输出结果。
因此,当 AI Agent 进行网络搜索时,我们需要为 AI 提供一个专门为其设计的搜索引擎,该搜索引擎能理解 AI 的需求,直接返回干净、精炼、可直接用于模型推理的数据(高质量的上下文)。本文介绍一个专为 AI Agent 打造的搜索引擎 API:Tavily Search:https://tavily.com/
https://link.zhihu.com/?target=https%3A//tavily.com/

什么是 Tavily Search?
简单来说,Tavily Search 是一个专为大型语言模型(LLM)和 AI Agent 优化的搜索引擎 API。它的目标不是服务于人类的日常搜索,而是成为 AI 应用的“外部知识大脑”,提供实时、准确、无干扰的搜索结果。
Tavily Search 不仅仅是一个简单的搜索接口,更是一个智能的信息处理层。当一个查询被发送到 Tavily 时,它会在后台执行复杂的搜索、抓取、过滤和信息提取流程,最终将最核心、最相关的内容整合起来 ,以一种对 LLM 友好的格式返回。
Tavily Search 的核心优势
Tavily 专为 AI 设计的特性:
- 精准聚焦,专为 AI:不同于通用搜索引擎,Tavily 的算法经过特殊优化,能够更好地理解 AI Agent 的查询意图,过滤掉无关的“噪音”(如用户评论、广告、导航栏等),直接命中问题的核心信息。
- 自动降噪,信息精炼:它能够自动对搜索到的网页内容进行清洗和提炼,将冗长的文章浓缩成关键事实和摘要。这意味着模型不再需要处理杂乱的 HTML 源码,而是可以直接使用高度结构化的信息。
- ⚡️无缝集成,快速开发:Tavily 提供了清晰的 API 和完善的 Python 库,并且与 LangChain、LlamaIndex 等主流 AI 开发框架深度集成。开发者只需几行代码,就能让自己的 Agent 拥有强大的在线搜索能力。
- 全面覆盖,兼顾速度:它能全面扫描互联网,并可以根据需求指定搜索深度、包含或排除特定域名,甚至聚焦于“新闻”、“学术”等特定领域,在保证信息广度的同时,也优化了响应速度。
在 LangChain 中使用 Tavily
下面通过一个简单的 Python 代码示例,展示在 LangChain 中集成 Tavily
1、获取 Tavily API key
在 https://www.tavily.com/ 的官网,使用邮箱注册账号(或,直接使用 github 账号登录):

获取 API Key
账号登录后,可以在 https://app.tavily.com/home 查看 API keys(每个月有 1000 次免费调用额度):

直接工具调用
1.设置环境变量
将 API keys 设置为环境变量 TAVILY_API_KEY

2、langchain-tavily 安装
运行以下命令,安装 langchain-tavily 包:
pip install langchain-tavily
3、Python 代码示例
import os
from langchain_tavily import TavilySearch
from dotenv import load_dotenv
load_dotenv(override=True)
# 强烈建议将 API 密钥设置为环境变量
os.environ["TAVILY_API_KEY"] = os.getenv("TAVILY_API_KEY")
# 初始化搜索工具
# max_results=3 表示我们希望获取前3个最相关的搜索结果
search = TavilySearch(max_results=3)
# 发起搜索查询
# 这里的查询是一个实际的、需要实时信息的问题
query = "2025年世俱杯决赛的对阵双方和最终比分是多少?"
results = search.invoke(query)
search_results = results["results"] # 获取结果列表
for index, result in enumerate(search_results):
print(f"结果 {index + 1} (相关性评分: {result['score']:.4f}):")
print(f" 标题: {result['title']}")
print(f" 来源: {result['url']}")
print(f" 内容摘要: {result['content']}")
print("-" * 30)
示例输出:
{
'query': 'What happened at the last wimbledon',
'follow_up_questions': None,
'answer': None,
'images': [],
'results': [
{'url': 'https://en.wikipedia.org/wiki/Wimbledon_Championships',
'title': 'Wimbledon Championships - Wikipedia',
'content': 'Due to the COVID-19 pandemic, Wimbledon 2020 was cancelled ...',
'score': 0.62365627198,
'raw_content': None},
{'url': 'https://www.cbsnews.com/news/wimbledon-men-final-carlos-alcaraz-novak-djokovic/',
'title': "Carlos Alcaraz beats Novak Djokovic at Wimbledon men's final to ...",
'content': 'In attendance on Sunday was Catherine, the Princess of Wales ...',
'score': 0.5154731446,
'raw_content': None}
],
'response_time': 2.3
}
对于追求更高质量、更少幻觉、更具时效性的 AI 应用开发者来说,Tavily Search 提供了一个极具吸引力的解决方案。它将复杂的网络信息检索工作变成了一个简单的 API调用,让开发者可以更专注于模型逻辑和应用创新本身。
可用参数
max_results(可选,整数):要返回的最大搜索结果数。默认值为 5。topic(可选,字符串):搜索类别。可以是“general”、“news”或“finance”。默认值为“general”。include_answer(可选,布尔值):是否在结果中包含对原始查询的回答。默认值为 False。include_raw_content(可选,布尔值):是否包含每个搜索结果的已清理和解析的 HTML 代码。默认值为 False。include_images(可选,布尔值):是否在响应中包含查询相关的图像列表。默认值为 False。include_image_descriptions(可选,布尔值):是否为每张图片添加描述性文字。默认值为 False。search_depth(可选,字符串):搜索深度,可以是“基本”或“高级”。默认值为“基本”。time_range(可选,字符串):从当前日期(发布日期)向前推算的时间范围,用于筛选结果——“日”、“周”、“月”或“年”。默认值为 None。start_date(可选,字符串):返回指定开始日期(发布日期)之后的所有结果。必须采用 YYYY-MM-DD 格式。默认值为 None。end_date(可选,字符串):返回指定结束日期之前的所有结果。必须采用 YYYY-MM-DD 格式。默认值为 None。include_domains(可选,List[str]):要包含的域名列表。最多 300 个域名。默认值为 None。exclude_domains(可选,List[str]):要明确排除的域名列表。最多 150 个域名。默认值为 None。include_usage(可选,布尔值):是否在响应中包含信用额度使用信息。默认值为 False。
与agent一起使用
from langchain.agents import create_agent
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
from rich import print
from langchain_tavily import TavilySearch
import os
load_dotenv(override=True)
#定义模型,调用的是ChatDeepseek()
model=init_chat_model(
model='deepseek:deepseek-v4-pro'
)
#定义工具 使用内置的
web_search=TavilySearch(
tavily_api_key=os.getenv("TAVILY_API_KEY"),
# 返回条数
max_results=2
)
agent=create_agent(
model = model,
tools = [web_search]
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "请帮我查询2024年诺贝尔物理学奖得主是谁?"}]}
)
print(result)
提示:为了获得更相关且更具时效性的结果,请在系统提示中输入今天的日期。这有助于代理在搜索最新信息时理解当前上下文。例如:
f"You are a helpful research assistant. Today's date is {datetime.today().strftime('%B %d, %Y')}. Use web search to find accurate, up-to-date information."
更多推荐

所有评论(0)