24. LangChain内置工具,开发效率提升10倍!
为了大幅提升大语言模型应用开发效率,主流框架 LangChain 提供了数百款开箱即用的标准化工具,全面覆盖信息检索、文件操作、数据库处理、网络访问、代码执行、API 集成等核心场景。这些工具统一接口规范,内置完善的错误处理与数据转换逻辑,避免重复开发;同时支持快速封装自定义工具,并能与链、智能体、RAG 等核心组件深度协同。这不仅能帮助开发者快速构建稳定可靠的 AI 应用,还能极大简化流程、缩短上线周期,让开发者聚焦业务逻辑创新与用户体验优化。
动画视频在《24. LangChain内置工具,开发效率提升10倍!》。
🔍 搜索引擎类
|
工具名称 |
功能 |
|
DuckDuckGoSearchRun |
使用 DuckDuckGo 搜索 |
|
DuckDuckGoSearchResults |
获取 DuckDuckGo 搜索结果 |
|
WikipediaQueryRun |
查询 Wikipedia |
|
BingSearchRun |
使用 Bing 搜索(需要 API Key) |
|
BingSearchResults |
获取 Bing 搜索结果(需要 API Key) |
|
BraveSearch |
使用 Brave 搜索(需要 API Key) |
|
SearxSearchRun |
使用 Searx 搜索 |
|
SearxSearchResults |
获取 Searx 搜索结果 |
|
TavilyAnswer |
获取 Tavily 答案(需要 API Key) |
|
TavilySearchResults |
获取 Tavily 搜索结果(需要 API Key) |
|
GoogleSerperRun |
使用 Google Serper 搜索(需要 API Key) |
|
GoogleSerperResults |
获取 Google Serper 结果(需要 API Key) |
|
SearchAPIRun |
使用 SearchAPI 搜索(需要 API Key) |
|
SearchAPIResults |
获取 SearchAPI 结果(需要 API Key) |
|
JinaSearch |
使用 Jina 搜索 |
|
MojeekSearch |
使用 Mojeek 搜索 |
|
MetaphorSearchResults |
获取 Metaphor 搜索结果 |
|
YouSearchTool |
使用 You.com 搜索 |
|
AskNewsSearch |
搜索新闻(需要 API Key) |
📱 社交媒体和平台工具类
|
工具名称 |
功能 |
|
RedditSearchRun |
搜索 Reddit |
|
RedditSearchSchema |
Reddit 搜索模式 |
|
YouTubeSearchTool |
搜索 YouTube |
|
StackExchangeTool |
查询 Stack Exchange |
|
SteamWebAPIQueryRun |
查询 Steam API(需要 API Key) |
|
NasaAction |
查询 NASA 数据(需要 API Key) |
|
JiraAction |
操作 Jira(需要 API Key) |
📄 文件管理类
|
工具名称 |
功能 |
|
ReadFileTool |
读取文件内容 |
|
WriteFileTool |
写入文件内容 |
|
CopyFileTool |
复制文件 |
|
DeleteFileTool |
删除文件 |
|
MoveFileTool |
移动文件 |
|
ListDirectoryTool |
列出目录内容 |
|
FileSearchTool |
搜索文件 |
💰 金融工具类
|
工具名称 |
功能 |
|
YahooFinanceNewsTool |
查询 Yahoo 财经新闻 |
|
PolygonAggregates |
获取 Polygon 聚合数据(需要 API Key) |
|
PolygonFinancials |
获取 Polygon 财务数据(需要 API Key) |
|
PolygonLastQuote |
获取 Polygon 最新报价(需要 API Key) |
|
PolygonTickerNews |
获取 Polygon 股票新闻(需要 API Key) |
|
BalanceSheets |
获取资产负债表 |
|
CashFlowStatements |
获取现金流量表 |
|
IncomeStatements |
获取利润表 |
🔧 计算和数据类
|
工具名称 |
功能 |
|
WolframAlphaQueryRun |
使用 Wolfram Alpha 计算(需要 API Key) |
|
JsonGetValueTool |
获取 JSON 值 |
|
JsonListKeysTool |
列出 JSON 键 |
|
SleepTool |
延迟执行 |
|
DataheraldTextToSQL |
文本转 SQL(需要 API Key) |
|
AIPluginTool |
使用 AI 插件 |
💾 数据库类
|
工具名称 |
功能 |
|
QuerySQLDatabaseTool |
查询 SQL 数据库 |
|
InfoSQLDatabaseTool |
获取 SQL 数据库信息 |
|
ListSQLDatabaseTool |
列出 SQL 数据库表 |
|
QuerySQLCheckerTool |
检查 SQL 查询 |
|
QuerySparkSQLTool |
查询 Spark SQL |
|
InfoSparkSQLTool |
获取 Spark SQL 信息 |
|
ListSparkSQLTool |
列出 Spark SQL 表 |
|
QueryCheckerTool |
检查查询 |
|
QueryPowerBITool |
查询 Power BI(需要 API Key) |
|
InfoPowerBITool |
获取 Power BI 信息(需要 API Key) |
|
ListPowerBITool |
列出 Power BI 数据集(需要 API Key) |
|
QueryCassandraDatabaseTool |
查询 Cassandra 数据库 |
|
GetSchemaCassandraDatabaseTool |
获取 Cassandra 架构 |
|
GetTableDataCassandraDatabaseTool |
获取 Cassandra 表数据 |
📧 邮件和通讯工具类
|
工具名称 |
功能 |
|
GmailCreateDraft |
创建 Gmail 草稿(需要 API Key) |
|
GmailGetMessage |
获取 Gmail 消息(需要 API Key) |
|
GmailGetThread |
获取 Gmail 会话(需要 API Key) |
|
GmailSearch |
搜索 Gmail(需要 API Key) |
|
GmailSendMessage |
发送 Gmail 消息(需要 API Key) |
|
O365CreateDraftMessage |
创建 Office 365 草稿(需要 API Key) |
|
O365SearchEmails |
搜索 Office 365 邮件(需要 API Key) |
|
O365SearchEvents |
搜索 Office 365 事件(需要 API Key) |
|
O365SendEvent |
发送 Office 365 事件(需要 API Key) |
|
O365SendMessage |
发送 Office 365 消息(需要 API Key) |
|
SlackGetChannel |
获取 Slack 频道(需要 API Key) |
|
SlackGetMessage |
获取 Slack 消息(需要 API Key) |
|
SlackScheduleMessage |
定时发送 Slack 消息(需要 API Key) |
|
SlackSendMessage |
发送 Slack 消息(需要 API Key) |
🌐 网页访问类
|
工具名称 |
功能 |
|
RequestsGetTool |
发送 HTTP GET 请求 |
|
RequestsPostTool |
发送 HTTP POST 请求 |
|
RequestsPutTool |
发送 HTTP PUT 请求 |
|
RequestsPatchTool |
发送 HTTP PATCH 请求 |
|
RequestsDeleteTool |
发送 HTTP DELETE 请求 |
|
NavigateTool |
导航到网页 |
|
NavigateBackTool |
返回上一页 |
|
ClickTool |
点击网页元素 |
|
ExtractTextTool |
提取网页文本 |
|
ExtractHyperlinksTool |
提取网页链接 |
|
GetElementsTool |
获取网页元素 |
|
CurrentWebPageTool |
获取当前网页 |
🎨 语音和图像工具类
|
工具名称 |
功能 |
|
AzureCogsFormRecognizerTool |
Azure 表单识别(需要 API Key) |
|
AzureCogsImageAnalysisTool |
Azure 图像分析(需要 API Key) |
|
AzureCogsSpeech2TextTool |
Azure 语音转文本(需要 API Key) |
|
AzureCogsText2SpeechTool |
Azure 文本转语音(需要 API Key) |
|
AzureCogsTextAnalyticsHealthTool |
Azure 医疗文本分析(需要 API Key) |
|
AzureAiServicesDocumentIntelligenceTool |
Azure 文档智能(需要 API Key) |
|
AzureAiServicesImageAnalysisTool |
Azure AI 图像分析(需要 API Key) |
|
AzureAiServicesSpeechToTextTool |
Azure AI 语音转文本(需要 API Key) |
|
AzureAiServicesTextToSpeechTool |
Azure AI 文本转语音(需要 API Key) |
|
AzureAiServicesTextAnalyticsForHealthTool |
Azure AI 医疗文本分析(需要 API Key) |
|
GoogleCloudTextToSpeechTool |
Google Cloud 文本转语音(需要 API Key) |
|
ElevenLabsText2SpeechTool |
ElevenLabs 文本转语音(需要 API Key) |
|
SceneXplainTool |
解释图像(需要 API Key) |
|
SteamshipImageGenerationTool |
生成图像(需要 API Key) |
🤖AI服务和集成工具类
|
工具名称 |
功能 |
|
EdenAiExplicitImageTool |
检测敏感图像(需要 API Key) |
|
EdenAiObjectDetectionTool |
对象检测(需要 API Key) |
|
EdenAiParsingIDTool |
解析身份证(需要 API Key) |
|
EdenAiParsingInvoiceTool |
解析发票(需要 API Key) |
|
EdenAiSpeechToTextTool |
语音转文本(需要 API Key) |
|
EdenAiTextModerationTool |
文本审核(需要 API Key) |
|
EdenAiTextToSpeechTool |
文本转语音(需要 API Key) |
|
EdenaiTool |
EdenAI 通用工具(需要 API Key) |
|
BearlyInterpreterTool |
代码解释器(需要 API Key) |
|
E2BDataAnalysisTool |
数据分析(需要 API Key) |
|
ZapierNLAListActions |
列出 Zapier 动作(需要 API Key) |
|
ZapierNLARunAction |
运行 Zapier 动作(需要 API Key) |
|
CogniswitchKnowledgeRequest |
知识请求(需要 API Key) |
|
CogniswitchKnowledgeSourceFile |
知识源文件(需要 API Key) |
|
CogniswitchKnowledgeSourceURL |
知识源 URL(需要 API Key) |
|
CogniswitchKnowledgeStatus |
知识状态(需要 API Key) |
|
ZenGuardTool |
ZenGuard 工具(需要 API Key) |
|
Detector |
检测器(需要 API Key) |
|
ZenGuardInput |
ZenGuard 输入(需要 API Key) |
🛠️其他工具类
|
工具名称 |
功能 |
|
HumanInputRun |
获取用户输入 |
|
StdInInquireTool |
标准输入询问 |
|
ShellTool |
执行 Shell 命令 |
|
MerriamWebsterQueryRun |
查询 Merriam-Webster 词典(需要 API Key) |
|
OpenWeatherMapQueryRun |
查询天气(需要 API Key) |
|
VectorStoreQATool |
向量存储问答 |
|
VectorStoreQAWithSourcesTool |
带来源的向量存储问答 |
|
BaseGraphQLTool |
GraphQL 查询 |
|
BaseRequestsTool |
HTTP 请求基础工具 |
|
BaseSQLDatabaseTool |
SQL 数据库基础工具 |
|
BaseSparkSQLTool |
Spark SQL 基础工具 |
|
YahooFinanceNewsTool |
Yahoo 财经新闻 |
🎓学术搜索类
|
工具名称 |
功能 |
|
ArxivQueryRun |
查询 Arxiv 论文 |
|
PubmedQueryRun |
查询 PubMed 医学文献 |
|
GoogleBooksQueryRun |
查询 Google Books |
LangChain的工具在langchain-community开发包中,使用前需要先进行安装。
pip install langchain-community
这些工具类采用了继承BaseTool类的方式,相较于@tool装饰器的简洁实现,提供了更精细的控制能力,支持自定义args_schema、详细的name和description属性,以及完整的_run和_arun方法实现,更适合复杂的工具开发场景。
定义完成之后,通过实例化使用,可以直接将实例传递给Agent或Chain进行调用,使用起来既灵活又高效。
import os from dotenv import load_dotenv from langchain.agents import create_agent from langchain.chat_models import init_chat_model from langchain_core.tools import tool, BaseTool from langchain_community.tools import WriteFileTool, ReadFileTool, ListDirectoryTool load_dotenv() prefix = "QWEN" model = init_chat_model( model_provider="openai", configurable_fields=["model", "api_key", "base_url"], config_prefix=prefix ).with_config({ "configurable": { f"{prefix}_model": os.getenv(f"{prefix}_MODEL"), f"{prefix}_api_key": os.getenv(f"{prefix}_API_KEY"), f"{prefix}_base_url": os.getenv(f"{prefix}_BASE_URL") } }) class CalculateTool(BaseTool): name: str = "calculate" description: str = "计算数学表达式的值" def _run(self, expression: str) -> str: try: return f"计算结果: {eval(expression)}" except Exception as e: return f"计算错误: {str(e)}" async def _arun(self, expression: str) -> str: return self._run(expression) # ========== 初始化工具 ========== calculate = CalculateTool() write_file = WriteFileTool() read_file = ReadFileTool() list_dir = ListDirectoryTool() agent = create_agent( model=model, tools=[calculate, write_file, read_file, list_dir], system_prompt="你是一个助手,会用工具计算、读写文件、列出目录。", debug=True ) queries = [ "计算 2024*12+500,然后把结果保存到 result.txt", "读取 result.txt 的内容", "列出当前目录文件" ] for q in queries: print(f"\n问:{q}") result = agent.invoke({"messages": [{"role": "user", "content": q}]}) print(f"答:{result['messages'][-1].content}")

浙公网安备 33010602011771号