预定义工具Tavily是什么?如何使用?一文详解

目录

一、准备工作

[1. 注册账号,创建API_KEY](#1. 注册账号,创建API_KEY)

[2. 配置API_KEY到.env文件](#2. 配置API_KEY到.env文件)

[3. 安装依赖](#3. 安装依赖)

二、简单使用

[1. 创建Tavily的搜索工具](#1. 创建Tavily的搜索工具)

[2. 直接调用这个工具](#2. 直接调用这个工具)

三、创建智能体时,使用这个预定义工具

[1. 创建智能体](#1. 创建智能体)

[2. 调用智能体,输出结果](#2. 调用智能体,输出结果)

四、缺点与弥补

[1. 上述存在缺点:搜索工具给出的答案格式乱、内容太多、严重消耗TOKEN](#1. 上述存在缺点:搜索工具给出的答案格式乱、内容太多、严重消耗TOKEN)

[2. 改进思路:创建完预定义工具后,包装成自定义工具,对其进行约束](#2. 改进思路:创建完预定义工具后,包装成自定义工具,对其进行约束)

[3. 运行并测试效果](#3. 运行并测试效果)


一、准备工作

1. 注册账号,创建API_KEY

Tavily官网:

Tavily API Platform

2. 配置API_KEY到.env文件

TAVILY_API_KEY = 你的APIKEY

3. 安装依赖

bash 复制代码
uv add langchain-tavily

二、简单使用

1. 创建Tavily的搜索工具

python 复制代码
# 使用tavily作为web搜索工具
from langchain_tavily import TavilySearch
# 加载环境变量(如果不这么做,无法获取我们配置的ApiKey)
from dotenv import load_dotenv
load_dotenv()

# 初始化工具,并设置参数,具体参数设置参考官网
tool = TavilySearch(
    max_results=5, # 返回的搜索结果数量
    topic="general", # 常规搜索,适合绝大多数通用问题。
    # include_answer=False,
    # include_raw_content=False,
    # include_images=False,
    # include_image_descriptions=False,
    # search_depth="basic",
    # time_range="day",
    # include_domains=None,
    # exclude_domains=None
)

2. 直接调用这个工具

python 复制代码
tool.invoke("你就是朱之文,这个梗的创始人是谁?")

运行结果

python 复制代码
{'query': '你就是朱之文,这个梗的创始人是谁?',
 'follow_up_questions': None,
 'answer': None,
 'images': [],
 'results': [{'url': 'https://www.facebook.com/100094580745429/videos/%E4%BD%A0%E5%B0%B1%E6%98%AF%E6%9C%B1%E4%B9%8B%E6%96%87%E6%98%AF%E4%BB%80%E4%B9%88%E6%A2%97%E6%B0%B8%E9%81%A0%E6%94%AF%E6%8C%81%E6%9C%B1%E4%B9%8B%E6%96%87%E8%80%81%E5%B8%AB-%E6%9D%8E%E9%9B%AA%E8%8A%B1-%E6%9C%B1%E4%B9%8B%E6%96%87-%E4%BD%A0%E5%B0%B1%E6%98%AF%E6%9C%B1%E4%B9%8B%E6%96%87/1650336459484095',
   'title': '"你就是朱之文是什么梗"?永遠支持朱之文老師#李雪花 ... - Facebook',
   'content': '就是朱志文, 初次直播界的故事大王李雪花. 你就是朱子文. 一次他在直播中獎國際正式, 結果有大幕莫名其妙在耍豬指紋,伺候的幾天直播裡,',
   'score': 0.99805814,
   'raw_content': None},
  {'url': 'https://c.m.163.com/news/a/KOG9EHLM05566B3Q.html',
   'title': '你就是朱之文!大衣哥高情商回应玩梗:大家能想着我,我很有运气',
   'content': '这次爆火说起来也挺意外,源头是百万粉丝网红李雪花的一场直播。当时李雪花在给全球歌手排名,直播间一大堆网友刷屏刷的全是朱之文,一来二去就玩出了"你就是',
   'score': 0.99788433,
   'raw_content': None},
  {'url': 'https://www.youtube.com/watch?v=Zif9IRslmRw',
   'title': '大衣哥朱之文再度爆火!"你就是朱之文"成为新代名词!诽谤辱骂的 ...',
   'content': '大衣哥朱之文再度爆火!"你就是朱之文"成为新代名词!诽谤辱骂的背后还有哪些事件?【修成XiuCheng】中国|抽象|搞笑|李雪花|萝莉岛 · Comments.',
   'score': 0.9875683,
   'raw_content': None},
  {'url': 'https://www.163.com/dy/article/KRFD7CN00517RPPR.html',
   'title': '大衣哥朱之文的再度翻红,是偶然的热梗出圈,更是必然的口碑回归',
   'content': '此次翻红的直接导火索,是全网爆火的网络热梗"你就是朱之文"。2026年初,网红李雪花在直播过程中,因网友刷屏干扰心生无奈,脱口而出一句带着浓重山东',
   'score': 0.98646784,
   'raw_content': None},
  {'url': 'https://zh.wikipedia.org/wiki/%E6%9C%B1%E4%B9%8B%E6%96%87_(%E6%AD%8C%E6%89%8B)',
   'title': '朱之文(歌手) - 維基百科,自由的百科全書',
   'content': '朱之文(1969年11月27日---),山東省菏澤市單縣人,中國大陸男歌手,2011年在山東電視綜藝頻道《我是大明星》欄目第2季海選中,他身穿舊軍大衣演唱《滾滾長江東逝水》,而走紅,',
   'score': 0.9324533,
   'raw_content': None}],
 'response_time': 0.82,
 'request_id': 'f9fc21a9-a826-4983-84dd-4be2365ec173'}

三、创建智能体时,使用这个预定义工具

1. 创建智能体

python 复制代码
from langchain.messages import HumanMessage
from langchain.agents import create_agent
# 创建智能体,使用预定义工具tavily
agent = create_agent(
    model="deepseek-chat",
    tools=[tool], # 此处传入我们刚才创建的那个Tavily的搜索工具
    system_prompt="你是一个智能助手,你使用工具来解决用户问题。"
)

2. 调用智能体,输出结果

python 复制代码
response = agent.invoke(
    {"messages": [HumanMessage(content="主播李雪花是谁?")]}
)

for message in response['messages']:
    message.pretty_print()

执行结果

python 复制代码
================================ Human Message =================================

主播李雪花是谁?
================================== Ai Message ==================================
Tool Calls:
  tavily_search (call_00_w5HO49mjCKaF5wi1YVhF6884)
 Call ID: call_00_w5HO49mjCKaF5wi1YVhF6884
  Args:
    query: 主播李雪花是谁
================================= Tool Message =================================
Name: tavily_search

{"query": "主播李雪花是谁", "follow_up_questions": null, "answer": null, "images": [], "results": [{"url": "https://www.douyu.com/1177499", "title": "李雪花2333-斗鱼直播", "content": "apex 英雄- 李雪花2333. 李雪花2333主播已关播上次直播:2019-11-24 07:24:57. 为您推荐其他精彩直播:. 椰汁糕冬瓜强. 双倍亲密度一元粉丝牌 · QuQu是蛐蛐.", "score": 0.57408494, "raw_content": null}, {"url": "https://www.instagram.com/popular/%E6%9D%8E%E9%9B%AA%E8%8A%B1-%E4%B8%BB%E6%92%AD", "title": "李雪花主播 - Instagram", "content": "小彤Xiaotong 🎙️|东盟神奇AI主播学院慧星 每个直播间都是温暖的家✨镜头前笑容甜美,照亮虚拟空间;镜头后以热爱穿梭光影音符 她把直播化作生活诗篇,在旋律中", "score": 0.54681134, "raw_content": null}, {"url": "https://www.youtube.com/channel/UCKAusLeMXQA0DAb5e-ZIkgg", "title": "雪花新闻TV NEWS《相声专场》李雪花A花哥 - YouTube", "content": "欢迎订阅!李雪花(花哥)以搞笑风格解读新闻和各种话题,让大家捧腹大笑,带来满满正能量,乐观的享受生活! ...more 欢迎订阅!李雪花(花哥)以搞笑风格解读新闻和各种话题,让", "score": 0.4465194, "raw_content": null}, {"url": "https://www.douyin.com/search/%E6%9D%8E%E9%9B%AA%E8%8A%B1%E8%BF%99%E4%B8%AA%E4%BA%BA%E6%98%AF%E5%B9%B2%E5%98%9B%E7%9A%84", "title": "李雪花这个人是干嘛的 - 抖音", "content": "李雪花其实真的还挺「帅哥」的,可以圈一波中年粉,明明可以走颜值路线。 #这话没毛病 #这么诚实的妹子 #这么诚实的姑娘不好找 #李雪花 #三舅传奇.", "score": 0.41962478, "raw_content": null}, {"url": "https://podcasts.apple.com/us/podcast/%E8%8A%B1%E8%8A%B1%E5%9B%9E%E5%BF%86/id1820442520?l=zh-Hant-TW", "title": "花花回忆- Podcast", "content": "創作者. 说书人李雪花 ; 活躍年代. 2025年- 2026年 ; 集數. 1205 ; 年齡分級. 兒少適宜 ; 版權. © @喜马拉雅FM.", "score": 0.41108778, "raw_content": null}], "response_time": 1.15, "request_id": "dfd83c39-5187-44e8-ad19-44aa4edcfd51"}
================================== Ai Message ==================================

根据搜索结果,关于"主播李雪花"的信息如下:

1. **斗鱼直播(李雪花2333)** --- 曾在斗鱼平台直播,主要直播《APEX英雄》游戏,最后直播时间约为2019年11月,目前已停播。

2. **YouTube频道(雪花新闻TV NEWS / 李雪花A花哥)** --- 有一个YouTube频道,以"花哥"的名义,用搞笑风格解读新闻和各种话题,传递正能量。

3. **抖音平台** --- 在抖音上也有相关账号,被描述为有个人特色、不走寻常路的主播。

4. **播客节目** --- 在Apple Podcasts上也有名为"说书人李雪花"的播客内容。

综合来看,"李雪花"(也称"花哥")是一位跨平台的内容创作者,早期在斗鱼直播游戏,后来在YouTube和抖音等平台活跃,以**搞笑风格解读新闻、社会话题**为特色,是一位风格轻松幽默的主播/自媒体人。

不过,"李雪花"这个名字可能对应多个不同平台的主播,网上公开信息较为分散,如果您有更具体的平台或领域需求,可以进一步告诉我,我来帮您查找更详细的信息。

四、缺点与弥补

1. 上述存在缺点:搜索工具给出的答案格式乱、内容太多、严重消耗TOKEN

2. 改进思路:创建完预定义工具后,包装成自定义工具,对其进行约束

第一步:创建预定义工具

python 复制代码
# 使用tavily作为web搜索工具
from langchain_tavily import TavilySearch
# 加载环境变量(如果不这么做,无法获取我们配置的ApiKey)
from dotenv import load_dotenv
load_dotenv()

# 初始化工具,并设置参数,具体参数设置参考官网
tool = TavilySearch(
    max_results=5,
    topic="general",
    # include_answer=False,
    # include_raw_content=False,
    # include_images=False,
    # include_image_descriptions=False,
    # search_depth="basic",
    # time_range="day",
    # include_domains=None,
    # exclude_domains=None
)

第二步:创建自定义工具,实际调用上面的搜索工具

python 复制代码
# 创建自定义工具
from langchain.tools import tool
@tool
def web_search(query: str):
    """Search the web for information"""
    return tavily.invoke(query)

第三步:创建agent,并传入自定义工具、对回答做出格式约束

python 复制代码
from langchain.messages import HumanMessage
from langchain.agents import create_agent
from pydantic import BaseModel, Field

# Agent回答内容引用的网页信息
class Reference(BaseModel):
    title: str = Field(description="The title of the web page cited in the answer")
    url: str = Field(description="The url of the web page cited in the answer")

# Agent的回答内容
class AnswerInfo (BaseModel):
    answer: str = Field(description="The final answer for user")
    reference: list[Reference] = Field(description="The web pages cited in the answer")

# 创建智能体,使用预定义工具tavily
agent = create_agent(
    model="deepseek-chat",
    tools=[web_search],
    system_prompt="你是一个智能助手,你使用工具来解决用户问题。",
    response_format=AnswerInfo
)

# 调用agent
response = agent.invoke(
    {"messages": [HumanMessage(content="介绍一下主播李雪花?")]},
)

# 获取结构化输出
print(response['structured_response'])

3. 运行并测试效果

python 复制代码
answer='**主播李雪花(花哥/故事大王)介绍**\n\n李雪花,网络常用名"花哥"、"花哥哥"、"故事大王",是抖音平台上一位人气较高的网红主播。\n\n**基本资料:**\n- **平台**:抖音(主阵地),早期在快手直播\n- **账号**:lixuehua168(抖音)\n- **粉丝数量**:约32万+(抖音)\n- **IP属地**:江苏\n- **主要内容**:以讲故事、直播聊天、吐槽时事为主\n\n**特点与风格:**\n- 自称为"故事大王",擅长以接地气、幽默风趣的方式讲述各类故事\n- 代表作品有《北棒风云》《三舅传奇》《大姨传奇》等系列故事,内容涵盖江湖传奇、市井趣谈、历史秘闻、异域奇谭等\n- 直播内容以讲故事、连麦互动、点评时事为主,风格轻松搞笑,深受粉丝喜爱\n\n**经历与争议:**\n- 早期在快手平台直播,后转战抖音\n- 曾因在快手上讽刺吴京、朝鲜、普京等话题,被封禁一个月\n- 其抖音账号也曾因违反社区公约被永封,目前在不同账号间辗转直播\n- 被封禁后常以小号或"李雪花花学院"等账号继续更新内容\n\n**网络评价:**\n李雪花被一些网友称为"网络活化石""一代散仙",从早期的聊天室时代到后来的直播PK时代,活跃于网络多年,以其独特的讲故事风格积累了大量忠粉。' reference=[Reference(title='李雪花(花哥哥,不借钱)介绍 - X平台', url='https://x.com/grok/status/2046913966278873105'), Reference(title='李雪花花学院 - 抖音主页', url='https://www.douyin.com/user/MS4wLjABAAAArR4yT-BZuKXpzIOAZfki95fYnzvWmaX4emN3uoWdi-Yqx9rB8WpekettSQqZNvfG'), Reference(title='故事大王李雪花 - Instagram', url='https://www.instagram.com/p/DXcJtUBAR56'), Reference(title='花哥讲故事系列 - YouTube', url='https://www.youtube.com/playlist?list=PLcZlMZ7Tvrm-BedTSltLAtnlsPANu0gBn')]

可见经过我们对agent回答格式的约束,此时回答就很清晰,格式就是:最终答案+几条参考依据

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

相关推荐
绕过江河错落3 小时前
深度拆解 Claude Code 系列(二):上下文窗口管理
agent
天风之翼3 小时前
AI 应用开发实战(1):从零搭建你的第一个 AI 应用 —— FastAPI + LLM API 调用完整教程
agent
把你拉进白名单3 小时前
4.OpenClaw源码解析_路由
llm·agent
Coder小相3 小时前
LangChain 1.0 第七篇 - Pydantic结构化输出
人工智能·agent·ai编程
沉默王二3 小时前
比 DeepSeek 便宜 24 倍,SkyClaw v1.0 值得用吗?
agent·ai编程
Coder小相3 小时前
LangChain 1.0 第六篇 - 从Prompt模板到角色设计
人工智能·agent·ai编程
星之尘10214 小时前
Claude Code 安装与 MiniMax 配置指南
ai·agent·claude·minimax·vibe coding
DO_Community4 小时前
Claude Code 的开源替代方案:用 OpenCode + DigitalOcean 实现模型自由
人工智能·开源·agent·claude·deepseek
Artech4 小时前
[MAF预定义ChatClient中间件-01]LoggingChatClient——在调用前后输出日志
ai·logging·agent·maf·ichatclient