核心技术技能(必学)
1. 大模型 API 对接
| 技能点 | 说明 |
|---|---|
Spring AI ChatClient |
同步/流式调用大模型 |
| 多模型接入 | OpenAI、通义千问、DeepSeek、本地 vLLM |
| 请求配置 | 温度、最大 token、top_p 等参数设置 |
java
# 学习计划:大模型 API 对接
## 目标
掌握使用 Spring AI 的 `ChatClient` 对接大模型 API,实现同步和流式调用,并能配置多模型(OpenAI、通义千问等)。
## 学习内容
1. Spring AI 项目初始化(Spring Boot + spring-ai-openai-spring-boot-starter)
2. 配置 API Key 和基础参数(temperature、maxTokens)
3. 实现同步调用 `chatClient.call(prompt)`
4. 实现流式调用 `chatClient.stream(prompt)`
5. 切换不同模型(如从 OpenAI 切换到通义千问)
## 实践产出
- 一个 REST API:`POST /chat` 接收用户消息返回 AI 回复
- 一个 WebSocket 或 SSE 接口实现流式输出
## 参考资源
- Spring AI 官方文档:ChatClient 章节
- B站/YouTube 搜索 "Spring AI ChatClient 入门"
## 自检清单
- [ ] 能成功调用 OpenAI API 并返回结果
- [ ] 能配置 temperature 控制回复随机性
- [ ] 能实现流式逐字输出
- [ ] 能通过配置文件切换模型(如从 gpt-3.5 到 gpt-4)
2. RAG 知识库搭建
| 技能点 | 说明 |
|---|---|
| 文档加载 | PDF、Word、TXT 解析 |
| 文本分块 | 按段落、固定大小、重叠分块 |
| 向量化 | EmbeddingClient 调用 embedding 模型 |
| 向量存储 | PgVector(PostgreSQL 扩展) |
| 相似度检索 | 余弦距离、L2 距离、Top-K 检索 |
| 增强生成 | 检索结果注入 Prompt,调用 LLM 生成答案 |
bash
# 学习计划:RAG 知识库搭建
## 目标
实现从文档加载到向量存储再到检索增强生成的完整 RAG 流程,使用 PgVector 作为向量数据库。
## 学习内容
1. 使用 Docker 安装 PostgreSQL + pgvector 扩展
2. 文档解析:读取 PDF、Word、TXT(用 Apache Tika 或 spring-ai 的 DocumentReader)
3. 文本分块:按段落或固定大小(如 500 字符,重叠 50)
4. 向量化:`EmbeddingClient` 调用 embedding 模型
5. 存储:`VectorStore` 接口 + PgVector 实现,插入向量
6. 检索:相似度搜索(余弦距离),返回 Top-K
7. 增强生成:将检索结果拼接进 Prompt,调用 LLM 生成答案
## 实践产出
- 一个 REST API:`POST /rag/ask` 上传问题,返回基于文档的回答
- 一个管理接口:`POST /rag/upload` 上传文档,自动入库
## 参考资源
- Spring AI 官方文档:VectorStore、PgVector
- pgvector 官方 GitHub
## 自检清单
- [ ] 能成功解析 PDF 并提取文本
- [ ] 能配置文本分块大小和重叠
- [ ] 能插入向量到 PgVector 并验证存储
- [ ] 能执行相似度搜索并返回相关片段
- [ ] 能基于检索结果生成准确回答(不出现幻觉)
3. Prompt 工程优化
| 技能点 | 说明 |
|---|---|
| 模板设计 | PromptTemplate 变量替换 |
| 角色设定 | 系统提示词定义角色 |
| 少样本学习 | Few-shot 示例 |
| 思维链 | CoT 引导分步推理 |
| 输出约束 | 指定格式(JSON、Markdown 等) |
| 模板库管理 | 配置文件管理不同场景的提示词 |
bash
# 学习计划:Prompt 工程优化
## 目标
掌握提示词设计方法论,能在 Spring AI 中使用 `PromptTemplate` 管理不同场景的提示词,并能编写少样本、思维链等高级提示。
## 学习内容
1. 基础提示词结构:角色设定、任务描述、输出格式约束
2. 使用 `PromptTemplate` 实现变量替换(如 `{input}`)
3. 少样本学习(Few-shot):在提示中提供示例
4. 思维链(CoT):引导模型分步推理
5. 提示词版本管理:将提示词放在 yaml/properties 文件中,动态加载
6. 不同场景的提示模板设计:问答、文案生成、代码生成、客服
## 实践产出
- 一个提示词模板库(配置文件形式),至少包含 3 个场景的模板
- 一个 Demo:根据用户选择的不同场景,加载不同模板并调用 LLM
## 参考资源
- DeepLearning.AI 的 ChatGPT Prompt Engineering 课程
- OpenAI 官方 Prompt 最佳实践
## 自检清单
- [ ] 能写出稳定的角色设定提示词
- [ ] 能用 `PromptTemplate` 动态填充变量
- [ ] 能使用少样本示例提高输出准确率
- [ ] 能通过思维链让模型处理复杂推理
- [ ] 能将提示词外置到配置文件并热加载
4. 流程自动化(Agent)
| 技能点 | 说明 |
|---|---|
| Function Calling | Spring AI 注册 Java 函数,模型自动调用 |
| 工作流编排 | Spring AI Alibaba Graph |
| 状态管理 | Graph 中的 State 对象 |
| 节点与边 | Node、Edge、Conditional Edge |
| 循环与反思 | 图内循环实现多轮推理或纠错 |
| 多智能体协作 | 多个 Graph 节点协同 |
bash
# 学习计划:流程自动化(Agent + Function Calling + Graph)
## 目标
掌握 Function Calling 让模型调用 Java 方法,并使用 Spring AI Alibaba Graph 构建有状态的多步骤工作流。
## 学习内容
1. Function Calling:定义 `@Bean` 方法,注册为工具(如查询天气、查订单)
2. 让模型自动判断调用哪个函数,并解析参数
3. Spring AI Alibaba Graph 概念:State、Node、Edge
4. 构建线性工作流:A → B → C
5. 条件路由:根据节点输出选择不同分支
6. 循环与反思:在图内引入循环节点,实现自我纠错
7. 多智能体协作:多个 Graph 节点协同
## 实践产出
- 一个客服 Agent:用户输入 → 意图识别 → 调用订单查询 API → 生成回复
- 一个自动纠错工作流:生成 → 评估 → 不合格则重新生成
## 参考资源
- Spring AI Alibaba Graph 官方示例
- Spring AI Function Calling 文档
## 自检清单
- [ ] 能定义一个 Java 函数并让模型调用
- [ ] 能解析模型返回的函数调用参数
- [ ] 能构建一个包含 3 个节点的线性 Graph
- [ ] 能实现条件路由(if-else 分支)
- [ ] 能实现循环节点(如重试最多 3 次)
5. 对话流程设计
| 技能点 | 说明 |
|---|---|
| 多轮对话 | 上下文记忆(State 持久化) |
| 意图识别 | 条件路由分支 |
| 对话状态 | 管理用户会话状态 |
| 工具调用集成 | 对话中触发业务 API |
bash
# 学习计划:对话流程设计(多轮对话 + 状态管理)
## 目标
掌握在 Agent 中管理多轮对话上下文,实现有记忆的对话流程,并能处理意图识别和状态流转。
## 学习内容
1. 对话状态设计:State 中包含对话历史、当前意图、槽位等
2. 多轮上下文管理:将历史消息传入 Prompt
3. 意图识别节点:分类用户意图(查询、投诉、闲聊等)
4. 槽位填充:多轮对话中逐步收集必要信息
5. 会话持久化:用 Redis 存储用户会话状态
6. 结合 Graph 实现对话流程:意图识别 → 槽位填充 → 调用工具 → 生成回复
## 实践产出
- 一个订票助手 Agent:多轮对话收集出发地、目的地、日期,最后调用 API 查询
- 支持会话超时和状态恢复
## 参考资源
- Spring AI 多轮对话示例
- Rasa 对话设计思路(仅参考)
## 自检清单
- [ ] 能设计 State 存储对话历史和当前意图
- [ ] 能实现意图识别节点(如分类为 3 种意图)
- [ ] 能实现多轮槽位填充,缺失信息时主动追问
- [ ] 能将会话状态存入 Redis 并恢复
- [ ] 能完成一个完整的多轮任务(如订票、查快递)
二、工程支撑技能(推荐)
6. Java 后端工程适配
| 技能点 | 说明 |
|---|---|
| 异步处理 | @Async、CompletableFuture 处理长推理 |
| 缓存 | Redis 缓存 embedding / LLM 响应 |
| 消息队列 | RabbitMQ/Kafka 解耦任务 |
| 定时任务 | @Scheduled 批量调用 AI |
| 监控日志 | Micrometer、Actuator 记录 token/耗时/错误 |
bash
# 学习计划:Java 后端工程适配(异步、缓存、MQ、监控)
## 目标
将 AI 能力与 Java 后端工程实践结合,解决生产环境中的性能、稳定性和可观测性问题。
## 学习内容
1. 异步处理:`@Async` 处理长时间推理任务,返回任务 ID 轮询结果
2. 缓存:使用 Redis + Spring Cache 缓存 embedding 向量和 LLM 响应(相同输入不重复调用)
3. 消息队列:用 RabbitMQ/Kafka 解耦任务提交与执行
4. 定时任务:`@Scheduled` 批量调用 AI 处理数据
5. 监控与日志:记录每次 LLM 调用的 token 消耗、响应时间、错误原因
## 实践产出
- 一个异步 RAG 服务:提交文档后返回任务 ID,后续查询结果
- 一个缓存装饰器:相同问题直接返回缓存答案
- 监控端点:`/actuator/metrics/ai.calls` 展示调用统计
## 参考资源
- Spring Boot 异步、缓存、消息队列官方文档
- Micrometer 自定义指标
## 自检清单
- [ ] 能用 `@Async` 实现非阻塞 AI 调用
- [ ] 能用 Redis 缓存 LLM 响应并设置过期时间
- [ ] 能集成 RabbitMQ 发送和消费 AI 任务
- [ ] 能记录每次调用的 token 和耗时到日志
- [ ] 能暴露自定义 Prometheus 指标
7. 云原生部署
| 技能点 | 说明 |
|---|---|
| Docker | 编写 Dockerfile 打包 Spring Boot 应用 |
| Kubernetes | Deployment、Service、ConfigMap、Ingress |
| 环境配置 | 环境变量管理 API Key、数据库连接 |
bash
# 学习计划:云原生部署(Docker + K8S)
## 目标
能将 Spring AI 应用容器化,并部署到 Kubernetes 集群中,支持配置管理和弹性伸缩。
## 学习内容
1. 编写 Dockerfile 打包 Spring Boot 应用(多阶段构建)
2. 使用 docker-compose 本地运行整套服务(Spring AI + PostgreSQL + pgvector + Redis)
3. Kubernetes 核心概念:Pod、Deployment、Service、ConfigMap、Secret
4. 编写 YAML 部署 Spring AI 应用到 K8S
5. 配置管理:API Key、数据库密码等用 Secret 存储
6. Ingress 暴露服务
## 实践产出
- 一个可本地 docker-compose 运行的 RAG 服务
- 一套 K8S YAML 文件,能在 minikube 或云 K8S 上部署
## 参考资源
- Docker 官方文档
- Kubernetes 官方教程(minikube)
- Spring Boot 容器化最佳实践
## 自检清单
- [ ] 能写出优化的 Dockerfile(分层缓存、非 root 用户)
- [ ] 能用 docker-compose 一键启动所有依赖
- [ ] 能写出 Deployment、Service、ConfigMap YAML
- [ ] 能通过 kubectl 部署并查看日志
- [ ] 能配置 Ingress 通过域名访问
8. AI 编程工具
| 技能点 | 说明 |
|---|---|
| Cursor | 用 AI 辅助编写 Java 代码 |
| 代码审查 | 能判断 AI 生成代码的正确性 |
bash
# 学习计划:AI 编程工具(Cursor)
## 目标
熟练使用 Cursor 辅助编写 Java AI 代码,提高开发效率,并能判断 AI 生成代码的质量。
## 学习内容
1. 安装 Cursor 并配置 Java 环境(JDK、Maven/Gradle)
2. 使用 AI 对话生成 Spring AI 代码片段
3. 使用 Tab 补全快速编写常见代码(REST API、配置类等)
4. 使用 Cmd+K 编辑选中代码(重构、添加注释、生成测试)
5. 让 AI 解释现有代码或排查错误
6. 学会判断 AI 生成代码的正确性、可维护性,不盲目接受
7. (可选,了解即可,不花精力)Cursor Skills:`~/.cursor/skills/` 目录、SKILL.md 编写、自定义项目级 Skill。知道有这个功能即可,无需动手实践。
## 实践产出
- 用 Cursor 在 30 分钟内搭建一个完整的 RAG API 项目
- 记录 5 个使用 Cursor 提升效率的案例
## 参考资源
- Cursor 官方文档
- YouTube 教程 "Cursor for Java developers"
## 自检清单
- [ ] 能用 Cursor 打开 Spring Boot 项目并自动索引
- [ ] 能用 AI 对话生成 Controller、Service 代码
- [ ] 能用 Tab 补全快速写代码
- [ ] 能用 Cmd+K 重构一段复杂代码
- [ ] 能识别并拒绝 AI 生成的不安全或低效代码
- [ ] (可选)知道 Cursor Skills 的存在和基本用途
三、加分了解技能(可选)
9. 推理框架调用
| 技能点 | 说明 |
|---|---|
| vLLM / Ollama | Docker 启动本地推理服务 |
| Spring AI 切换 | 修改 base-url 指向本地模型 |
bash
# 学习计划:推理框架调用(vLLM / Ollama)
## 目标
了解本地推理框架的基本使用,并能将 Spring AI 的 API 调用从云端切换到本地模型。
## 学习内容
1. 用 Docker 运行 Ollama,拉取 Qwen 或 Llama 3 模型
2. 通过 HTTP 调用 Ollama API 验证模型可用
3. 用 Docker 运行 vLLM(可选,需要 GPU 或 CPU 模式)
4. 修改 Spring AI 配置中的 `base-url`,指向本地服务
5. 对比云端模型和本地模型的输出差异
## 实践产出
- 一个本地运行的 Qwen 模型,Spring AI 成功调用并返回结果
## 参考资源
- Ollama 官方文档
- vLLM GitHub
## 自检清单
- [ ] 能启动 Ollama 容器并拉取模型
- [ ] 能用 curl 调用 Ollama API
- [ ] 能修改 Spring AI 配置指向 `http://localhost:11434`
- [ ] 能成功获得本地模型的回复
10. MCP 生态
| 技能点 | 说明 |
|---|---|
| 协议理解 | Model Context Protocol 三要素(Resources、Prompts、Tools) |
| Java 集成 | 使用 spring-ai-mcp 或手动实现客户端 |
bash
# 学习计划:MCP 生态(Model Context Protocol)
## 目标
理解 MCP 的基本概念,了解 Java 生态中如何集成 MCP 客户端/服务端。
## 学习内容
1. 阅读 MCP 官方文档,理解 Resources、Prompts、Tools 三大概念
2. 了解 MCP 的通信方式(stdio / SSE)
3. 寻找 Java 版的 MCP SDK(如 `spring-ai-mcp` 或手动实现)
4. 运行一个官方示例(Python 版或 Java 版)
5. 思考 MCP 在 AI Agent 中的应用价值(标准化工具调用)
## 实践产出
- 一个简单的笔记:MCP 的核心概念和 Java 集成可能性
## 参考资源
- MCP 官方文档(modelcontextprotocol.io)
- Spring AI MCP 相关 issue 或示例
## 自检清单
- [ ] 能说出 MCP 的三个核心概念
- [ ] 能理解 MCP 与 Function Calling 的关系和区别
- [ ] 能找到或运行一个 Java MCP 示例(哪怕只是克隆项目)
11. Python 最小集(辅助验证)
| 技能点 | 说明 |
|---|---|
| 基础语法 | 变量、循环、函数、列表/字典 |
| Jupyter | 运行 notebook 快速测试 |
| requests | 调用 API 验证 |
| 不学的内容 | 类、装饰器、异步、Flask、PyTorch |
bash
# 学习计划:Python 最小集(辅助验证)
## 目标
学习 Python 最基础的部分,能读懂、修改、运行开源的 AI 示例脚本,不用于生产开发。
## 学习内容
1. 安装 Python 3.10+ 和 Jupyter Notebook
2. 基础语法:变量、循环、条件、函数、列表、字典(1-2 天)
3. 常用库:`requests`、`json`、`os`、`sys`
4. 在 Jupyter 中调用 OpenAI API 或本地 Ollama
5. 跑通一个 LangChain 的简单 RAG 示例(只运行,不深究源码)
6. 明确不学的内容:类、装饰器、异步、Flask/Django、PyTorch
## 实践产出
- 一个 Jupyter Notebook,包含调用大模型 API 和简单文本处理的代码
## 参考资源
- 菜鸟教程 Python 3 基础
- Jupyter 官方快速入门
## 自检清单
- [ ] 能写一个 Python 脚本发 HTTP 请求
- [ ] 能打开 Jupyter 并运行 cell
- [ ] 能看懂 LangChain 官方示例的大致流程
- [ ] 能修改脚本里的 API Key 和 prompt 并重新运行
四、场景 ↔ 技能对照表
| 应用场景 | 对应技能点 |
|---|---|
| 智能问答(RAG) | 文档加载、分块、向量化、PgVector、检索增强生成 |
| 文案生成 | PromptTemplate、少样本、输出格式约束 |
| 流程自动化 | Function Calling、Graph 工作流、条件路由 |
| 智能客服 | 多轮对话、状态管理、意图识别、工具调用 |
| 数据分析(NL2SQL) | Function Calling 查数据库、结果自然语言转述 |
| 代码生成 | 提示词约束语言、输出代码解析 |
| AIOps 故障诊断 | RAG 接入日志、Graph 多步排查 |
bash
# 学习计划:场景技能复习与整合
## 目标
将之前学的所有技能点,针对 5 个核心应用场景进行整合复习,确保每个场景能独立说出所需技能和实现思路。
## 5 个核心场景及复习要点
### 场景 1:智能问答(企业知识库)
- 所需技能:RAG 完整流程、VectorStore、文档分块、相似度检索、增强生成
- 自问:我能从零实现一个上传 PDF 就能问答的系统吗?
### 场景 2:文案生成(周报/邮件/合同)
- 所需技能:PromptTemplate、少样本学习、输出格式约束
- 自问:我能根据用户提供的数据,自动生成符合公司风格的周报吗?
### 场景 3:流程自动化(工单/审批)
- 所需技能:Function Calling、Graph 工作流、条件路由、消息队列
- 自问:我能让 Agent 自动根据用户意图调用不同业务 API 完成操作吗?
### 场景 4:智能客服(多轮对话)
- 所需技能:多轮状态管理、意图识别、槽位填充、工具调用
- 自问:我能实现一个能收集用户信息并查询订单状态的客服吗?
### 场景 5:数据分析(自然语言查数)
- 所需技能:Function Calling 调用数据库查询、提示词引导生成 SQL、结果自然语言转述
- 自问:我能让用户问"上个月销量最好的产品"并自动返回答案吗?
## 复习方法
- 对每个场景,在白板上画出技术流程图(用到哪些组件)
- 尝试用文字描述实现步骤,不参考代码
- 如果卡住,回到对应的小块重新学习
## 最终自检
- [ ] 5 个场景都能清晰说出技术选型和实现步骤
- [ ] 能向面试官解释一个完整的 AI 应用项目
五、技能自检清单(可打印对照)
-
能用
ChatClient调用大模型 API -
能独立实现 RAG 问答(PDF → PgVector → 检索 → 生成)
-
能编写结构化的提示词模板
-
能定义 Function Calling 让模型调用 Java 方法
-
能用 Spring AI Alibaba Graph 构建多节点工作流
-
能使用 PgVector 进行向量存储与相似度搜索
-
能处理文档分块和 embedding 更新
-
能编写 Dockerfile 和 K8S YAML 部署应用
-
能用 Redis 缓存 AI 响应
-
能用
@Async处理长任务 -
了解 MCP 基本概念
-
能启动 vLLM/Ollama 并让 Spring AI 调用
-
能用 Jupyter 跑通 Python 示例(辅助理解)