含义----LangChain中提供了很多预定义的Tool,方便我们使用
用于联网的
.1.基本用法
它的使用步骤是这样的:
-
注册账号,创建API_KEY
-
配置环境变量: TAVILY_API_KEY
-
安装依赖:`uv add langchain-tavily`
使用tavily作为web搜索工具
from langchain_tavily import TavilySearch
search_tool = TavilySearch(
max_results=5,
topic="general", # general, news, finance
# 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
)
search_tool.invoke("蒸蚌是什么梗?"){'query': '蒸蚌是什么梗?',
'response_time': 0.61,
'follow_up_questions': None,
'answer': None,
'images': [],
'results': [{'url': 'https://zh.hinative.com/questions/15904858',
'title': '"我蒸蚌"是什么意思? - HiNative',
'content': '我蒸蚌蒸蚌是「真棒」的意思因為"蒸蚌" 跟"真棒" 的音一模一樣,所以有一些人在寫「真棒」的時候,會故意用蒸蚌兩字,然後只是因為這樣子看起來很有趣 的',
'score': 0.9998104,
'raw_content': None},
{'url': 'https://search.bilibili.com/all?keyword=蒸蚌',
'title': '蒸蚌',
'content': '【梗百科】萝卜纸巾猫是啥梗?真棒! 02:18. 【梗百科】萝卜纸巾猫是啥梗?真棒 ... 大型纪录片《蒙题蒸蚌猫》东西是分不清的,答案是全靠蒙的,真棒是必须要夸的',
'score': 0.9996699,
'raw_content': None},
{'url': 'https://www.sina.cn/news/detail/5260814380434515.html',
'title': '蒸蚌梗源自胡萝卜纸巾猫_新浪新闻',
'content': '蒸蚌这个梗原来是来自这个胡萝卜纸巾猫哇这个小帽子神来之笔,一戴窝窝囊囊老实巴交的感觉就来了[泪奔] \u200b. 发布于北京.',
'score': 0.99966204,
'raw_content': None},
{'url': 'https://www.facebook.com/61557545415108/posts/蒸蚌memes-fun-迷因-搞笑/122172017300251513/',
'title': '蒸蚌! #memes #fun #迷因#搞笑',
'content': 'Abracadabra是一個著名的咒文,作為「魔語 」在進行魔術表演時使用。歷史上曾經認為, 這個咒文刻在護身符時能有治癒的能力。來自 維基百科 這個送去',
'score': 0.9995122,
'raw_content': None},
{'url': 'https://www.instagram.com/p/Ci4D7UWpK-_/',
'title': '蒸蚌蒸蝦#諧音梗圖#梗圖#真瞎#真棒#情侶#作死#生活#日常#白目 ...',
'content': '蒸蚌蒸蝦#諧音梗圖#梗圖#真瞎#真棒#情侶#作死#生活#日常#白目#恐龍 ... 你是一ㄓㄓㄨ #諧音梗 #諧音梗圖 · #動物 #蜘蛛 · #情侶 #作死 · #生活 #日常',
'score': 0.99948066,
'raw_content': None}],
'request_id': '5b353b38-79dd-4c07-b896-e4143962b917'}
2.优化
目前的搜索智能体存在两个问题:
-
官方默认的tavily工具过于复杂
-
结果中不包含网页数据源,可信度低
解决思路:
-
自定义tavily工具
-
结构化输出
自定义tavily工具
LangChain官方提供的tavily工具包含了完整的参数列表,会导致额外的流量和Token消耗。因此,对于简单的业务,我们建议大家利用tavily自定义工具。
# 先使用官方的客户端做初始化
tavily = TavilySearch(
max_results=5,
topic="general"
)
# 然后自己封装为tool
@tool
def web_search(query: str):
"""Search the web for information"""
return tavily.invoke(query)
定义结构化输出实体
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'])
===============================================-=======================================
answer='"蒸蚌"是一个网络流行梗,主要有两层含义:\n\n1. **谐音梗**:"蒸蚌"是"真棒"的谐音,因为发音完全相同,所以网友故意用"蒸蚌"这两个字来代替"真棒",显得有趣好玩。\n\n2. **源自"萝卜纸巾猫"梗**:这个梗主要来源于抖音博主"超级无敌大开门"的视频。博主训练他的三花猫"开门"辨认物品,当猫咪在胡萝卜和纸巾之间选择时,无论选对选错,主人都会用魔性的声音说"真棒"(谐音"蒸蚌")来鼓励猫咪。\n\n**梗的流行原因**:\n- 猫咪"开门"在辨认胡萝卜和纸巾时,总是"察言观色"地蒙题\n- 主人那句魔性的"蒸蚌"夸赞声极具感染力\n- 猫咪的可爱表现和主人的互动形成了反差萌\n- 谐音梗本身具有记忆点和传播力\n\n**发展**:\n这个梗从猫咪视频逐渐演变成全网模仿的热潮,出现了各种"蒸蚌"挑战和模仿,甚至出现了"猫传人"现象,成为2025年的一个爆款网络梗。现在"蒸蚌"已经成为一种幽默、自我调侃式的鼓励文化符号。' reference=[Reference(title='蒸蚌梗源自胡萝卜纸巾猫_新浪新闻', url='https://www.sina.cn/news/detail/5260814380434515.html'), Reference(title='蒸蚌小猫梗怎么火的 - 抖音', url='https://www.douyin.com/shipin/7589558380507842611'), Reference(title='"我蒸蚌"是什么意思? - HiNative', url='https://zh.hinative.com/questions/15904858'), Reference(title='萝卜纸巾分不清的"蒸蚌小猫",拿下首个全球代言! - 新浪财经', url='https://cj.sina.cn/articles/view/5952915705/162d248f906702n1fe?froms=ggmp&vt=4')]