Skip to content

teachingai/spring-ai-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring AI 学习示例项目

这是一个基于 Spring Boot 3.4.x 和 Spring AI 1.0.3 的全面 AI 能力演示和开发实践项目。通过 60+ 个实际示例模块,帮助开发者快速学习和掌握现代 AI 应用开发。

项目文档对应地址: Spring AI 完整教程

Java Spring%20Boot Spring%20AI License

项目简介

本项目同时具备两重属性:

  • Spring AI 学习示例:基于 Spring Boot 3.4.x 与 Spring AI 1.0.3,覆盖 AI 模型集成、Ollama 本地推理、RAG 检索增强、语音处理、监控与日志,以及典型应用示例,具备文本、图像、语音等多模态能力。
  • 博客文案配套:与博客文档一一对应,便于“实践代码 ↔ 教程文章”的同步学习与输出。详见文档:https://wiki.hiwepy.com/docs/spring-ai。

目录


📚 项目概述

本项目是一个企业级的 Spring AI 学习平台,涵盖:

  • 15 个 AI 模型集成示例 - OpenAI、Anthropic、Azure、Ollama 等主流供应商
  • 8 个 Ollama 核心功能 - 本地部署和推理
  • 15 个 RAG 检索增强示例 - 多种向量数据库集成
  • 6 个语音处理模块 - 识别、合成、助手等
  • 2 个监控追踪模块 - Prometheus 和 Langfuse
  • 4 个实战应用示例 - SQL 生成、Agent、MVC 等

适用人群:

  • Spring Boot 开发者
  • AI 应用开发初学者
  • 想要学习 LLM 集成的工程师
  • RAG 和向量数据库应用开发者

项目说明

  • 项目用途:提供可直接运行的示例与最佳实践,帮助初学者和工程师快速上手 Spring 与 Spring AI 的核心能力,作为学习与原型验证之用。
  • 适用人群:Spring 入门实践者、AI 应用开发者、对 RAG/多模态/工具调用感兴趣的工程师。
  • 对应关系:各模块与博客文章按主题对应,便于从“文档 → 代码示例 → 实战应用”逐步深入。
  • 环境摘要:Java 17+、Maven 3.6+、部分模块需配置 API 密钥;RAG 模块需准备对应的向量数据库服务;语音模块需安装 Whisper/EdgeTTS 等工具;本地推理可选 Ollama。
  • 结构说明:采用多模块聚合工程,父 POM 统一管理依赖与版本,部分依赖通过 BOM 管理(如 Spring AI)。

🚀 快速开始

前置环境要求

组件 版本要求 说明
Java 17+ 编译和运行基础
Maven 3.6+ 项目构建和依赖管理
Spring Boot 3.4.x 应用基础框架
Spring AI 1.0.3 AI 集成框架

可选环境

# Ollama - 本地 LLM 推理引擎
brew install ollama  # macOS
# 或访问 https://ollama.ai 下载

# 常用模型拉取
ollama pull qwen2        # 阿里通义千问
ollama pull llama3       # Meta Llama 3
ollama pull mistral      # Mistral

# API 密钥配置(部分模块需要)
export OPENAI_API_KEY=your-key-here
export ZHIPU_API_KEY=your-key-here

项目构建

# 1. 克隆项目
git clone <project-url>
cd spring-ai-examples

# 2. 构建整个项目
mvn clean install

# 3. 构建特定模块
cd spring-ai-ollama-chat
mvn clean package

# 4. 运行应用(以 Ollama Chat 为例)
mvn spring-boot:run

📦 项目结构

模块快速导航(常用)

模块分类

spring-ai-examples/
├── 【AI 模型集成 - 15个模块】
│   ├── spring-ai-openai/                    # OpenAI
│   ├── spring-ai-anthropic/                 # Claude
│   ├── spring-ai-azure-openai/              # Azure OpenAI
│   ├── spring-ai-mistralai/                 # Mistral
│   ├── spring-ai-qwen/                      # 阿里通义千问
│   ├── spring-ai-qianfan/                   # 百度千帆
│   ├── spring-ai-zhipuai/                   # 智谱 AI
│   ├── spring-ai-deepseek/                  # DeepSeek
│   ├── spring-ai-huaweiai-pangu/            # 华为盘古
│   ├── spring-ai-huaweiai-gallery/          # 华为云
│   ├── spring-ai-moonshotai/                # 月之暗面
│   ├── spring-ai-minimax/                   # MiniMax
│   ├── spring-ai-stepfun/                   # 阶跃星辰
│   ├── spring-ai-vertexai-gemini/           # Google Gemini
│   └── spring-ai-stabilityai/               # Stability AI
│
├── 【Ollama 核心功能 - 8个模块】
│   ├── spring-ai-ollama-chat/               # 文本对话
│   ├── spring-ai-ollama-generation/         # 文本生成
│   ├── spring-ai-ollama-vision/             # 图像理解
│   ├── spring-ai-ollama-embedding/          # 向量嵌入
│   ├── spring-ai-ollama-tools/              # 函数调用
│   ├── spring-ai-ollama-agents/             # 智能代理
│   ├── spring-ai-ollama-prompt/             # 提示工程
│   └── spring-ai-ollama-fine-tuning/        # 模型微调
│
├── 【RAG 检索增强 - 15个模块】
│   ├── spring-ai-ollama-rag-chroma/         # Chroma 向量库
│   ├── spring-ai-ollama-rag-elasticsearch/  # Elasticsearch
│   ├── spring-ai-ollama-rag-mongodb/        # MongoDB
│   ├── spring-ai-ollama-rag-neo4j/          # Neo4j 图数据库
│   ├── spring-ai-ollama-rag-pinecone/       # Pinecone
│   ├── spring-ai-ollama-rag-redis/          # Redis
│   ├── spring-ai-ollama-rag-pgvector/       # PostgreSQL PGVector
│   ├── spring-ai-ollama-rag-weaviate/       # Weaviate
│   ├── spring-ai-ollama-rag-qdrant/         # Qdrant
│   ├── spring-ai-ollama-rag-milvus/         # Milvus
│   ├── spring-ai-ollama-rag-opensearch/     # OpenSearch
│   ├── spring-ai-ollama-rag-oracle/         # Oracle
│   ├── spring-ai-ollama-rag-mariadb/        # MariaDB
│   ├── spring-ai-ollama-rag-cassandra/      # Cassandra
│   └── spring-ai-ollama-rag-couchbase/      # Couchbase
│
├── 【语音处理 - 6个模块】
│   ├── spring-ai-ollama-audio-whisper/      # Whisper 语音识别
│   ├── spring-ai-ollama-audio-chattts/      # ChatTTS 语音合成
│   ├── spring-ai-ollama-audio-edgetts/      # EdgeTTS 语音合成
│   ├── spring-ai-ollama-audio-emoti/        # Emoti 语音合成
│   ├── spring-ai-ollama-audio-mars5tts/     # MARS5 语音合成
│   └── spring-ai-ollama-audio-unifiedtts/   # 统一 TTS 接口
│
├── 【监控与日志 - 2个模块】
│   ├── spring-ai-ollama-observation-prometheus/  # Prometheus 监控
│   └── spring-ai-ollama-observation-langfuse/    # Langfuse 追踪
│
├── 【MCP 框架 - 4个模块】
│   ├── spring-ai-ollama-mcp-webmvc-server/      # WebMVC MCP 服务端
│   ├── spring-ai-ollama-mcp-webmvc-client/      # WebMVC MCP 客户端
│   ├── spring-ai-ollama-mcp-webflux-server/     # WebFlux MCP 服务端
│   └── spring-ai-ollama-mcp-webflux-client/     # WebFlux MCP 客户端
│
├── 【应用示例 - 4个模块】
│   ├── spring-ai-sql/                       # SQL 生成器
│   ├── spring-ai-project-hotel-recommend/   # 酒店推荐系统
│   ├── spring-ai-postgresml/                # PostgresML 集成
│   └── spring-ai-common/                    # 通用工具库
│
└── pom.xml                                  # 父工程 POM 配置


🎯 核心功能详解

1. AI 模型集成

支持全球主流 AI 供应商,快速切换模型:

// 示例:DeepSeek 集成
@RestController
public class CodeGenerateController {
    
    private final DeepSeekChatModel chatModel;

    public CodeGenerateController(DeepSeekChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generatePythonCode")
    public String generate(@RequestParam String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        ChatResponse response = chatModel.call(prompt);
        return response.getResult().getOutput().getText();
    }
}

支持的供应商:

  • OpenAI (GPT-4, GPT-3.5)
  • Anthropic Claude
  • Google Gemini
  • 阿里通义千问
  • 百度千帆
  • 智谱 AI
  • DeepSeek
  • Mistral
  • Meta Llama

2. Ollama 本地推理

在本地运行开源模型,无需 API 密钥:

// Ollama 对话示例
@GetMapping("/chat")
public String chat(@RequestParam String message) {
    UserMessage userMessage = new UserMessage(message);
    Message assistantMessage = new AssistantMessage("你是一个有帮助的助手。");
    Prompt prompt = new Prompt(List.of(assistantMessage, userMessage));
    return chatModel.call(prompt).getResult().getOutput().getText();
}

支持的模型:

  • Qwen2 (通义千问)
  • Llama 3
  • Mistral
  • Neural Chat
  • DeepSeek-Coder

3. RAG 检索增强生成

集成 15 种向量数据库,构建企业知识库:

// RAG 示例:基于 Elasticsearch
@GetMapping("/rag/search")
public List<Document> searchDocuments(@RequestParam String query) {
    // 1. 文本向量化
    List<Double> embedding = embeddingModel.embed(query);
    
    // 2. 向量检索
    List<Document> documents = vectorStore.similaritySearch(query);
    
    // 3. 上下文增强
    String context = documents.stream()
        .map(Document::getContent)
        .collect(Collectors.joining("\n"));
    
    // 4. 大模型回答
    String answer = chatModel.call(
        new Prompt("基于以下内容回答问题:\n" + context + "\n问题:" + query)
    ).getResult().getOutput().getText();
    
    return documents;
}

支持的向量库:

  • Chroma (轻量级)
  • Elasticsearch
  • MongoDB
  • Neo4j
  • Pinecone (云服务)
  • Redis
  • PostgreSQL PGVector
  • Weaviate
  • Qdrant
  • Milvus

4. 语音处理

完整的语音识别与合成能力:

// 语音识别 (Whisper)
@PostMapping("/speech/transcribe")
public String transcribe(@RequestParam MultipartFile audioFile) {
    byte[] audioBytes = audioFile.getBytes();
    String transcription = speechRecognitionModel.transcribe(audioBytes);
    return transcription;
}

// 语音合成 (EdgeTTS)
@GetMapping("/speech/synthesize")
public byte[] synthesize(@RequestParam String text) {
    byte[] audioBytes = textToSpeechModel.synthesize(text);
    return audioBytes;
}

5. 监控与日志追踪

生产级别的可观测性:

// Prometheus 指标收集
// Langfuse AI 调用链路追踪
// 自动记录:
// - 调用延迟
// - Token 消耗
// - 成本统计
// - 错误率

🔗 与博客文案对应导航

📖 学习路径

初级 - Spring AI 基础

  1. 第一步:环境搭建

    • 安装 Java 17+
    • 配置 Maven 构建环境
    • 启动 Ollama 服务
  2. 第二步:第一个 AI 应用

    • 学习模块:spring-ai-ollama-chat
    • 掌握:依赖配置、ChatModel 基本使用
  3. 第三步:提示工程

    • 学习模块:spring-ai-ollama-prompt
    • 掌握:Prompt、MessageTemplate、动态参数

中级 - 进阶功能

  1. 第四步:RAG 检索增强

    • 学习模块:spring-ai-ollama-rag-chroma
    • 掌握:文本切割、向量化、相似度搜索
  2. 第五步:多模态能力

    • 学习模块:spring-ai-ollama-vision
    • 掌握:图像理解、Vision 模型调用
  3. 第六步:函数调用

    • 学习模块:spring-ai-ollama-tools
    • 掌握:定义工具、参数解析、执行流程

高级 - 企业应用

  1. 第七步:智能代理

    • 学习模块:spring-ai-ollama-agents
    • 掌握:Agent 框架、决策流程、工具集成
  2. 第八步:监控追踪

    • 学习模块:spring-ai-ollama-observation-prometheus
    • 掌握:性能监控、成本统计、错误追踪
  3. 第九步:实战项目

    • 学习模块:spring-ai-sql, spring-ai-project-hotel-recommend
    • 掌握:完整的 AI 应用架构设计

🔧 配置与部署

环境变量配置

# API 密钥配置(.env 文件或系统环境变量)

# OpenAI
export OPENAI_API_KEY=sk-xxxxx
export OPENAI_BASE_URL=https://api.openai.com/v1

# 智谱 AI
export ZHIPU_API_KEY=xxxxx

# 阿里通义千问
export DASHSCOPE_API_KEY=sk-xxxxx

# Ollama(本地)
export OLLAMA_MODEL=qwen2
export OLLAMA_BASE_URL=http://localhost:11434

# Azure OpenAI
export AZURE_OPENAI_ENDPOINT=https://xxxxx.openai.azure.com/
export AZURE_OPENAI_API_KEY=xxxxx

# Langfuse 追踪
export LANGFUSE_PUBLIC_KEY=xxxxx
export LANGFUSE_SECRET_KEY=xxxxx
export LANGFUSE_HOST=https://cloud.langfuse.com

数据库服务启动

# Elasticsearch
docker run -d -p 9200:9200 \
  -e "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:8.0.0

# MongoDB
docker run -d -p 27017:27017 \
  mongo:latest

# Redis
docker run -d -p 6379:6379 \
  redis:latest

# PostgreSQL (with pgvector)
docker run -d -p 5432:5432 \
  -e POSTGRES_PASSWORD=password \
  pgvector/pgvector:latest

💡 实际案例

案例 1:建立企业知识库 QA 系统

// 1. 文档导入与向量化
@PostMapping("/kb/import")
public void importDocuments(@RequestParam MultipartFile file) {
    Document document = new Document(file.getOriginalFilename());
    List<Document> splits = documentSplitter.split(document);
    vectorStore.add(splits);
}

// 2. 知识库查询
@GetMapping("/kb/query")
public String queryKnowledge(@RequestParam String question) {
    List<Document> relevant = vectorStore.similaritySearch(question, 5);
    String context = relevant.stream()
        .map(Document::getContent)
        .collect(Collectors.joining("\n"));
    
    String prompt = String.format(
        "基于以下企业文档回答问题:\n%s\n\n问题:%s",
        context, question
    );
    return chatModel.call(new Prompt(prompt))
        .getResult().getOutput().getText();
}

案例 2:智能数据分析 Agent

// 定义数据库查询工具
@Tool(description = "执行 SQL 查询")
public String executeSql(@Param(description = "SQL 语句") String sql) {
    return jdbcTemplate.queryForObject(sql, String.class);
}

// Agent 自动选择工具
@GetMapping("/analytics/query")
public String analyzeData(@RequestParam String query) {
    return agent.run(query);  // Agent 自动调用 executeSql 工具
}

案例 3:多模态对话助手

// 同时处理文本和图像
@PostMapping("/chat/multimodal")
public String multimodalChat(
    @RequestParam String text,
    @RequestParam(required = false) MultipartFile image) {
    
    List<Message> messages = new ArrayList<>();
    messages.add(new UserMessage(text));
    
    if (image != null) {
        byte[] imageData = image.getBytes();
        String mediaType = image.getContentType();
        messages.add(new UserMessage(
            new ImageContent(MediaType.valueOf(mediaType), imageData)
        ));
    }
    
    return chatModel.call(new Prompt(messages))
        .getResult().getOutput().getText();
}

📊 技术栈详情

核心依赖

组件 版本 用途
Spring Boot 3.4.x Web 框架
Spring AI 1.0.3 AI 集成
Spring Data Latest 数据访问
Spring Cloud Latest 云原生支持
Log4j2 Latest 日志框架

支持的向量数据库

数据库 用途 特点
Chroma 轻量级向量库 简单易用,Python 原生
Elasticsearch 全文+向量搜索 企业级,扩展性好
MongoDB 文档+向量 灵活的文档模型
PostgreSQL 关系+向量 企业级关系库
Pinecone 托管向量库 云服务,开箱即用
Redis 缓存向量 超高速,内存数据库
Qdrant 专业向量库 性能好,开源

补充组件

  • Web 支持:Spring WebFlux(响应式编程与高并发处理)
  • 工具库:Fastjson2、Guava、Caffeine、Commons Lang3
  • 日志与可观测性:Log4j2、Prometheus(指标)、Langfuse(AI 追踪)

🧪 测试与验证

运行测试

# 运行所有测试
mvn test

# 运行特定模块测试
cd spring-ai-ollama-chat
mvn test

# 集成测试
mvn verify

性能基准

# 启动性能监控
mvn spring-boot:run

# 访问 Prometheus 指标
http://localhost:8080/actuator/prometheus

🐛 故障排除

常见问题

Q: Ollama 连接失败

# 检查 Ollama 是否运行
curl http://localhost:11434/api/tags

# 启动 Ollama
ollama serve

Q: 向量数据库连接超时

# 检查数据库服务状态
docker ps

# 查看日志
docker logs <container-id>

Q: API 密钥认证失败

# 验证环境变量
echo $OPENAI_API_KEY

# 检查密钥格式
# OpenAI: sk-xxxxx
# 智谱: 必须是完整的 token

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

开发规范

  1. 代码风格 - 遵循 Spring 官方规范
  2. 提交信息 - 清晰描述变更内容
  3. 文档更新 - 新功能必须更新对应文档
  4. 单元测试 - 新代码必须有测试覆盖

贡献流程

# 1. Fork 项目
# 2. 创建特性分支
git checkout -b feature/amazing-feature

# 3. 提交变更
git commit -m 'Add amazing feature'

# 4. 推送分支
git push origin feature/amazing-feature

# 5. 提交 Pull Request

📚 参考资源

官方文档

学习资源

工具与库


📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。


👨‍💻 作者

学习示例项目

  • 基于 Spring AI 官方最佳实践
  • 适配 Spring Boot 3.4.x 最新版本
  • 与博客文案项目一一对应

📞 联系方式


最后更新: 2025-11-05
项目版本: 1.0.0-SNAPSHOT
支持的 Java 版本: 17+


🎓 学习建议

为初学者

  1. spring-ai-ollama-chat 开始,理解基础概念
  2. 逐步深入到提示工程、RAG、函数调用等高级主题
  3. 通过实战项目巩固知识
  4. 参考博客文章加深理解

为有经验开发者

  1. 快速浏览各模块架构
  2. 关注企业级应用案例
  3. 学习监控和性能优化方案
  4. 贡献新的集成模块

祝你学习愉快!🚀

About

Spring AI Examples

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages