# ChinaMobileAidemo **Repository Path**: senchien/china-mobile-aidemo ## Basic Information - **Project Name**: ChinaMobileAidemo - **Description**: 一个简短的中国移动ai智能助手demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # China Mobile AI Demo ## 项目简介 本项目是一个基于 **Spring AI** 与 **React** 构建的全栈智能客服演示应用。它模拟了中国移动的智能助手场景,利用大语言模型(LLM)提供自然语言交互,并集成了检索增强生成(RAG)与工具调用(Tool Calling)能力,可实时查询套餐信息。 ## 技术栈 ### 后端 (Backend) - **核心框架**: Java 17+, Spring Boot 3.x - **AI 集成**: Spring AI (支持流式输出与向量检索) - **数据存储**: 向量数据库 (通过 `VectorStore` 实现语义搜索) - **构建工具**: Maven (包含 `mvnw` wrapper) ### 前端 (Frontend) - **核心框架**: React 18+ - **构建工具**: Vite - **开发语言**: TypeScript - **样式方案**: Tailwind CSS ## 功能特性 1. **流式对话 (Streaming Chat)**: 支持 Server-Sent Events (SSE),提供流畅的“打字机”式回复体验。 2. **套餐查询工具 (Tool Calling)**: 内置 `CMTools`,可直接调用后端接口查询“中国移动当前可办理的全部套餐”。 3. **上下文记忆 (Chat Memory)**: 支持多轮对话,上下文信息会被持久化并在后续对话中参考。 4. **角色配置 (Role Configuration)**: 通过 `roles.json` 初始化系统提示词,确保模型以专业客服角色应答。 ## 快速开始 ### 1. 环境准备 确保本地已安装以下环境: - JDK 17 或更高版本 - Node.js 18+ (用于前端) - Maven (可选,项目已内置 wrapper) ### 2. 后端配置与启动 在启动前,请配置 `src/main/resources/application.yml`,填写对应的 AI 模型 API Key。 ```bash # 克隆或进入项目根目录 # 启动后端服务 ./mvnw spring-boot:run ``` 后端服务默认运行在 `http://localhost:8080`。 ### 3. 前端配置与启动 ```bash # 进入前端目录 cd fronted # 安装依赖 (推荐使用 pnpm 或 npm) npm install # 启动开发服务器 npm run dev ``` 前端服务默认运行在 `http://localhost:5173`。 ## 项目结构概览 ``` china-mobile-aidemo/ ├── src/main/java/com/chitanda/ai/ │ ├── config/ # AI 配置 (ChatClient, VectorStore, Memory) │ ├── controller/ # 控制器 (ChatController 提供 /chat/stream 接口) │ ├── service/ # 业务逻辑 (ChatService 实现) │ ├── tools/ # 业务工具 (CMTools 查询套餐) │ └── embedding/ # 向量嵌入处理 (CmEmbedding) ├── fronted/ # React 前端项目 │ ├── src/ │ │ ├── pages/ # 页面 (AIChat 聊天界面) │ │ ├── components/ # 组件 (MessageBubble, StatusIndicator) │ │ ├── services/ # 服务 (chatService 处理流式请求) │ │ └── contexts/ # 状态 (AuthContext) └── ... ``` ## API 文档 ### 发送聊天消息 (流式) - **URL**: `/chat/stream` - **Method**: `POST` - **Content-Type**: `text/event-stream` - **请求体 (Request Body)**: ```json { "question": "我想办理一个流量多的套餐", "sessionId": "session_001" } ``` - **响应**: 服务端会持续返回字符串片段,直至回答结束。