llm-colosseum

GitHub
1.5k 178 中等 1 次阅读 今天MIT开发框架语言模型其他
AI 解读 由 AI 自动生成,仅供参考

llm-colosseum 是一款极具创意的开源项目,它让大语言模型(LLM)在经典格斗游戏《街头霸王 3》中实时对战,以此作为评估模型能力的全新基准。传统评测往往依赖静态数据集,而 llm-colosseum 通过高动态的游戏环境,直观地检验模型在快速决策、战略预判、灵活应变及抗压能力等方面的综合表现。

该项目解决了现有评测方式难以衡量模型在复杂、实时交互场景下“智能程度”的痛点。在这里,模型不仅需要理解屏幕画面或文本描述,还要像人类玩家一样思考后续几十步的走位,并根据对手动作即时调整策略。其技术亮点在于支持纯文本与多模态(视觉)两种控制模式:文本机器人依靠游戏状态描述进行决策,而视觉机器人则直接分析游戏截图,充分展现了多模态模型的环境感知优势。

llm-colosseum 非常适合 AI 研究人员、开发者以及对大模型性能评估感兴趣的技术爱好者使用。研究人员可借此探索模型在强化学习之外的上下文理解能力;开发者能对比不同模型在实时任务中的延迟与逻辑表现;普通用户也能通过观看"AI 大乱斗”的演示,直观感受当前顶尖模型的智力差异。目前项目已公开部分对战数据与 ELO 排行榜,为社区提供了一种有趣且严谨的模型比拼新范式。

使用场景

某 AI 实验室团队正在为一款实时策略游戏筛选最优的决策模型,需要在众多开源大模型中快速锁定反应快、策略强的候选者。

没有 llm-colosseum 时

  • 评估维度单一:传统基准测试仅关注文本生成质量,无法衡量模型在动态环境下的实时决策与应变能力。
  • 开发成本高昂:团队需手动搭建复杂的游戏仿真环境并编写强化学习奖励函数,耗时数周才能完成一次有效评测。
  • 缺乏直观对比:难以直观判断不同模型在“高压”对抗中的表现差异,往往依赖抽象的分数报表,导致选型决策模糊。
  • 忽略多模态能力:纯文本测试无法验证模型通过视觉截图理解战场局势的能力,遗漏了多模态模型的关键优势。

使用 llm-colosseum 后

  • 场景化实战测评:直接让大模型在《街头霸王 3》中实时互搏,通过胜负结果直观检验模型的反应速度、战术规划及抗压韧性。
  • 零门槛快速部署:无需从头构建仿真器,利用现有 API 即可让文本或多模态模型化身格斗家,几分钟内启动大规模对抗实验。
  • 量化排名清晰:基于真实的对战数据自动生成 ELO 积分排行榜和胜率矩阵,精准识别出如 GPT-4o 等兼具速度与智慧的顶尖模型。
  • 全面覆盖模态:同时支持纯文本描述与视觉截图输入,充分挖掘并对比了多模态模型在感知环境与执行操作上的独特潜力。

llm-colosseum 将抽象的模型能力评估转化为直观的格斗竞技,用最低成本揭示了大模型在实时复杂任务中的真实战斗力。

运行环境要求

操作系统
  • 未说明 (基于 Diambra Arena,通常支持 Linux/Windows/macOS)
GPU
  • 非必需
  • 若使用本地大模型(如通过 Ollama),需根据具体模型决定
  • 若仅调用云端 API 则无 GPU 要求
内存

未说明 (取决于是否运行本地模型及模型大小)

依赖
notes1. 核心依赖是 Diambra Arena 框架,需按其文档安装并手动下载《街头霸王 3》ROM 文件至 ~/.diambra/roms 目录。 2. 该工具主要设计为通过 API 调用云端模型(如 OpenAI, Mistral, Anthropic 等),因此默认运行无需高性能本地硬件。 3. 若需在本地运行模型,推荐使用 Ollama,并在 .env 文件中配置或修改 local.py 脚本。 4. 支持 Docker 和 Docker Compose 部署方式。 5. 可通过设置 DISABLE_LLM=True 进入测试模式(随机动作)。
python3.x (未指定具体小版本,建议使用现代 Python 3 环境)
diambra-arena
ollama (可选,用于本地模型)
requests (隐含,用于 API 调用)
python-dotenv
llm-colosseum hero image

快速开始

使用街霸III实时评估大语言模型

colosseum-logo

让大语言模型在街霸III中进行实时对决。

究竟哪款大语言模型会成为最出色的格斗家呢?

演示: 立即在浏览器中体验!

我们的评判标准 🔥

它们需要具备以下特质:

  • 快速:这是一场实时对战,迅速的决策至关重要。
  • 聪明:优秀的格斗家能够提前规划五十步棋。
  • 创新思维:用出其不意的招式智胜对手。
  • 适应性强:从错误中学习并调整策略。
  • 坚韧不拔:在一整场比赛中始终保持高RPS(每秒请求率)。

战斗开始吧 🥷

1对1:Mistral 7B vs Mistral 7B

https://github.com/OpenGenerativeAI/llm-colosseum/assets/19614572/79b58e26-7902-4687-af5d-0e1e845ecaf8

1对1 × 6:Mistral 7B vs Mistral 7B

https://github.com/OpenGenerativeAI/llm-colosseum/assets/19614572/5d3d386b-150a-48a5-8f68-7e2954ec18db

一种全新的基准测试?

街霸III能够评估大语言模型理解环境并在特定情境下采取行动的能力。与基于奖励函数盲目行动的强化学习模型不同,大语言模型完全了解当前情境,并据此做出相应决策。

结果

截至目前,我们已进行了546场对决,得出了如下排行榜。每个大语言模型都根据其战绩获得了ELO评分。

排行榜

Huggingface排名

ELO排名

排名 模型 评分
1 🥇openai:gpt-4o:text 1912.5
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
11 anthropic:claude-3-haiku-20240307:text 1333.6
12 anthropic:claude-3-sonnet-20240229:vision 1314.61
13 together:meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo:vision 1269.84
14 anthropic:claude-3-sonnet-20240229:text 1029.31

注:在我们的实验中,Claude 3 Sonnet得分较低,主要是因为多次拒绝战斗以及API延迟较大。

胜率矩阵

胜率矩阵

解释

每位玩家可以由文本生成模型或多模态模型控制。我们通过API端点调用这些模型。了解更多关于模型的信息:

文本机器人

我们会向LLM发送屏幕的文本描述,LLM则决定其角色接下来将执行哪些动作。这些动作取决于它之前的行动、对手的动作、自身的能量条和生命值。

  • 基于智能体

  • 多线程

  • 实时

    fight3 drawio

视觉机器人

我们会向LLM发送当前游戏状态的截图,并明确指出它所控制的角色。它的决策完全基于这些视觉信息。

安装

  • 按照 https://docs.diambra.ai/#installation 中的说明操作。
  • 下载ROM文件并将其放入 ~/.diambra/roms 目录中(无需解压内容)。
  • (可选)创建并激活一个新的Python虚拟环境 venv
  • 使用 make installpip install -r requirements.txt 安装依赖项。
  • 创建一个 .env 文件,并按照 .env.example 文件中的内容填写。
  • 运行 make run

使用Docker运行

您也可以使用Docker来运行该应用。

构建Docker镜像

要构建Docker镜像,请使用以下命令:

docker build -t diambra-app .

运行Docker容器

要运行Docker容器,请使用以下命令:

docker run --name diambra-container -v ~/.diambra/roms:/app/roms diambra-app
  • 如果遇到容器名称冲突,可以先移除现有容器:
docker rm diambra-container

在本地使用Ollama运行Docker Compose

要启动服务,请使用以下命令:

docker-compose up

停止服务

要停止服务,请使用:

docker-compose down

测试模式

若要禁用LLM调用,可在.env文件中将DISABLE_LLM设置为True。此时系统将随机选择动作。

日志记录

可在script.py文件中更改日志级别。

本地模型

您还可以使用Ollama在本地模型上运行竞技场。

  1. 确保已安装并运行Ollama,且已下载所需模型(例如,在终端中运行 ollama serve mistral)。

  2. 运行 make local 即可开始对战。

默认情况下,系统会使用Mistral模型进行对战。如需使用其他模型,需在 local.py 文件中修改 model 参数。

from eval.game import Game, Player1, Player2

def main():
    # 环境设置

    game = Game(
        render=True,
        save_game=True,
        player_1=Player1(
            nickname="Baby",
            model="ollama:mistral",
            robot_type="text",  # vision或text
            temperature=0.7,
        ),
        player_2=Player2(
            nickname="Daddy",
            model="ollama:mistral",
            robot_type="text",
            temperature=0.7,
        ),
    )

    game.run()
    return 0


if __name__ == "__main__":
    main()

我们使用的命名规范是 model_provider:model_name。如果您想使用除Mistral之外的其他本地模型,可以写成 ollama:some_other_model

如何让我的LLM模型参与游戏?我能否改进提示词?

LLM是在agent/robot.py文件中的<Text||Vision>Robot.call_llm()方法中调用的。

TextRobot方法:

    def call_llm(
        self,
        max_tokens: int = 50,
        top_p: float = 1.0,
    ) -> Generator[ChatResponse, None, None]:
        """
        向语言模型发起API调用。

        编辑此方法以改变机器人的行为!
        """

        # 生成提示词
        move_list = "- " + "\n - ".join([move for move in META_INSTRUCTIONS])
        system_prompt = f"""你是世界上最好、最激进的街头霸王III第三击玩家。
你的角色是{self.character}。你的目标是击败对手。请以项目符号列表的形式回复可执行的动作。
{self.context_prompt()}
你可以使用的招式有:
{move_list}
----
请以项目符号列表的形式回复动作,格式为:`- <动作名称>`,每行一个动作。
例如,如果对手很近:
- 靠近
- 中拳

例如,如果对手较远:
- 火焰拳
- 靠近"""
        
        start_time = time.time()

        client = get_client(self.model, temperature=self.temperature)

        messages = [
            ChatMessage(role="system", content=system_prompt),
            ChatMessage(role="user", content="你接下来的动作是:"),
        ]
        resp = client.stream_chat(messages)

        logger.debug(f"向{self.model}发出的LLM调用:{system_prompt}")
        logger.debug(f"向{self.model}发出的LLM调用:耗时{time.time() - start_time}秒")

        return resp

VisionRobot方法:

def call_llm(
        self,
        max_tokens: int = 50,
        top_p: float = 1.0,
    ) -> Generator[CompletionResponse, None, None]:
        """
        向语言模型发起API调用。

        编辑此方法以改变机器人的行为!
        """

        # 生成提示词
        move_list = "- " + "\n - ".join([move for move in META_INSTRUCTIONS])
        system_prompt = f"""你是世界上最好、最激进的街头霸王III第三击玩家。
你的角色是{self.character}。你的目标是击败对手。请以项目符号列表的形式回复可执行的动作。

当前的游戏状态如下面的图片所示。

你可以使用的招式有:
{move_list}
----
请以3个动作的项目符号列表形式回复。格式为:`- <动作名称>`,每行一个动作。
例如,如果对手很近:
- 靠近
- 中拳

例如,如果对手较远:
- 火焰拳
- 靠近"""

        start_time = time.time()

        client = get_client_multimodal(
            self.model, temperature=self.temperature
        )  # 多模态LLM

        resp = client.stream_complete(
            prompt=system_prompt, image_documents=[self.last_image_to_image_node()]
        )

        logger.debug(f"向{self.model}发出的LLM调用:{system_prompt}")
        logger.debug(f"向{self.model}发出的LLM调用:耗时{time.time() - start_time}秒")

        return resp

您可以在这些函数中自定义您的提示词。

提交您的模型

创建一个继承自Robot的新类,并在其中加入您希望做的修改,然后提交一个PR。

我们会尽力将其加入排名!

致谢

由OpenGenerativeAI团队在Mistral黑客马拉松2024期间于旧金山使用❤️制作,成员来自phospho(@oulianov @Pierre-LouisBJT @Platinn)和Quivr(@StanGirard)。

版本历史

v0.0.32024/11/20
v0.0.22024/10/09
v0.0.12024/03/24

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|3天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

144.7k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|2天前
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|昨天
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent