第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
课程专题:《AI Agents 开发实践》 原文链接:https://s.juejin.cn/ds/TAqu_hbSmd8/ 章节:第四章 LangChain 进阶 —— 记忆、工具与多 Agent 作者:Java 开发者转型 AI 全栈
前情回顾:我们已经走到哪了
前三章走完,我们的智能体长这样:
| 第一章 | 会调用模型(invoke / stream / batch) | 只是一个孤立的函数 |
| 第二章 | 长在一个真正的系统里(NestJS + RBAC) | 只会答这一句 |
| 第 2.5 章 | 有权限防线(JWT + 权限拦截) | 不记得上一句说了什么 |
| 第三章 | 会模板、会链、会结构化输出、会绑工具 | 每次对话都是第一次见面 |
第三章结束时我自我感觉良好,直到第四章开篇的实验打脸:上一轮刚说完的约定,下一轮模型就"失忆"了。
第四章要解决的问题
一句话概括:把「单轮应答机」变成「能干活的同事」。
一个能干活的同事需要什么?
这四块能力,正好对应 4.2 ~ 4.5 四节;4.1 先把「为什么」讲透,4.6 用一个统一入口把所有能力收束成一次调用,4.7 小结。
整章只围绕一个任务
和第三章一样,第四章全程围绕一个具体任务:做一个「需求分析智能体」——它面向需求分析师,能多轮澄清、能读需求单、能自动裁剪长对话上下文、能产出结构化的需求分析报告并落盘。
每新增一块能力,都是往这个智能体身上装一个器官,而不是换一个 demo。
技术栈全景图
┌─────────────────────── ch04 新增 ───────────────────────┐
│ │
│ Memory RunnableWithMessageHistory + trimMessages │
│ InMemoryChatMessageHistory (Map<sid, Hist>) │
│ │
│ Tools tool() + zod schema + tool loop (≤5 轮) │
│ + safePath 路径沙箱 │
│ │
│ Embeddings @xenova/transformers 本地模型(384 维) │
│ + MemoryVectorStore (@langchain/classic) │
│ │
│ Multi-Agent 5 Agent 小链 + Fixed Workflow 编排 │
│ Promise.all 并行 + 澄清短路 │
│ │
│ 统一入口 AdvancedAnalysisService.analyze() │
│ 编排 → 落盘 → 写回记忆(闭环) │
└──────────────────────────────────────────────────────────┘
依赖新增:@xenova/transformers(本地向量化)、@langchain/classic(MemoryVectorStore)。
Java 开发者对照
| RunnableWithMessageHistory | Spring AI 的 ChatMemory + Advisor 机制 |
| InMemoryChatMessageHistory | ConcurrentHashMap 做的 Session 仓库(生产换 Redis) |
| trimMessages | 滑动窗口裁剪,类似消息队列的 maxRetention |
| tool() + zod schema | Spring AI @Tool + Bean Validation |
| 工具循环 | Function Calling 协议的 while 循环 |
| MemoryVectorStore | 嵌入式向量库(生产换 pgvector = 换 PostgreSQL) |
| Fixed Workflow 编排 | 编排服务 + CompletableFuture.allOf 并行 |
| analyze() 统一入口 | DDD 的 Application Service / Facade |
前置条件
- ch03 的 services/chat 已跑通(第四章在 ch03 基础上继续)
- .env 里配置好 API Key(DashScope 兼容模式)
- 本章多了一个本地模型下载步骤(~90MB),国内网络需要配镜像——踩坑见 04 篇
学习路径
4.1 失真问题(为什么) ← 先承认:模型没有记忆
│
▼
4.2 Memory(记得住) ← 历史回填 + 裁剪
│
▼
4.3 Tools(会干活) ← 模型发意图、服务端执行
│
▼
4.4 Embeddings(找得到)← 语义检索
│
▼
4.5 Multi-Agent(能协作)← 5 专职 Agent + 编排
│
▼
4.6 统一入口(收束) ← analyze() 闭环
│
▼
4.7 本章小结 ← 判断标准
回到索引:第四章博客索引
网硕互联帮助中心





评论前必须登录!
注册