DevQualityEval v0.5.0 评测报告解读:Qwen3-Coder 评测仓库中 goliath-120b 的测试生成基准成绩与计分体系

DevQualityEval v0.5.0 评测报告解读:Qwen3-Coder 评测仓库中 goliath-120b 的测试生成基准成绩与计分体系 DevQualityEval v0.5.0 评测报告解读Qwen3-Coder 评测仓库中 goliath-120b 的测试生成基准成绩与计分体系【免费下载链接】Qwen3-CoderQwen3-Coder is the code version of Qwen3, the large language model series developed by Qwen team.项目地址: https://gitcode.com/GitHub_Trending/co/Qwen3-Coder本篇以 Qwen3-Coder 评测仓库中归档的一份 DevQualityEval v0.5.0 评测报告qwencoder-eval/instruct/eval-dev-quality/docs/reports/v0.5.0/goliath-120b/README.md为主体完整还原该报告的结果分类、原始 CSV 数据与汇总口径并结合基准源码说明评分倍率与类别判定逻辑。读完后你可以独立复现一次eval-dev-quality评测并能读懂仓库中所有 v0.5.0 版模型报告的每一列数字意味着什么。一、报告从何而来DevQualityEval 基准速览该报告由 DevQualityEvaleval-dev-quality基准在version 0.5.0时点自动生成生成时间为2024-06-19 08:43:56见报告首行标题。本仓库的 qwencoder-eval/instruct/eval-dev-quality/ 目录是这套 Go 语言编写评测框架的完整归档其 主 README 说明An evaluation benchmark and framework to compare and evolve the quality of code generation of LLMs.即它为 LLM 开发者提供一套标准化基准来改进代码生成的实际使用质量同时为 LLM 用户提供衡量某个 LLM 是否适合自己的任务的指标与横向对比。基准的核心任务类型是write-tests编写测试从源码仓库中取一份代码文件要求模型生成一份能编译、且达到 100% 语句覆盖率的测试文件然后真实执行该测试并统计结果。主 README 中给出的示例提示词即为Given the following Go code file plain.go with package plain, provide a test file for this code. The tests should produce 100 percent code coverage and must compile. The response must contain only the test code and nothing else.复现一次评测的标准流程引自主 README 的 Installation/Usage 章节# 1. 安装 Git 与 Go 后安装命令行工具 go install -v github.com/symflower/eval-dev-quality/cmd/eval-dev-quality # 2. 配置模型供应商凭证以 openrouter 为例 export PROVIDER_TOKENopenrouter:${your-key} # 3. 运行全部基准任务或仅评测指定模型 eval-dev-quality evaluate eval-dev-quality evaluate --modelopenrouter/meta-llama/llama-3-70b-instruct主 README 同时给出重要安全提示该基准默认不在沙箱中执行模型生成的代码建议在隔离环境中运行例如--runtime docker。执行结束后会产出一份evaluation.csv结果文件以及报告文件REPORT.md含各模型结果与明细文件链接eval-dev-quality evaluate --help可查看全部参数。测试输入来自 testdata/ 目录下的golang/、java/、ruby/三个语言子集本报告涉及的golang/light、golang/plain、java/plain即其中的具体仓库。二、goliath-120b 报告的结构与文件清单本次评测对象为openrouter/alpindale/goliath-120b报告目录 docs/reports/v0.5.0/goliath-120b/ 下保留 6 个文件文件作用README.md报告正文生成时间、结果分类说明、模型分类清单categories.svg柱状图按类别对所有被评模型可视化evaluation.csv逐任务明细model/language/repository/task 及各指标golang-summed.csv按语言golang汇总java-summed.csv按语言java汇总models-summed.csv按模型跨语言汇总需要注意两处引用缺失报告正文链接的./evaluation.log完整执行日志与模型子目录./openrouter_alpindale_goliath-120b/每个模型的全部输出并未随仓库保留仓库中仅存上述 CSV 与 SVG。此外报告开头特别声明Keep in mind that LLMs are nondeterministic. The following results just reflect a current snapshot.即所有数字只是某次运行快照LLM 输出具有非确定性复跑可能出现波动。三、结果分类体系7 个类别的定义与判定逻辑报告将模型结果划入以下类别原文逐条定义category unknownModels in this category could not be categorized.无法归类response errorModels in this category encountered an error.响应出错no codeModels in this category produced no code.未产出代码invalid codeModels in this category produced invalid code.产出代码不可执行executable codeModels in this category produced executable code.产出可执行代码statement coverage reachedModels in this category produced code that reached full statement coverage.达到完整语句覆盖率no excess responseModels in this category did not respond with more content than requested.未输出多余内容这 7 个类别与源码 evaluate/metrics/category.go 中注册的AssessmentCategory一一对应ID 分别为category-unknown、response-error、response-no-code、code-invalid、code-executed、code-coverage-statement、code-no-excess。类别判定函数Category()category.go#L79-L97遵循一个一致达成原则其注释原文为模型的整体类别对应于它在所有任务上都稳定拿满分数的最高档标准——例如 3 个任务中代码全部能执行、但只有 1 个任务达到覆盖率目标则类别只能算到 executable code因为覆盖率目标未被一致达成。实现上是一个级联switch按顺序检查各评估项的累计值是否等于totalTasks × 该项倍率未全部达成响应无错误判response-error未全部达成含代码且文件可执行判no code未全部达成文件可执行判code-invalid未全部达成覆盖率判executable code未全部达成无多余输出判statement coverage reached全部达成则判no excess response。需要说明版本差异从当前源码看category unknown是totalTasks 0没有任何任务可评估时的兜底分支而 goliath-120b 报告由 v0.5.0 生成该模型在 CSV 中实际有 3 条任务记录却仍被归入 category unknown。可以推断这是 v0.5.0 时的判定口径与当前源码存在差异所致解读归档报告时应以报告自身记录的分类为准而把源码逻辑作为理解各类别语义的参考。四、goliath-120b 的原始评测数据evaluation.csv 完整内容如下表头为model,language,repository,task,score,coverage,files-executed,generate-tests-for-file-character-count,processing-time,response-character-count,response-no-error,response-no-excess,response-with-codemodellanguagerepositorytaskscorecoveragefiles-executed输入文件字符数processing-time (ms)响应字符数response-no-errorresponse-no-excessresponse-with-codeopenrouter/alpindale/goliath-120bgolanggolang/lightwrite-tests2771004737572177772815871151741openrouter/alpindale/goliath-120bgolanggolang/plainwrite-tests221011550630832659524openrouter/alpindale/goliath-120bjavajava/plainwrite-tests9003055905294305504三个汇总文件则给出按语言与按模型的加总汇总文件scorecoveragefiles-executedprocessing-time (ms)响应字符数no-errorno-excesswith-codemodels-summed.csv30811052331384885511251949golang-summed.csv29911052240855842461201945java-summed.csv900905294305504汇总口径可以直接验证score 上 27722299golang、277229308模型总计coverage 100100110files-executed 4105processing-time 217777263083905292331384 ms约 38.9 分钟各计数字列同样逐列相加吻合。也就是说语言级与模型级 CSV 就是明细 CSV 的简单累加没有任何加权或截断。从数据可以读出这份快照的画像Go 语言表现尚可golang/light任务有 4 个文件成功执行、coverage 记为 100golang/plain也有 1 个文件执行且 coverage 为 10两条 Go 任务合计贡献 299 分。Java 任务完全失手java/plain任务 0 个文件可执行、coverage 为 09 分全部来自响应无错误5与响应含代码4这类格式分没有任何代码真正跑起来。输出冗长且不稳定模型总响应约 8.8 万字符其中response-no-excess无多余输出仅 19明显低于response-with-code49即大量回复夹带了请求之外的内容这与任务提示词must contain only the test code and nothing else的要求相违背。最终类别报告将openrouter/alpindale/goliath-120b列入 category unknown正文原话为 Models in this category could not be categorized.。结合 CSV 看Java 任务未产出任何可执行文件、Go 任务覆盖率也未在所有任务上一致达标模型未稳定达到任何一档类别的全部达成标准。五、计分体系评估项、倍率与 Score() 函数理解 CSV 中 score 一列的来源需要看 evaluate/metrics/assessment.go 中注册的评估项及其倍率评估项CSV 列名倍率语义files-executed1成功编译/执行的文件数每文件 1 分coverage10执行覆盖统计倍率 10按点累积tests-passing10通过测试的比例代码修复类任务使用response-no-error1模型响应无错误response-with-code1响应中检测到代码response-no-excess1响应未包含超出请求的内容processing-time、response-character-count、generate-tests-for-file-character-count0仅作统计记录不计分Score()函数assessment.go#L107-L120的实现就是遍历所有评估项把倍率非 0 的项的值累加起来。主 README 示例日志中的一行完整打分示例可直接对照理解见 README.md#L131Evaluation score for openrouter/meta-llama/llama-3-70b-instruct (code-no-excess): score12, coverage2, files-executed2, response-no-error2, response-no-excess2, response-not-empty2, response-with-code2即 22222212该模型最终类别为code-no-excess。需要指出该日志示例出自较新版本包含response-not-empty一项而 v0.5.0 的 goliath-120b CSV 表头没有这一列从源码结构看不同版本间 CSV 的列布局并不完全一致逐列核对分数时应对照报告自身版本的表头。报告的物化Markdown、CSV、SVG由 evaluate/report/ 下的markdown.go、csv.go、collection.go等模块完成具体任务实现write-tests、code-repair、transpile 等位于 evaluate/task/ 目录基准版本号则记录在 evaluate/version.go。这也解释了为何每个模型目录下总是同时出现README.md categories.svg 若干 *-summed.csv的固定组合。六、如何复现这样一份报告前提安装 Git 与 Go并建议在隔离环境如 Docker中运行因为基准默认直接执行模型生成的代码。步骤按上文命令安装eval-dev-quality二进制export PROVIDER_TOKEN...配置模型访问凭证如 openrouter 的 key执行eval-dev-quality evaluate --modelopenrouter/alpindale/goliath-120b仅评测该模型不带--model则跑全部模型、语言与仓库组合运行结束后查看工作目录生成的evaluation.csv与REPORT.md日志会逐条打印请求提示词、模型响应、symflower test --language lang --workspace tmp的执行输出测试是否 PASS、coverage: 100.0% of statements等以及最终各类别判定。两点使用限制其一模型响应非确定复跑结果会与本报告快照存在差异其二v0.5.0 是当前仓库docs/reports/下保留的最完整版本之一另有 v0.2.0/、v0.4.0/、v0.6/跨版本对比时需注意类别判定与 CSV 列布局可能不同。七、小结这份 goliath-120b 报告是 DevQualityEval v0.5.0 对约 100 个模型做横向评测时产出的归档之一它用 7 个由源码 category.go 定义的类别刻画模型能力档位用 assessment.go 中的倍率体系files-executed×1、coverage×10、tests-passing×10 等量化打分并以逐任务 CSV 加按语言/按模型累加的形式留档。对 goliath-120b 而言308 分里 Go 任务贡献了 299 分Java 任务因 0 个文件可执行只拿到 9 分格式分模型最终落入 category unknown。若你要在 Qwen3-Coder 的评测流程中参照这套基准可直接复用eval-dev-quality的安装与运行方式并对自家模型生成同样结构的报告进行归档对比。【免费下载链接】Qwen3-CoderQwen3-Coder is the code version of Qwen3, the large language model series developed by Qwen team.项目地址: https://gitcode.com/GitHub_Trending/co/Qwen3-Coder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考