大模型开发 - 01 Spring AI 核心特性一览
文章目录
- 概述
- 核心特性一览
- 1. 提示词工厂(Prompt Templates)
- 2. 对话拦截器(Advisors / AOP for AI)
- 3. 对话记忆(Chat Memory)
- 4. 工具调用(Tools / Function Calling)
- 5. RAG(检索增强生成)与 ETL 支持
- 6. MCP(Model Context Protocol)支持
- 7. 模型评估(Evaluation)
- 8. 可观察性(Observability)
- 9. Agent 应用模式(5 大经典范式)
概述
Spring AI 是 Spring 官方推出的一个面向人工智能(AI)工程的应用开发框架,旨在解决企业在将大语言模型(LLM)集成到现有系统时面临的核心挑战——如何高效、安全、可维护地将企业数据、业务 API 与 AI 模型连接起来。
它延续了 Spring 生态“约定优于配置”“开箱即用”“面向企业级应用”的设计哲学,让开发者能够以熟悉的方式构建 AI 原生应用。
核心特性一览
1. 提示词工厂(Prompt Templates)
- 提示词(Prompt)是与大模型交互的核心媒介。
- Spring AI 提供
PromptTemplate
抽象,支持动态变量注入、多轮对话上下文管理。 - 让提示工程变得结构化、可测试、可复用。
2. 对话拦截器(Advisors / AOP for AI)
- 借鉴 Spring AOP 思想,在模型调用前后插入逻辑。
- 可用于日志记录、内容过滤、敏感词检测、成本监控等。
- 实现对“对话流”的非侵入式增强。
3. 对话记忆(Chat Memory)
- 开箱即用的对话上下文管理:
@Autowired ChatMemoryRepository chatMemoryRepository;
- 支持多种后端存储(内存、Redis、数据库等),自动维护用户会话历史。
- 无需手动拼接历史消息,模型“记得”之前的对话。
4. 工具调用(Tools / Function Calling)
- 让大模型能调用企业内部 API 或业务逻辑:
class DateTimeTools {@Tool(description = "获取用户时区下的当前日期时间")String getCurrentDateTime() {return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString();} }
- 模型在推理过程中可“主动调用”工具,实现动态数据获取或操作。
- 工具注册简单,类型安全,支持自动 JSON Schema 生成。
5. RAG(检索增强生成)与 ETL 支持
- 内置完整的 RAG 流水线:
- 文档加载(PDF、Word、TXT、网页等)
- 文本分块(Chunking)
- 向量化(Embedding)
- 向量存储与检索
- 支持 20+ 种向量数据库:如 Milvus、Pinecone、Weaviate、Qdrant、Redis、Chroma、Elasticsearch 等。
- 无缝集成 Spring Data 风格的 Repository 模式。
6. MCP(Model Context Protocol)支持
- Spring AI 团队是 MCP 协议 Java SDK 的官方维护者。
- 提供:
- MCP 客户端 & 服务端实现
- 认证与授权方案
- 正在孵化的 Spring MCP Agent 开源项目
- 目标:让 Tools 能够外部化、标准化、跨平台共享,形成“AI 工具市场”。
7. 模型评估(Evaluation)
- 内置评估框架,用于:
- 检测模型“幻觉”(Hallucination)
- 评估回答准确性、相关性、安全性
- 支持自动化测试与指标对比
- 为 AI 应用提供质量保障闭环。
8. 可观察性(Observability)
- 与 Spring Boot Actuator 深度集成。
- 暴露 AI 运行时关键指标:
- Token 使用量
- 响应延迟
- 调用成功率
- 工具调用统计
- 支持与 Micrometer、Prometheus、OpenTelemetry 对接,实现监控告警。
9. Agent 应用模式(5 大经典范式)
Spring AI 提供了五种主流 Agent 架构的参考实现,帮助开发者构建复杂智能体:
模式 | 说明 |
---|---|
Evaluator Optimizer | 模型自我评估并优化输出,提升回答质量 |
Routing(路由) | 根据用户意图智能分发请求到不同处理器(如客服、订单、知识库) |
Orchestrator-Workers | 主协调器动态分解任务,调度多个专业 Worker 并行/串行处理 |
Chaining(链式) | 将复杂任务拆解为有序步骤,前一步输出作为下一步输入 |
Parallelization(并行) | 多个 LLM 调用并行执行,结果自动聚合(如多角度分析) |