Java AI 应用开发教程
Java 技术体系第四层:在 Spring Boot 企业应用之上接入 LLM、RAG、Tool Calling、MCP 与 Agent,形成可测试、可治理的智能应用。
从传统 Java 应用到 LLM 应用
知识点:理解确定性业务程序与概率生成模型的差异;区分 Model、LLM Application、RAG、Tool Calling、Agent;理解 Java 在企业集成、权限、事务、服务化与工程治理中的优势
Token、Context Window 与 Usage
知识点:理解 Token 不等于字符或单词;理解输入 Token、输出 Token、上下文窗口;建立成本、延迟、上下文长度之间的权衡
第一个 Java LLM API 调用
知识点:配置 API Key、Endpoint、Model;构造请求并解析内容、usage、finish reason 等响应信息;理解模型调用本质仍是远程 API 调用
Prompt 的工程化结构
知识点:使用 Role / Task / Context / Constraints / Output Format 组织提示;把稳定系统约束与动态用户输入分离;将 Prompt 当作可维护的软件资产
Spring AI 项目结构与 Auto Configuration
知识点:理解 Spring AI 对 Chat Model、Embedding、Vector Store 等能力的统一抽象;使用 Starter 将模型能力装配进 Spring Boot;理解自动配置和 Provider 配置的关系
LangChain4j 的定位
知识点:理解其为 Java 提供 Chat Model、Embedding、Vector Store、RAG、Tool、Memory 等抽象;认识与 Spring Boot 的集成;理解它与 Spring AI 是两条可选工程路线,不必全部叠加
Embedding 是什么
知识点:理解文本/图片等内容映射为向量的目的;理解语义相似度与关键词匹配的差异;区分 Chat Model 与 Embedding Model
RAG 的完整链路
知识点:理解 Retrieve → Augment → Generate;理解模型参数知识与私有/实时知识的差异;理解 RAG 并不是重新训练模型
Tool Calling 的本质
知识点:模型只产生调用工具的名称与参数;Java 应用负责真正执行 Tool;模型不会天然拥有数据库、文件系统或外部 API 权限
Chat Memory 与真实业务状态的区别
知识点:理解对话记忆只是 LLM 上下文管理;数据库业务状态不能依赖 Chat Memory;把用户资料、会话上下文、业务数据分开存储
MCP 为什么出现
知识点:理解不同 AI 应用重复接数据库、文件、工具的集成问题;理解 MCP 的目标是标准化 AI Client 与能力提供者之间的连接;区分 MCP 与普通 REST API
Agent 到底是什么
知识点:理解 Agent = Model + Tools + State/Memory + Loop/Policy;区分 Chatbot、Workflow 与 Agent;理解自主性越高,风险和测试难度越高
为什么 AI 应用必须评测
知识点:传统单元测试无法完全覆盖概率输出;建立离线测试集和线上指标;把“看起来不错”变成可测量质量
AI Controller、Service 与 Adapter 分层
知识点:Controller 只做 HTTP 协议适配;AI Orchestrator / Service 管理业务工作流;Model/VectorStore/Tool Provider 通过 Adapter 隔离
Java AI 应用完整技术地图
知识点:建立 User → Java API → Model → Response 的最小链路;进一步扩展为 Model + Retrieval + Tools + Memory + Workflow;理解模型只是应用中的一个组件,而不是整个系统
Transformer 与 Attention 的工程认知
知识点:理解 Transformer/Attention 解决的核心问题;区分训练、微调与推理;达到 AI 应用工程所需理解,不展开模型训练数学细节
HTTP、厂商 SDK 与 AI 框架三种接入层
知识点:直接 HTTP 有助于理解协议;厂商 SDK 提供类型安全能力;AI 框架提供模型可替换、RAG、Tool、Memory 等高层抽象
Few-shot、示例与边界条件
知识点:理解示例对模型行为的引导作用;设计正例、反例、边界例;避免把真实敏感业务数据作为示例长期写入 Prompt
ChatModel 与 ChatClient
知识点:理解底层 ChatModel 与高层 ChatClient;使用 fluent API 构造 system/user prompt;读取内容、响应对象和元数据
ChatModel 与 StreamingChatModel
知识点:完成同步模型调用;完成流式模型调用;封装统一模型配置
Similarity、Top-K 与 Threshold
知识点:理解 Cosine Similarity 等相似度直觉;理解 Top-K 检索;理解阈值、召回率与噪声之间的权衡
Document Loader 与 ETL
知识点:读取 Markdown、PDF、HTML、数据库等来源;统一转为 Document;建立 Extract → Transform → Load 数据管道
定义 Java Tool
知识点:设计 Tool Name、Description、Input Schema;使用 Spring AI @Tool / Function 或 LangChain4j Tool;保持一个 Tool 只做清晰单一职责
短期 Memory 与滑动窗口
知识点:理解上下文窗口受 Token 限制;使用 Message Window 管理近期对话;认识摘要压缩和历史截断
MCP Client、Server 与能力模型
知识点:理解 Client / Server 架构;认识 Tools、Resources、Prompts 等能力类型;理解 AI 应用通过 MCP Client 使用 Server 暴露能力
Tool Calling Loop
知识点:理解模型请求 Tool → Java 执行 → Tool Result → 再次调用模型;理解终止条件和最大迭代次数;防止无限循环和工具滥用
Prompt / RAG / Agent 分层评测
知识点:Prompt 评估任务完成率和结构正确率;RAG 评估召回、Faithfulness、Citation;Agent 评估 Tool 成功率、步骤数、完成率和副作用
异步任务、Queue 与长耗时 AI Job
知识点:长文档解析、批量 Embedding、复杂 Agent 使用异步任务;理解 Job 状态、进度、重试和取消;需要时结合企业已有 MQ/任务系统
Spring AI、LangChain4j 与厂商 SDK
知识点:理解 Spring AI 在 Spring Boot 生态中的定位;理解 LangChain4j 的 Java 原生 AI 抽象;理解直接使用模型 SDK、Spring AI、LangChain4j 三种路线的边界
System、User、Assistant 与对话消息
知识点:理解 Chat Model 的消息结构;区分系统规则、用户输入与历史消息;避免把所有内容拼成不可维护的一个字符串
密钥、配置与环境隔离
知识点:使用环境变量或 Secret 管理 API Key;禁止将 Key 写入前端或提交 Git;设计 dev/test/prod 不同模型和配额配置
Prompt Injection 与不可信上下文
知识点:理解用户输入、网页、文档都可能包含恶意指令;区分系统指令与外部不可信内容;为 RAG 和 Tool Calling 建立指令边界
Prompt Template 与 Message
知识点:使用模板变量生成 Prompt;组合 SystemMessage、UserMessage 等消息;把 Prompt 从 Controller 中抽离到专用组件
AI Services
知识点:通过 Java Interface 声明 AI Service;理解运行时代理实现类似 Spring Data Repository 的开发体验;理解 AI Service 可组合 Prompt、Memory、Tool、RAG
Vector Store 抽象
知识点:理解 add/search/delete 等核心操作;理解 Document、Embedding、Metadata;认识 Spring AI VectorStore 与 LangChain4j EmbeddingStore
Chunking:文档如何切块
知识点:理解固定长度、段落、标题层级、语义切分;理解 chunk size 与 overlap;避免切断代码块、表格和完整语义单元
Tool 参数校验与授权
知识点:对模型生成的参数再次进行 Bean Validation;根据当前登录用户执行权限校验;绝不允许模型绕过 Service 层直接拿任意数据库权限
长期 Memory 与检索式记忆
知识点:将长期偏好/历史存入数据库或 Vector Store;按需检索而不是每次注入全部历史;建立记忆来源与可删除性
stdio 与 Streamable HTTP
知识点:理解本地进程 stdio 通信;理解远程 Streamable HTTP 传输;根据本地工具/远程服务选择传输方式
Workflow:确定性编排优先
知识点:把明确流程写成普通 Java/Spring Workflow;只把真正需要模型判断的节点交给 LLM;理解 Workflow 通常比完全自由 Agent 更可控
LLM-as-a-Judge 与人工评审
知识点:理解模型裁判的便利和偏差;关键样本保留人工审核;多个 Judge/规则/人工结果相互校验
AI 应用持久化设计
知识点:设计 conversation、message、document、chunk、run、tool_call 等核心数据;区分业务表与 AI 运行记录;保持可追踪、可重放、可审计
课程工程基线与版本策略
知识点:主线采用 JDK 21 + Spring Boot 企业项目作为宿主;框架版本以官方兼容矩阵为准,不把某个模型或版本写成永久标准;所有 AI 能力最终回到可测试、可替换、可观测的 Java Service
Temperature、Top-P 与生成参数
知识点:理解采样参数对稳定性和创造性的影响;知道企业业务通常更强调可重复性和结构化输出;理解随机参数不能替代事实校验
Timeout、Retry、Rate Limit 与 Backoff
知识点:把模型 API 当作不可靠远程依赖;理解连接/响应超时与指数退避;正确处理 429、5xx、网络错误和供应商限流
Structured Output 与 Java DTO
知识点:让模型输出可解析的 JSON/Schema 结构;映射为 Java Record/DTO;使用 Bean Validation 和业务校验验证模型输出
Spring AI Structured Output
知识点:把输出映射为 Java 类型;结合 Schema/Converter 约束结构;处理解析失败、校验失败和重试
LangChain4j Tools 与 RAG 组件
知识点:认识 Tool/Function Calling 抽象;认识 EmbeddingStore、ContentRetriever、RetrievalAugmentor;建立与后续 RAG/Agent 章节的映射
pgvector、Milvus、Elasticsearch 等向量存储
知识点:认识关系数据库向量扩展与专用向量数据库;从规模、过滤、成本、运维复杂度选择方案;避免小型项目为了“AI”强行引入过重基础设施
Embedding 与索引构建
知识点:批量生成 Embedding;保存 source、document id、chunk id、metadata;保证索引可重建、可更新、可删除
Read Tool 与 Write Tool
知识点:区分查询型 Tool 和产生副作用的 Tool;发送邮件、修改记录、创建订单等写操作提高安全等级;高风险动作设计人工确认 Human-in-the-Loop
Conversation ID 与多用户隔离
知识点:每个用户/会话拥有独立 conversation id;避免 ThreadLocal/缓存误用导致上下文串线;建立会话数据过期和清理机制
Spring AI MCP
知识点:认识 Spring AI 的 MCP Client/Server 集成;将 Spring Service 以 MCP Tool 形式暴露;将外部 MCP Server 接入 ChatClient/Agent
Router、Planner 与 Executor 模式
知识点:理解 Router 根据任务选择路径;理解 Planner 生成步骤,Executor 执行工具;对计划进行校验、限制和失败恢复
AI Observability
知识点:记录模型名、Token、Latency、Error、Tool 调用、Retrieval 信息;与 Micrometer、TraceId、日志体系结合;不要记录完整敏感 Prompt/Response
测试策略
知识点:普通 Java Service 继续使用 JUnit/Mockito;模型调用使用 Stub/Fake 与固定测试样本;关键链路增加集成测试和回归评测
Hallucination 与模型能力边界
知识点:理解幻觉、知识过期、检索失败和工具失败的区别;理解模型生成“像答案”不等于答案正确;建立引用、校验、工具和人工审核的工程机制
Streaming 与 SSE
知识点:理解 Token 增量流式返回;在 Java 后端通过 SSE/Reactive Stream 向前端透传;处理取消、断连、异常和资源释放
Prompt 版本化、回归测试与 A/B 比较
知识点:Prompt 纳入 Git 版本管理;构建固定测试集做回归;比较质量、成本、延迟,而不是只凭主观感受调整
Advisors API
知识点:理解 Advisor 是 AI 请求/响应链上的可组合增强层;认识 Memory、RAG、Tool 等能力如何以 Advisor 组合;理解横切能力不应散落在 Controller
Spring AI 与 LangChain4j 选型
知识点:根据 Spring 生态一致性、抽象风格、供应商支持和团队经验选型;简单项目避免双框架叠加;核心业务层保持框架可替换
Metadata Filter 与多租户隔离
知识点:通过 Metadata 限制用户、团队、课程、文档范围;理解检索权限必须在 Retrieval 层生效;防止用户通过自然语言问答越权读取私有数据
Query Rewrite 与 Retrieval
知识点:理解用户问题与检索 Query 不一定一致;进行改写、扩展、分解;实现 Top-K + Metadata Filter
Tool Error、Retry 与 Idempotency
知识点:把工具错误结构化返回 Agent;限制重试次数,避免无限循环;写操作使用幂等键、数据库约束和业务状态避免重复执行
Memory 安全与隐私
知识点:敏感信息最小化写入模型上下文;区分临时上下文、持久记忆和业务数据库;设计用户可查看、修改、删除的记忆边界
LangChain4j MCP
知识点:认识 LangChain4j MCP Client;使用 stdio / Streamable HTTP 连接 MCP Server;理解 Tool Provider 与 AI Service 的组合
Reflection / Critic / Self-check 模式
知识点:理解生成后校验与再生成;避免无限 Self-Reflection;用外部规则、测试或工具证据增强可靠性
Cost、Latency 与 Cache
知识点:计算单请求成本;控制上下文长度和模型层级;设计响应缓存、Embedding 缓存和批处理
部署、限流与资源治理
知识点:AI API 受限流、并发和费用约束;使用线程池/队列/限流保护服务;根据流式连接和长任务设计超时与容量
同步、流式与多模态模型
知识点:理解 blocking 与 streaming response;认识文本、图像、语音、视觉等多模态接口;根据交互体验和任务类型选择调用方式
模型路由、Fallback 与多供应商抽象
知识点:根据任务质量、延迟、成本选择模型;设计 Provider Adapter / Model Router;避免业务 Service 与某一家模型 SDK 强耦合
Spring AI Streaming
知识点:使用流式模型接口;与 SSE / WebFlux 场景结合;理解流式返回中的错误和取消
Hybrid Search
知识点:理解 BM25/关键词检索与 Vector Search 的互补;认识关键词 + 语义混合检索;根据文档类型决定是否真的需要 Hybrid
把现有 Spring Service 暴露为 Tool
知识点:复用已有 Service 的事务、校验和权限规则;Tool Adapter 负责 AI 协议适配,而不是重写业务逻辑;实现 AI 层与企业后端业务层解耦
MCP Security 与权限边界
知识点:远程 MCP Server 视为外部依赖;对 Tools 进行最小权限、鉴权、审计;不能因为 MCP 标准化就跳过业务授权
Human-in-the-Loop
知识点:高风险动作在真正执行前进入人工审批;建立 pending/approved/rejected 状态;记录 Agent 建议、工具参数和最终人工决策
Prompt Injection、Data Leakage 与 Tool Abuse
知识点:建立输入、检索、输出、Tool 四层安全控制;敏感数据脱敏与访问控制;Tool 使用 allowlist、参数约束和审计
综合项目一:星雨笔录 AI 知识助手
知识点:将 Markdown 教程构建为 RAG 知识库;实现带 Citation 的问答;增加教程搜索、章节定位、学习计划 Tool
Provider 抽象与厂商特性
知识点:理解统一 API 与厂商专有功能的边界;实现 Chat/Embedding Provider 替换;需要时允许下沉使用供应商专有能力
Reranking
知识点:理解初筛召回与精排的分工;认识 Reranker/Cross-Encoder;平衡准确率、成本和延迟
Multi-Agent:什么时候才值得使用
知识点:理解多个 Agent 的角色分工与通信成本;避免为了架构炫技把一个任务拆成很多 Agent;仅在角色边界和并行价值明确时使用
Content Safety 与 Guardrails
知识点:理解内容过滤、业务规则、输出校验;模型安全策略不能替代应用层授权;对高风险领域增加人工复核和拒绝策略
综合项目二:团队 AI 知识工作台
知识点:文档上传 → Parsing → Chunking → Embedding → Retrieval;团队/项目多租户权限隔离;Tool Calling 生成周报、会议纪要、任务整理
Context Assembly 与 Citation
知识点:组织检索片段进入上下文;保留来源、文档、Chunk 元数据;输出可追踪引用,避免无依据回答
Agent 状态机与持久化
知识点:把运行状态、步骤、工具结果持久化;支持暂停、恢复、重试和审计;不要只依赖内存中的 while 循环
综合项目三:Agent 工程助手
知识点:通过 MCP/Tools 连接 GitHub、文档、测试或内部服务;使用 Workflow + Human Approval 控制写操作;实现 Run Trace、Evaluation、失败恢复和审计
RAG 失败模式与诊断
知识点:区分无召回、错召回、上下文过长、生成偏离;区分 Retrieval Error 与 Generation Error;从数据、切分、检索、排序、Prompt、模型逐层定位
Java AI 项目面试深挖
知识点:能解释为什么选 Spring AI 或 LangChain4j;能解释 RAG、Tool Calling、MCP、Agent 的完整链路;能用真实评测、成本、延迟、安全和故障数据证明工程能力
RAG Evaluation
知识点:评估 Retrieval Recall/Precision;评估 Faithfulness、Relevance、Answer Quality;通过测试集和指标迭代,而不是凭感觉调参数