LangChain Agent 入门:LLM + 工具集 + 推理策略

884 字
4 分钟
LangChain Agent 入门:LLM + 工具集 + 推理策略

在 LangChain 中,Agent(智能代理) 是一个可以根据用户输入动态选择工具并执行操作的模型。
它不是单纯调用 LLM,而是能做决策:

  1. 识别用户意图
  2. 选择合适的工具(Tool)
  3. 执行工具操作
  4. 根据工具输出更新推理
  5. 最终输出答案

核心思想:Agent = LLM + 工具集 + 推理策略


二、Agent 的组成部分#

  1. LLM:语言模型

    • 决策核心
    • 支持 OpenAI、Claude、Llama 等
  2. Tools(工具) :Agent 可用的外部接口

    • Web 搜索(SerpAPI​、GoogleSearchAPI​)
    • 数据库查询(SQLDatabaseChain)
    • 文件读取(TextLoader​ + VectorDB​)
    • 自定义工具(任何函数,只需符合 tool​ 接口)
  3. Agent 类型 / 策略:LLM 如何调用工具

    • Zero-shot agent:不依赖示例,直接用 prompt 决策
    • ReAct agent:结合推理(Reasoning)+ 行动(Action)
    • Conversational agent:适合多轮对话
    • Plan-and-Act agent(新版):先规划步骤再执行
  4. Memory(可选) :存储上下文,尤其是多轮对话中 Agent 的知识

    • ​ConversationBufferMemory​
    • ​ConversationSummaryMemory​
    • ​VectorStoreMemory​

三、基本使用流程#

假设我们想做一个查询天气的 Agent:

from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
# 1. 定义 LLM
llm = OpenAI(temperature=0)
# 2. 定义工具
def get_weather(city: str) -> str:
return f"{city} 今天晴,25度"
weather_tool = Tool(
name="Weather",
func=get_weather,
description="获取指定城市的天气"
)
# 3. 初始化 Agent
agent = 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 或权限控制

五、常见进阶用法#

  1. 多工具 Agent
tools = [weather_tool, web_search_tool, sql_tool]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description")
  1. 带内存的对话 Agent
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(memory_key="chat_history")
agent = initialize_agent(tools, llm, agent="conversational-react-description", memory=memory)
  1. 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/
作者
Guoxin
发布于
2026-09-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Guoxin
写代码,也写思考。
公告
博客初建,笔记陆续搬家中。所有文章均经脱敏检查后发布。
分类
标签
最新动态
站点统计
文章
12
分类
6
标签
24
总字数
13,485
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Unknown CI
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录