多智能体语言艺术平台 — 让 105 位历史角色用 AI 同台对话
ChatArena 是一个基于本地大语言模型的多智能体互动平台。16 种互动场景、12 种内容生成流水线、105 位内置角色——李白和爱因斯坦辩论、诸葛亮主持狼人杀、苏轼参加脱口秀大赛,全部由本地 LLM 驱动,无需云端 API。
| 层 | 技术 |
|---|---|
| 后端 | Python 3.10+ / FastAPI / SQLAlchemy (async) / SQLite |
| 前端 | 原生 HTML + CSS + JavaScript SPA(Hash 路由) |
| LLM | Ollama 原生 API / OpenAI 兼容 API |
| 测试 | pytest + pytest-asyncio (146 个测试用例) |
# 安装依赖
pip3 install -e ".[dev]"
# 启动服务
python3 start.py
# → http://localhost:5200前置条件:需要本地运行 LLM 服务(如 Ollama),在 Settings 页面配置模型连接。
python3 -m pytest tests/ -v
python3 -m pytest tests/ -v --cov=server --cov-report=term-missing| 场景 | 说明 | 场景 | 说明 |
|---|---|---|---|
| 💬 聊天室 | 多角色自由聊天 | 🔮 塔罗牌 | 塔罗牌占卜 |
| ⚔️ 辩论 | 结构化辩论对决 | 💕 相亲 | 相亲角模拟 |
| 📋 会议室 | 多角色会议模拟 | 🔍 剧本杀 | 推理解谜游戏 |
| 🎤 开放麦 | 开放麦表演 | ⏰ 穿越辩论 | 跨时代人物辩论 |
| 📜 飞花令 | 古诗词飞花令 | 💼 创业路演 | 创业项目路演 |
| 🎯 穿越面试 | 跨时代面试模拟 | 🔥 吐槽大会 | 吐槽对抗 |
| 🎭 脱口秀大赛 | 脱口秀竞技 | ⚖️ 法庭审判 | 模拟法庭 |
| 📺 真人秀 | 真人秀模拟 | 🐺 狼人杀 | 狼人杀桌游 |
| 分类 | 说明 | 分类 | 说明 |
|---|---|---|---|
| 😂 笑话 | 多风格笑话生成与评分 | 📖 评书 | 评书风格叙事 |
| 🎭 相声 | 对口相声(逗哏/捧哏) | 🪘 快板 | 快板书创作 |
| 🎤 脱口秀 | 脱口秀段子生成与评价 | 🎬 小品 | 小品剧本生成 |
| 🗣️ 辩论 | 正反方辩论与裁判 | 🎭 双簧 | 双簧表演脚本 |
| 🧠 逻辑 | 逻辑谬误分析 | 🎙️ 诗朗诵 | 朗诵诗文创作 |
| 🪘 三句半 | 三句半创作 |
用户请求
↓
FastAPI 路由(23 个 API 模块)
↓
AgentEngine — 编排层
├─ 解析智能体(WriterAgentConfig 统一表)
├─ 委托 PipelineRegistry 按分类路由
↓
Pipeline(11 个独立实现)
├─ Writer Agent → LLM 生成内容
├─ Audience Agent → LLM 评价打分
├─ AgentInteractions → 多轮对话管理
└─ 持久化到 SQLite
↓
返回结果(同步 JSON / SSE 流式)
- AgentRunner: 通用 LLM 调用器,每个角色独立的 system_prompt + output_format
- PipelineRegistry: 分类 → Pipeline 映射,支持运行时注册
- AgentEngine: 统一编排,处理智能体解析、错误恢复、结果聚合
105 位角色分 12 个类别:
| 类别 | 代表角色 |
|---|---|
| 中国古代文人 | 李白、杜甫、苏轼、辛弃疾、李清照、陶渊明、白居易、王维、曹雪芹 |
| 诸子百家 | 孔子、庄子、老子、孙子、韩非子、孟子 |
| 近现代作家 | 鲁迅、胡适、钱钟书、张爱玲、老舍、沈从文、林语堂 |
| 西方哲学家 | 苏格拉底、柏拉图、亚里士多德、尼采、伏尔泰、黑格尔、罗素 |
| 科学家 | 爱因斯坦、牛顿、达尔文、特斯拉、居里夫人、霍金、费曼、图灵 |
| 艺术家 | 莎士比亚、莫扎特、贝多芬、米开朗基罗、达芬奇 |
| 游戏角色 | 林克、马里奥、阿尔萨斯、2B、克劳德、希尔瓦娜斯 |
| 历史人物 | 诸葛亮、华佗、鲁班、康熙皇帝、伊丽莎白一世、拿破仑 |
| 网络文化 | 北京朝阳大妈、豆瓣文艺青年、知乎大V、B站弹幕众、AI 研究员 |
| 跨界角色 | 维京海盗船长、中世纪骑士、丝绸之路商人、NASA 宇航员 |
支持自定义创建、编辑、复制智能体。
核心表: writer_agent_configs(统一智能体)、ai_configs(模型配置)、joke_sessions / jokes / audience_feedbacks(Pipeline 生成)、agent_interactions(对话记录)
游戏表: 16 组三表结构(session + participant + message),共 48 张表
POST /api/generate # 同步生成
POST /api/generate/stream # SSE 流式生成
GET /api/agents # 列出智能体
POST /api/agents # 创建智能体
PUT /api/agents/{id} # 更新智能体
DELETE /api/agents/{id} # 删除智能体
POST /api/agents/{id}/copy # 复制智能体
GET /api/history/games # 统一历史(跨 17 张表聚合)
GET /api/history/{id} # 会话详情
DELETE /api/history/{id} # 删除会话
GET /api/settings # 获取设置
POST /api/settings/ai # 创建模型配置
POST /api/settings/ai/test # 测试连接
ChatArena 中所有智能体角色的人设、性格特征、说话风格和观点均为虚构创作,仅供娱乐和学习目的。这些角色人设不代表任何真实人物(历史人物、公众人物或虚构角色版权所有者)的实际观点、言行或立场。





