# java-ai-stevecode **Repository Path**: SongXianYang/java-ai-stevecode ## Basic Information - **Project Name**: java-ai-stevecode - **Description**: ai应用java版本 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-21 - **Last Updated**: 2026-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java AI SteveCode 基于 Spring AI 和 Spring AI Alibaba 的 Java AI 项目集合,涵盖 MCP 协议、A2A 智能体协作、Graph 工作流、RAG、Agent 框架等多个 AI 技术方向。 ## 项目简介 本项目是一个多模块的 Java AI 学习和演示项目,展示了如何使用 Spring AI 和 Spring AI Alibaba 框架构建各种 AI 应用,包括: - **MCP 协议**:模型上下文协议,实现 AI 模型调用外部工具 - **A2A 智能体协作**:智能体之间的远程协作与服务发现 - **Graph 工作流**:基于状态图的 AI 工作流编排 - **RAG(检索增强生成)**:结合向量数据库的知识问答 - **Agent 框架**:智能体工具调用与多智能体协作 - **业务应用**:基于 AI 的智能库存调拨系统 ## 技术栈 | 技术 | 版本 | 说明 | | :--- | :--- | :--- | | Java | 17 | 开发语言 | | Spring Boot | 3.5.14 | 应用框架 | | Spring AI | 1.1.6 | AI 框架核心 | | Spring AI Alibaba | 1.1.2.2 | 阿里云 AI 扩展 | | MyBatis Plus | 3.5.14 | ORM 框架 | | MySQL | 8.0.33 | 关系型数据库 | | Redis | - | 向量数据库(RAG模块) | | Knife4j | 4.5.0 | API 文档工具 | | Lombok | 1.18.36 | 代码简化工具 | ## 项目结构 ``` java-ai-stevecode/ ├── pom.xml # 父 POM 文件 ├── README.md # 项目说明文档 ├── doc/ # 文档目录 │ ├── mcp/ # MCP 相关文档 │ └── 库存调拨agent开发/ # 库存调拨开发文档 ├── mcp-server/ # MCP 协议服务器 ├── mcp-client/ # MCP 协议客户端 ├── a2a-provider/ # A2A 智能体提供者 ├── a2a-consumer/ # A2A 智能体消费者 ├── chat-ai-dome/ # AI 聊天基础演示 ├── agent-demo/ # Agent 框架演示 ├── rag/ # RAG 检索增强生成演示 ├── graph/ # Graph 工作流框架演示 ├── ai-stock-transfer/ # 智能库存调拨业务应用 └── ai-stock-common/ # 公共模块(Swagger、通用响应) ``` ## 模块说明 | 模块 | 端口 | 说明 | 核心依赖 | | :--- | :--- | :--- | :--- | | **mcp-server** | 18181 | MCP 协议服务器,注册并暴露工具服务 | spring-ai-starter-mcp-server-webflux | | **mcp-client** | 18180 | MCP 协议客户端,连接 AI 模型并调用服务器工具 | spring-ai-starter-mcp-client-webflux, spring-ai-starter-model-openai | | **a2a-provider** | 8082 | A2A 智能体提供者,注册到 Nacos 供其他智能体调用 | spring-ai-alibaba-starter-a2a-nacos | | **a2a-consumer** | - | A2A 智能体消费者,从 Nacos 发现并调用远程智能体 | spring-ai-alibaba-starter-a2a-nacos | | **chat-ai-dome** | 28080 | 基础 AI 聊天演示,展示 DashScope 模型调用 | spring-ai-alibaba-starter-dashscope | | **agent-demo** | 28081 | Agent 框架演示,包含天气查询工具和多智能体协作 | spring-ai-alibaba-agent-framework | | **rag** | 29091 | RAG 检索增强生成演示,使用 Redis 向量存储 | spring-ai-starter-vector-store-redis | | **graph** | 29092 | Graph 工作流框架演示,包含客户评价处理和旅游规划示例 | spring-ai-alibaba-graph-core | | **ai-stock-transfer** | 29000 | 智能库存调拨业务应用,结合 Graph 工作流实现智能调拨建议 | MyBatis Plus, MySQL, Graph | | **ai-stock-common** | - | 公共模块,提供 Swagger 配置和通用响应类 R\ | knife4j-openapi3-jakarta-spring-boot-starter | ## 快速开始 ### 环境要求 - JDK 17 或更高版本 - Maven 3.6+ - DashScope API Key(阿里云通义千问 API) - MySQL 8.0+(仅 ai-stock-transfer 模块需要) - Redis(仅 rag 模块需要) - Nacos 2.x(仅 a2a-provider/a2a-consumer 模块需要) ### 配置环境变量 所有模块均需要配置阿里云 DashScope API Key: ```bash export DASHSCOPE_API_KEY=your-api-key ``` ### 构建项目 ```bash mvn clean install -DskipTests ``` ### 运行各模块 每个模块可独立运行,根据需要启动: ```bash # MCP 服务器 cd mcp-server && mvn spring-boot:run # MCP 客户端(需先启动 MCP 服务器) cd mcp-client && mvn spring-boot:run # 基础聊天演示 cd chat-ai-dome && mvn spring-boot:run # Agent 框架演示 cd agent-demo && mvn spring-boot:run # RAG 演示(需先启动 Redis) cd rag && mvn spring-boot:run # Graph 工作流演示 cd graph && mvn spring-boot:run # A2A 智能体提供者(需先启动 Nacos) cd a2a-provider && mvn spring-boot:run # A2A 智能体消费者(需先启动 Nacos 和 Provider) cd a2a-consumer && mvn spring-boot:run # 智能库存调拨(需先启动 MySQL) cd ai-stock-transfer && mvn spring-boot:run ``` ## 配置说明 ### 通用配置 所有模块均使用 DashScope AI 模型,需要在 `application.yml` 中配置: ```yaml spring: ai: dashscope: api-key: ${DASHSCOPE_API_KEY} base-url: https://dashscope.aliyuncs.com chat: options: model: qwen3.6-plus # 或其他模型 ``` ### MCP 模块配置 **mcp-server**:服务器端口配置在 [application.yml](file:///d:/work/ai_app/java-ai-stevecode/mcp-server/src/main/resources/application.yml) **mcp-client**:配置 MCP 服务器连接地址和 AI 模型参数在 [application.yml](file:///d:/work/ai_app/java-ai-stevecode/mcp-client/src/main/resources/application.yml) ### A2A 模块配置 需要先启动 Nacos(默认端口 8848),配置见 [a2a-provider/application.yml](file:///d:/work/ai_app/java-ai-stevecode/a2a-provider/src/main/resources/application.yml) 和 [a2a-consumer/application.yml](file:///d:/work/ai_app/java-ai-stevecode/a2a-consumer/src/main/resources/application.yml) ### RAG 模块配置 需要启动 Redis(默认端口 6379),配置见 [rag/application.yml](file:///d:/work/ai_app/java-ai-stevecode/rag/src/main/resources/application.yml) ### 智能库存调拨配置 需要创建 MySQL 数据库 `ai_stock_transfer`,并执行初始化脚本: 1. 创建数据库: ```sql CREATE DATABASE ai_stock_transfer CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 执行初始化脚本:[init.sql](file:///d:/work/ai_app/java-ai-stevecode/ai-stock-transfer/sql/init.sql) 3. 配置数据库连接在 [ai-stock-transfer/application.yml](file:///d:/work/ai_app/java-ai-stevecode/ai-stock-transfer/src/main/resources/application.yml) ## 功能特性 ### 🚀 MCP 协议 - MCP 协议服务器实现(异步模式,支持 SSE) - 天气查询工具注册与调用 - AI 模型通过 MCP 协议调用外部工具 ### 🤝 A2A 智能体协作 - 智能体服务注册到 Nacos - 远程智能体发现与调用 - 智能体卡片描述与能力声明 ### 🔄 Graph 工作流 - 状态图定义与编译执行 - 条件分支与节点路由 - KeyStrategy 状态管理策略(Replace/Append/Merge) - 客户评价处理流程示例 - 旅游规划多节点工作流示例 ### 📚 RAG 检索增强 - Redis 向量存储集成 - 文档嵌入与检索 - 基于知识库的问答 ### 🧠 Agent 框架 - 工具自动注册与调用 - 多智能体协作 - 天气查询工具示例 ### 📦 智能库存调拨 - 商品、仓库、库存管理 CRUD 接口 - 销售记录与库存日志 - 调拨单流程管理 - AI 驱动的智能调拨建议 - Swagger/Knife4j API 文档 ## 架构图 ```mermaid graph TB subgraph AI模型层 A[DashScope API] end subgraph Spring AI Alibaba B[Agent Framework] C[Graph Workflow] D[A2A Protocol] end subgraph Spring AI E[MCP Server] F[MCP Client] G[RAG VectorStore] end subgraph 业务应用 H[智能库存调拨] I[聊天演示] end subgraph 基础设施 J[(MySQL)] K[(Redis)] L[Nacos] end A --> B A --> C A --> F A --> G B --> I C --> H D --> L F --> E G --> K H --> J E -->|工具调用| M[天气工具] ``` ## 开发指南 ### 添加新工具(MCP 服务器) 在 `mcp-server/src/main/java/org/song/tools/` 目录下创建新的工具类,使用 Spring AI 的工具注解进行注册。 ### 添加新节点(Graph 工作流) 参考 `graph/src/main/java/org/song/travel/node/` 下的节点实现,创建自定义节点类并在配置类中注册。 ### 添加新 Controller(库存调拨) 参考 `ai-stock-transfer/src/main/java/org/song/controller/crud/` 下的控制器实现,使用通用响应类 `R` 并添加 OpenAPI 3 注解。 ## API 文档 智能库存调拨模块集成了 Knife4j OpenAPI3 文档,启动后访问: ``` http://localhost:29000/doc.html ``` ## 许可证 本项目采用 MIT 许可证。