logo
2
0
Login

AI海龟汤聊天室

一个基于Flask和OpenAI API的在线海龟汤推理游戏聊天室,支持多人实时互动、AI主持人和故事广场功能。

🎯 项目简介

海龟汤是一种推理游戏,出题者给出不完整的"汤面"(题目),猜题者通过提问来推理出完整的故事。本应用将传统海龟汤游戏与AI技术结合,提供在线多人游戏体验,并支持故事分享和管理。

主要功能

  • 🏠 房间系统: 创建/加入房间,支持邀请码
  • 🤖 AI主持人: 基于OpenAI API的智能主持人
  • 👥 多人聊天: 实时群聊功能,支持在线用户显示
  • 📝 题目管理: 房主可上传和管理海龟汤题目
  • 🎮 游戏流程: 完整的海龟汤游戏流程,包括答案揭晓
  • 💬 双聊天系统: AI对话 + 无AI群聊
  • 📚 故事广场: 用户可上传和分享海龟汤故事
  • 🔧 管理员后台: 故事审核和房间管理功能
  • 一键开始: 快速从故事广场加载故事开始游戏

🛠️ 技术栈

  • 后端: Flask (Python)
  • 前端: HTML5 + CSS3 + JavaScript
  • AI: OpenAI API
  • 实时通信: 轮询机制
  • 样式: 现代化UI设计
  • 存储: 文件系统存储故事数据

📦 安装部署

环境要求

  • Python 3.7+
  • 网络连接(用于访问OpenAI API)

安装步骤

  1. 克隆项目

    git clone https://github.com/mumuhaha487/Turtle_Soup.git cd Turtle_Soup
  2. 安装依赖

    pip install -r requirements.txt
  3. 配置设置

    • 编辑 config.json 文件
    • 设置管理员账号密码
    • 自定义AI预设提示词
  4. 运行应用

    python app.py
  5. 访问应用 打开浏览器访问 http://localhost:5000

🎮 使用教程

1. 故事广场

浏览故事

  1. 点击首页"故事广场"按钮
  2. 查看已发布的故事列表
  3. 点击"一键开始"快速进入游戏

上传故事

  1. 在故事广场页面填写故事名称
  2. 选择JSON格式的故事文件
  3. 点击"上传到故事广场"
  4. 等待管理员审核通过

通过编号加载

  1. 在故事广场输入故事编号(如 #00001)
  2. 点击"加载"按钮
  3. 系统自动匹配对应故事

2. 创建房间

  1. 打开应用首页
  2. 点击"创建房间"
  3. 填写以下信息:
    • 昵称: 你的游戏昵称
    • 代理地址: OpenAI API代理地址(默认:http://api.0ha.top/v1
    • API Key: 你的OpenAI API密钥
    • 模型名: 使用的AI模型(默认:o3-mini-2025-01-31)
  4. 点击"创建并进入房间"
  5. 系统会生成6位邀请码,分享给其他玩家

3. 加入房间

  1. 在首页点击"加入房间"
  2. 输入你的昵称
  3. 输入房主提供的邀请码
  4. 点击"加入房间"

4. 游戏流程

房主操作

  1. 上传题目(可选):

    • 准备海龟汤题目的JSON文件
    • 点击"上传题目"按钮
    • 选择JSON文件上传
  2. 从故事广场加载:

    • 点击"从故事广场加载"
    • 选择或输入故事编号
    • 系统自动加载故事
  3. 管理游戏:

    • 监控玩家提问
    • 在适当时机揭晓答案

玩家操作

  1. 参与推理:

    • 在聊天框输入问题
    • AI主持人会根据规则回答"是"、"不是"或"不重要"
  2. 群聊交流:

    • 使用无AI群聊功能与其他玩家交流
    • 支持@用户名高亮显示
  3. 查看在线用户:

    • 右侧面板显示当前在线玩家

5. 管理员功能

访问后台

  1. 访问 /admin 路径
  2. 使用config.json中配置的账号密码登录

房间管理

  • 查看所有在线房间
  • 查看房间成员和邀请码
  • 删除违规房间

故事审核

  • 查看待审核的故事
  • 审核通过或拒绝故事
  • 管理已发布的故事

6. 题目格式

海龟汤题目需要JSON格式,文件大小不能超过20MB

示例:

{ "surface": "一个人走进餐厅,点了一份海龟汤,尝了一口后自杀了。为什么?", "answer": "这个人以前在海上遇难,同伴为了生存而牺牲,他喝的海龟汤正是用同伴的肉做的。", "victory_condition": "猜出这个人自杀的原因", "additional": "这个人有特殊的经历背景" }

或批量上传:

[ { "surface": "题目1", "answer": "答案1", "victory_condition": "胜利条件1" }, { "surface": "题目2", "answer": "答案2", "victory_condition": "胜利条件2" } ]

🔧 配置说明

config.json 配置

{ "preset": "AI主持人预设提示词", "admin": { "username": "admin", "password": "admin123" }, "story_counter": 1 }

目录结构

upload/ ├── json/ ├── norelease/ # 待审核故事 └── release/ # 已发布故事

📁 项目结构

Turtle_Soup/ ├── app.py # Flask主应用 ├── config.json # 配置文件 ├── requirements.txt # Python依赖 ├── upload/ # 故事存储目录 │ └── json/ │ ├── norelease/ # 待审核故事 │ └── release/ # 已发布故事 ├── static/ │ └── main.js # 前端JavaScript └── templates/ ├── index.html # 主页面模板 ├── story_plaza.html # 故事广场页面 ├── admin_login.html # 管理员登录页面 └── admin_panel.html # 管理员后台页面

🚀 功能特性

核心功能

  • ✅ 房间创建和管理
  • ✅ 实时消息轮询
  • ✅ AI主持人对话
  • ✅ 在线用户显示
  • ✅ 题目上传和管理
  • ✅ 答案揭晓功能
  • ✅ 故事广场系统
  • ✅ 管理员后台
  • ✅ 一键开始功能

用户体验

  • ✅ 现代化UI设计
  • ✅ 响应式布局
  • ✅ 实时状态更新
  • ✅ 会话持久化
  • ✅ 错误处理
  • ✅ 故事编号系统
  • ✅ 自定义输入编号

技术特性

  • ✅ 线程安全的消息处理
  • ✅ 心跳检测机制
  • ✅ 消息历史记录
  • ✅ 用户权限管理
  • ✅ 文件系统存储
  • ✅ 故事审核机制

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🆘 常见问题

Q: 如何获取OpenAI API密钥?

A: 访问 OpenAI官网 注册账号并生成API密钥。

Q: 支持哪些AI模型?

A: 支持所有OpenAI提供的模型,推荐使用 o3-mini-2025-01-31 或 gpt-4o-mini。

Q: 房间会永久保存吗?

A: 房间数据存储在内存中,服务器重启后会丢失。但故事广场的故事会永久保存。

Q: 最多支持多少玩家?

A: 理论上无限制,但建议单房间不超过20人以保证性能。

Q: 如何上传故事到广场?

A: 在故事广场页面填写故事名称,选择JSON文件上传,等待管理员审核。

Q: 故事编号是如何生成的?

A: 系统自动分配编号(如#00001),编号在config.json中维护,重启后继续递增。

Q: 上传文件有什么限制?

A: 只支持JSON格式文件,文件大小不能超过20MB。

📞 联系方式

如有问题或建议,请通过以下方式联系:


享受你的海龟汤推理游戏! 🐢

Turtle_Soup 由 mumuhaha 构建

About

AI当主持人玩海龟汤(可以和朋友一起玩)

Language
HTML33.5%
JavaScript31%
Python23.5%
Markdown11.6%
Others0.4%