大语言模型(LLM)的能力令人印象深刻,但它们本质上是被动响应者,依赖于预训练数据。为了让 LLM 真正与现实世界互动,执行复杂任务,我们需要 LangChain Tools。本文将深入探讨 LLM 开发者必须掌握的五大 LangChain Tools,它们就像插件一样,赋予 LLM 搜索互联网、执行代码、调用 API 等能力,让 LLM 应用更智能、更自主。
1. LangChain Tools 的核心价值:打破 LLM 的局限性
LLM 本身是一个强大的知识库和语言生成器,但它无法主动获取信息,也无法进行复杂的计算和决策。LangChain Tools 的出现弥补了这些不足,它们是连接 LLM 与外部世界的桥梁。通过集成 LangChain Tools,LLM 可以:
- 实时信息检索:例如,通过 SerpAPIWrapper 搜索最新的新闻、社交媒体动态等,让 LLM 掌握当前发生的事情。
- 执行复杂计算:利用 PythonREPLTool 运行 Python 代码,进行数学运算、数据处理,甚至编写简单的程序。
- 调用外部 API:使用 RequestsTool 与各种 RESTful API 交互,获取天气预报、股票信息、体育赛事结果等。
- 访问结构化数据:通过 WikipediaAPIWrapper 查询维基百科,获取经过整理和验证的知识。
- 构建复杂工作流:将多个 LangChain Tools 组合成链,实现更复杂的功能,例如,根据用户提问,先搜索相关信息,然后进行分析和总结。
因此,LangChain Tools 不仅仅是 prompt 链的工具,更是构建智能代理应用的关键。它们让 LLM 从被动回答问题,转变为主动解决问题,极大地拓展了 LLM 的应用范围。
2. RequestsTool:轻松调用任意 API
RequestsTool 允许 LLM 与任何 RESTful API 进行交互。这意味着你的 LLM 可以轻松获取来自各种在线服务的数据,例如股票价格、天气预报、体育赛事比分等。
使用场景:
- 实时股票价格查询:通过调用金融 API,LLM 可以实时获取股票价格,并根据用户的需求进行分析和预测。
- 实时交通状况更新:通过调用地图 API,LLM 可以获取实时交通状况,并为用户提供最佳路线建议。
- 产品信息检索:通过电商API,可以实现产品比价,商品推荐等功能。
代码示例(基于原文):
from langchain_community.agent_toolkits.openapi.toolkit import RequestsToolkit
from langchain_community.utilities.requests import TextRequestsWrapper
# 权限设置:仅允许访问公共 JSONPlaceholder API,无认证,无自定义 Headers
toolkit = RequestsToolkit(
requests_wrapper=TextRequestsWrapper(headers={}),
allow_dangerous_requests=False, # 修改为 False,禁止危险请求
)
# 查看可用工具
tools = toolkit.get_tools()
print(tools)
# 使用 GET 工具从 JSONPlaceholder 获取文章
get_tool = [tool for tool in tools if tool.name == "requests_get"][0]
result = get_tool.run({"url": "https://jsonplaceholder.typicode.com/posts?_limit=2"})
print(result)
注意事项:
- 安全性: 使用 RequestsTool 时,务必注意安全性。避免泄露敏感信息,例如 API 密钥。
- 权限控制: 尽量限制 LLM 对 API 的访问权限,避免滥用。
- 错误处理: 妥善处理 API 调用过程中可能出现的错误,例如网络连接失败、API 响应格式错误等。
3. WikipediaAPIWrapper:快速获取结构化信息
WikipediaAPIWrapper 允许 LLM 直接查询维基百科。与让模型凭空捏造事实不同,现在模型可以依赖于结构化和可验证的信息。
使用场景:
- 回答历史事件问题:例如,“2025 年 RCB vs CSK 比赛发生了什么?”LLM 可以通过维基百科查询比赛结果、关键事件等信息。
- 人物传记查询:例如,“介绍一下 Virat Kohli”。LLM 可以从维基百科获取 Kohli 的生平、成就等信息。
- 专业术语解释:例如,“什么是量子计算?”LLM 可以从维基百科获取量子计算的定义、原理等信息。
代码示例(基于原文):
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
api_wrapper = WikipediaAPIWrapper(top_k_results=5, doc_content_chars_max=1000)
wikipedia = WikipediaQueryRun(api_wrapper=api_wrapper)
wikipedia.run("Virat Kohli")
优势:
- 信息可靠性: 维基百科的信息经过多人编辑和审核,相对可靠。
- 信息结构化: 维基百科的信息以结构化的形式呈现,方便 LLM 解析和利用。
- 信息量大: 维基百科包含海量信息,几乎涵盖所有领域。
4. SerpAPIWrapper:通过 Google 进行实时网络搜索
SerpAPIWrapper 集成了 Google 搜索引擎,让你的 LLM 具备了访问互联网的能力。它能够获取最新的新闻、推文、实时更新等信息。
使用场景:
- 获取突发新闻:例如,“2025 年 6 月发生的踩踏事件的最新进展?”LLM 可以通过 SerpAPIWrapper 搜索相关新闻,并进行总结。
- 追踪热门话题:例如,“当前最流行的 AI 技术是什么?”LLM 可以通过 SerpAPIWrapper 搜索相关文章和讨论,并给出答案。
- 获取赛事结果:例如,“谁赢得了 2025 年的 IPL 联赛?”LLM 可以通过 SerpAPIWrapper 搜索比赛结果。
代码示例(基于原文):
from langchain_community.utilities import SerpAPIWrapper
search = SerpAPIWrapper()
params = {
"engine": "bing", # 可以选择 "google", "bing", "duckduckgo" 等
"gl": "us", # 地理位置
"hl": "en", # 语言
}
search = SerpAPIWrapper(params=params)
search.run("Who won the IPL 2025?")
注意事项:
- API 密钥: 使用 SerpAPIWrapper 需要注册并获取 API 密钥。
- 搜索参数: 可以通过设置搜索参数,例如引擎、地理位置、语言等,来优化搜索结果。
- 信息筛选: SerpAPIWrapper 返回的搜索结果可能包含大量噪声,需要进行筛选和过滤。
5. PythonREPLTool:让 LLM 具备数学计算能力
PythonREPLTool 为你的模型提供了一个虚拟的 Python 终端,可以执行代码并返回结果。这对于数学计算、逻辑推理,甚至数据解析非常有用。
使用场景:
- 计算棒球平均击球率:LLM 可以使用 PythonREPLTool 执行计算公式,并给出结果。
- 时区转换:LLM 可以使用 PythonREPLTool 调用时区转换函数,将时间从一个时区转换为另一个时区。
- 数据分析:可以结合 Pandas 等库,对数据进行清洗和分析。
- 单位换算:进行各种单位换算。
代码示例(基于原文):
from langchain_core.tools import Tool
from langchain_experimental.utilities import PythonREPL
python_repl = PythonREPL()
python_repl.run("print(1+1)")
安全警告:
- 代码执行风险: PythonREPLTool 可以执行任意 Python 代码,存在一定的安全风险。
- 谨慎使用: 在生产环境中,应谨慎使用 PythonREPLTool,并采取必要的安全措施。
6. Toolkits:特定领域的强大助手
LangChain 提供了与各种 API 的开箱即用集成,例如 OpenWeatherMap、NewsAPI 等,使你的 LLM 能够成为特定领域的专家。
使用场景:
- OpenWeatherMap:LLM 可以获取全球各地的天气信息,并根据用户的需求进行分析和预测。
- NewsAPI:LLM 可以获取来自各种新闻源的最新新闻,并根据用户的需求进行总结和分类。
- Zapier:LLM 可以连接各种应用和服务,例如 Gmail、Slack、Trello 等,实现自动化工作流。
- Google Search Toolkit: 允许访问更多的Google服务,如日历,文档等
代码示例(基于原文):
from langchain_community.utilities import OpenWeatherMapAPIWrapper
weather = OpenWeatherMapAPIWrapper()
weather_data = weather.run("London,GB")
print(weather_data)
7. 实战演练:使用 SerpAPIWrapper 获取实时信息
LangChain Tools 在实际应用中非常强大。让我们使用 SerpAPIWrapper 来获取关于两个热门话题的实时信息:
- RCB 最新比赛的精彩片段
- 最近的踩踏事件(2025 年 6 月)
这个实践演示展示了 LLM 如何充当研究助理,拉取并总结最新消息。
所需条件:
- 一个免费的 SerpAPI 密钥
- 已安装 langchain 和 langchain_community
- openai 或兼容的 LLM 用于代理设置
代码片段:使用 SerpAPIWrapper 进行实时搜索
from langchain.agents import initialize_agent, Tool
from langchain_community.tools import SerpAPIWrapper
from langchain.chat_models import ChatOpenAI
import os
# 确保设置了 SERPAPI_API_KEY 环境变量
os.environ["SERPAPI_API_KEY"] = "YOUR_SERPAPI_API_KEY" # 替换为你的 API 密钥
# 步骤 1:配置 SerpAPI 工具
search = SerpAPIWrapper()
# 步骤 2:注册该工具
tools = [
Tool(
name="News Search",
func=search.run,
description="用于通过 Google 搜索实时新闻和更新"
)
]
# 步骤 3:初始化代理
llm = ChatOpenAI(temperature=0) # 选择合适的 LLM
agent = initialize_agent(tools, llm, agent="zero-shot-react-description")
# 步骤 4:提出真实世界的问题
query_1 = "What happened in the latest RCB match in IPL 2025?"
query_2 = "Tell me about the June 2025 stampede incident in India."
print(agent.run(query_1))
print(agent.run(query_2))
运行结果示例:
RCB won the latest match in IPL 2025 by 6 runs.
The June 2025 stampede incident in India occurred outside the M Chinnaswamy Stadium during celebrations, resulting in 11 deaths and over 30 injuries. The franchise involved pledged financial support to the families of the victims, and several individuals were detained in connection with the incident.
重要性:
此示例展示了 LLM 如何超越“说话”——它们可以充当实时代理,拉取经过验证的实时数据来为智能应用程序提供支持。这个例子展示了 LangChain Tools 如何赋能 LLM,使其能够胜任更复杂的任务。
8. 何时使用哪个 LangChain Tool?
LangChain Tools 的种类繁多,选择合适的工具取决于你需要的信息类型以及信息的及时性和准确性要求。
工具决策矩阵:
| 工具 | 适用场景 | 优点 | 缺点 |
|———————|—————————————————————————–|————————————————————————–|——————————————————————————|
| RequestsTool | 调用任意 RESTful API,获取各种在线服务的数据 | 灵活性高,可访问大量数据 | 需要了解 API 的使用方法,安全性风险 |
| WikipediaAPIWrapper | 查询维基百科,获取经过整理和验证的知识 | 信息可靠,结构化程度高,信息量大 | 信息可能过时,可能存在偏见 |
| SerpAPIWrapper | 通过 Google 搜索实时信息,获取最新新闻、推文、实时更新等 | 能够获取最新信息 | 搜索结果可能包含大量噪声,需要进行筛选和过滤 |
| PythonREPLTool | 执行 Python 代码,进行数学计算、逻辑推理、数据解析等 | 功能强大,可以执行各种复杂的计算任务 | 存在安全风险,需要谨慎使用 |
| Toolkits | 集成特定领域的 API,例如 OpenWeatherMap、NewsAPI 等 | 方便快捷,能够获取特定领域的数据 | 依赖于第三方 API 的可用性和质量 |
真实案例:构建 IPL 比赛分析助手
想象一下,你正在构建一个迷你助手来分析 IPL 2025 比赛:
- 使用 SerpAPIWrapper 获取比赛摘要
- 使用 PythonREPLTool 计算击球率或平均值
- 使用 RequestsTool 从 CricAPI 拉取球员统计数据
- 使用 WikipediaAPIWrapper 比较球队的历史表现
每个工具就像你赋予 LLM 的一项技能——你越能将工具与任务相匹配,你的应用程序就越智能。
9. 深入学习与实践
如果今天的实践演示让你感到兴奋,那么还有整个 LangChain Tools 世界在等着你。 无论你是构建 AI 新闻代理、股票市场仪表板还是按需天气助手,可能性都是无限的。
更多工具资源:
- LangChain Tool Integrations — Official Docs:官方文档是你的寻宝图。你将找到以下工具:
- 数据库(SQL、MongoDB)
- 文件系统(CSV、PDF)
- API(新闻、天气、GitHub)
- 搜索(Google、DuckDuckGo、Wikipedia)
- 实用程序(PythonREPL、计算器、终端)
额外福利:构建你自己的自定义工具
LangChain 允许你通过包装任何 Python 函数来创建自己的工具。 这意味着你可以将 LLM 无缝集成到你的 API、业务逻辑或数据管道中。
from langchain.agents import Tool
def get_discounted_price(price, discount):
return price - (price * discount / 100)
custom_tool = Tool(
name="Discount Calculator",
func=lambda q: get_discounted_price(100, 15), # 只是一个例子
description="计算给定原始价格和折扣率的折扣价格"
)
总结
LangChain Tools 是 LLM 开发者的强大武器,它们赋予 LLM 与现实世界互动、执行复杂任务的能力。通过掌握 RequestsTool、WikipediaAPIWrapper、SerpAPIWrapper、PythonREPLTool 等核心工具,并灵活运用 Toolkits,你可以构建出更智能、更自主的 LLM 应用。 记住,选择合适的 LangChain Tool 至关重要,要根据任务类型、信息需求以及安全考虑进行综合评估。不断学习和实践,你将能够充分利用 LangChain Tools 的潜力,开启 LLM 应用的新篇章。