目录
- 1. 先搞清楚:Agent 框架到底是什么?
- 2. LangChain/LangGraph:Agent 开发的"瑞士军刀"
- 3. LangGraph 核心概念:把工作流画成图
- 4. 动手实践:用 LangGraph 搭一个简单 Agent
- 5. 其他主流框架:各有各的拿手好戏
- 6. 框架选型指南:按图索骥
- 7. 推荐学习资源
1. 先搞清楚:Agent 框架到底是什么?
Agent 框架,简单说就是:帮你快速搭建 AI Agent 的"工具箱"。
想象一下,你要做一顿大餐:
- 你需要锅碗瓢盆(工具)
- 你需要食材(数据/知识库)
- 你需要菜谱(工作流)
- 你需要一个主厨来协调(LLM)
Agent 框架就是把这些东西都给你准备好了,你只要告诉它"我要做什么",它就帮你把各个部分串起来。
2. LangChain/LangGraph:Agent 开发的"瑞士军刀"
2.1 LangChain 生态:从零件到成品
LangChain 就像一个"工具超市",里面有各种现成的零件:
┌─────────────────────────────────────────┐ │ LangGraph │ ← 组装好的"智能机器" ├─────────────────────────────────────────┤ │ LangChain Expression │ ← 零件的拼接方式(LCEL) ├─────────────────────────────────────────┤ │ Chains │ Agents │ Retrieval │ ← 半成品组件 ├─────────────────────────────────────────┤ │ Models │ Prompts │ Memory │ Tools │ ← 基础零件 ├─────────────────────────────────────────┤ │ LangSmith / LangServe │ ← 调试和部署工具 └─────────────────────────────────────────┘简单解释:
- Models:连接各种 LLM(GPT、Claude 等)
- Prompts:帮你管理提示词模板
- Memory:帮 Agent 记住对话历史
- Tools:连接外部工具(搜索、数据库等)
- Chains:把这些零件串成一条线
- Agents:让 LLM 决定什么时候调用哪个工具
- LangGraph:用"图"的方式来编排复杂工作流
- LangSmith:调试和监控 Agent 的运行
3. LangGraph 核心概念:把工作流画成图
3.1 什么是 LangGraph?
LangGraph 就是把 Agent 的工作流程,用"图"来表示。就像画流程图一样简单!
3.2 核心概念解读
| 概念 | 大白话解释 | 举个例子 |
|---|---|---|
| StateGraph | 整个工作流的蓝图 | 一张完整的流程图 |
| Node(节点) | 流程图上的一个步骤 | “调用 LLM”、“调用工具”、“总结答案” |
| Edge(边) | 步骤之间的连线 | 从"调用 LLM"连到"调用工具" |
| Conditional Edge(条件边) | 根据结果决定走哪条路 | “如果需要调用工具就走这条路,不需要就直接总结” |
| Checkpointer | 保存进度,随时恢复 | 暂停后下次接着做 |
| Human-in-the-Loop | 关键时刻让人来审核 | 花钱前先问一下用户确认 |
3.3 一个简单的工作流例子
开始 → [调用 LLM 判断] → 需要工具? ├─ 是 → [调用工具] → 返回 LLM └─ 否 → [总结答案] → 结束4. 动手实践:用 LangGraph 搭一个简单 Agent
4.1 核心代码结构
# 1. 定义状态(工作流中要传递的数据)classAgentState:messages:list# 对话历史tool_result:str# 工具执行结果# 2. 创建工作流graph=StateGraph(AgentState)# 3. 添加节点(步骤)graph.add_node("agent",call_llm)# 让 LLM 思考graph.add_node("tools",call_tools)# 执行工具graph.add_node("summarize",summarize)# 总结答案# 4. 设置起点和终点graph.set_entry_point("agent")# 从 LLM 开始graph.set_finish_point("summarize")# 在总结结束# 5. 添加连线(决定流程怎么走)defshould_continue(state):# 让 LLM 判断是否需要调用工具return"tools"ifneeds_tool(state)else"summarize"graph.add_conditional_edges("agent",should_continue,# 判断函数{"tools":"tools","summarize":"summarize"}# 分支)graph.add_edge("tools","agent")# 工具执行完回到 LLM4.2 解释一下这个流程
- 起点:用户提问,进入
agent节点 - LLM 判断:分析问题,决定要不要调用工具
- 分支判断:
- 需要工具 → 去
tools节点执行 - 不需要 → 直接去
summarize节点总结
- 需要工具 → 去
- 工具执行:调用搜索、数据库等工具,拿到结果
- 返回 LLM:工具结果交给 LLM 继续分析
- 总结输出:把最终答案给用户
5. 其他主流框架:各有各的拿手好戏
5.1 框架对比
| 框架 | 核心特点 | 适合做什么 |
|---|---|---|
| LangChain/LangGraph | 模块化、灵活、功能最全 | 复杂的多步骤工作流 |
| CrewAI | 角色扮演,多 Agent 协作 | 团队协作类任务(写作、研究) |
| AutoGen | 对话式多 Agent | 多 Agent 聊天协作 |
| Dify | 低代码平台,有可视化界面 | 快速搭建,非技术人员也能用 |
| Semantic Kernel | 微软出品,企业级 | .NET 生态集成 |
| Haystack | NLP 流水线 | 搜索、RAG 系统 |
| Smolagents | 轻量级 | 快速实验、学习 |
5.2 用场景来理解
场景一:写一篇研究报告
- 你需要:研究员找资料 → 分析师整理 → 写手成文
- 选CrewAI,让不同角色的 Agent 分工协作
场景二:做一个智能客服
- 你需要:意图识别 → 知识检索 → 回答生成
- 选LangGraph,自己灵活编排流程
场景三:非技术人员想快速搭个 AI 应用
- 你需要:可视化界面,拖拖拽拽就能做
- 选Dify,不用写太多代码
6. 框架选型指南:按图索骥
你的业务场景是什么? ├── 复杂多步骤工作流 → LangGraph ├── 多角色协作(研究、写作)→ CrewAI ├── 微软 .NET 生态 → Semantic Kernel ├── 低代码快速搭建 → Dify / Flowise ├── 搜索/RAG 系统 → Haystack └── 轻量级实验 → Smolagents7. 推荐学习资源
🌟 入门首选
| 资源 | 类型 | 链接 |
|---|---|---|
| LangChain 官方文档 | 文档 | Python 文档 |
| LangGraph 教程 | 文档 | LangGraph 文档 |
| LangChain Academy | 免费课程 | academy.langchain.com |
| CrewAI 官方文档 | 文档 | docs.crewai.com |
| AutoGen 官方文档 | 文档 | microsoft.github.io/autogen |
| Dify 官方文档 | 文档 | dify.ai |
📚 实践任务清单
- 任务一:用 LCEL 搭建一个简单的 RAG 问答链
- 任务二:用 LangGraph 实现一个带工具调用的 Agent
- 任务三:用 LangGraph 实现一个需要人工审核的流程
- 任务四:用 CrewAI 搭建一个多角色协作系统
✅ 能力检查清单
- 能用 LangChain 连接 LLM 和工具
- 能用 LangGraph 画工作流
- 能说出 3 个框架的区别
- 能根据需求选对框架
附录:核心概念一句话总结
| 概念 | 一句话 |
|---|---|
| LangChain | Agent 开发的工具箱,啥都有 |
| LangGraph | 把工作流画成图,直观又灵活 |
| StateGraph | 工作流的蓝图 |
| Node | 工作流的一个步骤 |
| Edge | 步骤之间的连线 |
| Conditional Edge | 根据条件选路线 |
| CrewAI | 多角色协作专家 |
| Dify | 低代码 Agent 平台 |
>最后记住:框架只是工具,选对的不选贵的!先想清楚你要做什么,再选合适的框架。