大家好,我是秃头哥,一名 Java 后端程序员,每天开心撸 CRUD、调 RAG 问答、搭 Spring Boot+Elasticsearch 知识库,本来安安稳稳过日子。
然后,今天突变…
老板直接把我叫到工位,甩下死命令:
“咱们派聪明现在只能做 RAG 问答,你立刻马上给它升级成 Agent,要能自己 tool use、自己 ReAct 那种!限你一天搞定!”
WC,WC,WC……
一天?你当 Agent 是装个插件就完事的?我当场就想甩脸反抗,说这根本不可能!
结果老板根本不懂技术,只知道市面上 “Agent” 满天飞,所有项目必须蹭 Agent 概念,反抗直接无效!
我低声说:“老板,一天根本做不完,Agent 要工具调用、决策循环、记忆管理,很复杂……”
老板大声吼:“不会就学!招新不要钱吗?不想干就 G!”
想到上有老下有小,打工人只能低头
唉,只能硬着头皮猛猛干!
好在我之前肝过一个类似 Claude Code 的 Agent 项目 ——PaiCLI,从 ReAct 循环到 Chrome Devtools MCP 都跑通了,工具调用、决策循环、记忆管理全熟。
赶紧掏出Claude Code+DeepSeek V4 / Codex+GPT-5.5,开干!
先搞懂:派聪明 RAG 原本是啥?
基于Spring Boot 3.4 + Elasticsearch 8.10 + DeepSeek API的 RAG 知识库,核心流程就 4 步:
用户提问 → 混合检索 → 拼装上下文 → 大模型生成回答
整个问答入口在ChatHandler.java,关键方法是processMessage:
public void processMessage(String userId, String userMessage, WebSocketSession session) { // 1. 拿到对话历史 List<Map<String, String>> history = getConversationHistory(userId); // 2. 混合检索:向量相似度 + BM25 关键词 List<SearchResult> results = hybridSearchService .searchWithPermission(userMessage, userId, 5); // 3. 把检索结果拼成上下文 String context = buildContext(results); // 4. 调 DeepSeek 生成回答,流式返回 deepSeekClient.streamResponse(userId, userMessage, context, history, chunk -> sendToWebSocket(session, chunk)); }检索用的是HybridSearchService,策略是KNN 向量搜索 + BM25 重打分 + 权限过滤:
public List<SearchResult> searchWithPermission(String query, String userId, int topK) { // KNN 向量搜索(30x 候选窗口)+ BM25 重打分 SearchResponse response = elasticClient.search(s -> s .index("knowledge_chunks") .knn(k -> k.field("embedding").queryVector(embedQuery(query)) .numCandidates(topK * 30).k(topK * 5)) .query(q -> q.bool(b -> b .should(textMatch(query)) .filter(permissionFilter(userId)) )), SearchResult.class ); return parseResults(response, topK); }原来的致命问题:
用户说 “帮我把知识库里关于 Spring AI 的文档整理成一份摘要”,派聪明只能做一次检索然后把原文片段返回,不会判断、不会合并、不会结构化输出。
这就是RAG 和 Agent 的根本区别:
RAG 是被动问答;Agent 是主动决策加执行,能自己动手干活!
第一步:给 RAG 加上工具调用(Tool Calling)
原理:给大模型配一组 Tool,定义名称、功能、输入参数,让模型自己判断用哪个工具。
直接复用 PaiCLI 的ToolRegistry,注册4 个核心 Tool:
- 1.search_knowledge:知识库文档搜索
- 2.generate_summary:摘要生成
- 3.submit_feedback:答案反馈
- 4.knowledge_stats:知识库统计
核心search_knowledge工具代码:
tools.put("search_knowledge", new Tool( "search_knowledge", "在知识库中搜索相关文档片段,返回最匹配的结果", createParameters( new Param("query", "string", "搜索关键词", true), new Param("topK", "integer", "返回结果数量,默认5", false) ), args -> { int topK = args.containsKey("topK") ? Integer.parseInt(args.get("topK")) : 5; List<SearchResult> results = hybridSearchService .searchWithPermission(args.get("query"), currentUserId, topK); return formatSearchResults(results); } ));这一步干完,派聪明从 “只会答” 变成 “能主动干活”!
用户让整理 RAG 摘要,Agent 直接调用generate_summary,先搜再总结,输出结构化内容。
第二步:加上 ReAct 决策循环
ReAct = Reasoning + Acting,核心思想:思考该做什么 → 执行操作 → 观察结果 → 再思考下一步,直到任务完成。
PaiCLI 的Agent.java里核心逻辑约 100 行,靠while(true)循环驱动:
// 简化版ReAct循环 while (true) { // 1. 传入对话历史+工具列表,让大模型决策 ModelResponse resp = deepSeekClient.call(history, tools); // 2. 判断是否需要调用工具 if (resp.hasToolCalls()) { // 执行工具,把结果加入历史 ToolResult result = toolRegistry.execute(resp.getToolCalls()); history.add(buildToolMessage(result)); // 推送状态到前端 sendToolStatus(session, resp.getToolCalls().get(0).getName(), "executing"); } else { // 3. 无工具调用,直接返回最终答案 sendFinalAnswer(session, resp.getContent()); break; } // 预算控制:防止死循环 if (agentBudget.isExceeded()) break; }真实任务流程示例:用户:帮我搜一下知识库里有没有 RAG 相关的文档,有的话整理成一份摘要。
- 1.第一轮:思考→调用
search_knowledge搜 RAG - 2.第二轮:观察有结果→调用
generate_summary生成摘要 - 3.第三轮:任务完成→返回最终回答
关键兜底:设最大循环次数 + token 上限,不确定就问用户,不瞎调用工具!
第三步:加上 Memory 记忆管理
原来的对话只存最近几轮,跨会话就忘,升级双层记忆:
- 1.短期记忆:管理当前任务上下文,token 超了就压缩早期对话为摘要
- 2.长期记忆:存 Redis,记用户偏好,跨会话也能记住
短期记忆:复用conversationHistory,token 超阈值则保留最近 3 轮,早期转摘要。
长期记忆:存入 Redis,key=ltm:{userId}:{timestamp},30 天过期,新会话自动注入。
第四步:Review + 测试,一天极限搞定
先用 Claude Code+Opus 4.7 做代码 Review,重点查:
- 1.ReAct 循环死循环风险
- 2.Tool 执行异常处理
- 3.WebSocket 线程安全
- 4.记忆持久化数据一致性
然后跑4 个核心测试用例,全量通过:
最后:这个项目怎么写进简历?
帮大家整理好简历直抄版,面试直接用:
项目名称:派聪明 AI 知识库(PaiSmart)
项目简介:基于 Spring Boot 3.4 + Elasticsearch 8.10 + DeepSeek API 的企业级 AI 知识库系统,从纯 RAG 架构升级为 Agent 架构。
技术栈:Spring Boot 3.4、Spring WebFlux、Elasticsearch 8.10、Redis 7.0、MinIO、DeepSeek V4 API、WebSocket
核心职责:
- 1.构建混合检索引擎,KNN 向量 + BM25 重打分,问答召回准确率 92%
- 2.设计 Tool Calling 框架,注册 4 个核心工具,支持自主执行
- 3.实现 ReAct 决策循环,完成多步复合任务无人工干预
- 4.设计双层记忆架构,短期压缩 + 长期 Redis 持久化
- 5.基于 WebSocket 实时推送 Agent 思考与工具调用状态
打工人真心感慨:
谁懂啊,老板不懂技术乱提需求,一天极限升级 Agent,全靠之前的技术积累 + AI 工具硬撑!
等我技术再牛逼点,再也不接这种拍脑袋的紧急需求!
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~