# leetcode_stu **Repository Path**: Y-aong/leetcode_stu ## Basic Information - **Project Name**: leetcode_stu - **Description**: 学习算法 - **Primary Language**: Unknown - **License**: Artistic-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-12 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LeetCode AI Assistant 一个基于 Vue 3 + Flask 后端的 AI 辅助系统,专为 LeetCode 题目解答和学习设计。 **主页** img.png **详情** img.png ## 项目概述 本项目是一个智能 AI 助手,能够: - 识别用户意图,区分闲聊、LeetCode 问题和其他问题 - 针对 LeetCode 问题提供详细的解答和思路 - 利用 RAG(检索增强生成)技术,结合向量数据库和关系数据库 - 实时流式输出 AI 回复,提升用户体验 ## 系统架构 ### 整体流程 ```mermaid flowchart TD A[用户输入] --> B[意图识别] B -->|闲聊| C[Agent 直接回复] B -->|LeetCode 问题| D[RAG 流程] B -->|其他问题| E[通用问答] D --> F[查询向量数据库] F -->|存在相同问题| G[返回缓存答案] F -->|不存在相同问题| H[构建增强 Prompt] H --> I[题目描述] H --> J[推荐相关题目] H --> K[已有思路] H --> L[已有疑问] H --> M[题目类型] H --> N[用户代码] I --> O[调用大模型生成答案] J --> O K --> O L --> O M --> O N --> O O --> P[答案后处理] P --> Q[存入向量数据库] P --> R[存入关系数据库] Q --> S[流式返回给用户] R --> S G --> S C --> S E --> S ``` ## 技术栈 ### 前端 - Vue 3 - Element Plus - TypeScript - SCSS ### 后端 - Flask - Python - 大语言模型 API - 向量数据库(Chroma) - 关系数据库 ## 功能特性 1. **智能意图识别**:自动区分用户输入的意图类型 2. **RAG 增强生成**:结合向量数据库和关系数据库,提供更准确的答案 3. **流式输出**:实时逐字呈现 AI 回复,提升用户体验 4. **历史记录管理**:支持查看和删除对话历史 5. **全屏模式**:支持全屏展示对话界面,方便查看完整内容 6. **响应式设计**:适配不同屏幕尺寸 ## 快速开始 ### 前端启动 1. 安装依赖 ```bash npm install ``` 2. 启动开发服务器 ```bash npm run dev ``` 3. 构建生产版本 ```bash npm run build ``` ### 后端启动 1. 安装依赖 ```bash pip install -r requirements.txt ``` 2. 启动 Flask 服务器 ```bash python app.py ``` ## 核心组件 ### 1. AiDialog 组件 - 负责展示 AI 对话界面 - 支持流式输出 - 提供历史记录管理 - 支持全屏模式 ### 2. 意图识别模块 - 识别用户输入的意图类型 - 路由到相应的处理流程 ### 3. RAG 模块 - 查询向量数据库 - 构建增强 Prompt - 调用大模型生成答案 - 处理和存储结果 ## API 接口 ### 1. AI 对话接口 - **POST** `/ai/chat/stream` - 参数:`{ message: string, question_id: string }` - 响应:流式 SSE 事件 ### 2. 历史记录接口 - **POST** `/ai/chat/history` - 参数:`{ question_id: string }` - 响应:`{ success: boolean, data: Array, meta: Object }` ### 3. 删除历史记录接口 - **DELETE** `/ai/chat/history` - 参数:`{ id: string, question_id: string }` - 响应:`{ success: boolean }` ### 4. 操作反馈接口 - **POST** `/ai/chat/action` - 参数:`{ action: string, message_id: string, question_id: string }` - 响应:`{ success: boolean }` ## 项目结构 ``` ├── src/ │ ├── api/ # API 接口定义 │ ├── components/ # 组件 │ │ ├── ai/ # AI 相关组件 │ │ ├── common/ # 通用组件 │ │ ├── layout/ # 布局组件 │ │ └── question/ # 题目相关组件 │ ├── composables/ # 组合式函数 │ ├── router/ # 路由 │ ├── stores/ # 状态管理 │ ├── utils/ # 工具函数 │ ├── views/ # 页面 │ ├── App.vue # 根组件 │ └── main.ts # 入口文件 ├── public/ # 静态资源 ├── package.json # 依赖配置 ├── vite.config.ts # Vite 配置 └── README.md # 项目说明 ``` ## 使用指南 1. **访问题目详情页**:点击题目列表中的题目进入详情页 2. **打开 AI 对话**:点击页面右侧的 "问问AI" 按钮 3. **输入问题**:在输入框中输入您的问题 4. **查看回复**:AI 会实时流式输出回复 5. **管理历史记录**:在全屏模式下查看和删除历史记录 6. **全屏模式**:点击右上角的全屏按钮进入全屏模式 ## 示例使用 ### 示例 1:询问 LeetCode 题目 **用户输入**: ``` 两数之和的解法 ``` **AI 回复**: ``` # 两数之和问题解法 ## 问题描述 给定一个整数数组 `nums` 和一个目标值 `target`,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标。 ## 解法思路 ### 方法一:暴力枚举 - 时间复杂度:O(n²) - 空间复杂度:O(1) - 思路:双重循环遍历数组,寻找和为 target 的两个数 ### 方法二:哈希表 - 时间复杂度:O(n) - 空间复杂度:O(n) - 思路:使用哈希表存储已遍历过的元素及其索引,每次遍历新元素时,检查 target - 当前元素是否在哈希表中 ## 代码实现 ```python def twoSum(nums, target): hashmap = {} for i, num in enumerate(nums): complement = target - num if complement in hashmap: return [hashmap[complement], i] hashmap[num] = i return [] ``` ## 相关题目 1. 三数之和 2. 四数之和 3. 两数之和 II - 输入有序数组 ``` ### 示例 2:闲聊 **用户输入**: ``` 你好 ``` **AI 回复**: ``` 你好!我是你的 LeetCode AI 助手,有什么可以帮助你的吗? 你可以: 1. 询问 LeetCode 题目的解法 2. 讨论算法思路 3. 分享你的代码,我可以帮你分析 4. 随便聊聊天 ``` ## 注意事项 1. 确保后端服务正在运行 2. 确保向量数据库和关系数据库已正确配置 3. 大语言模型 API 需要正确配置 API 密钥 4. 对于复杂问题,AI 可能需要较长时间生成答案 ## 未来规划 1. 支持更多编程语言的代码分析 2. 增加代码执行和测试功能 3. 提供更详细的题目解析和视频讲解 4. 支持用户个性化配置 5. 增加社区功能,允许用户分享和讨论解决方案 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License