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}")

 

posted @ 2026-06-03 11:15  老陈说编程  阅读(65)  评论(0)    收藏  举报