1 line
37 KiB
JSON
1 line
37 KiB
JSON
{"repo": "charlienalan/qq-ai-chatbot", "files": {"README.md": {"6be87cfa52f50cdd57d0c261bcb45953203456bd": {"t": 1785746711.6488738, "n": 6198, "h": "ebdaee2dae5b68fa", "c": "# QQ机器人项目 - AI智能对话系统\n\n这是一个基于napcat和Python Flask的智能QQ机器人。机器人支持多种聊天风格、对话记忆、违禁词检测和自动禁言等功能。系统兼容所有OpenAI格式的API接口。\n\n## 主要功能\n\n- **智能对话**:机器人被@时会自动回复,支持上下文记忆\n- **自动回复**:5%概率对普通消息进行自动回复(限制20字内)\n- **多风格切换**:支持嘴臭、小红书、标准三种聊天风格,可随时切换\n- **违禁词检测**:自动检测违禁词并对发送者进行禁言处理\n- **系统命令**:支持风格切换、风格列表、帮助、概率调整等系统命令\n- **记忆对话**:机器人记住每个用户和群的聊天历史\n- **多平台支持**:支持群聊和私聊消息处理\n- **API兼容**:支持OpenAI、DeepSeek、ChatAnywhere等所有兼容接口\n- **会话管理**:15分钟无活动自动清空历史记录\n- **HTTP通信**:基于HTTP API与napcat通信\n\n## 前置要求\n\n⚠️ **重要提醒**:本项目需要配合 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 框架使用。\n\n### 安装NapCatQQ\n\n在使用本机器人之前,你需要先安装和配置NapCatQQ:\n\n1. **下载NapCatQQ**:访问 [NapCatQQ官方仓库](https://github.com/NapNeko/NapCatQQ) 下载最新版本\n2. **查看文档**:参考 [官方文档](https://napneko.github.io/) 进行安装和配置\n3. **启动服务**:确保NapCatQQ正常运行并配置好QQ登录\n\n### NapCatQQ配置要求\n\n- 启用HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 正确登录QQ账号\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置API密钥\n\n本项目通过环境变量来配置API,无需修改代码文件。设置以下环境变量:\n\n```bash\n# Linux/Mac\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport BASE_URL=\"https://your-api-base-url\"\n\n# Windows (CMD)\nset OPENAI_API_KEY=your-api-key-here\nset BASE_URL=https://your-api-base-url\n\n# Windows (PowerShell)\n$env:OPENAI_API_KEY=\"your-api-key-here\"\n$env:BASE_URL=\"https://your-api-base-url\"\n```\n\n**或创建 `.env` 文件**(推荐):\n```env\nOPENAI_API_KEY=your-api-key-here\nBASE_URL=https://your-api-base-url\n```\n\n### 常用API配置示例\n\n**OpenAI官方**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.openai.com/v1\n```\n\n**DeepSeek**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.deepseek.com/v1\n```\n\n**ChatAnywhere代理**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.chatanywhere.tech/v1\n```\n\n**本地API(如Ollama)**:\n```env\nOPENAI_API_KEY=not-needed\nBASE_URL=http://localhost:11434/v1\n```\n\n### 3. 配置napcat\n\n将 `napcat_config.json` 的内容复制到你的napcat配置文件。主要设置包括:\n\n- 开启HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 启用调试模式\n\n### 4. 启动服务\n\n先启动Python程序:\n```bash\npython main.py\n```\n\n然后启动napcat服务。\n\n## 机器人风格配置\n\n机器人支持三种预设风格,可以通过系统命令实时切换:\n\n### 默认风格设置\n\n机器人启动时默认使用**嘴臭风格**。你可以通过以下方式修改:\n\n1. **实时切换**:使用 `[切换风格 风格名]` 命令\n2. **修改默认风格**:在 `utils.py` 中修改 `get_session_style` 函数的默认返回值\n\n### 自定义风格\n\n你可以在 `prompts.py` 中添加新的风格:\n\n```python\n# 添加新风格到 prompt_mp 字典\nprompt_mp = {\n \"嘴臭\": abuse_attack_prompt,\n \"小红书\": rednote_prompt,\n \"标准\": normal_prompt,\n \"你的风格\": \"你的自定义prompt...\"\n}\n```\n\n### 风格特点说明\n\n- **嘴臭风格**:模仿贴吧文化,高强度对线,适合娱乐\n- **小红书风格**:活泼可爱,大量emoji,亲和力强\n- **标准风格**:正常AI助手,专业友好,适合正式场合\n\n## 配置详情\n\n### napcat关键配置\n\n```json\n{\n \"httpServers\": [{\n \"enable\": true,\n \"host\": \"127.0.0.1\",\n \"port\": 3000\n }],\n \"httpClients\": [{\n \"enable\": true,\n \"url\": \"http://127.0.0.1:5000\",\n \"timeout\": 5000\n }]\n}\n```\n\n### Python程序配置\n\n- **监听端口**:5000\n- **napcat地址**:http://127.0.0.1:3000\n- **历史记录**:最大36条对话记录\n- **会话超时**:15分钟无活动自动清空\n\n## 使用方法\n\n### 群聊使用\n\n在QQ群中@机器人并发送消息。机器人会自动回复。每个群的对话历史独立保存。\n\n**自动回复功能**:\n- 机器人有5%概率对普通消息(未@机器人)进行自动回复\n- 自动回复内容限制在20字以内,保持简洁\n- 可通过 `[修改概率 数字]` 命令调整概率(按群单独设置)\n- 设置为0可完全关闭自动回复功能\n\n**注意**:机器人会自动检测群内违禁词,发送违禁词的用户会被自动禁言。\n\n### 私聊使用\n\n直接给机器人发送私聊消息。机器人会记住你们的对话历史。\n\n### 系统命令\n\n机器人支持以下系统命令(使用方括号格式):\n\n- **`[切换风格 风格名]`** - 切换聊天风格\n ```\n [切换风格 小红书]\n [切换风格 嘴臭]\n [切换风格 标准]\n ```\n\n- **`[风格列表]`** - 查看所有可用风格\n- **`[修改概率 数字]`** - 修改自动回复概率(输入百分比数字,如10表示10%)\n ```\n [修改概率 10] # 设置为10%概率\n [修改概率 5] # 设置为5%概率\n [修改概率 0] # 关闭自动回复\n ```\n- **`[帮助]`** - 查看所有可用命令\n\n### 可用聊天风格\n\n1. **嘴臭风格**:高强度对线、阴阳怪气风格,适合娱乐向群聊\n2. **小红书风格**:活泼可爱、充满emoji的小姐姐风格\n3. **标准风格**:正常友好的AI助手风格,适合日常对话\n\n### 违禁词管理\n\n- 机器人会自动监控群内消息\n- 检测到违禁词会自动禁言发送者\n- 禁言时间会根据用户违规次数递增\n- 违禁词列表可在 `ban.txt` 中配置\n\n### 对话记忆\n\n机器人为每个用户和群维护独立的对话历史。超过15分钟无活动会自动清空历史。\n\n## API管理接口\n\n系统提供HTTP接口来管理对话会话和风格:\n\n### 会话管理\n\n#### 查看所有会话\n```bash\nGET http://127.0.0.1:5000/history/all\n```\n\n#### 查看指定会话历史\n```bash\nGET http://127.0.0.1:5000/history/<session_id>\n```\n\n#### 获取会话详细信息\n```bash\nGET http://127.0.0.1:5000/session/<session_id>/info\n```\n\n#### 清空会话历史\n```bash\nDELETE http://127.0.0.1:5000/history/<session_id>\n```\n\n### 风格管理\n\n#### 查看所有会话的风格设置\n```bash\nGET http://127.0.0.1:5000/styles/all\n```\n\n#### 获取可用风格列表\n```bash\nGET http://127.0.0.1:5000/styles/available\n```\n\n### 会话ID格式\n\n- 群聊:`group_{群号}`\n- 私聊:`private_{QQ号}`\n\n## 测试与调试\n\n### 程序状态测试\n```bash\ncurl http://127.0.0.1:5000/test\n```\n\n### 查看运行日志\n\n程序会在控制台输出详细的运行日志。包括:\n- 接收到的消息内容\n- AI回复生成过程\n- 会话管理状态\n- 错误信息\n\n## 自定义扩展\n\n### 修改AI参数\n\n在 `llm_client.py` 中可以调整:\n\n```python\ntemperature=0.1, # 回复随机性(0-1)\ntop_p=0.1, # 采样参数(0-1)\nmax_tokens=1000 # 最大回复长度\n```\n\n### 调整自动回复设置\n\n在 `utils.py` 中可以修改默认自动回复概率:\n\n```python\nprobabilitys = {} # 存储每个会话的自动回复概率\n# 默认概率在get_probability函数中设置\n```\n\n在 `llm_client.py` 中可以修改自动回复字数限制:\n\n```python\nif auto_reply:\n new_user_message = \"(你的回答不得超过20个字)\" + user_message # 修改字数限制\n```\n\n### 调整记忆设置\n\n```python\nself.max_history_length = 36 # 最大历史记录数\nself.session_timeout = 15 * 60 # 会话超时时间(秒)\n```\n\n### 违禁词配置\n\n编辑 `ban.txt` 文件来管理违禁词列表:\n\n```txt\n违禁词1\n违禁词2\n违禁词3\n```\n\n调整禁言参数(在 `utils.py` 的 `ban_user` 函数中):\n\n```python\nduration = 30 # 基础禁言时长(秒)\n# 实际禁言时间 = duration * 用户违规次数\n```\n\n### 添加新的聊天风格\n\n1. 在 `prompts.py` 中添加新的prompt\n2. 更新 `prompt_mp` 字典\n3. 重启机器人即可使用新风格\n\n### 添加新功能\n\n你可以在 `main.py` 中添加:\n- 特殊指令处理\n- 群管理功能\n- 定时任务\n- 数据库存储\n\n## 故障排除\n\n### 机器人不回复\n\n1. 检查napcat是否正常启动\n2. 查看Python控制台是否收到消息\n3. 确认napcat配置正确\n4. 检查端口是否被占用\n\n### AI回复失败\n\n1. 验证API密钥是否正确\n2. 测试base_url是否可访问\n3. 确认模型名称正确\n4. 检查API额度是否充足\n\n### 记忆功能异常\n\n1. 查看控制台会话管理日志\n2. 使用API接口检查会话状态\n3. 手动清空异常会话历史\n\n### 违禁词功能问题\n\n1. 检查 `ban.txt` 文件是否存在且格式正确\n2. 确认机器人在群内有管理员权限\n3. 查看控制台是否有禁言失败的错误日志\n4. 检验违禁词检测逻辑(大小写、空格等)\n\n### 风格切换失败\n\n1. 确认风格名称拼写正确(区分大小写)\n2. 检查 `prompts.py` 中是否存在对应风格\n3. 使用 `[风格列表]` 命令查看可用风格\n4. 重启机器人后重试\n\n### 自动回复问题\n\n1. 自动回复太频繁或太少\n - 使用 `[修改概率 数字]` 命令调整概率\n - 检查概率设置是否正确(0-100的百分比)\n\n2. 自动回复内容太长\n - 检查 `llm_client.py` 中的字数限制提示\n - 可能需要调整AI模型的temperature参数\n\n3. 自动回复不生效\n - 确认消息不为空且未@机器人\n - 查看控制台日志确认概率触发情况\n\n## 项目结构\n\n```\nQQBot/\n├── main.py # 主程序和消息处理逻辑\n├── llm_client.py # AI客户端和对话记忆管理\n├── utils.py # 工具函数(禁言、风格管理等)\n├── prompts.py # 各种聊天风格的prompt定义\n├── api.py # API蓝图和管理接口\n├── regular_dialog.py # 违禁词处理的提示语\n├── ban.txt # 违禁词列表配置\n├── requirements.txt # Python依赖包\n├── napcat_config.json # napcat配置示例\n└── README.md # 项目文档\n```\n\n## 依赖包说明\n\n- **Flask**:Web框架,处理HTTP请求\n- **requests**:HTTP客户端,与napcat通信\n- **openai**:OpenAI兼容的API客户端 "}, "b13ca8cced946d6c8f8b12ccf1f0e9e9908a195e": {"t": 1785767192.404077, "n": 6198, "h": "ebdaee2dae5b68fa", "c": "# QQ机器人项目 - AI智能对话系统\n\n这是一个基于napcat和Python Flask的智能QQ机器人。机器人支持多种聊天风格、对话记忆、违禁词检测和自动禁言等功能。系统兼容所有OpenAI格式的API接口。\n\n## 主要功能\n\n- **智能对话**:机器人被@时会自动回复,支持上下文记忆\n- **自动回复**:5%概率对普通消息进行自动回复(限制20字内)\n- **多风格切换**:支持嘴臭、小红书、标准三种聊天风格,可随时切换\n- **违禁词检测**:自动检测违禁词并对发送者进行禁言处理\n- **系统命令**:支持风格切换、风格列表、帮助、概率调整等系统命令\n- **记忆对话**:机器人记住每个用户和群的聊天历史\n- **多平台支持**:支持群聊和私聊消息处理\n- **API兼容**:支持OpenAI、DeepSeek、ChatAnywhere等所有兼容接口\n- **会话管理**:15分钟无活动自动清空历史记录\n- **HTTP通信**:基于HTTP API与napcat通信\n\n## 前置要求\n\n⚠️ **重要提醒**:本项目需要配合 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 框架使用。\n\n### 安装NapCatQQ\n\n在使用本机器人之前,你需要先安装和配置NapCatQQ:\n\n1. **下载NapCatQQ**:访问 [NapCatQQ官方仓库](https://github.com/NapNeko/NapCatQQ) 下载最新版本\n2. **查看文档**:参考 [官方文档](https://napneko.github.io/) 进行安装和配置\n3. **启动服务**:确保NapCatQQ正常运行并配置好QQ登录\n\n### NapCatQQ配置要求\n\n- 启用HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 正确登录QQ账号\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置API密钥\n\n本项目通过环境变量来配置API,无需修改代码文件。设置以下环境变量:\n\n```bash\n# Linux/Mac\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport BASE_URL=\"https://your-api-base-url\"\n\n# Windows (CMD)\nset OPENAI_API_KEY=your-api-key-here\nset BASE_URL=https://your-api-base-url\n\n# Windows (PowerShell)\n$env:OPENAI_API_KEY=\"your-api-key-here\"\n$env:BASE_URL=\"https://your-api-base-url\"\n```\n\n**或创建 `.env` 文件**(推荐):\n```env\nOPENAI_API_KEY=your-api-key-here\nBASE_URL=https://your-api-base-url\n```\n\n### 常用API配置示例\n\n**OpenAI官方**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.openai.com/v1\n```\n\n**DeepSeek**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.deepseek.com/v1\n```\n\n**ChatAnywhere代理**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.chatanywhere.tech/v1\n```\n\n**本地API(如Ollama)**:\n```env\nOPENAI_API_KEY=not-needed\nBASE_URL=http://localhost:11434/v1\n```\n\n### 3. 配置napcat\n\n将 `napcat_config.json` 的内容复制到你的napcat配置文件。主要设置包括:\n\n- 开启HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 启用调试模式\n\n### 4. 启动服务\n\n先启动Python程序:\n```bash\npython main.py\n```\n\n然后启动napcat服务。\n\n## 机器人风格配置\n\n机器人支持三种预设风格,可以通过系统命令实时切换:\n\n### 默认风格设置\n\n机器人启动时默认使用**嘴臭风格**。你可以通过以下方式修改:\n\n1. **实时切换**:使用 `[切换风格 风格名]` 命令\n2. **修改默认风格**:在 `utils.py` 中修改 `get_session_style` 函数的默认返回值\n\n### 自定义风格\n\n你可以在 `prompts.py` 中添加新的风格:\n\n```python\n# 添加新风格到 prompt_mp 字典\nprompt_mp = {\n \"嘴臭\": abuse_attack_prompt,\n \"小红书\": rednote_prompt,\n \"标准\": normal_prompt,\n \"你的风格\": \"你的自定义prompt...\"\n}\n```\n\n### 风格特点说明\n\n- **嘴臭风格**:模仿贴吧文化,高强度对线,适合娱乐\n- **小红书风格**:活泼可爱,大量emoji,亲和力强\n- **标准风格**:正常AI助手,专业友好,适合正式场合\n\n## 配置详情\n\n### napcat关键配置\n\n```json\n{\n \"httpServers\": [{\n \"enable\": true,\n \"host\": \"127.0.0.1\",\n \"port\": 3000\n }],\n \"httpClients\": [{\n \"enable\": true,\n \"url\": \"http://127.0.0.1:5000\",\n \"timeout\": 5000\n }]\n}\n```\n\n### Python程序配置\n\n- **监听端口**:5000\n- **napcat地址**:http://127.0.0.1:3000\n- **历史记录**:最大36条对话记录\n- **会话超时**:15分钟无活动自动清空\n\n## 使用方法\n\n### 群聊使用\n\n在QQ群中@机器人并发送消息。机器人会自动回复。每个群的对话历史独立保存。\n\n**自动回复功能**:\n- 机器人有5%概率对普通消息(未@机器人)进行自动回复\n- 自动回复内容限制在20字以内,保持简洁\n- 可通过 `[修改概率 数字]` 命令调整概率(按群单独设置)\n- 设置为0可完全关闭自动回复功能\n\n**注意**:机器人会自动检测群内违禁词,发送违禁词的用户会被自动禁言。\n\n### 私聊使用\n\n直接给机器人发送私聊消息。机器人会记住你们的对话历史。\n\n### 系统命令\n\n机器人支持以下系统命令(使用方括号格式):\n\n- **`[切换风格 风格名]`** - 切换聊天风格\n ```\n [切换风格 小红书]\n [切换风格 嘴臭]\n [切换风格 标准]\n ```\n\n- **`[风格列表]`** - 查看所有可用风格\n- **`[修改概率 数字]`** - 修改自动回复概率(输入百分比数字,如10表示10%)\n ```\n [修改概率 10] # 设置为10%概率\n [修改概率 5] # 设置为5%概率\n [修改概率 0] # 关闭自动回复\n ```\n- **`[帮助]`** - 查看所有可用命令\n\n### 可用聊天风格\n\n1. **嘴臭风格**:高强度对线、阴阳怪气风格,适合娱乐向群聊\n2. **小红书风格**:活泼可爱、充满emoji的小姐姐风格\n3. **标准风格**:正常友好的AI助手风格,适合日常对话\n\n### 违禁词管理\n\n- 机器人会自动监控群内消息\n- 检测到违禁词会自动禁言发送者\n- 禁言时间会根据用户违规次数递增\n- 违禁词列表可在 `ban.txt` 中配置\n\n### 对话记忆\n\n机器人为每个用户和群维护独立的对话历史。超过15分钟无活动会自动清空历史。\n\n## API管理接口\n\n系统提供HTTP接口来管理对话会话和风格:\n\n### 会话管理\n\n#### 查看所有会话\n```bash\nGET http://127.0.0.1:5000/history/all\n```\n\n#### 查看指定会话历史\n```bash\nGET http://127.0.0.1:5000/history/<session_id>\n```\n\n#### 获取会话详细信息\n```bash\nGET http://127.0.0.1:5000/session/<session_id>/info\n```\n\n#### 清空会话历史\n```bash\nDELETE http://127.0.0.1:5000/history/<session_id>\n```\n\n### 风格管理\n\n#### 查看所有会话的风格设置\n```bash\nGET http://127.0.0.1:5000/styles/all\n```\n\n#### 获取可用风格列表\n```bash\nGET http://127.0.0.1:5000/styles/available\n```\n\n### 会话ID格式\n\n- 群聊:`group_{群号}`\n- 私聊:`private_{QQ号}`\n\n## 测试与调试\n\n### 程序状态测试\n```bash\ncurl http://127.0.0.1:5000/test\n```\n\n### 查看运行日志\n\n程序会在控制台输出详细的运行日志。包括:\n- 接收到的消息内容\n- AI回复生成过程\n- 会话管理状态\n- 错误信息\n\n## 自定义扩展\n\n### 修改AI参数\n\n在 `llm_client.py` 中可以调整:\n\n```python\ntemperature=0.1, # 回复随机性(0-1)\ntop_p=0.1, # 采样参数(0-1)\nmax_tokens=1000 # 最大回复长度\n```\n\n### 调整自动回复设置\n\n在 `utils.py` 中可以修改默认自动回复概率:\n\n```python\nprobabilitys = {} # 存储每个会话的自动回复概率\n# 默认概率在get_probability函数中设置\n```\n\n在 `llm_client.py` 中可以修改自动回复字数限制:\n\n```python\nif auto_reply:\n new_user_message = \"(你的回答不得超过20个字)\" + user_message # 修改字数限制\n```\n\n### 调整记忆设置\n\n```python\nself.max_history_length = 36 # 最大历史记录数\nself.session_timeout = 15 * 60 # 会话超时时间(秒)\n```\n\n### 违禁词配置\n\n编辑 `ban.txt` 文件来管理违禁词列表:\n\n```txt\n违禁词1\n违禁词2\n违禁词3\n```\n\n调整禁言参数(在 `utils.py` 的 `ban_user` 函数中):\n\n```python\nduration = 30 # 基础禁言时长(秒)\n# 实际禁言时间 = duration * 用户违规次数\n```\n\n### 添加新的聊天风格\n\n1. 在 `prompts.py` 中添加新的prompt\n2. 更新 `prompt_mp` 字典\n3. 重启机器人即可使用新风格\n\n### 添加新功能\n\n你可以在 `main.py` 中添加:\n- 特殊指令处理\n- 群管理功能\n- 定时任务\n- 数据库存储\n\n## 故障排除\n\n### 机器人不回复\n\n1. 检查napcat是否正常启动\n2. 查看Python控制台是否收到消息\n3. 确认napcat配置正确\n4. 检查端口是否被占用\n\n### AI回复失败\n\n1. 验证API密钥是否正确\n2. 测试base_url是否可访问\n3. 确认模型名称正确\n4. 检查API额度是否充足\n\n### 记忆功能异常\n\n1. 查看控制台会话管理日志\n2. 使用API接口检查会话状态\n3. 手动清空异常会话历史\n\n### 违禁词功能问题\n\n1. 检查 `ban.txt` 文件是否存在且格式正确\n2. 确认机器人在群内有管理员权限\n3. 查看控制台是否有禁言失败的错误日志\n4. 检验违禁词检测逻辑(大小写、空格等)\n\n### 风格切换失败\n\n1. 确认风格名称拼写正确(区分大小写)\n2. 检查 `prompts.py` 中是否存在对应风格\n3. 使用 `[风格列表]` 命令查看可用风格\n4. 重启机器人后重试\n\n### 自动回复问题\n\n1. 自动回复太频繁或太少\n - 使用 `[修改概率 数字]` 命令调整概率\n - 检查概率设置是否正确(0-100的百分比)\n\n2. 自动回复内容太长\n - 检查 `llm_client.py` 中的字数限制提示\n - 可能需要调整AI模型的temperature参数\n\n3. 自动回复不生效\n - 确认消息不为空且未@机器人\n - 查看控制台日志确认概率触发情况\n\n## 项目结构\n\n```\nQQBot/\n├── main.py # 主程序和消息处理逻辑\n├── llm_client.py # AI客户端和对话记忆管理\n├── utils.py # 工具函数(禁言、风格管理等)\n├── prompts.py # 各种聊天风格的prompt定义\n├── api.py # API蓝图和管理接口\n├── regular_dialog.py # 违禁词处理的提示语\n├── ban.txt # 违禁词列表配置\n├── requirements.txt # Python依赖包\n├── napcat_config.json # napcat配置示例\n└── README.md # 项目文档\n```\n\n## 依赖包说明\n\n- **Flask**:Web框架,处理HTTP请求\n- **requests**:HTTP客户端,与napcat通信\n- **openai**:OpenAI兼容的API客户端 "}, "9336957109bd2c6f5a9f540fb62b50653837fa2e": {"t": 1785767193.8042605, "n": 5456, "h": "18cc7c29e4088c17", "c": "# QQ机器人项目 - AI智能对话系统\n\n这是一个基于napcat和Python Flask的智能QQ机器人。机器人支持多种聊天风格、对话记忆、违禁词检测和自动禁言等功能。系统兼容所有OpenAI格式的API接口。\n\n## 主要功能\n\n- **智能对话**:机器人被@时会自动回复,支持上下文记忆\n- **多风格切换**:支持嘴臭、小红书、标准三种聊天风格,可随时切换\n- **违禁词检测**:自动检测违禁词并对发送者进行禁言处理\n- **系统命令**:支持风格切换、风格列表、帮助等系统命令\n- **记忆对话**:机器人记住每个用户和群的聊天历史\n- **多平台支持**:支持群聊和私聊消息处理\n- **API兼容**:支持OpenAI、DeepSeek、ChatAnywhere等所有兼容接口\n- **会话管理**:15分钟无活动自动清空历史记录\n- **HTTP通信**:基于HTTP API与napcat通信\n\n## 前置要求\n\n⚠️ **重要提醒**:本项目需要配合 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 框架使用。\n\n### 安装NapCatQQ\n\n在使用本机器人之前,你需要先安装和配置NapCatQQ:\n\n1. **下载NapCatQQ**:访问 [NapCatQQ官方仓库](https://github.com/NapNeko/NapCatQQ) 下载最新版本\n2. **查看文档**:参考 [官方文档](https://napneko.github.io/) 进行安装和配置\n3. **启动服务**:确保NapCatQQ正常运行并配置好QQ登录\n\n### NapCatQQ配置要求\n\n- 启用HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 正确登录QQ账号\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置API密钥\n\n本项目通过环境变量来配置API,无需修改代码文件。设置以下环境变量:\n\n```bash\n# Linux/Mac\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport BASE_URL=\"https://your-api-base-url\"\n\n# Windows (CMD)\nset OPENAI_API_KEY=your-api-key-here\nset BASE_URL=https://your-api-base-url\n\n# Windows (PowerShell)\n$env:OPENAI_API_KEY=\"your-api-key-here\"\n$env:BASE_URL=\"https://your-api-base-url\"\n```\n\n**或创建 `.env` 文件**(推荐):\n```env\nOPENAI_API_KEY=your-api-key-here\nBASE_URL=https://your-api-base-url\n```\n\n### 常用API配置示例\n\n**OpenAI官方**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.openai.com/v1\n```\n\n**DeepSeek**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.deepseek.com/v1\n```\n\n**ChatAnywhere代理**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.chatanywhere.tech/v1\n```\n\n**本地API(如Ollama)**:\n```env\nOPENAI_API_KEY=not-needed\nBASE_URL=http://localhost:11434/v1\n```\n\n### 3. 配置napcat\n\n将 `napcat_config.json` 的内容复制到你的napcat配置文件。主要设置包括:\n\n- 开启HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 启用调试模式\n\n### 4. 启动服务\n\n先启动Python程序:\n```bash\npython main.py\n```\n\n然后启动napcat服务。\n\n## 机器人风格配置\n\n机器人支持三种预设风格,可以通过系统命令实时切换:\n\n### 默认风格设置\n\n机器人启动时默认使用**嘴臭风格**。你可以通过以下方式修改:\n\n1. **实时切换**:使用 `[切换风格 风格名]` 命令\n2. **修改默认风格**:在 `utils.py` 中修改 `get_session_style` 函数的默认返回值\n\n### 自定义风格\n\n你可以在 `prompts.py` 中添加新的风格:\n\n```python\n# 添加新风格到 prompt_mp 字典\nprompt_mp = {\n \"嘴臭\": abuse_attack_prompt,\n \"小红书\": rednote_prompt,\n \"标准\": normal_prompt,\n \"你的风格\": \"你的自定义prompt...\"\n}\n```\n\n### 风格特点说明\n\n- **嘴臭风格**:模仿贴吧文化,高强度对线,适合娱乐\n- **小红书风格**:活泼可爱,大量emoji,亲和力强\n- **标准风格**:正常AI助手,专业友好,适合正式场合\n\n## 配置详情\n\n### napcat关键配置\n\n```json\n{\n \"httpServers\": [{\n \"enable\": true,\n \"host\": \"127.0.0.1\",\n \"port\": 3000\n }],\n \"httpClients\": [{\n \"enable\": true,\n \"url\": \"http://127.0.0.1:5000\",\n \"timeout\": 5000\n }]\n}\n```\n\n### Python程序配置\n\n- **监听端口**:5000\n- **napcat地址**:http://127.0.0.1:3000\n- **历史记录**:最大36条对话记录\n- **会话超时**:15分钟无活动自动清空\n\n## 使用方法\n\n### 群聊使用\n\n在QQ群中@机器人并发送消息。机器人会自动回复。每个群的对话历史独立保存。\n\n**注意**:机器人会自动检测群内违禁词,发送违禁词的用户会被自动禁言。\n\n### 私聊使用\n\n直接给机器人发送私聊消息。机器人会记住你们的对话历史。\n\n### 系统命令\n\n机器人支持以下系统命令(使用方括号格式):\n\n- **`[切换风格 风格名]`** - 切换聊天风格\n ```\n [切换风格 小红书]\n [切换风格 嘴臭]\n [切换风格 标准]\n ```\n\n- **`[风格列表]`** - 查看所有可用风格\n- **`[帮助]`** - 查看所有可用命令\n\n### 可用聊天风格\n\n1. **嘴臭风格**:高强度对线、阴阳怪气风格,适合娱乐向群聊\n2. **小红书风格**:活泼可爱、充满emoji的小姐姐风格\n3. **标准风格**:正常友好的AI助手风格,适合日常对话\n\n### 违禁词管理\n\n- 机器人会自动监控群内消息\n- 检测到违禁词会自动禁言发送者\n- 禁言时间会根据用户违规次数递增\n- 违禁词列表可在 `ban.txt` 中配置\n\n### 对话记忆\n\n机器人为每个用户和群维护独立的对话历史。超过15分钟无活动会自动清空历史。\n\n## API管理接口\n\n系统提供HTTP接口来管理对话会话和风格:\n\n### 会话管理\n\n#### 查看所有会话\n```bash\nGET http://127.0.0.1:5000/history/all\n```\n\n#### 查看指定会话历史\n```bash\nGET http://127.0.0.1:5000/history/<session_id>\n```\n\n#### 获取会话详细信息\n```bash\nGET http://127.0.0.1:5000/session/<session_id>/info\n```\n\n#### 清空会话历史\n```bash\nDELETE http://127.0.0.1:5000/history/<session_id>\n```\n\n### 风格管理\n\n#### 查看所有会话的风格设置\n```bash\nGET http://127.0.0.1:5000/styles/all\n```\n\n#### 获取可用风格列表\n```bash\nGET http://127.0.0.1:5000/styles/available\n```\n\n### 会话ID格式\n\n- 群聊:`group_{群号}`\n- 私聊:`private_{QQ号}`\n\n## 测试与调试\n\n### 程序状态测试\n```bash\ncurl http://127.0.0.1:5000/test\n```\n\n### 查看运行日志\n\n程序会在控制台输出详细的运行日志。包括:\n- 接收到的消息内容\n- AI回复生成过程\n- 会话管理状态\n- 错误信息\n\n## 自定义扩展\n\n### 修改AI参数\n\n在 `llm_client.py` 中可以调整:\n\n```python\ntemperature=0.1, # 回复随机性(0-1)\ntop_p=0.1, # 采样参数(0-1)\nmax_tokens=1000 # 最大回复长度\n```\n\n### 调整记忆设置\n\n```python\nself.max_history_length = 36 # 最大历史记录数\nself.session_timeout = 15 * 60 # 会话超时时间(秒)\n```\n\n### 违禁词配置\n\n编辑 `ban.txt` 文件来管理违禁词列表:\n\n```txt\n违禁词1\n违禁词2\n违禁词3\n```\n\n调整禁言参数(在 `utils.py` 的 `ban_user` 函数中):\n\n```python\nduration = 30 # 基础禁言时长(秒)\n# 实际禁言时间 = duration * 用户违规次数\n```\n\n### 添加新的聊天风格\n\n1. 在 `prompts.py` 中添加新的prompt\n2. 更新 `prompt_mp` 字典\n3. 重启机器人即可使用新风格\n\n### 添加新功能\n\n你可以在 `main.py` 中添加:\n- 特殊指令处理\n- 群管理功能\n- 定时任务\n- 数据库存储\n\n## 故障排除\n\n### 机器人不回复\n\n1. 检查napcat是否正常启动\n2. 查看Python控制台是否收到消息\n3. 确认napcat配置正确\n4. 检查端口是否被占用\n\n### AI回复失败\n\n1. 验证API密钥是否正确\n2. 测试base_url是否可访问\n3. 确认模型名称正确\n4. 检查API额度是否充足\n\n### 记忆功能异常\n\n1. 查看控制台会话管理日志\n2. 使用API接口检查会话状态\n3. 手动清空异常会话历史\n\n### 违禁词功能问题\n\n1. 检查 `ban.txt` 文件是否存在且格式正确\n2. 确认机器人在群内有管理员权限\n3. 查看控制台是否有禁言失败的错误日志\n4. 检验违禁词检测逻辑(大小写、空格等)\n\n### 风格切换失败\n\n1. 确认风格名称拼写正确(区分大小写)\n2. 检查 `prompts.py` 中是否存在对应风格\n3. 使用 `[风格列表]` 命令查看可用风格\n4. 重启机器人后重试\n\n## 项目结构\n\n```\nQQBot/\n├── main.py # 主程序和消息处理逻辑\n├── llm_client.py # AI客户端和对话记忆管理\n├── utils.py # 工具函数(禁言、风格管理等)\n├── prompts.py # 各种聊天风格的prompt定义\n├── api.py # API蓝图和管理接口\n├── regular_dialog.py # 违禁词处理的提示语\n├── ban.txt # 违禁词列表配置\n├── requirements.txt # Python依赖包\n├── napcat_config.json # napcat配置示例\n└── README.md # 项目文档\n```\n\n## 依赖包说明\n\n- **Flask**:Web框架,处理HTTP请求\n- **requests**:HTTP客户端,与napcat通信\n- **openai**:OpenAI兼容的API客户端 "}, "71ec1c811e3fc29703959696c272602237ee6030": {"t": 1785767195.4314678, "n": 3830, "h": "eec579a683c2598b", "c": "# QQ机器人项目 - AI智能对话系统\n\n这是一个基于napcat和Python Flask的智能QQ机器人。机器人支持对话记忆功能。系统兼容所有OpenAI格式的API接口。\n\n## 主要功能\n\n- **智能对话**:机器人被@时会自动回复\n- **记忆对话**:机器人记住每个用户和群的聊天历史\n- **多平台支持**:支持群聊和私聊消息处理\n- **API兼容**:支持OpenAI、DeepSeek、ChatAnywhere等所有兼容接口\n- **会话管理**:15分钟无活动自动清空历史记录\n- **HTTP通信**:基于HTTP API与napcat通信\n\n## 前置要求\n\n⚠️ **重要提醒**:本项目需要配合 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 框架使用。\n\n### 安装NapCatQQ\n\n在使用本机器人之前,你需要先安装和配置NapCatQQ:\n\n1. **下载NapCatQQ**:访问 [NapCatQQ官方仓库](https://github.com/NapNeko/NapCatQQ) 下载最新版本\n2. **查看文档**:参考 [官方文档](https://napneko.github.io/) 进行安装和配置\n3. **启动服务**:确保NapCatQQ正常运行并配置好QQ登录\n\n### NapCatQQ配置要求\n\n- 启用HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 正确登录QQ账号\n\n## 快速开始\n\n### 1. 安装依赖\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置API密钥\n\n本项目通过环境变量来配置API,无需修改代码文件。设置以下环境变量:\n\n```bash\n# Linux/Mac\nexport OPENAI_API_KEY=\"your-api-key-here\"\nexport BASE_URL=\"https://your-api-base-url\"\n\n# Windows (CMD)\nset OPENAI_API_KEY=your-api-key-here\nset BASE_URL=https://your-api-base-url\n\n# Windows (PowerShell)\n$env:OPENAI_API_KEY=\"your-api-key-here\"\n$env:BASE_URL=\"https://your-api-base-url\"\n```\n\n**或创建 `.env` 文件**(推荐):\n```env\nOPENAI_API_KEY=your-api-key-here\nBASE_URL=https://your-api-base-url\n```\n\n### 常用API配置示例\n\n**OpenAI官方**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.openai.com/v1\n```\n\n**DeepSeek**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.deepseek.com/v1\n```\n\n**ChatAnywhere代理**:\n```env\nOPENAI_API_KEY=sk-xxx\nBASE_URL=https://api.chatanywhere.tech/v1\n```\n\n**本地API(如Ollama)**:\n```env\nOPENAI_API_KEY=not-needed\nBASE_URL=http://localhost:11434/v1\n```\n\n### 3. 配置napcat\n\n将 `napcat_config.json` 的内容复制到你的napcat配置文件。主要设置包括:\n\n- 开启HTTP服务器(端口3000)\n- 配置HTTP客户端上报到Python程序(端口5000)\n- 启用调试模式\n\n### 4. 启动服务\n\n先启动Python程序:\n```bash\npython main.py\n```\n\n然后启动napcat服务。\n\n## 机器人人设配置\n\n机器人当前使用嘴臭风格人设。你可以在 `llm_client.py` 的 `get_chat_response` 方法中修改 `system_prompt` 来更换人设。\n\n### 切换到小红书风格\n\n取消注释小红书风格prompt,注释掉嘴臭机器人prompt即可。\n\n### 自定义人设\n\n你可以编写自己的system_prompt来定义机器人的性格和回复风格。\n\n## 配置详情\n\n### napcat关键配置\n\n```json\n{\n \"httpServers\": [{\n \"enable\": true,\n \"host\": \"127.0.0.1\",\n \"port\": 3000\n }],\n \"httpClients\": [{\n \"enable\": true,\n \"url\": \"http://127.0.0.1:5000\",\n \"timeout\": 5000\n }]\n}\n```\n\n### Python程序配置\n\n- **监听端口**:5000\n- **napcat地址**:http://127.0.0.1:3000\n- **历史记录**:最大36条对话记录\n- **会话超时**:15分钟无活动自动清空\n\n## 使用方法\n\n### 群聊使用\n\n在QQ群中@机器人并发送消息。机器人会自动回复。每个群的对话历史独立保存。\n\n### 私聊使用\n\n直接给机器人发送私聊消息。机器人会记住你们的对话历史。\n\n### 对话记忆\n\n机器人为每个用户和群维护独立的对话历史。超过15分钟无活动会自动清空历史。\n\n## API管理接口\n\n系统提供HTTP接口来管理对话会话:\n\n### 查看所有会话\n```bash\nGET http://127.0.0.1:5000/history/all\n```\n\n### 查看指定会话历史\n```bash\nGET http://127.0.0.1:5000/history/<session_id>\n```\n\n### 获取会话详细信息\n```bash\nGET http://127.0.0.1:5000/session/<session_id>/info\n```\n\n### 清空会话历史\n```bash\nDELETE http://127.0.0.1:5000/history/<session_id>\n```\n\n### 会话ID格式\n\n- 群聊:`group_{群号}`\n- 私聊:`private_{QQ号}`\n\n## 测试与调试\n\n### 程序状态测试\n```bash\ncurl http://127.0.0.1:5000/test\n```\n\n### 查看运行日志\n\n程序会在控制台输出详细的运行日志。包括:\n- 接收到的消息内容\n- AI回复生成过程\n- 会话管理状态\n- 错误信息\n\n## 自定义扩展\n\n### 修改AI参数\n\n在 `llm_client.py` 中可以调整:\n\n```python\ntemperature=0.1, # 回复随机性(0-1)\ntop_p=0.1, # 采样参数(0-1)\nmax_tokens=1000 # 最大回复长度\n```\n\n### 调整记忆设置\n\n```python\nself.max_history_length = 36 # 最大历史记录数\nself.session_timeout = 15 * 60 # 会话超时时间(秒)\n```\n\n### 添加新功能\n\n你可以在 `main.py` 中添加:\n- 特殊指令处理\n- 群管理功能\n- 定时任务\n- 数据库存储\n\n## 故障排除\n\n### 机器人不回复\n\n1. 检查napcat是否正常启动\n2. 查看Python控制台是否收到消息\n3. 确认napcat配置正确\n4. 检查端口是否被占用\n\n### AI回复失败\n\n1. 验证API密钥是否正确\n2. 测试base_url是否可访问\n3. 确认模型名称正确\n4. 检查API额度是否充足\n\n### 记忆功能异常\n\n1. 查看控制台会话管理日志\n2. 使用API接口检查会话状态\n3. 手动清空异常会话历史\n\n## 项目结构\n\n```\nQQBot/\n├── main.py # 主程序和API接口\n├── llm_client.py # AI客户端和对话记忆\n├── requirements.txt # Python依赖包\n├── napcat_config.json # napcat配置示例\n└── README.md # 项目文档\n```\n\n## 依赖包说明\n\n- **Flask**:Web框架,处理HTTP请求\n- **requests**:HTTP客户端,与napcat通信\n- **openai**:OpenAI兼容的API客户端 "}}}} |