LangChain Agent Tools 参考文档
本文档详细介绍了LangChain框架中可用的Agent工具及其使用方法。这些工具可以赋予AI智能体与外部系统和服务交互的能力,从而构建功能更强大的应用程序。
目录
- 工具加载方法
- 基础工具
- 文件和系统工具
- 搜索和信息检索工具
- 语言模型增强工具
- API和集成工具
- 数据库工具
- 浏览器和网页工具
- AI服务工具
- 办公和生产力工具
- 人工交互工具
- 工具集合(Toolkits)
工具加载方法
LangChain提供了两种主要方式来加载和使用工具:
1. 使用load_tools
函数
from langchain_community.agent_toolkits import load_tools# 加载单个工具
tools = load_tools(["wikipedia"])# 加载多个工具
tools = load_tools(["wikipedia", "llm-math"], llm=llm)# 加载需要API密钥的工具
tools = load_tools(["google-search"], google_api_key="your_api_key", google_cse_id="your_cse_id")# 加载危险工具(需要特别允许)
tools = load_tools(["terminal"], allow_dangerous_tools=True)
2. 直接导入工具类
from langchain_community.tools.google_search import GoogleSearchRun
from langchain_community.utilities.google_search import GoogleSearchAPIWrapper# 创建API包装器
search = GoogleSearchAPIWrapper(google_api_key="your_api_key", google_cse_id="your_cse_id")# 创建工具实例
tool = GoogleSearchRun(api_wrapper=search)
获取所有可用工具名称
from langchain_community.agent_toolkits import get_all_tool_names
names = get_all_tool_names()
print(names)
基础工具
Sleep Tool (休眠工具)
描述:让程序暂停执行一段时间
参数:无特殊参数
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["sleep"])
文件和系统工具
Terminal Tool (终端命令工具)
描述:执行shell/CMD/PowerShell命令的工具
注意:此工具被归类为危险工具,因为它可以执行任意系统命令
参数:
allow_dangerous_tools=True
:必须明确允许使用危险工具
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["terminal"], allow_dangerous_tools=True)# 方法2: 直接导入
from langchain.tools.shell.tool import ShellTool
shell_tool = ShellTool()# 执行命令
result = shell_tool.run("dir") # Windows
result = shell_tool.run("ls -la") # Linux/Mac
result = shell_tool.run("powershell -Command Get-Process") # PowerShell
File Management Toolkit (文件管理工具集)
描述:提供文件系统操作功能的工具集
包含的工具:
ReadFileTool
- 读取文件内容WriteFileTool
- 写入文件ListDirectoryTool
- 列出目录内容CopyFileTool
- 复制文件DeleteFileTool
- 删除文件MoveFileTool
- 移动文件FileSearchTool
- 搜索文件
参数:
root_dir
:(可选) 限制文件操作的根目录,默认为当前工作目录
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["file-management"])# 方法2: 使用工具集
from langchain_community.agent_toolkits import FileManagementToolkit
toolkit = FileManagementToolkit(root_dir="./data")
tools = toolkit.get_tools()# 方法3: 单独使用工具
from langchain_community.tools.file_management import ReadFileTool, WriteFileTool
read_tool = ReadFileTool()
write_tool = WriteFileTool()
搜索和信息检索工具
Wikipedia (维基百科搜索)
描述:从维基百科搜索和获取信息
参数:
top_k_results
:(可选) 返回的最大结果数,默认为2
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["wikipedia"])# 方法2: 直接导入
from langchain_community.tools.wikipedia.tool import WikipediaQueryRun
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
wikipedia_tool = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
Google Search (谷歌搜索)
描述:使用Google搜索引擎进行搜索
参数:
google_api_key
:Google API密钥google_cse_id
:Google自定义搜索引擎IDtop_k_results
:(可选) 返回的最大结果数,默认为4
注册:
- Google Custom Search API: https://developers.google.com/custom-search/v1/introduction
- 创建自定义搜索引擎: https://programmablesearchengine.google.com/
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["google-search"], google_api_key="your_api_key", google_cse_id="your_cse_id"
)# 方法2: 直接导入
from langchain_community.tools.google_search import GoogleSearchRun
from langchain_community.utilities.google_search import GoogleSearchAPIWrapper
search = GoogleSearchAPIWrapper(google_api_key="your_api_key", google_cse_id="your_cse_id")
google_tool = GoogleSearchRun(api_wrapper=search)
Bing Search (必应搜索)
描述:使用Bing搜索引擎进行搜索
参数:
bing_subscription_key
:Bing API密钥bing_search_url
:(可选) Bing搜索API URL
注册:
- Bing Search API: https://www.microsoft.com/en-us/bing/apis/bing-web-search-api
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["bing-search"], bing_subscription_key="your_api_key")# 方法2: 直接导入
from langchain_community.tools.bing_search import BingSearchRun
from langchain_community.utilities.bing_search import BingSearchAPIWrapper
bing_api = BingSearchAPIWrapper(bing_subscription_key="your_api_key")
bing_tool = BingSearchRun(api_wrapper=bing_api)
DuckDuckGo Search (DuckDuckGo搜索)
描述:使用DuckDuckGo搜索引擎进行搜索,不需要API密钥
参数:无特殊参数
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["ddg-search"])# 方法2: 直接导入
from langchain_community.tools.ddg_search import DuckDuckGoSearchRun
ddg_tool = DuckDuckGoSearchRun()
SerpAPI (搜索引擎结果API)
描述:通过SerpAPI获取搜索引擎结果
参数:
serpapi_api_key
:SerpAPI密钥
注册:
- SerpAPI: https://serpapi.com/
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["serpapi"], serpapi_api_key="your_api_key")
Arxiv (arXiv论文查询)
描述:搜索和获取arXiv上的学术论文
参数:
top_k_results
:(可选) 返回的最大结果数,默认为3
用法:
from langchain_community.agent_toolkits import load_tools# 方法1: 使用load_tools
tools = load_tools(["arxiv"])# 方法2: 直接导入
from langchain_community.tools.arxiv.tool import ArxivQueryRun
arxiv_tool = ArxivQueryRun()
PubMed (医学文献查询)
描述:搜索和获取PubMed上的医学文献
参数:
top_k_results
:(可选) 返回的最大结果数,默认为3
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["pubmed"])
Tavily Search (Tavily搜索)
描述:使用Tavily API搜索网络信息
参数:
tavily_api_key
:Tavily API密钥max_results
:(可选) 返回的最大结果数,默认为5
注册:
- Tavily: https://tavily.com/
用法:
from langchain.tools.tavily_search import TavilySearchResults
tavily_tool = TavilySearchResults(tavily_api_key="your_api_key")
语言模型增强工具
LLM Math (LLM数学计算)
描述:利用语言模型解决数学问题
参数:
llm
:语言模型实例,必需
用法:
from langchain_community.agent_toolkits import load_tools
from langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-3.5-turbo")
tools = load_tools(["llm-math"], llm=llm)
PAL (程序辅助语言模型)
描述:程序辅助语言模型,用于解决复杂问题
参数:
llm
:语言模型实例,必需pal_type
:(可选) PAL类型,如"math"或"colored_objects"
用法:
from langchain_community.agent_toolkits import load_tools
from langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-3.5-turbo")
tools = load_tools(["pal-math"], llm=llm)
API和集成工具
Requests Tools (HTTP请求工具)
描述:发送HTTP请求的工具集,包括GET、POST、PUT、PATCH、DELETE方法
注意:这些工具被归类为危险工具,因为它们可以发送任意HTTP请求
参数:
allow_dangerous_tools=True
:必须明确允许使用危险工具
用法:
from langchain_community.agent_toolkits import load_tools# 加载所有HTTP请求工具
tools = load_tools(["requests_get","requests_post","requests_put","requests_patch", "requests_delete"
], allow_dangerous_tools=True)# 或者只加载GET请求工具
tools = load_tools(["requests_get"], allow_dangerous_tools=True)
Wolfram Alpha (Wolfram Alpha计算引擎)
描述:使用Wolfram Alpha计算引擎进行计算和获取知识
参数:
wolfram_alpha_appid
:Wolfram Alpha App ID
注册:
- Wolfram Alpha API: https://developer.wolframalpha.com/
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["wolfram-alpha"], wolfram_alpha_appid="your_app_id")
OpenWeatherMap (天气查询API)
描述:获取实时天气和预报信息
参数:
openweathermap_api_key
:OpenWeatherMap API密钥
注册:
- OpenWeatherMap API: https://openweathermap.org/api
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["openweathermap-api"], openweathermap_api_key="your_api_key")
GraphQL (GraphQL查询工具)
描述:执行GraphQL查询的工具
参数:
graphql_endpoint
:GraphQL端点URLheaders
:(可选) HTTP请求头
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["graphql"], graphql_endpoint="https://your-graphql-endpoint.com")
Twilio (短信服务)
描述:发送SMS短信的工具
参数:
twilio_account_sid
:Twilio账户SIDtwilio_auth_token
:Twilio认证令牌
注册:
- Twilio: https://www.twilio.com/
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["twilio"], twilio_account_sid="your_sid", twilio_auth_token="your_token"
)
数据库工具
SQL Database Toolkit (SQL数据库工具集)
描述:提供SQL数据库操作功能的工具集
包含的工具:
QuerySQLDataBaseTool
- 执行SQL查询InfoSQLDatabaseTool
- 获取数据库信息ListSQLDatabaseTool
- 列出数据库表QueryCheckerTool
- 检查SQL查询
参数:
db
:SQLAlchemy数据库连接对象
用法:
from langchain_community.agent_toolkits import SQLDatabaseToolkit
from langchain_community.utilities import SQLDatabase# 连接数据库
db = SQLDatabase.from_uri("sqlite:///chinook.db")# 创建工具集
toolkit = SQLDatabaseToolkit(db=db)
tools = toolkit.get_tools()
Vector Store Tools (向量存储工具)
描述:用于向量数据库检索的工具
包含的工具:
VectorStoreQATool
- 问答工具VectorStoreQAWithSourcesTool
- 带来源的问答工具
参数:
vectorstore
:向量存储实例
用法:
from langchain.tools.vectorstore import VectorStoreQATool
from langchain_openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain_openai import ChatOpenAI# 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_texts(["文本1", "文本2"], embeddings)# 创建工具
llm = ChatOpenAI(model="gpt-3.5-turbo")
vector_tool = VectorStoreQATool.from_llm(llm, vectorstore)
浏览器和网页工具
PlayWright Browser Toolkit (浏览器自动化工具集)
描述:基于Playwright的浏览器自动化工具集
包含的工具:
NavigateTool
- 导航到URLExtractTextTool
- 提取网页文本ExtractHyperlinksTool
- 提取链接GetElementsTool
- 获取HTML元素ClickTool
- 点击元素CurrentWebPageTool
- 获取当前页面信息
用法:
from langchain_community.agent_toolkits import PlayWrightBrowserToolkit
from langchain_community.utilities.playwright import PlaywrightBrowser# 创建浏览器实例
browser = PlaywrightBrowser()# 创建工具集
toolkit = PlayWrightBrowserToolkit.from_browser(browser)
tools = toolkit.get_tools()
AI服务工具
DALL-E (图像生成)
描述:使用OpenAI DALL-E生成图像
参数:
openai_api_key
:OpenAI API密钥
注册:
- OpenAI API: https://platform.openai.com/
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["dalle-image-generator"], openai_api_key="your_api_key")
ElevenLabs Text2Speech (文本转语音)
描述:使用ElevenLabs将文本转换为逼真的语音
参数:
eleven_api_key
:ElevenLabs API密钥
注册:
- ElevenLabs: https://elevenlabs.io/
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["eleven-labs-text2speech"], eleven_api_key="your_api_key")
Google Cloud Text-to-Speech (谷歌云文本转语音)
描述:使用Google Cloud将文本转换为语音
参数:
google_cloud_credentials_json
:GCP凭证JSON文件路径
注册:
- Google Cloud: https://cloud.google.com/text-to-speech
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["google-cloud-texttospeech"], google_cloud_credentials_json="path/to/credentials.json"
)
办公和生产力工具
Gmail Toolkit (Gmail工具集)
描述:操作Gmail邮箱的工具集
包含的工具:
GmailSearch
- 搜索邮件GmailGetMessage
- 获取邮件内容GmailGetThread
- 获取邮件线程GmailSendMessage
- 发送邮件GmailCreateDraft
- 创建草稿
参数:
credentials_path
:(可选) Google API凭证JSON文件路径token_path
:(可选) Google API令牌文件路径
用法:
from langchain_community.agent_toolkits import GmailToolkittoolkit = GmailToolkit(credentials_path="credentials.json")
tools = toolkit.get_tools()
Office 365 Toolkit (Office 365工具集)
描述:操作Microsoft 365服务的工具集
包含的工具:
O365SearchEmails
- 搜索邮件O365SendMessage
- 发送邮件O365CreateDraftMessage
- 创建草稿O365SearchEvents
- 搜索日历事件O365SendEvent
- 创建日历事件
用法:
from langchain_community.agent_toolkits import O365Toolkit
from O365 import Account# 设置Office 365账户
credentials = ('client_id', 'client_secret')
account = Account(credentials)
account.authenticate()# 创建工具集
toolkit = O365Toolkit(account=account)
tools = toolkit.get_tools()
Jira Toolkit (Jira工具集)
描述:操作Jira项目管理软件的工具集
参数:
jira_api_token
:Jira API令牌jira_username
:Jira用户名jira_instance_url
:Jira实例URL
注册:
- Jira API: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/
用法:
from langchain_community.agent_toolkits import JiraToolkit
from langchain_community.utilities.jira import JiraAPIWrapperjira = JiraAPIWrapper(jira_api_token="your_api_token",jira_username="your_username",jira_instance_url="https://your-domain.atlassian.net"
)toolkit = JiraToolkit(jira_api_wrapper=jira)
tools = toolkit.get_tools()
人工交互工具
Human Input Tool (人类输入工具)
描述:请求人类用户提供输入的工具
参数:无特殊参数
用法:
from langchain_community.agent_toolkits import load_toolstools = load_tools(["human"])
工具集合(Toolkits)
LangChain提供了多个工具集合(Toolkits),每个工具集包含多个相关工具:
FileManagementToolkit
文件管理工具集,包含文件读写、目录列表等功能
OpenAPIToolkit
基于OpenAPI规范自动生成API工具
JsonToolkit
处理JSON数据的工具集
SQLDatabaseToolkit
SQL数据库操作工具集
PlayWrightBrowserToolkit
基于Playwright的浏览器自动化工具集
GmailToolkit
Gmail操作工具集
O365Toolkit
Office 365操作工具集
JiraToolkit
Jira项目管理工具集
AINetworkToolkit
AI Network区块链平台工具集
ZapierToolkit
Zapier集成工具集
SparkSQLToolkit
Spark SQL查询工具集
PowerBIToolkit
Microsoft Power BI工具集
使用示例
创建一个使用多种工具的智能体
from langchain_community.agent_toolkits import load_tools
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI# 创建语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo")# 加载工具
tools = load_tools(["wikipedia","llm-math","ddg-search"],llm=llm
)# 创建智能体
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,verbose=True
)# 运行智能体
agent.run("谁是现任法国总统?他的年龄是多少?")
使用多个工具集合
from langchain_openai import ChatOpenAI
from langchain_community.agent_toolkits import FileManagementToolkit, PlayWrightBrowserToolkit
from langchain_community.utilities.playwright import PlaywrightBrowser
from langchain.agents import initialize_agent, AgentType# 创建语言模型
llm = ChatOpenAI(model="gpt-3.5-turbo")# 创建文件管理工具集
file_toolkit = FileManagementToolkit()
file_tools = file_toolkit.get_tools()# 创建浏览器工具集
browser = PlaywrightBrowser()
browser_toolkit = PlayWrightBrowserToolkit.from_browser(browser)
browser_tools = browser_toolkit.get_tools()# 合并工具
all_tools = file_tools + browser_tools# 创建智能体
agent = initialize_agent(all_tools, llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,verbose=True
)# 运行智能体
agent.run("""
请访问https://news.baidu.com,抓取今日头条新闻,
并将结果保存到'news.txt'文件中
""")
注意事项
-
安全性:某些工具(如ShellTool和RequestsTool)可以执行任意命令或发送请求,使用时应特别注意安全问题
-
API密钥:许多工具需要API密钥,请确保妥善保管这些凭证
-
费用:某些第三方服务可能会收取使用费,请在使用前了解相关费用
-
权限:使用工具集合时,请确保你的应用程序具有适当的权限
-
依赖项:某些工具可能需要额外的依赖项,请确保安装所需的包