# ai-code-helper **Repository Path**: crjs-hao/ai-code-helper ## Basic Information - **Project Name**: ai-code-helper - **Description**: AI Code Helper 是一个基于 Spring Boot 和 LangChain4j 的智能编程助手应用。该项目集成了通义千问大模型、RAG(检索增强生成)技术和 MCP(模型上下文协议)工具调用能力,为开发者提供一个功能强大的 AI 对话助手。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-25 - **Last Updated**: 2026-03-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Code Helper - 智能编程助手 ## 📖 项目简介 AI Code Helper 是一个基于 Spring Boot 和 LangChain4j 的智能编程助手应用。该项目集成了通义千问大模型、RAG(检索增强生成)技术和 MCP(模型上下文协议)工具调用能力,为开发者提供一个功能强大的 AI 对话助手。 ### ✨ 主要特性 - **🤖 智能对话**:基于通义千问大模型的智能对话系统 - **🌊 流式响应**:支持 Server-Sent Events (SSE) 实时流式输出 - **💾 上下文记忆**:每个会话独立保存对话历史,支持多轮对话 - **📚 RAG 增强**:集成向量数据库,支持文档知识库检索增强 - **🔧 MCP 工具**:通过 MCP 协议调用外部工具(如网络搜索) - **🎨 现代化前端**:响应式设计的 Web 界面,用户体验友好 --- ## 🏗️ 项目架构 ### 技术栈 #### 后端 - **框架**: Spring Boot 3.5.3 - **AI 框架**: LangChain4j 1.1.0 - **大模型**: 通义千问 (Qwen-Max) - **向量模型**: text-embedding-v4 - **MCP**: langchain4j-mcp - **构建工具**: Maven - **JDK**: Java 17 #### 前端 - **技术**: 原生 HTML5 + CSS3 + JavaScript (ES6+) - **通信**: Server-Sent Events (SSE) - **样式**: CSS Grid + Flexbox 响应式布局 - **图标**: Font Awesome 6.4.0 ### 项目结构 ``` ai-code-helper/ ├── ai-code-helper/ # 后端项目 │ ├── src/ │ │ └── main/ │ │ ├── java/com/example/aicodehelper/ │ │ │ ├── ai/ # AI相关核心代码 │ │ │ │ ├── controller/ # REST API控制器 │ │ │ │ │ └── AiController.java # 对话接口 │ │ │ │ ├── AiCodeHelper.java # AI服务接口定义 │ │ │ │ ├── AiCodeHelperService.java # AI服务接口 │ │ │ │ ├── AiCodeHelperServiceFactory.java # AI服务工厂 │ │ │ │ ├── mcp/ # MCP配置 │ │ │ │ │ └── McpConfig.java # MCP客户端配置 │ │ │ │ └── rag/ # RAG配置 │ │ │ │ └── RagConfig.java # 向量检索配置 │ │ │ ├── config/ # 配置类 │ │ │ │ ├── CorsConfig.java # 跨域配置 │ │ │ │ └── WebConfig.java # Web资源配置 │ │ │ └── AiCodeHelperApplication.java # 启动类 │ │ └── resources/ │ │ ├── application.yml # 应用配置 │ │ ├── application-dev.yml # 开发环境配置 │ │ ├── system-prompt.txt # 系统提示词 │ │ └── docs/ # RAG知识库文档目录 │ └── pom.xml # Maven配置 │ ├── ai-code-helper-frontend/ # 前端项目 │ ├── index.html # 首页 │ └── src/ │ └── assets/ │ ├── css/ │ │ └── style.css # 样式文件 │ ├── js/ │ │ └── app.js # 前端交互逻辑 │ └── images/ # 图片资源 │ └── README.md # 项目说明文档 ``` --- ## 🚀 快速开始 ### 前置要求 - JDK 17 或更高版本 - Maven 3.6 或更高版本 - 通义千问 API Key(从 [阿里云百炼平台](https://bailian.console.aliyun.com/) 获取) ### 1. 配置 API Key 编辑 `src/main/resources/application.yml` 文件,将通义千问 API Key 填入: ```yaml langchain4j: community: dashscope: chat-model: model-name: qwen-max api-key: # 替换为你的 API Key streaming-chat-model: model-name: qwen-max api-key: # 替换为你的 API Key embedding-model: model-name: text-embedding-v4 api-key: # 替换为你的 API Key bigmodel: api-key: # 替换为你的 API Key ``` ### 2. 构建 & 启动项目 在项目根目录执行: ```bash # 进入后端项目目录 cd ai-code-helper # Maven 构建(会自动复制前端文件到 target 目录) mvn clean package # 运行应用 java -jar target/ai-code-helper-0.0.1-SNAPSHOT.jar ``` 或者使用 Maven 直接运行: ```bash mvn spring-boot:run ``` ### 3. 访问应用 启动成功后,在浏览器中访问: ``` http://localhost:8081/api/ ``` 或者直接访问前端页面: ``` http://localhost:8081/api/index.html ``` --- ## 📡 API 接口说明 ### SSE 聊天接口 **接口地址**: `GET /api/ai/chat` **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |--------|--------|------|------------------| | memoryId | int | 是 | 会话记忆ID | | message | string | 是 | 用户消息内容 | **响应格式**: Server-Sent Events (SSE) 流式数据 **请求示例**: ```javascript const eventSource = new EventSource('http://localhost:8081/api/ai/chat?memoryId=1&message=你好'); eventSource.onmessage = (event) => { const chunk = event.data; console.log('收到消息:', chunk); }; ``` **响应示例**: ``` data: 你 data: 好 data: ! data: [DONE] ``` --- ## 🎯 核心功能说明 ### 1. 智能对话系统 - **系统提示词**: 定义在 `system-prompt.txt` 中,设定 AI 为资深 Java 开发工程师角色 - **流式输出**: 使用 SSE 实现打字机效果的实时响应 - **会话记忆**: 每个会话独立保存最近 10 条消息历史 ### 2. RAG 知识增强 - **文档加载**: 从 `src/main/resources/docs/` 目录加载文档 - **文本分割**: 按段落分割,每段最大 1000 字符,重叠 200 字符 - **向量存储**: 使用 text-embedding-v4 模型生成向量并存储 - **相似度检索**: 返回相似度 > 0.75 的前 5 条相关内容 ### 3. MCP 工具调用 - **网络搜索**: 通过智谱 MCP 服务实现联网搜索能力 - **配置**: 在 `McpConfig.java` 中配置 MCP 客户端 --- ## 🎨 前端界面 ### 界面特点 - **响应式设计**: 支持桌面端和移动端 - **现代化 UI**: 渐变色设计,流畅动画效果 - **打字动画**: AI 响应时的加载动画 - **多会话管理**: 支持创建新会话,自动保存会话ID - **消息格式化**: 支持代码高亮、列表等富文本格式 ### 前端配置 前端 API 地址配置在 `src/assets/js/app.js` 中: ```javascript const CONFIG = { API_BASE_URL: 'http://localhost:8081/api', CHAT_ENDPOINT: '/ai/chat', MAX_MESSAGE_LENGTH: 2000, DEFAULT_MEMORY_ID: 1 }; ``` --- ## 🔧 配置说明 ### application.yml ```yaml spring: profiles: active: dev application: name: ai-code-helper server: port: 8081 # 服务端口 servlet: context-path: /api # API 路径前缀 langchain4j: community: dashscope: chat-model: model-name: qwen-max # 对话模型 api-key: streaming-chat-model: model-name: qwen-max # 流式对话模型 api-key: embedding-model: model-name: text-embedding-v4 # 向量模型 api-key: bigmodel: api-key: # MCP 服务密钥 ``` --- ## 📝 使用示例 ### 基础对话 ``` 用户: 什么是 Spring Boot? AI: Spring Boot 是一个基于 Spring 框架的快速开发工具... ``` ### 代码分析 ``` 用户: 帮我分析这段代码有什么问题 用户: [粘贴代码] AI: 我来帮你分析这段代码... ``` ### 技术问答 ``` 用户: 如何优化 MySQL 查询性能? AI: 优化 MySQL 查询性能有以下几种方式...(基于 RAG 检索相关文档) ``` --- ## 🛠️ 开发指南 ### 添加新的 RAG 文档 将文档放入 `src/main/resources/docs/` 目录,支持以下格式: - 纯文本文件 (.txt) - Markdown 文件 (.md) - HTML 文件 (.html) ### 自定义系统提示词 编辑 `src/main/resources/system-prompt.txt` 文件修改 AI 角色。 ### 扩展 MCP 工具 在 `McpConfig.java` 中添加更多的 MCP 客户端配置。 --- ## 🐛 常见问题 ### Q1: 启动后无法访问前端页面 **解决方案**: 1. 确认已执行 `mvn clean package` 构建项目 2. 检查前端文件是否已复制到 `target/classes/` 目录 3. 尝试直接访问 `http://localhost:8081/api/index.html` ### Q2: API 调用失败 **解决方案**: 1. 检查 API Key 是否正确配置 2. 确认网络连接正常 3. 查看后端日志中的错误信息 ### Q3: SSE 连接中断 **解决方案**: 1. 检查浏览器是否支持 SSE 2. 查看后端日志确认是否有异常 3. 尝试刷新页面重新连接 ### Q4: 跨域问题 **解决方案**: - 项目已配置 `CorsConfig.java` 允许跨域访问 - 如仍有问题,检查浏览器控制台的具体错误信息 --- ## 📦 部署说明 ### 打包部署 ```bash # 构建 mvn clean package # 运行 java -jar target/ai-code-helper-0.0.1-SNAPSHOT.jar ``` ### Docker 部署(可选) 创建 `Dockerfile`: ```dockerfile FROM openjdk:17-jdk-slim WORKDIR /app COPY target/ai-code-helper-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8081 ENTRYPOINT ["java", "-jar", "app.jar"] ``` 构建并运行: ```bash docker build -t ai-code-helper . docker run -p 8081:8081 ai-code-helper ``` --- ## 📄 许可证 本项目仅供学习和研究使用。 --- ## 🙏 致谢 - [LangChain4j](https://github.com/langchain4j/langchain4j) - Java LLM 应用框架 - [通义千问](https://tongyi.aliyun.com/) - 阿里云大语言模型 - [Spring Boot](https://spring.io/projects/spring-boot) - Java 应用框架 - [Font Awesome](https://fontawesome.com/) - 图标库 --- ## 📞 联系方式 如有问题或建议,欢迎提 Issue。 **祝使用愉快!🎉**