Tavily
Tavily 是为 LLM 设计的搜索 API,允许 AI 应用程序访问实时网络数据。
前提条件
Tavily API 密钥(必需)- 在 https://app.tavily.com 获取您的密钥(每月 1,000 次免费 API 调用,无需信用卡)
在 ~/.claude/settings.json 中添加:
{
"env": {
"TAVILY_API_KEY": "tvly-YOUR_API_KEY"
}
}
添加 API 密钥后重新启动 Claude 代码。
安装
Python:pip install tavily-python
JavaScript:npm install @tavily/core
请参阅 references/sdk.md 以获取完整的 SDK 参考文档。
客户端初始化
from tavily import TavilyClient
# 选项 1:使用 TAVILY_API_KEY 环境变量(推荐)
client = TavilyClient()
# 选项 2:显式 API 密钥
client = TavilyClient(api_key="tvly-YOUR_API_KEY")
# 选项 3:带有项目跟踪(用于使用组织)
client = TavilyClient(api_key="tvly-YOUR_API_KEY", project_id="your-project-id")
# 异步客户端用于并行查询
from tavily import AsyncTavilyClient
async_client = AsyncTavilyClient()
选择合适的方法
对于自定义代理/工作流:
需要 方法
网页搜索结果 search()
特定 URL 的内容 extract()
整个站点的内容 crawl()
从站点地图中发现 URL map()
对于开箱即用的研究:
需要 方法
带有 AI 合成的端到端研究 research()
快速参考 search()
response = client.search(
query="量子计算突破",
max_results=10,
search_depth="advanced",
topic="general"
)
for result in response["results"]:
print(f"{result['title']}: {result['score']}")
关键参数:query、max_results、search_depth(超快/快/基本/高级)、topic、include_domains、exclude_domains、time_range
extract() - URL 内容提取
# 推荐的两步模式(用于控制)
search_results = client.search(query="Python 异步最佳实践")
urls = [r["url"] for r in search_results["results"] if r["score"] > 0.5]
extracted = client.extract(
urls=urls[:20],
query="异步模式",
chunks_per_source=3
)
关键参数:urls(最大 20)、extract_depth、query、chunks_per_source(1-5)
crawl() - 站点范围内的提取
response = client.crawl(
url="https://docs.example.com",
max_depth=2,
instructions="找到 API 文档页面",
chunks_per_source=3,
select_paths=["/docs/.
", "/api/."]
)
关键参数:url、max_depth、max_breadth、limit、instructions、chunks_per_source、select_paths、exclude_paths
map() - URL 发现
response = client.map(
url="https://docs.example.com",
max_depth=2,
instructions="找到所有 API 和指南页面"
)
api_docs = [url for url in response["results"] if "/api/" in url]
research() - AI 驱动的研究
导入时间
# 用于综合多主题研究
result = client.research(
input="分析 X 在 SMB 市场的竞争格局",
model="pro"
)
request_id = result["request_id"]
# 轮询直到完成
response = client.get_research(request_id)
while response["status"] not in ["completed", "failed"]:
time.sleep(10)
response = client.get_research(request_id)
print(response["content"])
# 研究报告
关键参数:input、model(“mini”/“pro”/“auto”)、stream、output_schema、citation_format
详细指南
有关完整的参数、响应字段、模式和示例,请参阅:
references/sdk.md - Python 和 JavaScript SDK 参考、异步模式、混合 RAG
references/search.md - 查询优化、搜索深度选择、域过滤、异步模式、后过滤
references/extract.md - 一步式与两步式提取、查询/块用于定位、高级模式
references/crawl.md - 爬行与映射、语义焦点指令、用例、映射-提取模式
references/research.md - 提示最佳实践、模型选择、流媒体、结构化输出模式
references/integrations.md - LangChain、LlamaIndex、CrewAI、Vercel AI SDK 和框架集成