Tavily实战:5个案例解锁AI搜索的强大能力 案例 1:基础实时搜索与结果处理 应用场景 :构建一个简单的实时信息查询系统,用于快速获取特定主题的最新信息,如技术趋势、新闻事件或产品更新。解决传统搜索引擎结果分散、信息冗余的问题,直接返回结构化的高相关度结果。
核心代码 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 from tavily import TavilyClientimport osapi_key = os.getenv("TAVILY_API_KEY" ) if not api_key: raise ValueError("TAVILY_API_KEY 环境变量未设置" ) client = TavilyClient(api_key=api_key) response = client.search( query="Python 3.12 新特性" , search_depth="advanced" , max_results=5 , include_domains=["python.org" , "realpython.com" ] ) print (f"搜索查询: {response['query' ]} " )print (f"响应时间: {response['response_time' ]:.2 f} 秒\n" )for i, result in enumerate (response['results' ], 1 ): print (f"结果 {i} :" ) print (f"标题: {result['title' ]} " ) print (f"链接: {result['url' ]} " ) print (f"摘要: {result['content' ][:200 ]} ...\n" )
功能解析 :
API密钥管理 :通过环境变量安全加载API密钥,避免硬编码泄露风险。
搜索参数配置:
search_depth="advanced":启用高级搜索模式,提高结果质量和相关性
max_results=5:限制返回结果数量,减少信息过载
include_domains:仅从指定权威域名获取结果,提高信息可信度
结果处理 :遍历返回结果,提取标题、URL和摘要信息,进行结构化展示。
使用建议 :
最佳实践 :将API密钥存储在.env文件中,使用python-dotenv库加载,提高安全性。
性能优化 :对于高频查询,可实现结果缓存机制,减少重复API调用。
错误处理 :添加异常捕获机制,处理网络错误、API限流等情况。
适用场景 :快速信息查询、技术调研、新闻聚合等需要实时数据的场景。
案例 2:问答搜索与LLM集成 应用场景 :构建智能问答系统,直接返回自然语言答案,适合集成到聊天机器人、虚拟助手或知识问答平台。解决传统搜索需要用户自行筛选信息的问题,直接提供简洁准确的答案。
核心代码 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from tavily import TavilyClientimport osclient = TavilyClient(api_key=os.getenv("TAVILY_API_KEY" )) question = "谁是 Lionel Messi?" answer = client.qna_search(query=question) print (f"问题: {question} " )print (f"答案: {answer} " )from langchain_openai import ChatOpenAIllm = ChatOpenAI( model="deepseek-chat" , openai_api_key=os.getenv("DEEPSEEK_API_KEY" ), openai_api_base="https://api.deepseek.com/v1" ) extended_answer = llm.invoke(f"请详细介绍一下{question} ,基于以下信息:{answer} " ) print (f"\n扩展回答: {extended_answer.content} " )
功能解析 :
问答搜索 :使用qna_search方法直接获取自然语言答案,无需手动解析搜索结果。
LLM集成 :将Tavily返回的答案作为上下文,结合LangChain和OpenAI的LLM生成更详细的回答。
结果格式 :返回简洁准确的答案,适合直接展示给用户或作为LLM的输入。
使用建议 :
最佳实践 :在需要快速回答的场景中优先使用qna_search,减少LLM的调用次数和成本。
结果验证 :对于关键信息,建议同时返回来源链接,提高答案可信度。
参数调整 :通过search_depth参数控制回答的详细程度,”basic”模式返回更简洁的答案,”advanced”模式提供更全面的信息。
适用场景 :聊天机器人、智能客服、知识问答平台等需要直接回答用户问题的场景。
案例 3:批量内容提取与分析 应用场景 :从多个网页中提取结构化内容,用于数据分析、文本挖掘或知识图谱构建。解决传统爬虫需要手动解析HTML、处理反爬机制的问题,直接返回清洗后的文本内容。
核心代码 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 from tavily import TavilyClientimport osfrom bs4 import BeautifulSoupclient = TavilyClient(api_key=os.getenv("TAVILY_API_KEY" )) urls = [ "https://en.wikipedia.org/wiki/Artificial_intelligence" , "https://en.wikipedia.org/wiki/Machine_learning" , "https://en.wikipedia.org/wiki/Data_science" ] response = client.extract( urls=urls, include_images=False , include_raw_content=True ) for result in response["results" ]: print (f"URL: {result['url' ]} " ) print (f"标题: {result['title' ]} " ) soup = BeautifulSoup(result['raw_content' ], 'html.parser' ) paragraphs = soup.find_all('p' ) if paragraphs: print ("摘要:" ) for p in paragraphs[:3 ]: print (f" {p.get_text()[:200 ]} ..." ) print ("\n" + "=" *80 + "\n" )
功能解析 :
批量提取 :一次最多可提取20个URL的内容,提高数据采集效率。
内容清洗 :自动处理HTML标签,返回干净的文本内容。
灵活配置 :可选择是否提取图片、原始HTML内容等,满足不同需求。
结果处理 :结合BeautifulSoup进一步解析HTML内容,提取特定元素。
使用建议 :
最佳实践 :对于大规模数据采集,使用异步客户端AsyncTavilyClient提高并发处理能力。
性能优化 :限制include_raw_content为False,仅返回清洗后的文本内容,减少数据传输量。
错误处理 :检查response["failed_results"]处理提取失败的URL。
适用场景 :网页内容分析、文本挖掘、知识图谱构建、竞品分析等需要批量获取网页内容的场景。
案例 4:异步高并发搜索 应用场景 :构建高并发的信息检索系统,同时处理多个搜索请求,提高系统吞吐量。解决传统同步搜索在高并发场景下性能瓶颈的问题,充分利用异步IO提高效率。
核心代码 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import asynciofrom tavily import AsyncTavilyClientimport osasync def perform_search (client, query ): """异步执行单个搜索任务""" try : response = await client.search( query=query, search_depth="basic" , max_results=3 ) return { "query" : query, "results" : response["results" ] } except Exception as e: return { "query" : query, "error" : str (e) } async def main (): client = AsyncTavilyClient(api_key=os.getenv("TAVILY_API_KEY" )) queries = [ "2026年人工智能发展趋势" , "Python异步编程最佳实践" , "大模型微调技术" , "AI伦理与治理" ] tasks = [perform_search(client, query) for query in queries] results = await asyncio.gather(*tasks) for result in results: if "error" in result: print (f"查询 '{result['query' ]} ' 失败: {result['error' ]} " ) else : print (f"\n查询: {result['query' ]} " ) for i, item in enumerate (result['results' ], 1 ): print (f" {i} . {item['title' ]} " ) print (f" {item['url' ]} " ) if __name__ == "__main__" : asyncio.run(main())
功能解析 :
异步客户端 :使用AsyncTavilyClient实现异步IO操作,提高并发处理能力。
并发任务 :通过asyncio.gather同时执行多个搜索任务,减少总等待时间。
错误处理 :为每个搜索任务添加异常捕获,确保单个任务失败不影响整体执行。
性能优化 :使用search_depth="basic"模式,提高响应速度,适合高并发场景。
使用建议 :
最佳实践 :在Web服务、API网关等高并发场景中优先使用异步客户端。
资源管理 :合理控制并发任务数量,避免超出API限流限制(默认100并发)。
结果缓存 :对于重复查询,实现缓存机制,减少API调用次数和成本。
适用场景 :实时数据监控、舆情分析、多任务信息检索等高并发场景。
案例 5:网站爬取与内容聚合 应用场景 :构建网站内容聚合系统,从指定网站爬取相关页面内容,用于知识整理、竞品分析或内容监控。解决传统爬虫需要手动处理链接发现、页面解析的问题,直接返回结构化的爬取结果。
核心代码 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 from tavily import TavilyClientimport osclient = TavilyClient(api_key=os.getenv("TAVILY_API_KEY" )) response = client.search( query="Python 异步编程 asyncio 文档" , search_type="crawl" , urls=["https://docs.python.org/3/library/asyncio.html" ], max_results=5 ) print (f"起始URL: https://docs.python.org/3/library/asyncio.html" )print (f"返回页面数量: {len (response['results' ])} \n" )for i, result in enumerate (response['results' ], 1 ): print (f"页面 {i} :" ) print (f"标题: {result['title' ]} " ) print (f"链接: {result['url' ]} " ) print (f"内容预览: {result['content' ][:300 ]} ...\n" )
功能解析 :
智能爬取 :从指定URL开始,自动发现并爬取相关页面内容。
爬取控制 :通过max_results参数控制爬取范围,避免过度爬取。
内容过滤 :使用query参数指导爬取过程,仅提取相关内容。
结构化结果 :返回包含URL、标题和内容的结构化结果,方便后续处理。
使用建议 :
最佳实践 :在爬取前查看目标网站的robots.txt文件,遵守爬取规则。
性能优化 :合理设置爬取深度和页面数量限制,避免长时间运行或触发反爬机制。
内容处理 :对爬取到的内容进行去重、清洗和分类,提高数据质量。
适用场景 :网站内容聚合、竞品分析、知识图谱构建、技术文档整理等需要批量获取网站内容的场景。
通用最佳实践
API密钥安全 :
始终使用环境变量或配置文件存储API密钥,避免硬编码
定期轮换API密钥,防止泄露风险
性能优化 :
根据需求选择合适的search_depth模式(basic/advanced)
合理设置max_results参数,减少数据传输量
高并发场景使用异步客户端AsyncTavilyClient
错误处理 :
捕获并处理常见异常(如网络错误、API限流、无效密钥等)
实现重试机制,提高系统健壮性
结果处理 :
对返回结果进行去重、清洗和结构化处理
实现结果缓存机制,减少重复API调用
成本控制 :
监控API使用情况,避免超出免费额度
优先使用qna_search获取简洁答案,减少API调用次数
这些案例覆盖了Tavily Python SDK的主要功能和应用场景,从基础搜索到高级爬取,从同步调用到异步并发,帮助你快速上手并灵活应用到实际项目中。