工具:Tavily搜索引擎
Tavily
介绍
Tavily是一个为大型语言模型(LLMs)和检索增强生成(RAG)优化的搜索引擎,旨在提供高效、快速且持久的搜索结果。该产品由Tavily团队开发,目标用户是AI开发者、研究人员以及需要实时、准确、有根据的信息的企业。Tavily Search API通过连接LLMs和AI应用程序到可信赖的实时知识,减少了幻觉和整体偏见,帮助AI做出更好的决策。
核心功能:
- 深度研究:通过单一的API调用,简化数据收集,提供来自可信来源的聚合和精选结果。
- 智能查询建议和答案:装备AI以自动化的方式深化知识,通过细微的答案和后续查询。
- 多源优化:与Bing、Google和SerpAPI等其他API相比,Tavily Search API会审查多个来源,从每个来源中找到最相关的内容,以优化LLM上下文。
- 灵活性和成本效益:Tavily Search API提供更灵活的定价计划和更实惠的成本。
价格计费,Tavily提供不同的定价计划,以满足不同用户的需求:
- Researcher计划:免费,每月1,000次API调用。
- Project计划:$30/月,每月4,000次API调用。
- Bootstrap计划:$100/月,每月15,000次API调用。
- Startup计划:$220/月,每月38,000次API调用。
- Growth计划:$500/月,每月100,000次API调用。
- Add-On计划:$100一次性购买,额外8,000次API调用。
- Enterprise计划:提供定制API调用、生产就绪的速率限制、定制的主题和来源以及企业级的安全和隐私。
使用
我们可以通过谷歌账号或者Github账号直接注册Tavily账号。

要使用Tavily,我们可以通过Python SDK轻松与API交互,直接在Python程序中利用搜索功能。我们还可以自定义字段,如上下文等,以优化搜索结果。Tavily的搜索结果基于来源的可信度和内容质量进行索引和排名,并且能够自主地构建后续查询,深入主题以提供细微的答案和全面的分析。
原生使用
模块安装:
pip install tavily-python
内容搜索:
import os
os.environ["TAVILY_API_KEY"] = "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"
# 1. 初始化搜索引擎客户端
from tavily import TavilyClient
# client = TavilyClient(api_key="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")
client = TavilyClient() # 如果不填写,则默认从本地系统变量中提取TAVILY_API_KEY的值作为key
# 2. 执行搜索
response = client.search("2024年第三季度中,中国与美国的GDP是多少?")
# 3. 获取结果,后续可以提供给大模型进行推理
print(response)
结合lagnchain进行使用
import os
os.environ["TAVILY_API_KEY"] = "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"
from langchain_ollama import ChatOllama
llm = ChatOllama(model="qwen2.5:7b")
# from langchain_openai import ChatOpenAI
# llm = ChatOpenAI(model='gpt-4', temperature=0)
from tavily import TavilyClient
client = TavilyClient()
query = "北京今天的天气以及温度?"
content = client.search(query, search_depth="advanced", max_results=2)["results"]
prompt = [
{
"role": "system",
"content": f'You are an chinese\'s AI critical thinker research assistant. '
f'Your sole purpose is to write well written, critically acclaimed,'
f'objective and structured reports on given text.'
}, {
"role": "user",
"content": f'Information: """{content}"""\n\n'
f'Using the above information, answer the following'
f'query: "{query}" in a detailed report --'
f'Please use markdown format and markdown syntax and chinese language.'
}]
report = llm.invoke(prompt).content
print(report)
除了上面用法,也可以基于Agent来进行使用,langchain内置了tvly的Agent工具包,代码:
import os
os.environ["TAVILY_API_KEY"] = "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"
from langchain_community.tools import TavilySearchResults
tool = TavilySearchResults(
max_results=5, # 最大返回搜索数量
include_answer=True, # 是否包含答案
include_raw_content=True, # 是否包含原始内容
include_images=True, # 是否包含图片
# search_depth="advanced", # 是否进行高级搜索【深度搜索】
# include_domains = [], # 包含的搜索引擎的域名
# exclude_domains = [] # 排除的搜索引擎的域名
)
# 结果后续交给LLM去处理的
response = tool.invoke({'query': '中国历史上最美丽的女人是谁?'})
print(response)
结合大模型推理,最终代码:
import os
os.environ["TAVILY_API_KEY"] = "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"
from langchain_community.tools.tavily_search import TavilySearchResults
tools = [TavilySearchResults(max_results=5)]
# 导入 LangChain Hub
from langchain import hub
# 从 LangChain Hub中获取 ReAct的提示
prompt = hub.pull("hwchase17/react")
from langchain_ollama import ChatOllama
llm = ChatOllama(model="qwen2.5:7b")
# 导入 create_react_agent 功能
from langchain.agents import create_react_agent
# 构建 ReAct Agent
agent = create_react_agent(llm, tools, prompt)
# 导入 AgentExecutor
from langchain.agents import AgentExecutor
# 创建 Agent 执行器并传入 Agent 和工具
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 调用 AgentExecutor
response = agent_executor.invoke({"input": "韩国目前总统是谁?"})
print(response)

浙公网安备 33010602011771号