Thanks to visit codestin.com
Credit goes to github.com

Skip to content

在一场由两名人类和一名机器(随机16人格)组成的模拟图灵测试对局中,人类审讯者需在五分钟的文字交谈中分辨出与自己所交流的哪一名证人才是真正的人类,机器人则尽力模拟人类对话。

License

Notifications You must be signed in to change notification settings

iammm0/turingtest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Turing Test Logo

Turing Test

version license

在一场由两名人类和一名机器组成的模拟图灵测试对局中,人类审讯者需在五分钟的文字交谈中分辨出与自己所交流的哪一名证人才是真正的人类,机器人则尽力模拟人类对话。

新增特性

  • 引入 MBTI 16 人格(含 A/T 共 32 种)作为 AI 证人的提示词集合,匹配前玩家可选择 8-32 种人格缩小范围。
  • 支持 Grok3、ChatGPT 与 DeepSeek 三种不同的 AI 客户端。

技术栈

  • 后端:FastAPI / SQLAlchemy / asyncpg / Redis / OAuth2 / WebSocket
  • 前端:Next.js / React / MUI / React Query / WebSocket
  • 数据库:PostgreSQL
  • 缓存与消息:Redis
  • 部署:Uvicorn / Docker / Nginx

项目结构

.
├── README.md
├── apps
│   ├── __init__.py
│   ├── api
│   │   ├── __init__.py
│   │   ├── alembic.ini
│   │   ├── core
│   │   ├── dto
│   │   ├── main.py
│   │   ├── migrations
│   │   ├── dao
│   │   ├── routers
│   │   ├── service
│   │   └── utils
│   └── web
│       ├── README.md
│       ├── components.json
│       ├── eslint.config.mjs
│       ├── next-env.d.ts
│       ├── next.config.ts
│       ├── package-lock.json
│       ├── package.json
│       ├── postcss.config.mjs
│       ├── public
│       ├── src
│       └── tsconfig.json
   └── prompts
        ├── system.json
├── docker
│   ├── api.Dockerfile
│   └── web.Dockerfile
├── docker-compose.yml
└── requirements.txt

本地数据库环境准备

启动 PostgreSQL 使用自定义端口:

:: 启动 PostgreSQL(端口改为 15432)
docker run -d --name turing_postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=iammm -e POSTGRES_DB=turing_test -p 15432:5432 postgres

启动 Redis 容器 使用自定义端口:

:: 启动 Redis(端口改为 16379)
docker run -d --name turing_redis -p 16379:6379 redis

PostgreSQL 容器内登录:

docker exec -it turing_postgres bash

然后在容器里执行:

psql -U postgres -d turing_test

进入 Redis 容器内:

docker exec -it turing_redis redis-cli

快速开始

1.克隆代码:

git clone https://.../turing-test.git
cd turing-test

2.环境变量:

在项目根目录创建 .env(或 .env.local),填写:

POSTGRES_HOST=…
POSTGRES_PORT=15432
POSTGRES_USER=…
POSTGRES_PASSWORD=…
POSTGRES_DB=…
REDIS_URL=redis://localhost:16379/0
NEXT_PUBLIC_WS_BASE=ws://localhost:8000/api
  1. 后端依赖 & 启动
cd apps/api
pip install -r requirements.txt
alembic upgrade head
uvicorn main:app --reload
  1. 前端依赖 & 启动
cd frontend
npm install
npm run dev

核心功能

  1. 用户认证
  • 注册 /api/auth/register

  • 登录 /api/auth/login

  • JWT 令牌管理 (有效期 30 天)

  1. 匹配系统
  • 握手:ws://…/api/ws/match?token=…
`join``match_found``accept/decline``matched
  1. 游戏流程
  • 玩家确认后创建 Game

  • 不同状态:WAITINGACTIVECHATJUDGEDENDED

API 文档

  1. HTTP Endpoints

方法 路径 描述 字段准备
POST /api/auth/register 用户注册 email, display_name, password
POST /api/auth/login 用户登录 email, password
  1. WebSocket 消息格式

进入匹配队列 WebSocket 连接:

ws://127.0.0.1:8000/api/ws/match?token=<access_token>

进入测试房间 WebSocket 连接

# 审讯者进入游戏
ws://127.0.0.1:8000/api/ws/rooms/<game_id>/I?token=<access_token>
# 人类证人进入游戏
ws://127.0.0.1:8000/api/ws/rooms/<game_id>/H?token=<access_token>
# AI证人进入游戏
ws://127.0.0.1:8000/api/ws/rooms/<game_id>/I

客户端→服务端

  • 加入匹配队列
{ 
  "action": "join"
}
  • 接受进入对局
{ 
  "action": "accept",
  "match_id": "..."
}
  • 拒绝进入对局
{ 
  "action": "decline", 
  "match_id": "..."
}
  • 向目标角色发送消息帧
{
  "sender": "H | I",
  "recipient": "H | I | A",
  "body": "...",
  "ts": "datatime.now(UTC)"
}

服务端→客户端

  • 对局匹配成功,系统分配对局与游戏
{ 
  "action": "match_found",
  "match_id": "...",
  "role": "I|W",
  "window": 60
}
  • 系统已经为玩家匹配到对局,等待玩家确认后开始
{ 
  "action": "matched",
  "game_id": "..."
}
  • 对局等待玩家响应超时,玩家从匹配队列长链接中断开
{ 
  "action": "error",
  "detail": "..."
}
  • 对局双方同意接受对局,系统发出游戏准备状态中的提示
{
  "action": "game_starting",
  "game_id": "...",
  "detail": "匹配成功,正在进入对局…"
}

About

在一场由两名人类和一名机器(随机16人格)组成的模拟图灵测试对局中,人类审讯者需在五分钟的文字交谈中分辨出与自己所交流的哪一名证人才是真正的人类,机器人则尽力模拟人类对话。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published