摘要
1) 一句话总结 LLM Council 是一个实验性的本地 Web 应用,它通过 OpenRouter 汇聚多个大语言模型进行独立回答与匿名交叉审查,最终由指定的“主席”模型汇总生成综合回答。
2) 关键要点
- 核心机制:打破向单一模型提问的常规,将多个 LLM 组合成“委员会”共同处理用户查询。
- 三阶段处理流程:
- 阶段一(初步收集):所有模型独立回复,结果以标签页形式并排展示。
- 阶段二(匿名审查):各模型在匿名状态下相互阅读回复,并根据准确性和见解进行排名。
- 阶段三(最终生成):由指定的“主席(Chairman)”模型汇总所有意见,输出单一的最终答案。
- 轻量级技术栈:后端采用 FastAPI (Python 3.10+)、async httpx 和 OpenRouter API;前端使用 React + Vite 和 react-markdown;对话数据以 JSON 格式保存在本地。
- 配置与自定义:需通过
.env文件配置 OpenRouter API 密钥,用户可编辑backend/config.py自定义委员会的模型成员。 - 开发理念:该项目是作者周末“凭感觉编写(Vibe coded)”的产物,鼓励用户直接让自己的 LLM 按需修改项目代码。
3) 风险与不足
- 无官方支持与维护:项目按“原样(as is)”提供,作者明确表示不提供任何形式的支持,也不打算对其进行改进。
- API 费用消耗:使用该应用强依赖 OpenRouter API,用户必须确保账户内有足够的额度(Credits)或已开启自动充值。
功能与定位
LLM Council 是一个简单的本地 Web 应用程序,界面类似 ChatGPT。它的核心理念是打破向单一的大语言模型(LLM)提问的常规,而是将多个模型组合成一个“LLM 委员会”。该应用通过 OpenRouter 将用户的查询同时发送给多个 LLM,让它们相互审查和评分,最后由一个指定的“主席(Chairman)”模型生成最终的综合回答。
典型使用场景
- 在与 LLM 共同阅读书籍等过程中,并排探索和评估多个不同 LLM 的输出表现。
- 查看不同模型对同一问题的交叉意见和相互评价。
核心功能
应用在处理用户查询时分为三个主要阶段:
- 初步意见收集(Stage 1):将用户的提问分别发送给委员会中的所有 LLM。收集到的独立回复会以“标签页(tab view)”的形式展示,方便用户逐一查看。
- 匿名交叉审查(Stage 2):每个 LLM 都会收到其他 LLM 的回复内容。在此过程中,模型的身份会被匿名化处理以防止偏袒。系统会要求 LLM 根据准确性和见解对这些回复进行排名。
- 生成最终回答(Stage 3):由指定的“主席”模型接管,它会汇总所有模型的回复和意见,编译并输出一个单一的最终答案呈现给用户。
特色与差异点
- 实验性与极简理念:该项目是作者在周末出于兴趣“Vibe coded(凭感觉编写)”的产物。作者认为在当前环境下“代码是短暂的,库已经过时”,鼓励用户直接让自己的 LLM 按需修改该项目的代码。
- 轻量级技术栈:
- 后端:FastAPI (Python 3.10+)、async httpx、OpenRouter API。
- 前端:React + Vite、react-markdown(用于渲染)。
- 存储:对话数据以 JSON 文件形式保存在本地
data/conversations/目录中。
使用方式概览
- 安装依赖:使用
uv进行 Python 后端包管理,使用npm管理前端 JavaScript 依赖。 - 配置 API 密钥:在项目根目录创建
.env文件,填入从 OpenRouter 获取的 API 密钥。 - 配置模型(可选):可通过编辑
backend/config.py文件来自定义委员会的模型成员。 - 运行应用:可通过启动脚本或手动分别启动后端和前端终端,随后在浏览器中访问本地地址即可使用。
限制与注意事项
- 无官方支持与维护:项目按“原样(as is)”提供,仅供他人获取灵感。作者明确表示不会提供任何形式的支持,也不打算对其进行改进。
- API 费用:使用该项目需要 OpenRouter 账户,并确保已购买足够的额度(Credits)或开启了自动充值。