哪个大语言模型 (LLM) 最适合生成 QML 代码 (DeepSeek V3 登场)

作者:Peter Schneider | Feb 18, 2025 9:00:19 AM

在英文提示下,Claude 3.5 Sonnet 是生成 QML 代码的最佳大语言模型(LLM)。如果您想知道我们为何得出这一结论,请继续阅读。

QML100 基准测试

就像我们在上一篇博客中描述的 QML100FIM 基准类似,我们开发了一个用于提示代码生成的基准测试。这些基准有助于我们指导客户和调整我们的微调工作。

QML100 基准测试包含哪些任务?

QML100 基准测试包含 100 个英文编码挑战,如 "生成一个按钮的 QML 代码,按钮按下时通过阴影变化来指示状态。"

前 50 个任务旨在测试 QML 知识的广度,涵盖了大多数 Qt Quick Controls 的任务。这些任务包括常见组件(如按钮)和不太常见的控件(如 MonthGrid)的编码挑战。

接下来的 50 个任务涉及典型的 UI 框架应用,例如:“生成 QML 代码,当用户将鼠标悬停在文本输入字段上时显示工具提示。”或“生成 QML 代码,实现矩形 x 位置每次变化时的平滑动画效果。”

QML100 基准测试任务的难度如何?

QML100 包含一些简单的任务,所有 LLM 都能成功完成,例如:“生成一个 Hello World 应用程序的 QML 代码,Hello World 文本应显示在窗口中央,背景为浅灰色。”

QML100 也包含一些所有 LLM 目前仍无法完成的高难度任务,例如:“生成 QML 代码,创建一个树形图,显示蔬菜及其可烹饪的食物,并允许通过鼠标点击展开和折叠分支。”

基准测试还包括一些要求修复现有代码中的错误或添加代码以增强现有功能的任务。

LLMSupported050225

图片:Qt Creator 中 Qt AI Assistant 的 LLM 选择

很少有任务能衡量对 Qt Quick Control 内置功能的了解程度,例如 "为复选框创建 QML 代码,该复选框通过用户的触摸交互设置为选中状态"。许多 LLM 往往会为指令的所有部分编写代码,从而创建出无法完成上述任务的代码。 在复选框中 添加处理程序 "onClicked: checked =!checked `"会使 UI 控件失去作用。

不包括需要 LLM 从多个文件读取上下文的多文件挑战、与 Qt Quick3D、Qt Multimedia、Qt Charts、Qt PDF、Qt Positioning 有关的任务或任何其他类似任务。

判定条件:生成 QML 代码被视为正确

生成的代码会在 Qt Creator 15 中使用 Qt 6.8.1 工具包手动检查。代码不得包含运行时错误,并且必须完成任务。冗余的导入版本号或不必要的额外代码不会导致 disqualification(只要它们能正常运行)。

我们对每个 LLM 只进行一次提示,不会进行“三次取最佳”之类的操作。考虑到 LLM 的概率性质,基准测试的响应永远不会完全相同。因此,我不会对LLM比另一个好 1%或差 1%进行过分解读。

测试了哪些 LLM?

新的 LLM 如雨后春笋般涌现。我们测试了大多数主流 LLM,包括可作为商业云服务使用的 LLM 和以及一些免版税的自托管 LLM。

哪种 LLM 在英文提示下生成的代码最好?

生成 QML 代码的最佳免税版 LLM 是 DeepSeek-V3,其成功生成代码的得分为 57%。整体表现最佳的 LLM 是 Claude 3.5 Sonnet,成功率为 66%。

LLM PROMPT PERFORMANCE

GitHub Copilot Chat 在 Visual Studio Code 中的表现(截至 2024 年 9 月底为 42%)有些令人失望。我们希望其表现现已有所提升。然而,上述大多数结果也来自 2024 年第四季度,只有 DeepSeek-V3、Mistral Large 2.1 和 OpenAI o1 是今年进行基准测试的。StarCoder2 的结果来自 2024 年第二季度。

StarCoder15B 的表现有些令人失望,尽管它已经过 Qt 文档的训练。但我们认为应该尝试一下,因为它是唯一一个具有透明预训练数据的模型。

总体来看,无论是代码补全还是基于提示的代码生成能力,Claude 3.5 Sonnet 都是一个值得Qt用户认真考虑的选择,尤其是在 QML 编码技能方面。然而,其他因素如成本效益、知识产权保护和预训练数据透明度,也应成为选择最适合软件创建项目的 LLM 的考虑因素。

Qt AI Assistant 支持多种 LLM

在撰写本博客时,Qt AI Assistant 支持接入 Claude 3.5 Sonnet、Llama 3.3 70B 和 GPT4o,用于基于提示的代码生成和专家建议。如果你想了解更多关于 Qt AI Assistant 的功能,请访问我们的产品页面

如果您需要入门指南,请参阅文档

 

更新:Mistral Large 的成绩从 2024 年第一季度更新为 2025 年第一季度。