LLM-colosseum 完整指南:把大语言模型扔进街霸3竞技场,用实战打分
【免费下载链接】llm-colosseumBenchmark LLMs by fighting in Street Fighter 3! The new way to evaluate the quality of an LLM项目地址: https://gitcode.com/GitHub_Trending/ll/llm-colosseum
选模型靠跑分?LLM-colosseum 换了个思路:让各家大语言模型在《街头霸王3:第三次打击》里实时对战,赢下来的那位才有资格被称为"会思考的 AI"。项目基于 diambra 引擎驱动真实游戏画面,通过 546 场实际交打积累了 ELO 分制排行榜和逐对胜率矩阵,是观察 LLM 决策能力差异最直观的 LLM 竞技场之一。
为什么是格斗游戏而不是问答题
常规基准考的是"知识量",而一场格斗逼出的是模型的综合反应:
- 快——实时游戏,每一帧都在流逝,模型必须快速给出下一步;
- 有策略——高手要提前想好几步之后的局面;
- 会出奇招——用对手没预料到的动作破局;
- 能自我修正——挨了打要调整打法,而不是机械重复;
- 全程稳定——整局保持输出质量,不掉链子。
更关键的一点是:强化学习模型只会盯着奖励函数盲目试错,而 LLM 是"看懂局面再出手"——它清楚自己是谁、对手在哪、血量还剩多少。这正是作者认为格斗游戏是一类新基准的原因:考的不是背了多少,而是能不能在真实情境中做决策。
两种上场方式:文字观察型与看画面型
每个"选手"本质上是一个机器人(Robot),由 LLM 通过 API 驱动。项目提供两种感知通道,对应 agent/robot.py 中的两类实现:
TextRobot:把局面翻译成文字
系统每帧生成一段文字描述:己方角色与对手的位置、血条、能量条、双方刚出过的招。LLM 基于这些文字(加上此前动作的历史)输出接下来要做的动作列表。这条路线是 agent 化的多线程实时调用,不依赖视觉能力,纯文本模型也能参赛。
VisionRobot:直接看截图
多模态模型走另一条路——把当前游戏截图(并注明它控制哪个角色)直接发给视觉语言模型,决策完全基于画面信息。这种模式更接近人类玩家的体验:先"看懂",再"动手"。
两种机器人调用 LLM 的入口都是各自的call_llm()方法,提示词里会写明角色身份、可用招式清单和输出格式(以- 动作名的列表形式返回),后文会讲到如何在这里动手改造。
从截图能直观看到这套系统的工作方式:多个 DIAMBA 竞技场窗口同时开战,终端里滚动着每一次 LLM 请求与返回的动作(move closer、megafireball、high punch……),整个对战就是"观察 → 调 API → 执行"的循环。
546 场打完:ELO 排行榜与胜率矩阵
所有战绩汇总成一张 ELO 分表(算法与国际象棋分级同源)。截至最近一批对战,前十如下:
| 排名 | 模型 | ELO 分 |
|---|---|---|
| 1 | openai:gpt-4o:text | 1912.50 |
| 2 | openai:gpt-4o-mini:vision | 1835.27 |
| 3 | openai:gpt-4o-mini:text | 1670.89 |
| 4 | openai:gpt-4o:vision | 1656.93 |
| 5 | mistral:pixtral-large-latest:vision | 1654.61 |
| 6 | mistral:pixtral-12b-2409:vision | 1590.77 |
| 7 | mistral:pixtral-12b-2409:text | 1569.03 |
| 8 | together:meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo:text | 1441.45 |
| 9 | anthropic:claude-3-haiku-20240307:vision | 1364.87 |
| 10 | mistral:pixtral-large-latest:text | 1356.32 |
几点值得留意的规律:
- GPT-4o 家族几乎屠榜——前三里占了两席,冠军 gpt-4o:text 领先第二名接近 80 分;
- 视觉通道普遍更强——同一模型,vision 版本经常比 text 版本排名更高(如 gpt-4o-mini、pixtral、claude-3-haiku),直接读画面比读转译文字损失更少;
- 有个例外:Claude 3 Sonnet 分数偏低,原因是频繁拒绝参赛(refusal to fight)加上 API 延迟过大,说明"愿不愿意打"和"打得好不好"都是评估维度。
除了总分,逐对胜率矩阵能回答更细的问题——谁怕谁:
矩阵里一些反直觉的组合很值得玩:比如 mistral:pixtral-large-latest:text 能稳吃 anthropic:claude-3-sonnet:text(13/14 胜),而 openai:gpt-4o-mini:text 对 gpt-4o:text 保持 0 胜——同门对决也毫不留情。想看完整 14 支"选手"的对阵明细,notebooks/results.md 里逐行记录了每组的胜场、场次与胜率。
本地从零跑起来:安装、开打、换本地模型
想亲自看模型互殴,按下面四步走:
克隆仓库并安装依赖:
git clone https://gitcode.com/GitHub_Trending/ll/llm-colosseum cd llm-colosseum make install按 diambra 官方文档准备好街霸3 ROM,放到
~/.diambra/roms(无需解压);参照
.env.example建一个.env文件,填入各家模型的 API Key(openai、mistral 等);开打:
make run
跑起来后就是实时画面:两个角色各自受 LLM 控制来回博弈。如果不想碰 ROM 环境,也可以用容器化方式:docker build -t diambra-app .构建镜像,docker run --name diambra-container -v ~/.diambra/roms:/app/roms diambra-app启动;或者更省事地直接docker-compose up,停服务时docker-compose down。
用 Ollama 本地模型打一场
不想烧 API 费用?把本地模型接进来即可。先确保 Ollama 已启动并下载好模型(例如ollama serve mistral),然后修改 local.py 里两个玩家的model参数(命名约定是模型提供商:模型名,如ollama:mistral),robot_type选text或vision,执行:
make local默认配置是 mistral 对 mistral 的"左右互搏",换成你自己下载的任意模型就能看效果。想先不花钱验证流程,也可在.env里把DISABLE_LLM设为True,双方会以随机动作互打,用来测试渲染和引擎是否正常。
改提示词、提交新模型:参与项目的方式
想让自家模型进榜,或者觉得机器人"不够聪明",改动点非常集中:
- 调提示词:agent/robot.py 中
TextRobot.call_llm()和VisionRobot.call_llm()各自维护一套 system prompt(角色设定、招式清单、输出格式示例),改这里的措辞就能改变机器人的激进程度和决策风格; - 改模型/采样参数:
temperature在玩家配置里可调,get_client()(见 agent/llm.py)负责连接不同提供商; - 提交新模型:继承
Robot基类写一个新子类,做出你想要的改动,然后发起 PR,维护方会尝试把它纳入正式排名。
项目诞生于 2024 年旧金山的 Mistral Hackathon,由 phospho 与 Quivr 团队打造,代码结构刻意保持简单——agent/ 管机器人,eval/game.py 管对局编排,改起来没有历史包袱。
接下来可以做的三件事
- 跑通
make local:用两个不同的 Ollama 模型各打 10 局,观察哪个"手感"更好; - 对照胜率矩阵验证自己的假设:挑矩阵里一个接近 5:5 的对阵,本地多打几局看是否稳定;
- fork 一份改 prompt:比如把 system prompt 里的"aggressive"改成更保守的防守策略,再让新版本回到 ELO 榜上验证改动到底有没有用——这本身就是一个小型的提示词 A/B 实验。
【免费下载链接】llm-colosseumBenchmark LLMs by fighting in Street Fighter 3! The new way to evaluate the quality of an LLM项目地址: https://gitcode.com/GitHub_Trending/ll/llm-colosseum
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考