工具:Tavily搜索引擎

Tavily

官网:https://tavily.com/

介绍

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账号。

image-20241208082413065

要使用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)
posted @ 2025-04-16 14:01  凫弥  阅读(3173)  评论(0)    收藏  举报