LangChain Agent 入门:LLM + 工具集 + 推理策略
884 字
4 分钟
LangChain Agent 入门:LLM + 工具集 + 推理策略
在 LangChain 中,Agent(智能代理) 是一个可以根据用户输入动态选择工具并执行操作的模型。
它不是单纯调用 LLM,而是能做决策:
- 识别用户意图
- 选择合适的工具(Tool)
- 执行工具操作
- 根据工具输出更新推理
- 最终输出答案
核心思想:Agent = LLM + 工具集 + 推理策略
二、Agent 的组成部分
-
LLM:语言模型
- 决策核心
- 支持 OpenAI、Claude、Llama 等
-
Tools(工具) :Agent 可用的外部接口
- Web 搜索(
SerpAPI、GoogleSearchAPI) - 数据库查询(SQLDatabaseChain)
- 文件读取(
TextLoader +VectorDB) - 自定义工具(任何函数,只需符合
tool 接口)
- Web 搜索(
-
Agent 类型 / 策略:LLM 如何调用工具
- Zero-shot agent:不依赖示例,直接用 prompt 决策
- ReAct agent:结合推理(Reasoning)+ 行动(Action)
- Conversational agent:适合多轮对话
- Plan-and-Act agent(新版):先规划步骤再执行
-
Memory(可选) :存储上下文,尤其是多轮对话中 Agent 的知识
-
ConversationBufferMemory -
ConversationSummaryMemory -
VectorStoreMemory
-
三、基本使用流程
假设我们想做一个查询天气的 Agent:
from langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAI
# 1. 定义 LLMllm = OpenAI(temperature=0)
# 2. 定义工具def get_weather(city: str) -> str: return f"{city} 今天晴,25度"
weather_tool = Tool( name="Weather", func=get_weather, description="获取指定城市的天气")
# 3. 初始化 Agentagent = initialize_agent( tools=[weather_tool], llm=llm, agent="zero-shot-react-description", # Zero-shot ReAct agent verbose=True)
# 4. 执行agent.run("请告诉我北京今天的天气")核心要点:
-
agent="zero-shot-react-description" 表示使用 ReAct 风格策略 -
Tool 必须包含name,func,description - Agent 会根据输入自动选择工具执行
四、注意事项
1. 工具设计
-
description 至关重要:LLM 通过描述选择工具 - 工具函数尽量保持幂等(相同输入输出一致)
- 对复杂工具可加安全检查,避免危险操作
2. Agent 类型选择
- Zero-shot:灵活,但易出错
- ReAct:推荐,能处理复杂任务,多步推理
- Plan-and-Act:适合长任务,先规划步骤再执行
3. 内存 & 多轮对话
- 对话 Agent 必须配置
memory - 注意 token 限制,避免长对话 context 超出模型上下文
4. Prompt 与输出控制
- 可以自定义
agent_prompt 控制 LLM 决策 - 输出可能包含
Thought /Action /Action Input 等信息 - 对接前端时可能需要解析这些字段
5. 异常处理
- 工具执行可能失败 → Agent 要能处理异常
- 可以通过
return_direct=True 或callback 捕获中间步骤
6. 调试 & 日志
-
verbose=True 可以看到 Agent 内部思考过程 - 适合训练或调试复杂链路
7. 性能 & Token 消耗
- 多工具、多步骤 → token 消耗大
- 可以缓存工具结果,或使用短 prompt
- 对接向量数据库等可做检索增强,减少重复调用 LLM
8. 安全性
- 避免让 Agent 直接执行系统命令或删除文件等危险操作
- 如果必须,可加入 sandbox 或权限控制
五、常见进阶用法
- 多工具 Agent
tools = [weather_tool, web_search_tool, sql_tool]agent = initialize_agent(tools, llm, agent="zero-shot-react-description")- 带内存的对话 Agent
from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory(memory_key="chat_history")agent = initialize_agent(tools, llm, agent="conversational-react-description", memory=memory)- Plan-and-Act Agent
- 用于复杂任务,先生成步骤列表再逐步执行
- 适合自动化办公、数据分析、复杂决策任务
六、总结
| 核心概念 | 说明 |
|---|---|
| LLM | 决策引擎 |
| Tool | 可执行操作接口 |
| Agent 类型 | 决策策略(Zero-shot / ReAct / Conversational / Plan-and-Act) |
| Memory | 对话或任务状态存储 |
| Verbose | 调试思考过程 |
| Prompt | 指导 LLM 选择工具和输出格式 |
✅ 最佳实践
- 工具描述清晰、函数幂等
- ReAct 或 Plan-and-Act 优先
- 对话 Agent 配置 Memory
- 调试用 verbose
- 控制 token,注意安全
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
LangChain Agent 入门:LLM + 工具集 + 推理策略
https://guoxin.wiki/posts/langchain-agent-basics/相关文章智能推荐
1
LangChain 的 Tools 体系:给 LLM 装上手和脚
AI 与 AgentTool 的接口定义、结构化工具(StructuredTool)、工具集与工具包的组织方式,以及 Agent 选择工具的原理。
2
LangChain VectorStore 的几种检索方式
AI 与 Agentsimilarity_search、带分数检索、MMR 等几种向量检索方式的差异和适用场景。
3
LangChain PromptTemplate 详解:把 Prompt 当代码管理
AI 与 Agent用模板把 Prompt 从字符串常量升级为可复用、可组合、可结构化输出的模块:占位符、FewShot、ChatPromptTemplate 与输出解析器的配合。
4
Windows 11 上封锁 Claude Code 出网:防火墙 + DNS + hosts 三层实战
运维与工具用防火墙规则、DNS 重定向和 hosts 三层手段封锁 Claude Code 的出网流量,并给出一套可验证、可回滚的完整脚本与自检流程。
5
React 学习 Day1:基础语法与整体框架(含 JS 关键基础)
前端建立对 React 的整体认识,并补齐编写 React 所必需的 JavaScript 语法基础:组件化、Props/State、JSX 与常用概念。
随机文章随机推荐














