三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

LangChain内置工具大全:开箱即用的10个实用工具汇总

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能用的工具。

← 返回列表