从“低代码”到“真智能”:知识库智能体开发日志--5月6日
📅 时间:2026年5月6日
最近在搭建了一个知识库智能体,过程可谓是“一波三折”。从最初觉得这是一个庞大复杂的工程,到后来试图用低代码平台“偷懒”,最后发现只有回归代码和图(Graph)的逻辑,才能造出一个真正会思考的“大脑”。
今天想和大家分享一下这个项目的心路历程,以及我如何从 Dify 到 LangGraph 来搭建这个企业级智能助手的经验。
🚧 0. 从0到1
记得最开始接到任务时,当时想的是从0-1的核心功能都由我来选择的搭建:前端、后端、数据库、向量数据库……我甚至画了一张复杂的架构图,觉得从这个项目还是很复杂的。
经过了解,同时为了减少重复造轮子,我选择了 Dify。刚开始用的时候感觉很不错,工作流式的节点编排非常自由,自带的RAG(检索增强生成)功能也省去了很多麻烦。设计了三条分支:总结类、仿写类、数据统计类,还写了密密麻麻的提示词(Prompt)。
💡 初期架构图
图1:Dify工作流初代架构
但是越做感觉维护和扩展就越困难。当演示时候,问题暴露无遗:
- 太死板:问题必须包含特定关键词(如“考勤数据”)才能走对路径,稍微模糊一点就报错。
- 太冗余:分支越多,提示词越长,系统反而变得低效。
- 不智能:它只是在机械地执行我预设的路径,一旦中间某个节点出错,整个流程就断了。
我发现:我在Dify里设计的不是智能体,而是一个精密的“自动售货机”。我代替它思考了所有问题,它只是在执行我的逻辑。
🧠1. 什么是真正的智能体?
和做AI的朋友深聊后,我有了新的理解。Dify本质上是低代码平台,适合做固定任务。但真正的智能体(Agent),应该拥有 “思考” 的能力。
什么是真正的智能?
- 会规划:遇到问题,自己想解决路径,而不是我指定路径。
- 会验证:如果第一步走错了,能感知到并回头重试。
- 会纠错:面对报错,能调整策略,而不是直接死机。
我意识到,我需要一个能循环思考的框架。传统的单向流程(DAG)限制了它,我需要的是图(Graph) 。于是,我转向了 LangGraph。
为什么放弃LangChain,选择LangGraph?
LangChain虽然强大,但其核心往往是单向流动的。而LangGraph允许循环和状态持久化,这正是Agent进行多轮“思考-行动-观察”闭环的关键。
🛠️ 2. 基于 LangGraph 的 ReAct 模式
我重新设计了架构。不再对问题进行死板分类,而是将能力封装成工具(Tools) ,让Agent自己去选择怎么用。
🏗️ 核心架构
我构建了一个基于 LangGraph ReAct 模式的企业知识库智能助手。它的核心逻辑很简单:大模型(千问 qwen-plus) + 记忆 + 工具。
🛠️ 我给它准备了三个“工具箱”:
rag_search:对接 Dify 知识库 API,负责文档检索(回答合同条款、规章制度)。list_files:扫描本地目录,负责告诉Agent“我有哪些数据文件”。execute_data_query:对接代码沙箱,负责生成Python代码并执行(计算工资、统计考勤)。
💡 ReAct 推理流程(建议贴图2)
图2:LangGraph ReAct 推理流程图
📊 项目结构一览
这是目前的项目结构,非常清晰:
HNGD-backend/
├── agent.py # 核心:LLM + 3个工具 + ReAct Agent
├── code_executor.py # 代码执行沙箱服务(FastAPI)
├── main.py # 命令行交互入口
├── .env # 环境变量配置
├── requirements.txt # Python 依赖
🚀 3. 它是如何自己思考的?
以前在Dify里,我必须告诉它“先查文件,再算数”。现在,我只需要告诉它任务,它自己会规划步骤。
场景: 问它“1月研发中心的平均工资是多少?”
它的思考过程(Log)是这样的:
- 第一轮思考:这个问题需要统计数据,但我还不知道文件在哪。行动:调用
list_files。 - 观察:哦,找到了
salary_january.xlsx。 - 第二轮思考:现在我知道文件了,需要写代码计算平均工资。行动:调用
execute_data_query,生成Pandas代码。 - 观察:代码执行成功,返回了结果
15000元。 - 第三轮思考:拿到了最终答案,组织语言回复用户。
✨ 活过来了 它不再是一个死板的流程,而是一个会根据环境反馈调整策略的智能体。
🖼️ 运行界面(建议贴图3)
图3:智能体命令行交互界面
📝 4. 总结与心得
回顾这2周的折腾,我有几点体会:
- 不要过早优化(No Low-Code) :虽然低代码平台(如Dify)上手快,但对于复杂逻辑和需要“自我纠错”的场景,代码级的控制力是无可替代的。
- Agent的核心是“图” :只有支持循环和状态流转的架构(LangGraph),才能实现真正的多步推理。
- 工具是能力的延伸:把复杂的业务逻辑封装成简单的工具(Tool),让LLM专注于“思考”怎么组合这些工具,这才是开发的正道。
目前这个项目已经能很好地处理文档问答和数据统计了
代码已整理,欢迎交流!