读懂 DevQualityEval v0.4.0 评估报告:代码生成 LLM 分类体系的完整解读
2026/9/14 3:20:46 网站建设 项目流程

读懂 DevQualityEval v0.4.0 评估报告:代码生成 LLM 分类体系的完整解读

【免费下载链接】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

本报告文档是 eval-dev-quality(DevQualityEval)基准框架在version 0.4.0下生成的第 5 次(共 5 次)横向评估快照,记录了 2024-04-25 19:31:35 前后对 140 余个模型(涵盖 GPT-4、Claude 3、Llama 3、Mixtral、Gemma 等主流开源与商用模型)在 Go、Java 两种语言的测试生成任务上的表现。阅读本文,你将掌握 DevQualityEval 从"响应质量"到"覆盖率达到"再到"无多余输出"的八级分类体系及其判定逻辑、各分类下的完整模型名单、评分权重背后的设计动机,以及如何结合报告目录中的 CSV 明细复现与深入分析每次评估结果。该报告被收录在 Qwen3-Coder 项目的 qwencoder-eval/instruct/eval-dev-quality 评估目录下,作为代码生成模型横向能力对比的历史参考资料。

一、这是一份什么样的报告

报告正文首先给出了生成时间戳(Evaluation from 2024-04-25 19:31:35)、一张按分类统计模型数量的柱状图(categories.svg),并声明它由 DevQualityEval 基准在version 0.4.0下自动生成。该报告并非手工整理,而是由评估框架在每次运行结束后自动渲染输出——这一点可以从报告生成器的源码得到印证:在 markdown.go 中,Markdown 报告由 Go 模板动态填充评估时间、版本号、分类列表与每个分类下的模型清单,同时由 barChartModelsPerCategoriesSVG 使用go-chart库生成"Models per Category"柱状图(即categories.svg)。

报告同级目录下还保留了两份关键产物:

  • evaluation.csv:每行对应"模型 × 语言 × 仓库"的一个评估单元,给出该单元在score、coverage-statement、files-executed、response-no-error、response-no-excess、response-not-empty、response-with-code七个维度上的得分,共 281 行明细;
  • categories.svg:按分类统计模型数量的柱状图。

注意:原报告引用的evaluation.log在本仓库对应目录下并未保留,因此本文以evaluation.csv与分类名单为分析依据。

二、八级分类体系:从"无法分类"到"无多余响应"

报告的核心是把所有被评估模型划分进八个由低到高的质量类别。这八个类别并不是报告作者临时定义的,而是由框架在 category.go 中以注册表形式统一声明:

分类(Category)内部 ID含义
Category Unknowncategory-unknown模型无法被归类(如总任务数为 0)
Response Errorresponse-error模型在尝试生成响应时遇到错误
Response Emptyresponse-no-code分支下的空响应情形模型产生了空响应
No Coderesponse-no-code模型响应中不包含任何源代码
Invalid Codecode-invalid模型生成的代码执行/编译出错
Executable Codecode-executed模型生成的代码可以无错误执行
Statement Coverage Reachedcode-coverage-statement模型生成的代码达到 100% 语句覆盖率
No Excess Responsecode-no-excess模型响应中没有超出请求范围的额外内容

需要特别说明的是,"Response Empty"(空响应)在本版报告的类别注册表中对应AssessmentCategoryResponseNoCode的变体描述——从源码看,category.go 中"no code"类别的描述是"Models in this category produced no code",而报告正文为了可读性将其拆分为"Response Empty"与"No Code"两个呈现名称,二者在源码层面共用同一判定分支。

分类的判定顺序(源码级)

模型的最终类别不是取所有指标的最高分,而是按照从低到高的顺序,取模型在所有任务上"持续达标"的最高层级。核心判定逻辑位于 Category 方法:

  1. 若所有任务中都未出现response-no-error(即存在响应错误),归类为Response Error
  2. response-with-codefiles-executed均未在所有任务中达标,归类为No Code(空响应也落在此处);
  3. 若代码文件并非在所有任务中都执行成功,归类为Invalid Code
  4. 若覆盖率指标未在所有任务中达标,归类为Executable Code
  5. 若存在多余响应,归类为Statement Coverage Reached
  6. 全部达标,才归类为No Excess Response(最高级)。

源码注释特别强调了"一致性"原则:例如总共 3 个任务中,模型只在一个任务里达到覆盖率目标,则其类别仍然只是 "CodeExecuted",因为覆盖率目标未被一致地达成。这也解释了为什么报告中"Statement Coverage Reached"是相当有含金量的类别——它要求模型在每一个评估单元上都稳定产出达到 100% 语句覆盖率且可编译的测试代码。

三、分类结果完整名单与解读

以下是本份报告(v0.4.0 第 5 次快照)中落在每个分类下的全部模型,按类别从低到高排列。模型 ID 采用provider/model形式(绝大多数为openrouter/前缀,即通过 OpenRouter 网关调用的模型)。

3.1 "Response Error"(14 个)

该类别下的模型在评估过程中遇到了错误(超时、网关异常、鉴权失败等),未产生可用的评估信号:

  • openrouter/jebcarter/psyfighter-13b
  • openrouter/anthropic/claude-2
  • openrouter/openchat/openchat-7b:free
  • openrouter/openrouter/cinematika-7b:free
  • openrouter/jondurbin/bagel-34b
  • openrouter/anthropic/claude-instant-1
  • openrouter/haotian-liu/llava-13b
  • openrouter/undi95/toppy-m-7b:free
  • openrouter/anthropic/claude-2:beta
  • openrouter/nousresearch/nous-hermes-2-vision-7b
  • openrouter/anthropic/claude-instant-1:beta
  • openrouter/nousresearch/nous-capybara-7b:free
  • openrouter/perplexity/pplx-70b-online
  • openrouter/lynn/soliloquy-l3

值得注意的细节:同一模型的:beta变体(如claude-2:betaclaude-instant-1:beta)与其正式版本在本次快照中均落入此类别,说明错误往往与模型无关,而更可能来自端点可用性或请求配置层面的问题。

3.2 "No Code"(27 个)

该类别下模型虽成功返回了响应,但响应中没有包含任何源代码(例如只输出了文字说明、拒绝回答或空内容)。名单包括:

  • openrouter/neversleep/noromaid-20b
  • openrouter/koboldai/psyfighter-13b-2
  • openrouter/nousresearch/nous-capybara-7b
  • openrouter/neversleep/noromaid-mixtral-8x7b-instruct
  • openrouter/gryphe/mythomist-7b:free
  • openrouter/meta-llama/codellama-34b-instruct
  • openrouter/undi95/remm-slerp-l2-13b:extended
  • openrouter/meta-llama/llama-3-8b-instruct:extended
  • openrouter/anthropic/claude-instant-1.0
  • openrouter/openai/gpt-3.5-turbo-1106
  • openrouter/gryphe/mythomist-7b
  • openrouter/nousresearch/nous-hermes-llama2-13b
  • openrouter/teknium/openhermes-2.5-mistral-7b
  • openrouter/mistralai/mistral-tiny
  • openrouter/intel/neural-chat-7b
  • openrouter/gryphe/mythomax-l2-13b:nitro
  • openrouter/gryphe/mythomax-l2-13b:extended
  • openrouter/mistralai/mistral-7b-instruct:nitro
  • openrouter/01-ai/yi-34b
  • openrouter/google/gemini-pro
  • openrouter/togethercomputer/stripedhyena-hessian-7b
  • openrouter/cognitivecomputations/dolphin-mixtral-8x7b
  • openrouter/openai/gpt-3.5-turbo-instruct
  • openrouter/pygmalionai/mythalion-13b
  • openrouter/mancer/weaver
  • openrouter/undi95/remm-slerp-l2-13b
  • openrouter/openai/gpt-3.5-turbo-0613

3.3 "Invalid Code"(60 个)

这是本份报告中数量最多的类别:模型输出了代码,但这些代码无法编译或在执行中出错。名单包括:

  • openrouter/mistralai/mistral-7b-instruct:free
  • openrouter/codellama/codellama-70b-instruct
  • openrouter/microsoft/wizardlm-2-7b
  • openrouter/google/palm-2-codechat-bison
  • openrouter/open-orca/mistral-7b-openorca
  • openrouter/google/palm-2-chat-bison
  • openrouter/perplexity/pplx-7b-chat
  • openrouter/01-ai/yi-34b-chat
  • openrouter/nousresearch/nous-hermes-2-mistral-7b-dpo
  • openrouter/anthropic/claude-3-haiku:beta
  • openrouter/undi95/toppy-m-7b
  • openrouter/huggingfaceh4/zephyr-7b-beta:free
  • openrouter/xwin-lm/xwin-lm-70b
  • openrouter/01-ai/yi-6b
  • openrouter/undi95/toppy-m-7b:nitro
  • openrouter/openai/gpt-3.5-turbo-16k
  • openrouter/huggingfaceh4/zephyr-7b-beta
  • openrouter/rwkv/rwkv-5-world-3b
  • openrouter/cohere/command-r-plus
  • openrouter/anthropic/claude-2.0
  • openrouter/google/gemini-pro-vision
  • openrouter/sao10k/fimbulvetr-11b-v2
  • openrouter/sophosympatheia/midnight-rose-70b
  • openrouter/alpindale/goliath-120b
  • openrouter/perplexity/sonar-medium-online
  • openrouter/openchat/openchat-7b
  • openrouter/mistralai/mixtral-8x7b
  • openrouter/meta-llama/llama-3-8b-instruct
  • openrouter/austism/chronos-hermes-13b
  • openrouter/mistralai/mistral-large
  • openrouter/mistralai/mixtral-8x22b
  • openrouter/anthropic/claude-1.2
  • openrouter/meta-llama/llama-2-13b-chat
  • openrouter/nousresearch/nous-capybara-34b
  • openrouter/openrouter/cinematika-7b
  • openrouter/perplexity/pplx-7b-online
  • openrouter/cohere/command
  • openrouter/anthropic/claude-instant-1.1
  • openrouter/teknium/openhermes-2-mistral-7b
  • openrouter/mistralai/mixtral-8x7b-instruct:nitro
  • openrouter/nousresearch/nous-hermes-2-mixtral-8x7b-sft
  • openrouter/perplexity/sonar-small-online
  • openrouter/cohere/command-r
  • openrouter/togethercomputer/stripedhyena-nous-7b
  • openrouter/google/gemma-7b-it:nitro
  • openrouter/nousresearch/nous-hermes-yi-34b
  • openrouter/nousresearch/nous-hermes-2-mixtral-8x7b-dpo
  • openrouter/recursal/rwkv-5-3b-ai-town
  • openrouter/meta-llama/llama-3-8b-instruct:nitro
  • openrouter/perplexity/pplx-70b-chat
  • openrouter/fireworks/firellava-13b
  • openrouter/jondurbin/airoboros-l2-70b
  • openrouter/google/gemma-7b-it:free
  • openrouter/anthropic/claude-2.0:beta
  • openrouter/google/palm-2-codechat-bison-32k
  • openrouter/google/gemma-7b-it
  • openrouter/recursal/eagle-7b
  • openrouter/perplexity/sonar-small-chat
  • openrouter/google/palm-2-chat-bison-32k

3.4 "Executable Code"(1 个)

该类别下模型生成的代码在所有评估单元中都能成功执行(但未在所有单元上达到覆盖率目标):

  • openrouter/mistralai/mistral-7b-instruct

3.5 "Statement Coverage Reached"(26 个)

该类别下模型生成的测试代码在全部评估单元中都实现了 100% 语句覆盖率。这是本次快照中能力最扎实的中坚梯队,名单包括:

  • openrouter/anthropic/claude-2.1:beta
  • openrouter/openai/gpt-4-32k
  • openrouter/microsoft/wizardlm-2-8x22b:nitro
  • openrouter/anthropic/claude-3-sonnet
  • openrouter/openai/gpt-3.5-turbo-0125
  • openrouter/lizpreciatior/lzlv-70b-fp16-hf
  • openrouter/databricks/dbrx-instruct
  • openrouter/meta-llama/llama-2-70b-chat:nitro
  • openrouter/openai/gpt-4-1106-preview
  • openrouter/mistralai/mistral-medium
  • openrouter/mistralai/mixtral-8x7b-instruct
  • openrouter/phind/phind-codellama-34b
  • openrouter/perplexity/sonar-medium-chat
  • openrouter/anthropic/claude-3-opus
  • openrouter/anthropic/claude-1
  • openrouter/anthropic/claude-2.1
  • openrouter/mistralai/mistral-small
  • openrouter/meta-llama/llama-3-70b-instruct:nitro
  • openrouter/anthropic/claude-3-opus:beta
  • openrouter/gryphe/mythomax-l2-13b
  • openrouter/microsoft/wizardlm-2-8x22b
  • openrouter/anthropic/claude-3-sonnet:beta
  • openrouter/anthropic/claude-3-haiku
  • openrouter/mistralai/mixtral-8x22b-instruct
  • openrouter/meta-llama/llama-3-70b-instruct
  • openrouter/meta-llama/llama-2-70b-chat
  • openrouter/huggingfaceh4/zephyr-orpo-141b-a35b

3.6 "No Excess Response"(12 个)

这是最高类别:模型不仅在所有单元上达到覆盖率,且响应中没有超出请求的额外内容(例如没有附带解释文字、注释或多余的测试用例)。名单包括:

  • openrouter/openai/gpt-4-turbo
  • openrouter/openai/gpt-3.5-turbo
  • openrouter/google/gemini-pro-1.5
  • symflower/symbolic-execution
  • openrouter/openai/gpt-4-turbo-preview
  • openrouter/openai/gpt-4-32k-0314
  • openrouter/openai/gpt-4
  • openrouter/openai/gpt-3.5-turbo-0301
  • openrouter/openai/gpt-4-vision-preview
  • openrouter/openai/gpt-4-0314
  • openrouter/anthropic/claude-instant-1.2
  • openrouter/openrouter/auto

从名单中可以读出的信息

  • OpenAI 系列几乎垄断了最高类别:GPT-4 家族的多个版本(gpt-4gpt-4-turbogpt-4-32k-0314gpt-4-0314等)以及较新的gpt-3.5-turbo都稳定产出"覆盖率达标且无多余输出"的测试代码;
  • 同一模型的不同快照差异显著:例如mistral-7b-instruct:free/:nitro变体落在 "Invalid Code",而无后缀版本却进入 "Executable Code";gpt-3.5-turbo-0125达到覆盖率而gpt-3.5-turbo-1106未产出代码。这与报告开头的提醒一致——LLM 具有非确定性,结果只是"当前快照";
  • 许多 7B-8B 量级的开源模型(Yi、Gemma、Llama-3-8B 等)落在 "Invalid Code",说明为空白函数编写可编译且 100% 覆盖的测试,本身就是一个对语言理解与工程规范要求很高的任务。

四、评分机制:积分权重与设计动机

分类之外,报告同级目录中的 evaluation.csv 记录了每个评估单元的数值得分。这些得分由 assessment.go 中的注册权重决定,与框架 README 中声明的奖励规则一致:

指标权重说明
response-no-error+1响应未遇到错误
response-not-empty+1响应非空
response-with-code+1响应包含源代码
files-executed+1源码文件成功执行
coverage+10每达成一个覆盖率目标计 10 分(write-test任务中每达成一个代码覆盖对象)
tests-passing+10每个通过的测试计 10 分(code-repair/transpile任务中使用)
response-no-excess+1响应没有超出请求的额外内容

其中两个高权重指标(coveragetests-passing)分别在两类任务中互相禁用:在"测试生成"任务中禁用tests-passing(防止模型靠堆砌任意测试用例刷分),在"代码修复/转译"任务中禁用coverage(防止模型靠添加无关语句刷覆盖率)。这一设计在 README 的 Reward Points 一节有明确说明。

可以对照 CSV 中实际的计分逻辑:例如openrouter/anthropic/claude-1.2,java,java/plain一行的score=6,对应files-executed=1 + response-no-error=1 + response-no-excess=1 + response-not-empty=1 + response-with-code=1 + coverage-statement=1,即六个维度各得 1 分(本版 v0.4.0 快照中覆盖率按 1 分计)。而 v0.4.0 报告目录的 README 特别注明:官方博客发布时把"达成 100% 代码覆盖率"的权重从 1 调整为 10 分,这也解释了不同版本间 score 口径的差异。

从源码结构看,coverage-statement与 README 中statement-coverage-reached对应;AssessmentKeyCoverage的注册权重为 10,而 v0.4.0 快照 CSV 中覆盖率按 1 计,二者差异正是 v0.4.0 目录 README 所提到的"结果计算权重调整"。

五、评估任务背景:测试生成基准

理解这份报告的价值,需要回到它背后的评估任务。v0.4.0 阶段框架聚焦于Test Generation(测试生成)任务:给定一段源代码,要求模型为其编写测试套件,测试必须可编译且达到 100% 语句覆盖率,且响应中不得包含多余内容。在 README.md 中,作者解释了这个任务的设计动机:测试生成的结果容易自动校验(编译 + 覆盖率),而"只有真正理解源代码的模型才能写出达标测试",因此该任务隐式衡量的是模型的语言理解能力。

本份报告涉及的评估单元为 Go 与 Java 两种语言的plain仓库用例(从 CSV 中可以确认,所有行的repository字段均为golang/plainjava/plain),其对应的测试数据位于 testdata/golang/plain 与 testdata/java/plain。plain用例的特点是包含一个近乎空白的函数(如 Go 的func plain() { return }),意在考验模型能否为空函数写出"能编译、有覆盖、不啰嗦"的测试——README 指出,即使是这样一个空函数,也有大量 LLM 无法完成任务,这正是建立代码生成基准的必要性所在。

六、如何复现与深入分析

如果你想基于本仓库复现或扩展此类评估,可以按以下路径操作:

  1. 查看全部历史快照:本报告属于 docs/reports/v0.4.0 下的第 5 个子目录(另有 1~4 号快照),目录根部还保留有汇总后的 models-summed.csv、golang-summed.csv 与 java-summed.csv,可用于跨语言对比与多快照一致性分析;
  2. 对比后续版本:仓库中还保留了 v0.5.0(含codeqwendeepseek-codergpt-4o等模型的分模型报告目录)与 v0.6(结构化 CSV 报告集,含按任务/按语言的多个维度)的评估结果,可以观察分类体系与模型梯队随版本演进的变化;
  3. 自行运行评估:按 README.md 的 Usage 章节,安装 Go 工具链后执行go install安装eval-dev-quality二进制,通过PROVIDER_TOKEN环境变量配置 OpenRouter 等推理服务商密钥,然后运行eval-dev-quality evaluate即可生成本报告同款产物(evaluation.csv与 Markdown 报告);框架默认不提供沙箱,README 明确建议通过--runtime docker在隔离环境执行模型生成的代码;
  4. 限制任务范围:README 还说明,可通过仓库根目录的repository.json配置文件(如 testdata/golang/plain/repository.json)指定该仓库要运行的任务列表,未配置时默认运行全部任务。

七、解读结果的注意事项

报告开头引用了这样一句提醒:"Keep in mind that LLMs are nondeterministic. The following results just reflect a current snapshot."(LLM 具有非确定性,以下结果只是当前快照)。结合 README 的 Results 一节,解读这份报告时应把握三点:

  1. 结果可复现性有限:同一次评估中的多个快照(本目录下的 1~5 号)之间,部分模型类别会上下浮动,这与采样温度、端点负载等随机因素有关,单次快照不适合作为跨模型的最终裁决;
  2. "最高分"不等于"最合适":实际选型还需考虑计算资源、云端调用成本、权重是否开源等额外因素——框架作者明确表示"不存在完美总冠军,只有特定场景下的合适模型";
  3. 分类反映的是"一致达标"能力:由于类别判定要求模型在所有评估单元上持续达标,一个模型只要在一个语言用例上失手,就会被降级,因此 "Statement Coverage Reached" 及以上类别代表的是跨语言稳定性,而非单点峰值能力。

结语

这份由 DevQualityEval v0.4.0 自动生成的评估报告,通过"响应错误 → 无代码 → 无效代码 → 可执行代码 → 覆盖率达标 → 无多余输出"的分层分类,将 140 余个代码生成模型的真实能力做了一次快照式的横向体检。结合仓库中的 category.go 判定逻辑、assessment.go 评分权重、markdown.go 报告生成器与 evaluation.csv 明细数据,读者既可以读懂每一类模型名单背后的技术含义,也可以以此为模板,在自己的环境里复现一套可量化、可追踪的代码生成质量评估流程。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询