LangChain内置工具大全:开箱即用的10个实用工具汇总
LangChain内置工具大全,开箱即用的10个实用工具
不用每个工具都自己写。LangChain已经内置了很多常用工具,拿来就能用。
这一篇我们盘点一下LangChain里最实用的那些内置工具。每个工具我会讲清楚它能做什么、怎么用、适合什么场景,以及实际用的时候要注意什么。看完你就能给你的Agent装上一批能力。
先说个前提
LangChain的内置工具非常多,几十种肯定有。大部分你可能一辈子都用不上。我们挑最常用、最实用的说。
这些工具都在langchain-community这个包里。安装的时候单独装。
pipinstalllangchain-community装完以后就可以导入各种工具了。
搜索类工具
搜索是Agent最常用的能力之一。不知道的事情,先搜一下再说。
Tavily搜索
Tavily是专门为AI Agent做的搜索引擎。它返回的结果质量高,格式干净,特别适合给Agent用。
我自己对比过几个搜索工具,Tavily的效果是最好的。它会自动提取网页的核心内容,不是直接扔一堆HTML给你。Agent处理起来方便很多。
用法很简单。
fromlangchain_community.tools.tavily_searchimportTavilySearchResults tool=TavilySearchResults(max_results=3)用之前需要去Tavily官网注册,拿一个API密钥。免费额度每天1000次搜索,个人开发够用了。
SerpAPI
SerpAPI是另一个搜索工具选择。它本质上是Google搜索的API封装。你通过它调用Google搜索,拿到结构化的结果。
适合需要Google搜索结果的场景。国内用户用起来可能网络不太顺。
fromlangchain_community.utilitiesimportSerpAPIWrapperfromlangchain.toolsimportTool search=SerpAPIWrapper()tool=Tool(name="Search",func=search.run,description="用于搜索互联网上的信息。当你需要回答实时新闻、最新知识、或者不确定的问题时,可以用这个工具搜索。")需要SerpAPI的密钥,免费额度有限。
DuckDuckGo搜索
如果你不想注册账号,也可以用DuckDuckGo的搜索。不用密钥,直接就能用。
fromlangchain_community.toolsimportDuckDuckGoSearchRun tool=DuckDuckGoSearchRun()缺点是搜索质量不如前面两个,速度也慢一些。做个Demo、写个玩具项目够用,生产环境还是建议用Tavily。
计算类工具
数学计算是大模型的弱项。简单的算术可能还行,稍微复杂一点就容易算错。让Agent用计算器工具算,比让它自己心算靠谱多了。
Calculator
最基础的计算器。能算加减乘除、幂运算、三角函数这些。
fromlangchain.toolsimportcalculator tool=calculator.Calculator()用法很简单,传一个数学表达式字符串进去就行。比如"234 * 567"、“sqrt(144)”。
我之前试过让大模型直接算三位数乘法,经常算错。用了计算器工具以后,准确率直接百分之百。涉及数字的任务,一定要让Agent用工具算,别让它自己来。
PythonREPL
如果需要更复杂的计算,或者要跑Python代码,可以用PythonREPL工具。它会启动一个Python解释器,把代码放进去执行。
fromlangchain.toolsimportPythonREPLTool tool=PythonREPLTool()这个工具能力很强,Agent可以写任意Python代码来执行。数据分析、复杂计算、数据处理都能做。
能力强,风险也大。Agent生成的代码可能有问题,也可能有安全隐患。生产环境用的话,一定要加沙箱和限制,不能直接跑在主进程里。
请求类工具
Requests工具
Agent可以通过HTTP请求访问外部API或者网页。
fromlangchain_community.toolsimportRequestsGetTool,RequestsPostTool get_tool=RequestsGetTool()post_tool=RequestsPostTool()比如你有一个内部API,Agent可以直接调用它。或者让Agent去抓取某个网页的内容。
这个工具也要注意安全。不能让Agent随便请求任意URL,否则可能造成SSRF攻击。生产环境要做URL白名单。
文件类工具
文件系统工具
LangChain有一套文件操作的工具,可以让Agent读取、写入、列出文件。
fromlangchain_community.toolsimport(ReadFileTool,WriteFileTool,ListDirectoryTool,)read_tool=ReadFileTool()write_tool=WriteFileTool()list_tool=ListDirectoryTool()Agent自己写代码、自己保存文件的时候会用到。比如你让Agent写一个网站,它可以自己创建HTML文件、CSS文件。
同样的,文件操作一定要限制目录范围。不能让Agent随便读写系统里的任何文件。
数据库工具
SQL数据库工具
SQL数据库工具非常实用。Agent可以用自然语言查数据库。它自己写SQL,自己执行,自己看结果。
fromlangchain_community.utilitiesimportSQLDatabasefromlangchain_community.tools.sql_database.toolimportQuerySQLDataBaseTool db=SQLDatabase.from_uri("sqlite:///your_database.db")tool=QuerySQLDataBaseTool(db=db)支持各种数据库,SQLite、MySQL、PostgreSQL都可以。
这个工具单独用效果一般,因为Agent写的SQL不一定对。通常会配合SQL chain或者专门的数据库Agent来用,后面会专门讲。
做数据分析、报表查询这类场景,数据库工具是核心。
怎么选工具
工具很多,不用全都装上。选你实际需要的就行。
工具太多也有坏处。Agent选择困难,反而容易选错。把最常用的几个装上就够了。
我的建议是,起步阶段先装这三个。
搜索工具,用来获取外部信息。选Tavily,效果最好。
计算器工具,用来做数学计算。简单但必要。
PythonREPL工具,复杂计算和数据处理都能用。
这三个基本能覆盖大部分场景。等有特定需求了,再按需加其他工具。
下一篇我们讲怎么开发自定义工具。内置工具不够用的时候,你可以自己写,把任意Python函数变成Agent能用的工具。
