当前位置: 首页 > news >正文

LangChain Agent 是一个能“自主决策 + 调用工具”的 LLM 应用框架。

LangChain Agent 是一个能“自主决策 + 调用工具”的 LLM 应用框架:

下面我将为你系统讲解:

> ✅ **什么是 LangChain Agent?**
> ✅ **如何使用和开发它?**
> ✅ **典型应用场景与最佳实践**
> ✅ **与普通 Chain 的区别**
> ✅ **最新演进(如 LangGraph、自主代理)**

---

## 一、什么是 LangChain Agent?

### 🎯 核心定义:
> **LangChain Agent 是一个能“自主决策 + 调用工具”的 LLM 应用框架**。
> 它让大语言模型(LLM)不仅能回答问题,还能**动态选择并执行外部工具**(如搜索、计算、数据库查询),实现复杂任务的自动化。

### 🔁 工作原理(循环决策):
```mermaid
graph LR
A[用户输入] --> B{Agent (LLM)}
B -->|思考:需要什么工具?| C[工具选择]
C --> D[调用工具<br>(Search / API / Code)]
D --> E[获取结果]
E --> B
B -->|答案已完备| F[返回最终响应]
```

- **关键能力**:**推理 → 行动 → 反思 → 再行动**
- **与普通 Chain 的区别**:
- **Chain**:固定流程(A → B → C)
- **Agent**:动态流程(LLM 决定下一步做什么)

---

## 二、LangChain Agent 的核心组件

| 组件 | 作用 | 示例 |
|------|------|------|
| **LLM** | 决策大脑 | GPT-4, Claude, Llama3, Qwen |
| **Tools** | 可调用的外部能力 | Google Search, Python REPL, SQL DB, 自定义函数 |
| **Agent Executor** | 执行引擎 | 控制循环、限制步数、处理错误 |
| **Prompt Template** | 引导 LLM 思考 | “你可以使用以下工具:...” |

---

## 三、如何使用 LangChain Agent?(代码示例)

### 场景:让 AI 能上网查天气 + 做计算

#### 步骤 1:安装依赖
```bash
pip install langchain langchain-openai langchain-community duckduckgo-search
```

#### 步骤 2:定义 Tools
```python
from langchain.agents import Tool
from langchain_community.utilities import DuckDuckGoSearchAPIWrapper
from langchain_openai import ChatOpenAI

# 工具1:网络搜索
search = DuckDuckGoSearchAPIWrapper()
search_tool = Tool(
name="Search",
func=search.run,
description="useful for when you need to answer questions about current events"
)

# 工具2:Python 计算器
def calculator(expr: str) -> str:
return str(eval(expr)) # 注意:生产环境需安全沙箱!

calc_tool = Tool(
name="Calculator",
func=calculator,
description="useful for math calculations"
)
```

#### 步骤 3:创建 Agent
```python
from langchain import hub
from langchain.agents import create_openai_functions_agent, AgentExecutor

# 拉取官方 prompt 模板
prompt = hub.pull("hwchase17/openai-functions-agent")

llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)

# 创建 agent(使用 OpenAI Functions 调用协议)
agent = create_openai_functions_agent(llm, [search_tool, calc_tool], prompt)

# 执行器
agent_executor = AgentExecutor(agent=agent, tools=[search_tool, calc_tool], verbose=True)
```

#### 步骤 4:运行
```python
response = agent_executor.invoke({
"input": "今天北京天气如何?如果明天降温5度,会是多少度?"
})
print(response["output"])
```

✅ **输出示例**:
> “今天北京晴,25°C。如果明天降温5度,则为20°C。”

> 💡 **背后发生了什么**?
> 1. LLM 决定先搜索“北京天气”
> 2. 调用 Search 工具 → 得到“25°C”
> 3. LLM 决定计算 `25 - 5`
> 4. 调用 Calculator → 得到“20”
> 5. 整合答案返回

---

## 四、如何开发自定义 Agent?

### 方法 1:使用内置 Agent 类型(推荐初学者)
LangChain 提供多种预设 Agent:
| Agent 类型 | 适用场景 | 特点 |
|----------|--------|------|
| **OpenAI Functions** | GPT-4 用户 | 利用 function calling,高效准确 |
| **React** | 通用 LLM | 基于 ReAct 推理框架(Thought/Action/Observation) |
| **Self-Ask** | 简单问答 | 通过自问自答分解问题 |
| **Plan-and-Execute** | 复杂任务 | 先规划步骤,再逐个执行 |

> ✅ **推荐**:优先用 `OpenAI Functions Agent`(性能最好)

### 方法 2:自定义 Agent(高级)
通过继承 `BaseSingleActionAgent` 实现完全控制逻辑,适用于:
- 多模态输入(图像+文本)
- 自定义推理协议
- 企业级审计日志

---

## 五、典型应用场景

### 1. **智能客服机器人**
- 工具:订单查询 API + 退款政策 DB + 邮件发送
- 能力:自动查订单、判断是否可退款、发邮件通知

### 2. **数据分析助手**
- 工具:SQL 查询 + Python (Pandas) + Matplotlib
- 示例:“上季度销售额最高的产品是什么?画个柱状图”

### 3. **自动化办公**
- 工具:Google Calendar API + Gmail + Docs
- 能力:自动安排会议、写周报、发提醒

### 4. **科研文献助手**
- 工具:Semantic Scholar API + PDF 解析 + 向量检索
- 能力:“找近3年关于 RLHF 的综述,并总结核心挑战”

### 5. **游戏 NPC(非 RL)**
- 工具:游戏状态 API + 对话生成
- 能力:NPC 根据玩家行为动态生成剧情对话

> ⚠️ **注意**:LangChain Agent **不适合实时控制**(如打游戏),因其延迟高(秒级),应使用 RL。

---

## 六、高级演进:LangGraph 与自主代理

LangChain 最新推出 **LangGraph**,支持**有状态、多角色、循环工作流**的 Agent:

### 示例:双 Agent 协作(研究员 + 批判者)
```python
from langgraph.graph import StateGraph, END

class AgentState(TypedDict):
task: str
plan: str
criticism: str
final_answer: str

def research_node(state: AgentState) -> AgentState:
# 研究员生成方案
...

def critique_node(state: AgentState) -> AgentState:
# 批判者提意见
...

workflow = StateGraph(AgentState)
workflow.add_node("researcher", research_node)
workflow.add_node("critic", critique_node)
workflow.set_entry_point("researcher")
workflow.add_edge("researcher", "critic")
workflow.add_conditional_edges("critic", should_continue, {True: "researcher", False: END})

app = workflow.compile()
result = app.invoke({"task": "如何降低数据中心能耗?"})
```

> ✅ **适用场景**:
> - 多轮反思优化(如写论文、写代码)
> - 多专家协作(医生+药师+保险顾问)

---

## 七、最佳实践与避坑指南

| 问题 | 建议 |
|------|------|
| **工具太多导致混乱** | 限制工具数量(<5个),明确描述用途 |
| **无限循环** | 设置 `max_iterations=10` |
| **幻觉调用不存在工具** | 在 prompt 中严格限定可用工具列表 |
| **安全风险** | 禁用 `eval()`,用 `ast.literal_eval` 或沙箱 |
| **成本过高** | 缓存工具结果(如相同搜索不重复调用) |

---

## 八、总结:LangChain Agent 的价值

| 维度 | 说明 |
|------|------|
| **核心价值** | 让 LLM 从“聊天机器人”升级为“行动者” |
| **适用任务** | **需要外部信息 or 计算** 的复杂问题 |
| **不适用场景** | 实时控制、高频决策、确定性流程(用 Chain 更好) |
| **技术栈** | LangChain + LLM + Tools + Prompt Engineering |
| **未来方向** | 多 Agent 协作、长期记忆、自主目标设定 |

---

## 🚀 快速开始模板

```python
# minimal_agent.py
from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain_openai import ChatOpenAI
from langchain_community.tools import DuckDuckGoSearchRun
from langchain import hub

tools = [DuckDuckGoSearchRun()]
llm = ChatOpenAI(model="gpt-4-turbo")
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = create_openai_functions_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

print(executor.invoke({"input": "谁是2024年奥运会主办城市?"}))
```

> 🔗 官方文档:https://python.langchain.com/docs/modules/agents/

http://www.jsqmd.com/news/512890/

相关文章:

  • 记一次生产环境MQ队列积压150W问题分析与解决方案
  • 云原生PLM为何能成为企业新宠?深度解析其核心优势与未来演进之路
  • Hive学习记录第一章
  • VOOHU——工业级千兆网络变压器选型要点:从宽温要求到封装选择
  • 计算机系统基础知识(七):软件篇之数据库系统详解
  • AI 学习测试文章
  • Java 集合框架工具类与性能优化实战
  • 英伟达旗舰发布年代图,H200,B200,B300参数对比图。 #AI计算#英伟达GPU
  • 跨境电商的下半场:从“引流”到“截流”,重构推特获客逻辑
  • 实战为王·数据说话,2026 AI超级员工真实效能测评
  • LeetCode hot100-238 除了自身以外数组的乘积
  • Ollie‘s EDI 对接指南:折扣零售巨头的供应链合规要点
  • 企业AI实战训练营培训总结:
  • labview异步调用子程序并运行子程序。 实现异步调用,不会卡死线程。 适合多个界面间相互跳转切换
  • Win11无线网卡驱动突然罢工?别急着重装系统,试试这个Intel官网驱动直装法
  • 3年数据分析从业者、统计专业背景:数据分析师工作具体要求及CDA二级备考经验
  • 实测椒图 AI:前端 / 设计 / 电商都能用的一站式图像工具,Nano Banana Pro 模型太稳了
  • 《Spring AI + 大模型全栈实战》学习手册系列 · 专题四:《Ollama 模型管理与调优:让 AI 模型在低配服务器上流畅运行》
  • 错误弹窗记录
  • 51单片机PID算法控制无刷直流电机Proteus仿真探索
  • Docker 环境下 Redis Lua 脚本部署与执行
  • 2026年厦门二手房装修公司推荐:厦门六区施工案例详解与环保材料选用指南 - 品牌推荐
  • 支付宝立减金别过期才想起,精选变现完整流程 - 淘淘收小程序
  • 避坑指南:Dify智能文档助手开发中常见的5个文件处理问题及解决方案
  • Windows家庭版升级专业版全攻略
  • gorm 中的Updates Update, Save,Create , UpdateColumn 区别与联系
  • AI时代,你的全球业务需要一张“会思考”的网络
  • Unity网络基础UDP客户端
  • Cortex-M3 异常处理机制的设计哲学
  • 25大数据 3-1 字符串函数