AI创想

标题: 【LangChain】langchain_tavily 库:提供 LangChain 与 Tavily 搜索 API 的集成 [打印本页]

作者: 双木迎光    时间: 4 天前
标题: 【LangChain】langchain_tavily 库:提供 LangChain 与 Tavily 搜索 API 的集成
作者:彬彬侠
langchain_tavily 是一个 LangChain 的官方集成包,用于将 Tavily 的搜索和内容提取功能与 LangChain 的生态系统无缝连接。Tavily 是一个专为大型语言模型(LLM)和 AI 代理设计的搜索引擎,旨在提供实时、准确、事实性的搜索结果,特别适合检索增强生成(RAG)等 AI 工作流。通过 langchain_tavily,开发者可以轻松在 LangChain 应用中集成 Tavily 的搜索和提取工具,增强代理或链的实时信息检索和内容分析能力。
以下是对 langchain_tavily 库的详细介绍,涵盖其定义、功能、安装与配置、核心组件、使用方式、代码示例、应用场景、优化建议、注意事项以及与 LangChain 生态的结合。

1. 什么是 langchain_tavily?

langchain_tavily 是一个 Python 包,提供 LangChain 与 Tavily 搜索 API 的集成,包含以下核心功能:
Tavily 的搜索 API 针对 AI 代理进行了优化,相比传统搜索 API(如 Google、SerpAPI),它具有以下优势:
langchain_tavily 将这些功能封装为 LangChain 工具,方便开发者在链、代理或自定义工作流中使用。

2. 功能与特点

langchain_tavily 提供以下主要功能:
特点

3. 安装与配置

安装

安装 langchain_tavily 需要以下依赖:
  1. pip install -qU langchain langchain-openai langchain-tavily tavily-python
复制代码
配置 API 密钥

Tavily 需要 API 密钥进行身份验证:
可选:LangSmith 集成

为启用最佳调试和监控,建议配置 LangSmith:
  1. os.environ["LANGCHAIN_TRACING_V2"]="true"
  2. os.environ["LANGCHAIN_API_KEY"]= getpass.getpass("请输入 LangSmith API 密钥:")
复制代码

4. 核心组件

langchain_tavily 提供了两个主要工具:
(1) TavilySearch

(2) TavilyExtract

(3) 代理集成


5. 使用方式与代码示例

(1) 单独使用 TavilySearch
  1. from langchain_tavily import TavilySearch
  2. # 初始化搜索工具
  3. tool = TavilySearch(
  4.     max_results=3,
  5.     topic="general",
  6.     search_depth="basic")# 执行搜索
  7. result = tool.invoke("量子计算的最新进展")print(result)
复制代码
输出(示例):
  1. {"query":"量子计算的最新进展","results":[{"title":"Quantum Computing Breakthroughs in 2025","url":"https://example.com/quantum-news","content":"Recent advances in quantum computing include...","score":0.95},...],"response_time":1.5}
复制代码
(2) 使用 TavilyExtract
  1. from langchain_tavily import TavilyExtract
  2. # 初始化提取工具
  3. extract_tool = TavilyExtract()# 提取网页内容
  4. result = extract_tool.invoke({"urls":["https://example.com/quantum-news"]})print(result)
复制代码
输出(示例):
  1. [{"url":"https://example.com/quantum-news","content":"Full text of the webpage...","metadata":{"title":"Quantum News","author":"John Doe"}}]
复制代码
(3) 集成到代理

以下是一个结合 TavilySearch 和 TavilyExtract 的代理示例:
  1. from langchain_openai import ChatOpenAI
  2. from langchain_tavily import TavilySearch, TavilyExtract
  3. from langchain.agents import create_openai_tools_agent, AgentExecutor
  4. from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
  5. from langchain_core.callbacks import StdOutCallbackHandler
  6. import datetime
  7. # 初始化 LLM
  8. llm = ChatOpenAI(model="gpt-4o", temperature=0, api_key="your-openai-key")# 初始化工具
  9. search_tool = TavilySearch(max_results=5, topic="general")
  10. extract_tool = TavilyExtract()
  11. tools =[search_tool, extract_tool]# 设置提示模板
  12. today = datetime.datetime.today().strftime("%D")
  13. prompt = ChatPromptTemplate.from_messages([("system",f"""You are a research assistant. Use tools to search and extract information. Today is {today}."""),
  14.     MessagesPlaceholder(variable_name="messages"),
  15.     MessagesPlaceholder(variable_name="agent_scratchpad")])# 创建代理
  16. agent = create_openai_tools_agent(llm=llm, tools=tools, prompt=prompt)
  17. agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)# 执行任务
  18. response = agent_executor.invoke({"messages":[{"role":"user","content":"研究量子计算的最新进展并总结其对网络安全的潜在影响"}]}, config={"callbacks":[StdOutCallbackHandler()]})print(response["output"])
复制代码
输出(示例):
  1. [AgentExecutor] 正在执行...
  2. [Tool: TavilySearch] 输入:量子计算的最新进展
  3. [Tool Output] 搜索结果包括...
  4. [Tool: TavilyExtract] 输入:https://example.com/quantum-news
  5. [Tool Output] 提取内容...
  6. [Final Answer] 量子计算的最新进展包括... 对网络安全的影响可能涉及加密算法的破解...
复制代码

6. 应用场景

langchain_tavily 适用于以下场景:

7. 优化建议

(1) 提高搜索质量

(2) 提高性能

(3) 错误处理

(4) 监控与调试

(5) 上下文管理


8. 注意事项


9. 与 LangChain 生态的结合


10. 综合示例:构建智能研究代理

以下是一个完整的代理示例,结合 TavilySearch 和 TavilyExtract,用于研究量子计算对网络安全的影响:
  1. from langchain_openai import ChatOpenAI
  2. from langchain_tavily import TavilySearch, TavilyExtract
  3. from langchain.agents import create_openai_tools_agent, AgentExecutor
  4. from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
  5. from langchain_core.callbacks import StdOutCallbackHandler
  6. from langchain_core.runnables import RunnableConfig
  7. import datetime
  8. import os
  9. import getpass
  10. # 配置 API 密钥ifnot os.environ.get("TAVILY_API_KEY"):
  11.     os.environ["TAVILY_API_KEY"]= getpass.getpass("请输入 Tavily API 密钥:")# 初始化 LLM
  12. llm = ChatOpenAI(model="gpt-4o", temperature=0, api_key="your-openai-key")# 初始化工具
  13. search_tool = TavilySearch(
  14.     max_results=3,
  15.     topic="general",
  16.     search_depth="advanced",
  17.     include_domains=["arxiv.org","nature.com"])
  18. extract_tool = TavilyExtract()
  19. tools =[search_tool, extract_tool]# 设置提示模板
  20. today = datetime.datetime.today().strftime("%D")
  21. prompt = ChatPromptTemplate.from_messages([("system",f"""You are a research assistant. Search the web and extract content to provide accurate answers. Today is {today}."""),
  22.     MessagesPlaceholder(variable_name="messages"),
  23.     MessagesPlaceholder(variable_name="agent_scratchpad")])# 创建代理
  24. agent = create_openai_tools_agent(llm=llm, tools=tools, prompt=prompt)
  25. agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)# 配置 RunnableConfig
  26. config = RunnableConfig(
  27.     callbacks=[StdOutCallbackHandler()],
  28.     max_iterations=5,
  29.     max_execution_time=30.0,
  30.     metadata={"request_id":"req_001"})# 执行任务
  31. response = agent_executor.invoke({"messages":[{"role":"user","content":"研究量子计算的最新进展并总结其对网络安全的潜在影响"}]}, config=config)print(response["output"])
复制代码
输出(示例):
  1. [AgentExecutor] 正在执行...
  2. [Tool: TavilySearch] 输入:量子计算的最新进展
  3. [Tool Output] 搜索结果包括...
  4. [Tool: TavilyExtract] 输入:https://arxiv.org/abs/2501.12345
  5. [Tool Output] 提取内容...
  6. [Final Answer] 量子计算的最新进展包括超导量子比特的突破... 对网络安全的影响包括后量子加密的需求...
复制代码

11. 学习资源


12. 总结


原文地址:https://blog.csdn.net/u013172930/article/details/147980268




欢迎光临 AI创想 (https://llms-ai.com/) Powered by Discuz! X3.4