LangChain 进阶实战:利用 LLM 与 Agents 构建自主决策智能体
什么是 Agent
在日常使用中,ChatGPT 等模型通过文本输入处理并返回文本内容,类似于一个只有大脑的实体,能够思考、理解语言,但缺乏直接行动的能力。而 Agent(智能体)是一种能够自主决策、采取行动以达到特定目标的实体。
Agent 的核心思想是利用大语言模型(LLM)作为推理引擎来选择并采取一系列行动。在传统的链式结构中,行动路线通常是硬编码的;而在 Agent 架构中,LLM 根据当前场景动态判断需要使用什么工具。
Agent 的效果与模型的智慧程度密切相关。训练数据更丰富、能力更强的模型,其代理效果更佳。较差的模型可能会陷入自问自答的死循环,而优秀的模型具备自我验证能力,能判断答案是否与问题相关并进行修正。
通俗类比:
- 链式结构:像机器人手臂,拿着螺丝刀拧螺丝,拿着钥匙开锁,路径固定。
- Agent 结构:像人类助手,拥有多种工具(螺丝刀、钥匙、斧头),遇到螺丝用螺丝刀,遇到锁用钥匙,根据情境推理选择。
核心公式: Agent = LLM(思考决策)+ Memory(记忆)+ Tools(执行)
LangChain 中 Agent 的关键组成
- Agent 代理:负责规划任务序列。
- LLM 大模型:提供推理和决策能力。
- Tool 工具:连接外部世界,执行具体操作。
- Prompt 提示词:指导 Agent 如何思考和行动。
- Toolkit 工具包:一组工具的集合。
- AgentExecutor 代理执行器:管理 Agent 的执行流程,处理错误和迭代。
代理的类型
LangChain 支持多种 Agent 类型,适用于不同场景:
- Zero-shot ReAct:仅依靠工具描述决定使用哪个工具,无需示例。每个工具需提供清晰的描述信息。
- Structured Input ReAct:通过工具的参数 Schema 创建结构化的动作输入,适合参数复杂的工具。
- Open AI Functions:配合 OpenAI Function Call 机制工作,利用模型原生函数调用能力。
- Conversational:专为对话场景设计,结合 ReAct 框架和记忆功能保存对话历史。
- Self Ask with Search:利用工具查找事实性答案,常用于需要精确信息的场景。
Tool 工具详解
工具是 Agent 的手脚,用于与外部世界交互。LangChain 提供了丰富的内置工具(如搜索、维基百科、AWS 工具等),它们都是 BaseTool 的子类。
1. 加载内置工具
from langchain.tools import load_tools
# 加载 SerpAPI 搜索引擎工具
tools = load_tools(["serpapi"], llm=llm)
2. 自定义工具
可以通过装饰器 @tool 将普通 Python 函数转换为 LangChain 工具。函数内部必须包含详细的文档字符串(docstring),用于描述工具的功能和参数。
from langchain.agents import tool
() -> :
serpapi GoogleSearch
params = {
: query,
:
}
search = GoogleSearch(params)
results = search.get_dict()
results[][][] results.get()
tools = [serpapi_search]


