LangChain智能体工具全解析:内置工具与用法
LangChain内置10多个Agent工具逐个解析:搜索、百科、论文、代码执行、数据库,含代码示例与自定义工具方法。
💡 你将学到
LangChain内置10多个Agent工具逐个解析:搜索、百科、论文、代码执行、数据库,含代码示例与自定义工具方法。
📜 目录
LangChain智能体工具全解析:内置工具与用法
大模型只会"想",不会"做":它不知道今天的新闻,不能执行代码,也查不了你的数据库。LangChain(GitHub 143k+ 星)的核心思路就是给模型接上工具——模型决定什么时候用、用什么工具,框架负责调度。本文把内置工具逐个讲清楚,附可直接抄的代码。
一、先理解:工具在 Agent 里怎么工作
Agent 循环:模型收到问题 → 判断"需要查资料" → 框架调用工具 → 结果拼回上下文 → 继续推理 → 给出最终答案。所以工具最重要的是描述清楚自己——模型靠 name 和 description 决定何时调用。
工具速查表
| 工具 | 需要Key | 适用场景 |
|---|---|---|
| TavilySearchResults | 是 | 实时搜索、新闻、价格 |
| WikipediaQueryRun | 否 | 人物/事件/概念 |
| ArxivQueryRun | 否 | 论文检索 |
| PythonREPLTool | 否 | 代码执行、数据处理 |
| SQLDatabaseToolkit | 否 | 数据库问答 |
| DuckDuckGoSearchRun | 否 | 免key搜索 |
二、内置工具逐个说
1. TavilySearchResults——联网搜索
需要 Tavily API key,返回带来源链接的结果,适合实时信息场景(新闻、价格、最新文档)。免费档有月度额度,以官网为准。
from langchain_community.tools import TavilySearchResults
search = TavilySearchResults(max_results=3)
2. WikipediaQueryRun——百科查询
免费、无需 key,适合人物/事件/概念等事实型问题;内容有时效性,太新的信息查不到。
3. ArxivQueryRun——论文搜索
免费。按关键词搜 arXiv 论文,返回标题、摘要、链接,做文献调研很实用。
4. PythonREPLTool——代码执行
让模型写 Python 并直接执行:算数、数据处理、画图都能做。安全提示:相当于让模型在你机器上跑代码,只应在可信环境使用。
5. SQLDatabaseToolkit——数据库查询
把自然语言问题变成 SQL 查询,内置查表结构/执行查询/查错误等子工具,适合做数据库问答。
from langchain_community.agent_toolkits import SQLDatabaseToolkit
tools = SQLDatabaseToolkit(db=db, llm=llm).get_tools()
6. 其他常用内置工具
- Requests 工具:发 HTTP 请求,调外部 API
- ShellTool:执行 shell 命令(有安全风险)
- SerpAPI / GoogleSearch:搜索引擎封装(要 key)
三、自定义工具:@tool 装饰器
自定义工具只需一个函数加装饰器:
from langchain_core.tools import tool
@tool
def get_stock_price(symbol: str) -> str:
"""查询股票的最新价格。symbol 是股票代码,如 AAPL。"""
return f"{symbol}: $XXX"
关键:docstring 写清楚"是什么+参数含义+示例",模型靠它决定何时调用、传什么参数。类型注解会被自动转成模型需要的 JSON schema。
四、2026 年新趋势:MCP 集成
MCP(Model Context Protocol)成为工具生态的事实标准后,LangChain 可以直接加载任意 MCP 服务器:
from langchain_mcp_adapters.tools import load_mcp_tools
# 连接 MCP 服务器后直接加载成工具
tools = await load_mcp_tools(session)
只要对方提供 MCP 服务器,就能直接当工具用,无需为每个服务写适配器。GitHub 上现成的 MCP 服务器已有上千个。
五、最佳实践清单
- 工具描述要具体:
"查询股票价格,输入格式 AAPL"好过"股票工具" - 加容错:
handle_tool_error=True防止工具异常中断整个 Agent - 绑定函数调用模型:
llm.bind_tools(tools)原生 tool-calling 比解析 JSON 可靠 - 工具数量宁少勿多:5-8 个选得准,30 个频繁选错;敏感工具加人工确认
常见问题
Q:工具调用和"模型自己编答案"怎么区分? A:看是否配置了 tools 并绑定。绑定后模型先输出结构化"调用请求",框架执行后把真实结果喂回上下文。
Q:免费搜索工具够用吗? A:DuckDuckGo 免费无 key,适合低频;要稳定结果和更多配额用 Tavily 等搜索 API,额度以官网为准。
Q:自定义工具需要重新训练模型吗? A:不需要。工具是运行时注入的,模型通过描述理解工具,改描述即时生效,不用微调。
注:LangChain 的 API 与包名迭代较快(langchain / langchain-community / langchain-experimental 拆分),示例以官方文档最新版本为准。
相关文章
❓ 常见问题
Do I need a Tavily API key?
TavilySearchResults requires a free API key; DuckDuckGoSearchRun does not.
Can tools call other tools?
Yes, through agent routing or sub-agents in LangGraph.
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。
