# ChatClassify **Repository Path**: QINGYU307/chat-classify ## Basic Information - **Project Name**: ChatClassify - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-16 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ChatClassify - 聊天记录处理系统 基于大模型的聊天记录分类、总结、演化分析系统,支持从文本内容中提取、分类和整理Idea。 ## 项目简介 ChatClassify 是一个前后端分离的Web应用系统,主要功能包括: - **Idea提取与分类**:从文本内容中自动提取有价值的Idea并进行分类 - **智能合并**:自动合并相似的Idea,去除重复内容 - **数据整理**:按照分类体系重新组织Idea数据 ## 技术栈 ### 后端 - **框架**:FastAPI - **Python版本**:3.8+ - **AI/LLM**:OpenAI API、LangChain - **数据处理**:Pandas、Pydantic - **文件处理**:openpyxl(Excel处理) ### 前端 - **框架**:React 19 - **UI库**:Ant Design 5 - **状态管理**:Redux Toolkit - **路由**:React Router - **HTTP客户端**:Axios ## 项目结构 ``` ChatClassify/ ├── backend/ # 后端服务 │ ├── main.py # FastAPI应用入口 │ ├── requirements.txt # Python依赖 │ ├── .env # 环境变量配置(需自行创建) │ ├── core/ # 核心配置 │ ├── common/ # 公共模块 │ ├── chatLogSortSumDyn/ # 业务模块 │ └── utils/ # 工具类 ├── frontend/ # 前端应用 │ ├── package.json # Node.js依赖 │ └── src/ # 源代码 └── README.md # 项目说明文档 ``` ## 环境要求 ### 后端 - Python 3.12 - pip 包管理器 ### 前端 - Node.js 16+ 或更高版本 - npm 或 yarn 包管理器 ## 快速开始 ### 1. 克隆项目 ```bash git clone cd ChatClassify ``` ### 2. 后端配置与启动 #### 2.0 提前准备:创建并激活 Python 3.12 的 conda 环境 为避免依赖版本冲突,建议先创建专属的 conda 环境(Python 3.12): ```bash # 创建名为 chat_analysis 的 conda 环境(名称可自定义),指定 Python 3.12 conda create -n chat_analysis python=3.12 -y # 激活该环境(Windows/macOS/Linux 通用) conda activate chat_analysis ``` > 说明:如果需要删除环境可执行 `conda remove -n chat_analysis --all -y`,后续所有操作均需在激活该环境的前提下执行。 #### 2.1 安装Python依赖 ```bash cd backend pip install -r requirements.txt ``` #### 2.2 配置环境变量 在 `backend` 目录下创建 `.env` 文件(可参考 `.env_copy`): ```bash cp .env_copy .env ``` 编辑 `.env` 文件,配置以下内容: ```env ENVIRONMENT='dev' # OPENAI 配置 OPENAI_KEY='your-openai-api-key' OPENAI_BASE_URL='https://api.rcouyi.com/v1' ``` **重要**:请将 `your-openai-api-key` 替换为你的实际API密钥。 #### 2.3 启动后端服务 ```bash # 方式:使用uvicorn直接启动 uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` 后端服务将在 `http://localhost:8000` 启动。 #### 2.4 验证后端服务 访问 `http://localhost:8000/docs` 查看API文档(Swagger UI)。 ### 3. 前端配置与启动 #### 3.1 安装Node.js依赖 ```bash cd frontend npm install # 或使用yarn yarn install ``` #### 3.2 启动前端开发服务器 ```bash npm start # 或使用yarn yarn start ``` 前端应用将在 `http://localhost:3000` 启动(默认端口)。 #### 3.3 配置API地址(如需要) 如果后端服务不在 `http://127.0.0.1:8000`,需要修改 `frontend/src/utils/request.js` 中的 `baseURL`: ```javascript const request = axios.create({ baseURL: 'http://your-backend-url:8000/api/v1/chat-log/process/idea', timeout: 1000 * 60 * 5, }); ``` ## 使用说明 ### API端点 主要API端点: - **处理文本内容**:`POST /api/v1/chat-log/process/idea/process` - 功能:提取、分类、合并Idea - 请求参数: - `content` (string, 必填):待处理的文本内容 - `categories` (array[string], 可选):预定义分类列表 - **下载Excel文件**:`GET /api/v1/chat-log/process/idea/download/{filename:path}` - 功能:下载指定的Excel文件 详细API文档请参考: - Swagger UI:`http://localhost:8000/docs` - 工作流文档:`Idea处理工作流.md` ### 使用示例 #### Python示例 ```python import requests url = "http://localhost:8000/api/v1/chat-log/process/idea/process" data = { "content": """用户A: 我觉得可以做一个智能推荐系统。 用户B: 对,还可以加入个性化标签功能。 用户A: 另外,我们需要考虑数据隐私问题。 链接: https://example.com/post/123""", "categories": ["产品功能", "技术方案", "用户体验"] } response = requests.post(url, json=data) result = response.json() if result.get("code") == 200: merged_count = result.get("data", {}).get("merged_count") merged_ideas = result.get("data", {}).get("merged_ideas", []) print(f"合并后共有 {merged_count} 个Idea") for idea in merged_ideas: print(f"- {idea.get('idea', '')}") ``` #### curl示例 ```bash curl -X POST "http://localhost:8000/api/v1/chat-log/process/idea/process" \ -H "Content-Type: application/json" \ -d '{ "content": "用户A: 我觉得可以做一个智能推荐系统。\n用户B: 对,还可以加入个性化标签功能。", "categories": ["产品功能", "技术方案"] }' ``` ## 开发说明 ### 后端开发 - 代码入口:`backend/main.py` - 路由注册:`backend/core/registrar.py` - 业务模块:`backend/chatLogSortSumDyn/` - API路由:`backend/chatLogSortSumDyn/api/v1/sort_sum_dyn.py` ### 前端开发 - 入口文件:`frontend/src/index.js` - 路由配置:`frontend/src/router/index.js` - API请求:`frontend/src/utils/request.js` - 页面组件:`frontend/src/pages/` ### 热重载 - **后端**:使用 `--reload` 参数启动uvicorn,代码修改后自动重启 - **前端**:React开发服务器默认支持热重载 ## 常见问题 ### 1. 后端启动失败 **问题**:提示缺少模块或依赖 **解决**: ```bash cd backend pip install -r requirements.txt ``` ### 2. API密钥错误 **问题**:提示API密钥未设置或无效 **解决**: - 检查 `backend/.env` 文件是否存在 - 确认 `OPENAI_KEY` 配置正确 - 确认 `OPENAI_BASE_URL` 配置正确 ### 3. 前端无法连接后端 **问题**:前端请求失败,提示连接错误 **解决**: - 确认后端服务已启动(访问 `http://localhost:8000/docs` 验证) - 检查 `frontend/src/utils/request.js` 中的 `baseURL` 配置 - 确认后端CORS配置允许前端域名访问 ### 4. 端口被占用 **问题**:启动时提示端口已被占用 **解决**: - **后端**:修改uvicorn启动命令中的 `--port` 参数 - **前端**:修改 `frontend/package.json` 中的启动脚本,或使用环境变量 `PORT=3001 npm start` ```