跳到主要内容 Python tavily 库:Tavily 搜索 API 交互工具 | 极客日志
Python AI
Python tavily 库:Tavily 搜索 API 交互工具 Python tavily 库是与 Tavily 搜索 API 交互的 Python 包装器,专为 AI 代理和 LLM 设计。支持同步和异步客户端,提供 Web 搜索、问答、内容提取、网站爬取及站点映射等功能。安装简单,需配置 API 密钥。适用于 RAG 应用、聊天机器人、数据分析及自动化研究。相比传统爬虫,它提供更清洗的数据和更快的响应速度,适合增强 AI 知识库。
Python 的 tavily 库(tavily-python)是一个用于与 Tavily 搜索 API 交互的 Python 包装器,旨在为 AI 代理和大型语言模型(LLMs)提供实时、准确的 Web 搜索和内容提取功能。它由 Tavily AI 开发,支持同步和异步客户端,适合集成到 Python 应用程序中以增强搜索、问答和内容爬取能力。
1. 什么是 tavily 库?
tavily 库是 Tavily 公司开发的 Python SDK,用于简化与 Tavily 搜索 API 的交互。Tavily API 是一个专为 AI 代理和 LLMs 优化的搜索引擎,提供实时、准确、可验证的搜索结果,特别适合检索增强生成(RAG)等 AI 工作流。tavily 库支持搜索、问答、内容提取、网站爬取和站点映射等功能,易于集成到 Python 项目中。
核心特点:
AI 优化 :专为 AI 代理设计,提供简洁、准确的搜索结果。
多功能 :支持搜索、问答、内容提取、爬取和站点映射。
同步和异步 :提供 TavilyClient 和 AsyncTavilyClient,适应不同场景。
可定制 :支持搜索深度、域名过滤、结果数量等参数。
易用性 :通过简单的 API 密钥认证,提供直观的 Python 接口。
2. 安装 tavily 库
2.1 安装方法 pip install tavily-python
python -c "import tavily; print(tavily.__version__)"
2.2 依赖要求
Python 版本 :3.8 或以上。
必需依赖 :requests(用于 HTTP 请求),自动安装。
可选依赖 :
aiohttp:异步客户端(AsyncTavilyClient)所需。
cohere:用于 Tavily Hybrid RAG 的嵌入和排名功能(需单独安装)。
pydantic:某些集成(如 AutoGen)可能需要,用于数据验证。
2.3 获取 API 密钥 使用 tavily 库需 Tavily API 密钥:
访问 Tavily 官网 ,注册账户。
在用户仪表板获取 API 密钥(格式如 tvly-YOUR_API_KEY)。
export TAVILY_API_KEY="tvly-YOUR_API_KEY"
from tavily import TavilyClient
client = TavilyClient(api_key="tvly-YOUR_API_KEY" )
2.4 注意事项
确保网络连接稳定,API 调用依赖互联网。
免费账户提供每月 1,000 次 API 信用,超出需升级付费计划。
Windows 用户可能需安装 pip 和 Python 环境,推荐使用虚拟环境。
3. 核心功能 tavily 库封装了 Tavily API 的多种功能,适用于搜索、问答和内容处理。以下是主要功能:
搜索(Search) :执行 Web 搜索,返回结构化的结果(如标题、URL、内容片段)。支持基本(basic)和高级(advanced)搜索深度。可定制域名过滤、结果数量等。
问答(Q&A Search) :直接返回查询的简洁答案,适合 LLM 集成。示例:查询'谁是 Lionel Messi?'返回简短的事实性回答。
内容提取(Extract) :从指定 URL 提取清洗后的 HTML 内容,支持批量提取(最多 20 个 URL)。可包括图像和描述。
网站爬取(Crawl) :从起始 URL 开始爬取,提取相关页面内容。支持最大深度和结果限制,带指导指令(如'仅提取柑橘类水果页面')。
站点映射(Map) :分析网站结构,返回页面 URL 列表。适合探索网站导航或内容组织。
混合 RAG(Hybrid RAG) :结合 Web 搜索和数据库检索(如 MongoDB),用于增强生成。需 Cohere API 密钥和 MongoDB 配置。
功能 描述 示例场景 搜索 Web 搜索,返回结构化结果 研究最新新闻、查找资料 问答 直接回答查询,适合 LLM 构建问答机器人 内容提取 从 URL 提取清洗内容 分析网页数据 网站爬取 爬取相关页面内容 收集专题信息 站点映射 返回网站结构 网站分析、导航提取 混合 RAG 结合 Web 和数据库检索 增强 AI 知识库
4. 使用方法与示例 以下是 tavily 库的主要使用场景和代码示例。
4.1 基本搜索 from tavily import TavilyClient
client = TavilyClient(api_key="tvly-YOUR_API_KEY" )
response = client.search("Python 3.12 新特性" )
print (response)
{ "query" : "Python 3.12 新特性" , "results" : [ { "title" : "What's New In Python 3.12" , "url" : "https://docs.python.org/3/whatsnew/3.12.html" , "content" : "Python 3.12 introduces new syntax for type annotations..." } ] , "response_time" : 1.67 }
search 方法返回字典,包含查询、结果和响应时间。
可通过 search_depth="advanced" 提高结果质量。
4.2 问答搜索 answer = client.qna_search(query="谁是 Lionel Messi?" )
print (answer)
Lionel Messi 是阿根廷职业足球运动员,广泛认为是足球史上最伟大的球员之一。
qna_search 适合需要快速答案的场景,如聊天机器人。
答案由 Tavily 的 LLM 基于搜索结果生成。
4.3 内容提取 urls = ["https://en.wikipedia.org/wiki/Artificial_intelligence" , "https://en.wikipedia.org/wiki/Machine_learning" ]
response = client.extract(urls, include_images=True )
for result in response["results" ]:
print (f"URL: {result['url' ]} " )
print (f"内容:{result['raw_content' ][:200 ]} ..." )
支持最多 20 个 URL,include_images=True 返回图像 URL 和描述。
extract_depth 可设为 basic 或 advanced。
4.4 网站爬取 response = client.crawl(
url="https://wikipedia.org/wiki/Lemon" ,
max_depth=3 ,
limit=50 ,
instructions="仅提取关于柑橘类水果的页面"
)
for result in response["results" ]:
print (f"URL: {result['url' ]} " )
print (f"片段:{result['raw_content' ][:200 ]} ..." )
instructions 参数指导爬取内容,增强相关性。
max_depth 控制爬取层级,limit 限制结果数量。
4.5 站点映射 response = client.map (
url="https://docs.tavily.com" ,
max_depth=2 ,
instructions="查找 Python SDK 相关页面"
)
for url in response["results" ]:
print (url)
4.6 异步客户端 使用 AsyncTavilyClient 进行异步操作。
import asyncio
from tavily import AsyncTavilyClient
async def main ():
client = AsyncTavilyClient(api_key="tvly-YOUR_API_KEY" )
response = await client.search("Python 异步编程" )
print (response)
asyncio.run(main())
异步客户端适合高并发场景,如 Web 爬虫。
接口与同步客户端相同,仅方法需 await。
4.7 集成 LangChain from langchain_community.retrievers import TavilySearchAPIRetriever
retriever = TavilySearchAPIRetriever(k=3 , api_key="tvly-YOUR_API_KEY" )
results = retriever.invoke("Python 3.12 新特性" )
print (results)
需要安装 langchain-community 和 tavily-python。
适合构建 RAG 应用。
5. 性能分析 研究表明,tavily 库在搜索和内容提取方面表现出色,尤其在以下方面:
响应速度 :API 响应时间通常在 0.02-2 秒,适合实时应用。
准确性 :使用先进算法和 NLP 技术,从可信源(如维基百科)提取数据,确保结果可靠。
可扩展性 :支持高并发请求,免费账户每月 1,000 次信用,付费计划可扩展。
import time
from tavily import TavilyClient
client = TavilyClient(api_key="tvly-YOUR_API_KEY" )
start = time.time()
response = client.search("Python 3.12 新特性" , search_depth="advanced" )
print (f"响应时间:{time.time() - start:.2 f} 秒" )
相比 Google 搜索 API,Tavily 更专注 AI 工作流,答案更简洁。
相比 requests + BeautifulSoup 爬虫,tavily 提供清洗数据,减少开发工作量。
6. 适用场景
AI 代理和聊天机器人 :使用 qna_search 提供实时问答。示例:构建基于 LLM 的知识问答系统。
Web 爬虫 :使用 crawl 和 map 收集专题数据。示例:研究柑橘类水果的维基百科页面。
数据分析 :使用 extract 从网页提取结构化数据。示例:分析技术文档或新闻。
RAG 应用 :结合 LangChain 或 LlamaIndex,增强 LLM 的知识库。示例:生成基于最新数据的报告。
自动化研究 :集成到 GPT-Researcher 等工具,自动化信息收集。示例:研究市场趋势。
本地数据处理:tavily 依赖 Web 数据,无法处理本地文件。
高频批量爬取:免费账户信用有限,需付费计划。
7. 注意事项
API 密钥安全 :避免硬编码密钥,推荐使用环境变量。
信用限制 :免费账户每月 1,000 次信用,超出需升级计划。检查信用使用情况:client.get_usage()(若支持)。
错误处理 :处理常见异常,如 MissingAPIKeyError 和 InvalidAPIKeyError。
异步客户端 :异步方法需在 asyncio 事件循环中运行。
版本兼容性 :确保 Python 3.8+,旧版本可能不支持。检查 tavily-python 版本,确保与 API 兼容。
可读性与维护 :避免复杂参数配置,优先使用默认值。示例:client.search("查询", search_depth="basic") 更简单。
import asyncio
async def main ():
client = AsyncTavilyClient(api_key="tvly-YOUR_API_KEY" )
await client.search("测试" )
asyncio.run(main())
from tavily import TavilyClient, MissingAPIKeyError, InvalidAPIKeyError
try :
client = TavilyClient(api_key="" )
except MissingAPIKeyError:
print ("缺少 API 密钥" )
import os
client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY" ))
8. 最佳实践
环境变量管理 :将 API 密钥存储在 .env 文件中,使用 python-dotenv 加载。
参数优化 :根据需求选择 search_depth(basic 快,advanced 准)。使用 include_domains 和 exclude_domains 过滤结果。
异步优先 :高并发场景使用 AsyncTavilyClient,减少阻塞。
错误重试 :对网络错误实现重试逻辑,使用 tenacity 等库。
结果处理 :检查响应中的 failed_results 和 response_time,确保数据完整。
response = client.search("测试" )
if response["failed_results" ]:
print ("失败结果:" , response["failed_results" ])
from tenacity import retry, stop_after_attempt, wait_fixed
@retry(stop=stop_after_attempt(3 ), wait=wait_fixed(2 ) )
async def safe_search (client, query ):
return await client.search(query)
async def fetch_multiple ():
client = AsyncTavilyClient(api_key="tvly-YOUR_API_KEY" )
tasks = [client.search(q) for q in ["查询 1" , "查询 2" ]]
results = await asyncio.gather(*tasks)
return results
response = client.search("Python 教程" , search_depth="advanced" , include_domains=["python.org" , "realpython.com" ])
from dotenv import load_dotenv
import os
load_dotenv()
client = TavilyClient(api_key=os.getenv("TAVILY_API_KEY" ))
9. 总结表 功能 示例代码 说明 搜索 client.search("Python 3.12")返回结构化 Web 搜索结果 问答 client.qna_search("谁是 Messi?")提供简洁的答案,适合 LLM 内容提取 client.extract(["url1", "url2"])从 URL 提取清洗内容 网站爬取 client.crawl(url, instructions="...")爬取相关页面内容 站点映射 client.map(url, max_depth=2)返回网站结构 URL 列表 异步搜索 await async_client.search("查询")高并发场景的异步调用
10. 学习资源
11. 总结 tavily 库是 Python 中与 Tavily 搜索 API 交互的强大工具,专为 AI 代理和 LLM 优化,提供搜索、问答、内容提取、爬取和站点映射等功能。其同步和异步客户端支持灵活的集成,适用于聊天机器人、Web 爬虫、RAG 应用和自动化研究。研究表明,tavily 的响应速度和准确性优于传统爬虫方案。
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown 转 HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online