Sakura 智能问答Bot 使用指南
📖 简介
Sakura 智能问答Bot 是一个独立的Telegram Bot,专门用于查询频道历史总结。它支持自然语言交互,让你像对话一样轻松获取频道信息。
✨ 核心特点
- 🎯 自然语言查询 - 无需命令前缀,直接提问
- 🧠 智能意图识别 - 自动理解你的查询意图
- 📊 上下文感知 - 基于频道画像生成更精准的回答
- 🔍 多维度检索 - 支持时间、关键词、主题等多条件过滤
- 🎫 使用配额管理 - 防止滥用,保障服务稳定性
🚀 快速开始
1. 创建问答Bot
访问 @BotFather,创建一个新的Bot:
- 使用
/newbot命令 - 按提示设置Bot名称和用户名
- 重要:必须与主Bot(总结Bot)使用不同的Bot Token
2. 配置环境变量
在 data/.env 文件中添加以下配置:
env
# ===== 问答Bot配置 =====
# 问答Bot的Token(从@BotFather获取,必须与主Bot不同)
QA_BOT_TOKEN=your_qa_bot_token_here
# 是否启用问答Bot(True/False)
QA_BOT_ENABLED=True
# 问答Bot使用限制配置
# 每个用户每日限额(默认3次)
QA_BOT_USER_LIMIT=3
# 每日总限额(默认200次)
QA_BOT_DAILY_LIMIT=2003. 启动问答Bot
bash
# 独立运行问答Bot
python qa_bot.py
# 或使用Docker Compose(需要修改docker-compose.yml)
docker-compose up qa_bot4. 开始使用
在Telegram中找到你创建的问答Bot,发送 /start 命令开始使用!
💬 使用示例
基础查询
👤 用户: 频道上周发生了什么?
🤖 Bot: [分析历史总结,提取关键事件...]
👤 用户: 最近有什么关于AI的讨论?
🤖 Bot: [搜索AI相关内容,生成总结...]时间范围查询
• "今天有什么新动态?"
• "昨天发生了什么?"
• "本周有哪些更新?"
• "上周有哪些重要事件?"
• "最近7天有什么讨论?"关键词搜索
• "查找所有提到GPT-4的总结"
• "最近有什么技术讨论?"
• "关于Python的内容"
• "区块链相关的话题"统计查询
• "系统有多少条总结?"
• "统计频道数据"
• "各个频道的总结数量"配额查询
• "我的配额还剩多少?"
• "还能问几次?"
• "今日使用状态"🎯 查询类型
问答Bot支持以下查询类型:
1. 总结查询
示例:
- "上周发生了什么?"
- "今天有什么更新?"
- "本周有什么重要事件?"
特点:
- 基于时间范围查询历史总结
- AI智能提取关键事件并生成连贯回答
- 支持多频道综合查询
2. 关键词查询
示例:
- "提到GPT-4的内容"
- "技术讨论相关"
- "Python相关话题"
特点:
- 在总结文本和元数据中搜索关键词
- 返回相关度最高的总结
- 支持多个关键词组合查询
3. 主题查询
示例:
- "有什么技术讨论?"
- "最近有什么新闻?"
- "关于更新的内容"
特点:
- 基于预定义主题标签检索
- AI自动识别总结主题
- 支持主题过滤和时间范围
4. 统计查询
示例:
- "系统统计"
- "有多少条总结?"
- "频道排名"
特点:
- 返回统计数据和排名
- 支持多频道对比
- 实时更新
5. 状态查询
示例:
- "配额状态"
- "还能问几次?"
- "今日使用量"
特点:
- 查看个人配额使用情况
- 显示系统总配额状态
- 实时更新
⚙️ 使用限制
配额管理
普通用户
- 每日限额:3次
- 说明:
- 每日00:00(UTC)自动重置
- 配额用尽后需等待次日重置
- 返回配额状态提示
殡理员
- 每日限额:无限制
- 说明:
- 管理员ID在
data/.env中配置 - 不受配额限制
- 可随时使用
- 管理员ID在
系统总限额
- 每日总限额:200次
- 说明:
- 所有用户的总使用次数
- 达到总限额后,非管理员用户无法使用
- 每日00:00自动重置
配额查询命令
/status - 查看你的配额使用状态🔧 技术原理
系统架构
┌─────────────────────────────────────────────────────┐
│ 主Bot(总结Bot) │
│ - 频道监控和总结 │
│ - 投票功能 │
│ - 管理员命令 │
└──────────┬──────────────────────────────────────────┘
│
│ 共享数据库(MySQL)
│
↓
┌─────────────────────────────────────────────────────┐
│ 问答Bot(智能助手) │
│ - 自然语言对话接口 │
│ - 意图解析器 │
│ - 记忆管理器 │
│ - 问答引擎 │
│ - 配额管理器 │
└─────────────────────────────────────────────────────┘核心模块
1. 意图解析器(IntentParser)
识别用户查询意图:
- 时间范围提取(今天、上周、最近7天等)
- 关键词提取(AI、GPT、Python等)
- 主题识别(技术、新闻、讨论等)
- 查询类型判断(总结、统计、状态等)
2. 记忆管理器(MemoryManager)
管理和检索频道信息:
- 频道画像(Channel Profile)
- 关键词和主题索引
- 时间范围过滤
- 智能搜索
3. 问答引擎(QAEngine)
生成回答的核心引擎:
- 检索相关总结
- AI理解上下文
- 生成连贯回答
- 降级方案(直接返回摘要)
4. 配额管理器(QuotaManager)
管理使用配额:
- 用户配额检查
- 总配额控制
- 自动重置机制
- 管理员豁免
数据流
用户查询 → 意图解析 → 配额检查 → 记忆检索 → AI生成 → 返回回答🛠️ 故障排除
常见问题
1. Bot无响应
可能原因:
- Bot未启动
- Token配置错误
- 网络连接问题
解决方法:
bash
# 检查Bot是否运行
docker-compose ps qa_bot
# 查看日志
docker-compose logs qa_bot
# 重启Bot
docker-compose restart qa_bot2. 配额不足
提示信息:
⚠️ 今日配额已用尽(3/3),请明天再试。
💡 每日00:00自动重置解决方法:
- 等待次日自动重置
- 联系管理员申请豁免
- 考虑部署独立实例
3. 未找到相关总结
提示信息:
🔍 未找到相关总结。
💡 提示:尝试调整关键词或时间范围。解决方法:
- 扩大时间范围
- 调整关键词
- 确认频道有总结数据
4. AI生成失败
提示信息:
❌ 处理查询时出错,请稍后重试。解决方法:
- 稍后重试(降级方案会直接返回摘要)
- 检查AI API配置
- 查看日志排查问题
📊 性能优化
数据库优化
- WAL模式:支持多进程并发读写
- 索引优化:关键字段建立索引
- 查询缓存:热点数据缓存
AI优化
- 提示词优化:精简高效的提示词
- 温度控制:平衡创造性和准确性
- 降级方案:AI失败时直接返回摘要
配额管理
- 自动重置:每日00:00自动重置
- 并发控制:MySQL 连接池和跨进程队列支持
- 灵活配置:支持调整限额
🔒 安全与隐私
数据安全
- 数据库加密:支持数据库文件加密
- 访问控制:用户仅能访问总结数据
- 敏感信息:不存储用户敏感信息
配额保护
- 防滥用:配额限制防止恶意使用
- 监控告警:异常使用自动告警
- 管理员特权:管理员无配额限制
隐私保护
- 数据最小化:仅收集必要数据
- 匿名化处理:用户ID匿名存储
- 数据保留:可配置数据保留策略
📝 配置参考
环境变量
| 变量 | 说明 | 默认值 | 必需 |
|---|---|---|---|
| QA_BOT_TOKEN | 问答Bot的Token | - | 是 |
| QA_BOT_ENABLED | 是否启用问答Bot | True | 否 |
| QA_BOT_USER_LIMIT | 每用户每日限额 | 3 | 否 |
| QA_BOT_DAILY_LIMIT | 每日总限额 | 200 | 否 |
Docker部署
修改 docker-compose.yml:
yaml
services:
qa_bot:
build: .
command: python qa_bot.py
environment:
- QA_BOT_TOKEN=${QA_BOT_TOKEN}
- QA_BOT_ENABLED=${QA_BOT_ENABLED:-True}
- QA_BOT_USER_LIMIT=${QA_BOT_USER_LIMIT:-3}
- QA_BOT_DAILY_LIMIT=${QA_BOT_DAILY_LIMIT:-200}
volumes:
- ./data:/app/data
restart: unless-stopped启动服务:
bash
docker-compose up -d qa_bot🚀 未来规划
Phase 5: 高级特性(待实施)
- [ ] 向量数据库集成(ChromaDB/FAISS)
- [ ] 语义搜索能力
- [ ] 多轮对话支持
- [ ] 上下文记忆
- [ ] 个性化推荐
- [ ] Web Dashboard
- [ ] API接口
社区贡献
欢迎贡献代码和想法!请查看:
📞 支持
- 📧 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 📧 Email: sakura520222@outlook.com
Made with ❤️ by Sakura520222