news 2026/10/1 20:31:05

MultiAgentBench 论文精读:用 MARBLE 复现 LLM agents 协作与竞争评测,TaoToken 统一 Key 跑通多模型对照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MultiAgentBench 论文精读:用 MARBLE 复现 LLM agents 协作与竞争评测,TaoToken 统一 Key 跑通多模型对照

1. 从论文到本地跑通:MultiAgentBench 到底在测什么

MultiAgentBench 是一套专门用来评估 LLM agents 协作与竞争能力的基准,配套框架叫 MARBLE(Multi-agent cooRdination Backbone with LLM Engine)。它要解决的问题很直接:以前的 AgentBench、GAIA、ToolBench 这些基准,测的都是单个 agent 的推理和工具调用,但真实场景里往往是多个 agent 一起干活——有的合作写提案,有的在狼人杀里互相骗。单 agent 基准根本测不出这种动态。

MultiAgentBench 的核心设计有三块。第一,多领域覆盖,包含科研协作、Minecraft 建造、数据库错误分析、协同编程四个合作类任务,外加狼人杀和讨价还价两个竞争类任务。第二,它不只算任务完成度,还用基于里程碑的 KPI 来衡量协作质量——每个任务被切成若干里程碑,一个 LLM 检测器持续判断哪些里程碑达成了、是谁贡献的。第三,它支持四种通信拓扑(星型、树型、图型、链型)和四种规划策略(直接提示、CoT、小组讨论、认知自进化规划)。

论文里几个值得记住的结论:gpt-4o-mini 拿到最高平均任务得分;图结构在研究场景中协调效果最好;认知规划把里程碑达成率提升了约 3%;小组讨论反而在所有指标上垫底,作者猜测是规划组太大拖了后腿。这些结论你想在本地复现,就需要一套能切换模型、切换拓扑、切换规划策略的实验环境。

问题来了:MARBLE 要跑多模型对照,你得同时接 OpenAI、Together AI 等好几家 API,每家的 Key、Base URL、模型名格式都不一样。我试过手动改环境变量切来切去,跑一组对照实验光配置就耗掉半小时。下面这套流程用 TaoToken 统一 Key 来管多模型,把配置成本压到最低。

2. 前置准备:TaoToken 统一 Key 与 MARBLE 环境搭建

MARBLE 的代码在 GitHub 上公开(ulab-uiuc/MARBLE),clone 下来之后你会发现它依赖函数调用能力,所以选的模型必须支持 function calling。论文里用了 Meta-Llama-3.3-70B、Meta-Llama-3.1-70B-Instruct-Turbo、Meta-Llama-3.1-8B-Instruct-Turbo、GPT-3.5-turbo-0125 和 GPT-4o-mini 五个模型。你自己复现时不一定要全跑,选两三个做对照就够。

关键问题是这些模型分散在不同供应商。OpenAI 的走官方 API,Llama 系列论文里走的是 Together AI。如果你要加 DeepSeek 系列做扩展实验,又是另一个端点。TaoToken 的作用是把这些统一到一个 API 入口,你只需要一个 Key,通过改 model 参数就能切换底层模型。

先去 TaoToken 控制台创建一个 API Key。地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,登录后在 API Keys 页面点创建,复制出来的 Key 形如sk-xxxxxxxx。这个 Key 同时能调 GPT 系列、Claude 系列和主流开源模型,省掉你分别注册多家平台的麻烦。

拿到 Key 之后,在 MARBLE 项目根目录建一个.env文件。MARBLE 的配置读取逻辑在marble/configs/下面,不同场景有各自的 config 文件,但 API 相关的环境变量是全局的。你需要设置三个核心变量:Base URL 指向 TaoToken 的 API 端点,API Key 填你刚创建的,模型名按场景 config 里的字段来。

# .env 文件,放在 MARBLE 项目根目录 OPENAI_API_KEY=sk-你的TaoToken密钥 OPENAI_BASE_URL=https://taotoken.net/api # 如果 MARBLE 代码里用的是 openai 库的 client 初始化 # 它会自动读取上面两个环境变量

这里有个坑要注意:MARBLE 部分模块可能硬编码了https://api.openai.com/v1,你需要全局搜一下base_url或api_base关键字,把它改成从环境变量读取。通常在marble/agents/或marble/llm/目录下的 client 初始化代码里。改完之后,所有走 OpenAI 兼容接口的模型调用都会经过 TaoToken。

模型清单方面,你需要在场景 config 里指定每个 agent 用哪个模型。以研究场景为例,config 文件里会有类似agent_model: "gpt-4o-mini"的字段。如果你想做多模型对照,就复制一份 config,把模型名换成Meta-Llama-3.3-70B或DeepSeek系列。TaoToken 支持的模型 ID 可以在模型对话页面查到:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite ,页面上能直接切换模型看效果,确认哪个模型 ID 可用再写进 config。

Python 环境用 3.10 以上,依赖装法:

git clone https://github.com/ulab-uiuc/MARBLE.git cd MARBLE python -m venv venv source venv/bin/activate # Windows 用 venv\Scripts\activate pip install -r requirements.txt

如果 requirements 里有openai库,确认版本在 1.0 以上,因为新版才支持base_url参数。装完后跑一个最小连通性测试,确认 Key 和 Base URL 配对了。

3. 可复制配置:环境变量、模型清单与运行命令

这一节给你一份能直接抄的配置。MARBLE 的配置分两层:全局环境变量管 API 接入,场景 config 管 agent 角色、拓扑结构和规划策略。

先看全局环境变量。除了上面.env里的两个变量,如果你用 python-dotenv 加载,在入口脚本里加一行from dotenv import load_dotenv; load_dotenv()。有些 MARBLE 版本用的是OPENAI_API_BASE而不是OPENAI_BASE_URL,两个都设上最保险:

# .env 完整版 OPENAI_API_KEY=sk-你的TaoToken密钥 OPENAI_BASE_URL=https://taotoken.net/api OPENAI_API_BASE=https://taotoken.net/api

接下来是场景 config。MARBLE 的 config 通常是 JSON 或 YAML 格式,放在marble/configs/下。以研究场景为例,一份精简的 config 长这样:

{ "scenario": "research", "coordination_protocol": "graph", "planning_strategy": "cognitive_evolving", "max_iterations": 5, "max_communication_iterations": 5, "agents": [ { "name": "planner", "role": "project_manager", "model": "gpt-4o-mini", "max_token_num": 1024, "temperature": 0.7, "top_p": 1.0 }, { "name": "researcher_a", "role": "domain_expert", "model": "gpt-4o-mini", "max_token_num": 1024, "temperature": 0.7, "top_p": 1.0 }, { "name": "researcher_b", "role": "technical_specialist", "model": "Meta-Llama-3.3-70B", "max_token_num": 1024, "temperature": 0.7, "top_p": 1.0 } ], "graph_edges": [ ["planner", "collaborates", "researcher_a"], ["planner", "collaborates", "researcher_b"], ["researcher_a", "collaborates", "researcher_b"] ] }

这份 config 里,coordination_protocol可选star、tree、graph、chain;planning_strategy可选vanilla、cot、group_discussion、cognitive_evolving。你要复现论文里“图结构最好”的结论,就把 protocol 设成graph;要对比认知规划的效果,就把 strategy 在cot和cognitive_evolving之间切换。

模型清单方面,TaoToken 上可用的模型 ID 直接写进model字段。做多模型对照时,建议固定其他变量,只改一个 agent 的模型,这样能隔离出模型能力的影响。比如上面 config 里 researcher_b 用 Llama,其他用 gpt-4o-mini,跑完对比 researcher_b 的 KPI 贡献。

运行命令:

# 单场景运行 python -m marble.run --config marble/configs/research_graph_cognitive.json # 批量对照实验,写个 shell 脚本循环 for model in gpt-4o-mini Meta-Llama-3.3-70B DeepSeek; do sed "s/\"model\": \"gpt-4o-mini\"/\"model\": \"$model\"/g" \ marble/configs/research_graph_cognitive.json > /tmp/config_$model.json python -m marble.run --config /tmp/config_$model.json \ --output results/research_$model.json done

跑之前确认max_iterations别设太大。论文消融实验显示,Minecraft 场景迭代到 7 次时任务和协调得分最高,到 10 次反而急剧下降,20 次任务分回升但协调分不再涨。研究场景论文设的是 5 次,你复现时保持 5 就行,别为了“跑充分”调到 20,那样反而引入通信开销导致协调退化。

4. 验证请求与结果校验:确认多模型对照跑通

配置写完,先做一次最小验证,确认请求真的打到了 TaoToken 并且模型返回正常。MARBLE 跑起来后会在控制台打印每个 agent 的通信日志,你重点看两个东西:一是请求有没有报错,二是返回的 JSON 里有没有choices字段。

最直接的验证方式是单独调一次 API,不经过 MARBLE 的复杂流程:

from openai import OpenAI import os from dotenv import load_dotenv load_dotenv() client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_BASE_URL") ) resp = client.chat.completions.create( model="gpt-4o-mini", messages=[{"role": "user", "content": "回复 OK 两个字母"}], max_tokens=10 ) print(resp.choices[0].message.content)

如果打印出OK,说明 Key 和 Base URL 没问题。换成Meta-Llama-3.3-70B再跑一次,确认开源模型也能通。这一步过了,再跑 MARBLE 全流程。

MARBLE 跑完后会在results/目录生成 JSON 结果文件。结果里包含每个 agent 的里程碑贡献数n_j、总体 KPI、任务得分 TS、通信得分 C_score、规划得分 P_score 和协调得分 CS。校验时按论文公式对一遍:

import json with open("results/research_gpt-4o-mini.json") as f: result = json.load(f) # 论文公式:KPI_overall = (1/(N*M)) * sum(n_j) N = len(result["agents"]) M = result["total_milestones"] n_j_sum = sum(a["milestones_contributed"] for a in result["agents"]) kpi_calc = n_j_sum / (N * M) print(f"论文公式算出的 KPI: {kpi_calc:.4f}") print(f"框架报告的 KPI: {result['kpi_overall']:.4f}") # 两者应该一致,不一致说明里程碑检测或统计逻辑有问题

协调得分 CS 是 C_score 和 P_score 的平均值,也校验一下:

cs_calc = (result["communication_score"] + result["planning_score"]) / 2 print(f"CS 校验: {cs_calc:.2f} vs {result['coordination_score']:.2f}")

多模型对照的结果对比,建议拉个表格。把每个模型在每个场景的 TS 和 CS 填进去,看趋势是否符合论文结论。比如论文说 gpt-4o-mini 在研究场景 TS 是 84.13%,你跑出来如果差太多(比如低于 70%),可能是里程碑检测的 prompt 没对齐,或者模型版本变了。这时候去检查marble/evaluation/下的里程碑检测逻辑,确认它用的判定 prompt 和论文附录 A.4 一致。

还有一个容易忽略的点:论文里每个 agent 的长期记忆设为无限,通信轮次上限 5。你复现时如果记忆被截断,agent 会“忘掉”之前的里程碑进展,导致 KPI 偏低。检查 config 里有没有memory_limit字段,设成null或unlimited。

5. 常见报错排查:401、local proxy failed 与 choices 解析失败

跑多模型对照时,报错集中在几个地方。下面按真实遇到的错误逐个拆。

401 Authentication Error。这个最常见,说明 Key 没被正确读取。先确认.env文件在项目根目录而不是子目录,然后确认代码里真的调用了load_dotenv()。如果用的是 MARBLE 自带的 config 加载器,它可能从os.environ直接读,那你就得在 shell 里export OPENAI_API_KEY=sk-xxx而不是只写.env。还有一种情况:Key 复制时带了空格或换行,用print(repr(os.getenv("OPENAI_API_KEY")))检查一下首尾字符。

local proxy failed / Connection error。这个报错通常出现在你本地有网络代理设置,但代理没生效或配置冲突。检查环境变量里有没有HTTP_PROXY、HTTPS_PROXY、ALL_PROXY,如果有但代理服务没开,请求就会失败。临时清掉这些变量再跑:

unset HTTP_PROXY HTTPS_PROXY ALL_PROXY python -m marble.run --config your_config.json

如果清掉后能通,说明是代理配置问题。另外确认OPENAI_BASE_URL写的是https://taotoken.net/api,不要多加/v1或结尾斜杠,不同库对 URL 拼接的处理不一样,多写的路径会导致 404 而不是 401,报错信息会误导你以为是 Key 的问题。

reading 'choices' 报错 / KeyError: 'choices'。这个说明 API 返回的 JSON 结构和你代码预期的不一样。正常返回是{"choices": [{"message": {...}}]},如果返回的是{"error": {...}},代码去取choices就会 KeyError。根因通常是模型 ID 写错了,TaoToken 找不到这个模型就返回错误对象。去模型对话页面确认模型 ID 的准确拼写,注意大小写和连字符。比如Meta-Llama-3.3-70B和meta-llama-3.3-70b可能不一样,以页面上显示的为准。

OAuth / token expired。如果你用的是 Claude Code 或某些需要 OAuth 流程的工具接 MARBLE,可能会遇到 token 过期。这类工具建议直接用 API Key 模式而不是 OAuth。在 TaoToken 控制台重新生成一个 Key,确保它有调用目标模型的权限。如果用的是 Coding Plan 做长期实验,确认套餐覆盖了你需要的模型:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。

里程碑检测返回空。MARBLE 跑完但 KPI 是 0,说明里程碑检测器没识别出任何达成项。检查检测器用的模型是否支持结构化输出,有些小模型返回的 JSON 格式不规范,解析失败就静默返回空。把检测器模型换成 gpt-4o-mini 试试,它的 JSON 遵循度更好。另外确认total_milestones字段不为 0,如果任务配置里没定义里程碑,检测器无从判断。

排查顺序建议:先单独调 API 确认连通性,再跑单 agent 单场景确认流程,最后才上多模型对照。这样出错时能快速定位是接入层还是业务层的问题。

6. 从复现到扩展:把 MARBLE 用到你自己的 agent 场景

跑通论文复现只是起点,MARBLE 的框架设计允许你接入自有场景。扩展路径有三条:加新任务、加新拓扑、加新规划策略。

加新任务需要实现一个场景类,定义 agent 角色、里程碑列表和评估函数。MARBLE 的场景接口在marble/scenarios/下,你照着research或coding的实现抄一份,改掉里程碑定义和评分逻辑就行。里程碑定义是关键——论文里研究场景的里程碑是“完成 5 个关键问题”,你的场景可以是“完成需求分析”“通过单元测试”“生成文档”这类可检测的节点。每个里程碑要能被 LLM 检测器判断是否达成,所以描述要具体,别写“代码质量好”这种模糊标准。

加新拓扑需要改 Agent Graph 模块。论文支持星、树、图、链四种,核心是定义 agent 之间的边关系。你可以在 config 的graph_edges里自定义任意连接方式,比如环形、全连接、分层混合。改完后确认通信模块只允许有边相连的 agent 之间传递消息,否则就退化成全广播了。

加新规划策略需要改 Cognitive Module 里的 prompt 模板。论文的四种策略本质是四套不同的 planning prompt。你可以在marble/prompts/下加一个新模板,比如“辩论式规划”——让两个 agent 先对立辩论再综合。然后在 config 的planning_strategy里注册这个新策略名。

做多模型对照实验时,建议固定随机种子。MARBLE 的 agent 行动有 temperature=0.7 的随机性,同一 config 跑两次结果可能不同。在 config 里加"seed": 42,并在 LLM 调用时传seed参数(OpenAI 兼容接口支持)。这样你的对照实验才有可重复性。

最后提醒一个实操细节:跑大规模对照实验时,API 调用量大,注意控制并发。MARBLE 默认可能是串行调用,一个研究场景 5 个 agent、5 轮迭代、每轮多次通信,单次实验就是几十到上百次 API 调用。多模型多场景跑下来轻松上千次。用 TaoToken 的好处是统一计费和限流,你可以在控制台看到用量,避免某一家突然限流打断实验。如果要做长期反复的 agent 实验,Coding Plan 的额度模式比按次计费更划算。

扩展场景跑通后,把结果和论文基线对比,如果趋势一致(比如图结构确实比树结构好、认知规划确实提升 KPI),说明你的复现是可信的,这时候再往自有场景迁移就有底气了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 20:30:51

Power BI许可证怎么选?免费版/Pro/PPU/Premium/Embedded全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 20:30:44

7K拆解:基金快赎、垫资、净值暴跌估值及启示

Hi,围炉喝茶聊产品的新老朋友好!最近金融行业很热的事件:国投白银LOF与京东金融,事件来龙去脉想必大家已知晓,就不再赘述了。这事件的本质是基金快赎、垫资服务与净值估值三者的衔接失衡:快赎的垫资机制依赖预估净值,极端行情下的估值调整导致预估净值与实际净值出现巨大…

作者头像 李华
网站建设 2026/10/1 20:30:05

从“能跑”到“不会崩”:嵌入式Linux量产级驱动稳定性实战指南

刚入行那几年,我一度觉得驱动开发的终点就是"点灯"成功——设备树配好、probe触发、read/write 回调能跑到自己的工作队列,就算是把活儿干完了。直到第一次在产线上看到批量烧录时偶尔有三五台设备的传感器数据流中断,连接器插拔测…

作者头像 李华
网站建设 2026/10/1 20:30:01

STM32开发方案体系与国内优质资源平台全梳理,含外设实战与排障技巧

做嵌入式这些年,我经手过不少 STM32 项目,从早期的标准库一路做到 HAL 库,从 Keil 一路折腾到 VSCode。每次带新人或者帮网友答疑,最常被问到的其实不是某个寄存器怎么配,而是“这个功能上哪儿找靠谱的参考方案”。搜索…

作者头像 李华
网站建设 2026/10/1 20:29:28

书霸AI官网www.shubaai.com|公众号搜书霸AI写作

期刊论文写作正在发生一个值得关注的变化:过去,人们更关心工具能不能快速生成文字;现在,真正重要的问题变成了,它能否理解研究主题、组织论文结构、辅助处理参考文献,并让生成结果更接近规范的学术表达。从…

作者头像 李华