# AI 助手项目 这是一个基于 Google Gemini API 构建的 AI 助手项目,旨在提供一个交互式的聊天界面,支持多轮对话、记忆管理和可配置的系统指令。 ## 项目结构 ``` . ├── app.py # 主应用程序入口,处理后端逻辑和API路由 ├── config.ini # 配置文件,用于存储API密钥、模型设置、文件路径等 ├── config.py # 配置加载和管理模块 ├── file_manager.py # 文件操作工具,用于读写JSON、管理目录等 ├── gemini_client.py # Gemini API 客户端,处理与Google Gemini API的交互 ├── memory_manager.py # 记忆管理模块,处理短期和长期记忆的存储与检索 ├── README.md # 项目说明文件 ├── requirements.txt # Python依赖列表 ├── utils.py # 常用工具函数,如日志配置、时间处理等 ├── data/ │ ├── chat_logs/ # 存储聊天记录 │ ├── features/ # 存储角色特性(例如:default_role/features.json) │ └── memories/ # 存储记忆数据(例如:default_memory/memory.json) └── static/ ├── index.html # 前端主页面 ├── css/ │ ├── modern-style.css # 现代风格CSS │ └── style.css # 主要CSS样式 ├── js/ │ ├── api.js # 前端API调用逻辑 │ ├── app.js # 前端主应用逻辑 │ ├── ui_manager.js # 前端UI管理逻辑 │ └── lib/ # 前端第三方库 │ ├── marked.min.js # Markdown解析库 │ └── purify.min.js # HTML净化库 ``` ## 功能特性 * 多轮对话: 支持与AI进行连续的多轮对话,保持上下文。 * 记忆管理: * 短期记忆: 存储最近的对话轮次,用于维持当前对话的连贯性。 * 长期记忆: 通过摘要和嵌入技术,将关键信息存储为长期记忆,以便在后续对话中检索和利用。 * 可配置性: * 通过 `config.ini` 文件轻松配置 Gemini API 密钥、默认模型、上下文窗口大小、记忆保留轮次等。 * 支持从环境变量加载 `GEMINI_API_KEY`。 * 流式响应: 支持 Gemini API 的流式响应,提供更流畅的用户体验。 * 前端界面: 提供一个简洁的Web界面,方便用户与AI助手交互。 * 日志记录: 详细的日志记录,便于调试和问题追踪。 ## 安装与运行 ### 1. 克隆仓库 ```bash git clone https://github.com/your-username/your-repo-name.git cd your-repo-name ``` (请将 `your-username/your-repo-name.git` 替换为实际的仓库地址) ### 2. 创建并激活虚拟环境 (推荐) ```bash python -m venv venv # Windows .\venv\Scripts\activate # macOS/Linux source venv/bin/activate ``` ### 3. 安装依赖 ```bash pip install -r requirements.txt ``` ### 4. 配置 API 密钥 在项目根目录下找到 `config.ini` 文件。 将 `[API]` 部分的 `GEMINI_API_KEY` 替换为你的 Google Gemini API 密钥。 ```ini [API] GEMINI_API_KEY = YOUR_GEMINI_API_KEY_HERE ``` 或者,你可以设置环境变量 `GEMINI_API_KEY`。环境变量的优先级高于 `config.ini` 文件中的配置。 ### 5. 运行应用程序 ```bash python app.py ``` 应用程序将在本地启动一个Web服务。通常,你可以在浏览器中访问 `http://127.0.0.1:5000` 来使用AI助手。 ## 配置说明 项目的主要配置通过 `config.ini` 文件管理。以下是各个配置项的详细说明: ### [API] 部分 * `gemini_api_base_url`: Gemini API 的基础 URL。如果使用代理或自定义端点,请修改此项。 * `gemini_api_key`: 你的 Google Gemini API 密钥。建议通过环境变量 `GEMINI_API_KEY` 设置,优先级更高。 * `default_gemini_model`: 默认使用的 Gemini 模型,例如 `models/gemini-2.0-flash`。 * `memory_update_model`: 用于记忆更新(摘要和嵌入)的 Gemini 模型。 ### [Application] 部分 * `context_window_size`: 短期记忆中保留的对话轮次数量,用于维持当前对话的上下文。 * `memory_retention_turns`: 长期记忆更新的频率,每隔多少轮对话进行一次记忆摘要和存储。 * `max_short_term_events`: 短期记忆中最大事件(消息)数量。 * `features_dir`: 存储角色特性配置文件的目录路径。 * `memories_dir`: 存储长期记忆数据文件的目录路径。 * `chat_logs_dir`: 存储聊天记录文件的目录路径。 * `app_log_file_path`: 应用程序日志文件的路径。 ### [Session] 部分 * `current_role_id`: 当前会话使用的角色ID。 * `current_memory_id`: 当前会话使用的记忆ID。 * `current_chat_log_id`: 当前会话的聊天记录ID。 ## 使用说明 在Web界面中输入你的问题或指令,AI助手将根据你的输入和历史对话进行回复。 ## 贡献 欢迎贡献!如果你有任何改进建议或发现bug,请提交Issue或Pull Request。 ## 许可证 本项目采用 MIT 许可证。详见 `LICENSE` 文件 (如果存在)。