LangChain AI Agent 工具规范与实战应用
只有让大语言模型(LLM)学会使用工具,才能构建出一系列实用的 AI Agent,从而充分发挥 LLM 的真正实力。本文将深入探讨如何让 AI Agent 调用更多工具,例如外部搜索、CSV 分析、文生图、执行代码等。
1. 使用工具的必要性
LLM 如果没有使用工具的能力,就相当于一个拥有聪明大脑但四肢僵硬的'渐冻人',无法处理实际任务。人类之所以区别于动物,正是因为学会了使用工具。因此,赋予 LLM 使用工具的能力至关重要。
我们需要 LLM 帮助执行各种任务。Tool(工具)就是 LLM 在执行任务过程中能够调用的外部能力。例如:需要检索外部资料时,可以调用检索工具;需要执行一段代码时,可以调用自定义函数去执行。
2. LangChain 的 Tool 规范
所有的工具必须遵守一套规范,才能让 LLM 随意调用。为此,LangChain 抽象出一个 Tool 层,只要是遵守这套规范的函数就是 Tool 对象,就可以被 LLM 调用。
2.1 Tool 规范
Tool 的规范很简单,主要包含三个属性:
- name:工具的名称。
- description:对工具的功能描述。后续这个描述文本会添加到 Prompt(提示词)中,LLM 将根据 description 来决定是否调用该工具。
- function:此工具实际运行的函数。
只要遵守这个规范就行,使用形式可以有多种,下文的实践代码会介绍到。
2.2 Agent 使用工具的流程
让 AI Agent 使用工具,需要定义 Agent 和 AgentExecutor。AgentExecutor 维护了 Tool.name 到 Tool 的 Map 结构。
流程如下:
- LLM 根据 Prompt(包含了
Tool的描述)和用户的问题,判断是否需要调用工具。 - 确定某个工具后,根据
Tool的名称和调用参数,在映射Map中查找Tool实例。 - 找到之后调用
Tool实例的function。 - 将结果反馈给 LLM,形成循环(reAct 模式)。
3. 如何使用各种 Tool
自定义 Tool 只需要遵守以上规范即可。下面以几个常用的工具做示例。
下文有些工具用到了 toolkits。toolkits 是 LangChain 提供的工具包,旨在简化使用工具的成本,里面提供了丰富的工具,还在不断叠加,大部分的工具都可以在里面找到。
3.1 外部搜索
使用外部搜索工具。本文使用的是 serpapi,它集成了 Google、百度等多家搜索引擎,通过 API 的形式调用,非常方便。
安装依赖:
pip install serpapi
注册账号: 访问 SerpAPI 官网自行注册,通常有免费额度可用。
外部搜索工具定义如下:
from langchain.tools import tool
from langchain_community.utilities import SerpAPIWrapper
() -> :
serp = SerpAPIWrapper()
result = serp.run(query)
result


