第四章 00:开篇 ------ 从「会聊天」到「记得住、会干活、能协作」
课程专题 :《AI Agents 开发实践》
原文链接 :
https://s.juejin.cn/ds/TAqu_hbSmd8/章节 :第四章 LangChain 进阶 ------ 记忆、工具与多 Agent
作者:Java 开发者转型 AI 全栈
前情回顾:我们已经走到哪了
前三章走完,我们的智能体长这样:
| 章节 | 拿到的能力 | 但它仍然 |
|---|---|---|
| 第一章 | 会调用模型(invoke / stream / batch) | 只是一个孤立的函数 |
| 第二章 | 长在一个真正的系统里(NestJS + RBAC) | 只会答这一句 |
| 第 2.5 章 | 有权限防线(JWT + 权限拦截) | 不记得上一句说了什么 |
| 第三章 | 会模板、会链、会结构化输出、会绑工具 | 每次对话都是第一次见面 |
第三章结束时我自我感觉良好,直到第四章开篇的实验打脸:上一轮刚说完的约定,下一轮模型就"失忆"了。
第四章要解决的问题
一句话概括:把「单轮应答机」变成「能干活的同事」。
一个能干活的同事需要什么?
- 记得住 ------ 上次聊到哪了?(→ Memory)
- 会干活 ------ 不只嘴上说说,能查文件、写报告(→ Tools)
- 找得到 ------ 「上下文太长怎么办」这种问法也能搜到对应知识(→ Embeddings + Vector Store)
- 能协作 ------ 复杂任务拆给多个专职角色并行干(→ Multi-Agent)
这四块能力,正好对应 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 开发者对照
| 本章概念 | 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 本章小结 ← 判断标准
回到索引 :第四章博客索引