LLM Council:让多个大模型互相评审并汇总最终答案的本地 Web 应用
LLM Council 是 karpathy 开源的本地 Web 应用,界面类似 ChatGPT,但通过 OpenRouter 把你的问题同时发给多个 LLM,再让各模型匿名互评并排序,最后由指定的 Chairman 模型汇总输出一个最终答案。项目为周末兴趣性质的 99% vibe coding 作品,作者声明不提供支持、不打算继续改进。
社区作者 · zZz
它解决什么问题
LLM Council 的核心思路是:不要只问一个你喜欢的大模型(例如 OpenAI GPT 5.1、Google Gemini 3.0 Pro、Anthropic Claude Sonnet 4.5、xAI Grok 4 等),而是把它们组成一个“LLM 委员会(LLM Council)”。该仓库是一个简单的本地 Web 应用,外观与 ChatGPT 类似,区别在于它使用 OpenRouter 把查询发送给多个 LLM,然后让它们互相审阅并给彼此的输出排名,最后由一个 Chairman LLM 生成最终回复。
提交一次查询后的完整流程分为三个阶段:
- 阶段 1:First opinions(初始意见)。用户查询分别发给所有 LLM,收集各自的回答。各个回答以“标签页视图(tab view)”展示,用户可以逐个查看全部结果。
- 阶段 2:Review(评审)。每个 LLM 都会拿到其他 LLM 的回答。在底层实现中,LLM 的身份被匿名化,避免模型在评判输出时“偏袒自己人”。模型被要求按准确性和洞察力对它们进行排名。
- 阶段 3:Final response(最终回复)。被指定的委员会主席(Chairman)收集所有模型的回答,整合成单一的最终答案呈现给用户。
Vibe Code Alert(作者原话要点):该项目 99% 是“氛围编程”出来的周末娱乐性黑客项目,起因是作者想在与 LLM 一起读书的过程中并排探索和评估多个 LLM。并排查看多个回答、以及各 LLM 对彼此输出的交叉意见,既有趣也有用。作者不会以任何方式提供支持,代码按原样提供仅供他人获得灵感,也不打算改进它。作者认为如今代码是短暂的、库的时代已经过去,可以让你的 LLM 按你喜欢的任何方式去修改它。
技术栈:
- 后端:FastAPI(Python 3.10+)、异步 httpx、OpenRouter API
- 前端:React + Vite,使用 react-markdown 渲染
- 存储:data/conversations/ 目录下的 JSON 文件
包管理:
Python 使用 uv,JavaScript 使用 npm
配图 1 为该项目的 header 图片(llmcouncil 头图)。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
准备环境:需要 Python 3.10+、uv 包管理器、Node.js/npm,以及一个 OpenRouter API Key 和相应额度。
项目使用 uv 进行项目管理。 后端:
- 安装依赖
uv sync前端:
cd frontendnpm installcd ..在项目根目录创建 .env 文件:
- 配置 API Key
OPENROUTER_API_KEY=sk-or-v1-...API Key 在 openrouter.ai 获取。请确保购买所需额度,或注册自动充值(automatic top up)。
编辑 backend/config.py 自定义委员会成员,示例配置: COUNCIL_MODELS = [ "openai/gpt-5.1" , "google/gemini-3-pro-preview" , "anthropic/claude-sonnet-4.5" , "x-ai/grok-4" , ] CHAIRMAN_MODEL = "google/gemini-3-pro-preview"
- 配置模型(可选)
运行应用 方式一:使用启动脚本
./start.sh方式二:手动运行 终端 1(后端):
uv run python -m backend.main终端 2(前端):
cd frontendnpm run dev然后在浏览器中打开 http://localhost:5173 。
首次运行与常见问题提示:
- 必须先完成 API Key 配置并保证 OpenRouter 账户有余额,否则无法调用多个模型。
- 会话记录以 JSON 文件形式保存在 data/conversations/ 目录下。
- 作者声明该项目不提供任何支持、不打算继续改进,遇到问题可让 LLM 按需修改代码。