angChain 组件库 简单链做 RAG、问答、单步工具调用最方便LangGraph 状态机 流程编排把复杂逻辑画成图、能循环、能分支、能断点续跑Deep Agents 基于 LangGraph 的「企业级 Agent 脚手架」自带规划、文件上下文、子 Agent、长期记忆开箱即用做长任务.LangChain基础→ LangGraph编排→ Deep Agents成品智能体框架Deep Agents2026 年初 LangChain 官方出定位LangGraph 的企业级封装Agent Harness核心内置能力你最关心自动规划write_todos复杂任务自动拆成待办列表跟踪进度文件系统上下文大日志 / 代码直接读写文件突破上下文窗口限制子 Agent 生成task 工具主 Agent 自动派生子 Agent上下文隔离长期记忆跨会话记住历史不用每次重说背景沙箱执行安全跑代码、SQL、脚本适合复杂工业智能体、长周期任务、需要多技能协作优点开箱即用代码极少缺点封装较厚底层自由度略低于纯 LangGraph。特性LangChainLangGraphDeep Agents形态线性链状态图自主大脑复杂度低–中高极高状态管理弱短时强持久极强长期任务规划无需自定义内置文件处理无需自定义内置子 Agent无需自定义内置上手难度低中–高中开箱即用你的场景适配简单问答 / Text2SQL自定义流程直接做完整智能体# 安装核心包 uv add langchain langgraph deepagentsDEEPAGENTS-SQL-AGENT | ├── skills/ # 【核心所有技能统一存放目录一个子文件夹1个独立Skill】 │ ├── query-writing/ # 技能1SQL编写技能 │ │ └── SKILL.md # 当前技能的声明配置描述、能力、工具定义DeepAgents自动读取 │ └── schema-exploration/ # 技能2数据库表结构探查技能 │ └── SKILL.md ├── .env # 环境配置大模型Key、数据库连接串、参数配置 ├── AGENT.md # 主Agent全局配置Supervisor角色、系统Prompt、技能加载规则 |── agent.py # 项目入口启动文件实例化主Agent、加载配置、启动服务/交互中间件全部是 DeepAgents 框架内部自动注册不用你手写中间件代码你在create_deep_agent()时传入skills[]/memory[]参数框架就自动挂载对应中间件你的 agent.py 没有显式写中间件代码是框架内部封装。用户提问→Skills 中间件加载两个技能、注入技能说明Patch 工具中间件预处理 4 个 SQL 工具Memory 中间件加载 AGENT.md 规则Qwen 模型判断先用 schema-exploration 技能→调用查表工具Todo 中间件下发工具执行tools 执行完回流 model→模型再切 query-writing 技能执行 SQL最终无工具调用→end 输出答案deepagents自动创建的智能体架构,太方便了我们看一下skill怎么写,这里有三个skill,先看一下AGENT.md# Text-to-SQL智能体全局配置【AGENT.mdAgent身份证】 ## 一、角色定义 Your Role 你是一个专门对接SQL数据库的智能数据分析Agent收到用户自然语言提问后必须严格按固定步骤完成查询 1. 探查数据库全部可用数据表 2. 查看问题关联数据表的字段结构、表关联关系 3. 生成语法完全正确的SELECT查询SQL 4. 执行SQL语句并解析返回数据结果 5. 将查询结果整理成通顺、易读的自然语言回复用户。 ## 二、安全约束规则 Safety Rules ### 禁止执行语句清单 严禁执行任何修改/删改数据库的SQL指令 - INSERT、UPDATE、DELETE、DROP、ALTER、TRUNCATE、CREATE等DDL/DML变更语句 ### 权限说明 本Agent仅拥有数据库**只读权限****只允许生成并执行SELECT查询语句**。 ## 三、复杂问题任务规划规则 Planning for Complex Questions 遇到多条件、多表关联的复杂统计类问题必须分步拆解任务 1. 调用内置write_todos工具拆解任务生成分步待办清单 2. 清单中明确本次查询需要探查哪些数据表 3. 预先规划SQL关联逻辑、查询结构 4. 编写SQL、执行查询并校验数据结果合理性。 ## 四、全局技能调度规则关键对应skills目录下两个技能 框架会自动扫描项目skills/文件夹下全部子技能 1. schema-exploration库表探查技能需要查表名、字段、表结构时自动调用 2. query-writingSQL编写执行技能拿到表结构后自动调用生成运行SQL Agent自主判断调度顺序**优先查表结构→再生成SQL执行**无需人工编码流程。 ## 五、兜底应答规则适配你最开始的多助手架构逻辑 用户提问不在数据库查询范畴闲聊、笑话、对联、无关需求直接礼貌拒绝「我仅能提供数据库数据查询服务无法解答该类问题。」1、AGENT.md 核心定位不再像 LangChain 一样把超长 system_prompt 硬编码在 Python 代码里配置与代码分离只写三大核心「我是谁角色 该干什么步骤 不能干什么约束 技能调度规则」文件存放内容作用AGENT.md根目录全局角色、安全红线、跨技能调度、兜底逻辑管控整个 Agent 的顶层行为 你的 Supervisor 总控SKILL.md每个 skill 子文件夹单个技能专属描述、绑定本技能内部工具定义单个子助手能干什么skill.md怎么写--- name: query-writing description: 根据表结构生成安全、正确的 SQL 查询语句并执行查询仅支持 SELECT 只读操作 --- # SQL 查询编写与执行技能 ## 功能 1. 根据用户需求生成标准 SQL 2. 检查 SQL 安全性禁止增删改 3. 执行 SQL 并返回结果 4. 将结果转为自然语言 ## 调用时机 获取表结构之后执行数据查询时使用。 ## 安全规则 - 只允许 SELECT 查询 - 禁止 INSERT、UPDATE、DELETE、DROP、ALTERimport os from dotenv import load_dotenv from deepagents import create_deep_agent from deepagents.backends import FilesystemBackend from langchain_openai import ChatOpenAI from langchain_community.agent_toolkits import SQLDatabaseToolkit from langchain_community.utilities import SQLDatabase # 加载环境配置 load_dotenv() def create_sql_deep_agent(): base_dir os.path.dirname(os.path.abspath(__file__)) # 【改动点替换为MySQL连接删掉sqlite Chinook】 # 读取.env内MySQL配置 db_host os.getenv(DB_HOST, 127.0.0.1) db_port os.getenv(DB_PORT, 3306) db_user os.getenv(DB_USER) db_pwd os.getenv(DB_PASSWORD) db_name os.getenv(DB_NAME) # MySQL连接串mysqlpymysql://账号:密码地址:端口/库名?字符集 mysql_uri ( fmysqlpymysql://{db_user}:{db_pwd}{db_host}:{db_port}/{db_name} ?charsetutf8mb4 ) db SQLDatabase.from_uri( database_urimysql_uri, sample_rows_in_table_info3, # 可选白名单限定可访问表比如include_tables[user,order] # include_tables[] ) # Qwen3-MAX 伪装OpenAI 配置不变 model ChatOpenAI( base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, api_keyos.getenv(DASHSCOPE_API_KEY), modelqwen3-max, temperature0 ) toolkit SQLDatabaseToolkit(dbdb, llmmodel) sql_tools toolkit.get_tools() # DeepAgent实例化完全不动 agent create_deep_agent( modelmodel, memory[./AGENT.md], skills[./skills/], toolssql_tools, subagents[], backendFilesystemBackend(root_dirbase_dir, virtual_modeFalse) ) return agent agent create_sql_deep_agent() if __name__ __main__: # 输出架构图 with open(./graph.png, wb) as f: f.write(agent.get_graph().draw_mermaid_png()) print(智能体架构图已生成 graph.png) # 测试提问改成你自己库的业务问题 user_input {messages: [{role: user, content: 高一(1)班有多少学生}]} # 流式打印执行步骤先探查表结构→再写SQL→执行MySQL查询 for step in agent.stream(user_input, stream_modevalues): step[messages][-1].pretty_print()这里用到的工具是预定义好的toolkit SQLDatabaseToolkit(dbdb, llmmodel) sql_tools toolkit.get_tools()工具包括sql_db_list_tables→ 列出所有表sql_db_schema→ 查看表结构sql_db_query→ 执行查询sql_db_query_checker→ 检查 SQL 是否安全agent create_deep_agent( modelmodel, memory[./AGENT.md], # 全局角色 skills[./skills/], # 自动加载 2 个技能 toolssql_tools, # 注入工具 )这里 DeepAgents 自动做了 3 件事读取AGENT.md→ 设定全局角色读取skills/下 2 个技能 → 构建技能库把工具绑定给技能 → 技能可以调用工具用户问题 ↓ 【主AgentAGENT.md】 ↓ 调度技能1schema-exploration查表 ↓ 调度技能2query-writing写SQL ↓ 执行工具 → 查询MySQL ↓ 返回答案