英語でプロンプトを行った場合、QMLコード生成において最も優れたLLMはClaude 3.5 Sonnetであることが判明しました。その根拠となる詳細な分析結果について報告いたします。
QML100ベンチマークについて
以前のブログ記事で紹介したQML100FIMベンチマークと同様に、プロンプトによるコード生成のためのベンチマークを開発しました。このベンチマークは、お客様へのご提案と微調整の最適化に活用されています。
QML100ベンチマークの内容は?
QML100ベンチマークには、英語で書かれた100のコーディング課題が含まれています。例えば、「ボタンの周りに影の変化を表示して、ボタンが押されたことを示すボタンのQMLコードを生成する」といった課題です。
最初の50の課題は、QMLの幅広い知識をテストすることに重点を置いており、Qt Quick Controlsのほとんどの課題をカバーしています。これには、ボタンなどの一般的なコンポーネントや、MonthGridなどの比較的珍しいコントロールのコーディング課題が含まれます。
次の50の課題では、「ユーザーがテキスト入力フィールドにマウスを置いたときに、ツールチップを表示するQMLコードを作成する」や「四角形のx位置が変更されるたびにスムーズなアニメーションを表示するQMLコードを作成する」などの典型的なUIフレームワークアプリケーションが対象となります。
QML100ベンチマーク課題の難易度は?
QML100には、LLMがすべて成功裏に完了するような簡単なタスクも含まれています。例えば、「Hello Worldアプリケーション用のQMLコードを生成する。Hello Worldのテキストは、ライトグレーの背景のウィンドウの中央に表示する」といったものです。
また、QML100には、LLMがすべて失敗するような難しいタスクも含まれています。例えば、「野菜とその野菜の料理をツリー表示するQMLコードを作成する。マウスクリックで枝を展開したり折りたたんだりできるようにする」といったものです。
このベンチマークには、既存のコードのバグを修正したり、既存のコードを強化するコードを追加したりするよう求めるタスクもいくつか含まれています。

画像:Qt CreatorのQt AI AssistantのLLM選択オプション
「ユーザーによるタッチ操作でチェック済み状態に設定されるチェックボックス用のQMLコードを作成する」など、Qt Quickコントロールの組み込み機能に関する知識を問う問題もいくつかあります。多くのLLMは、指示のすべての部分に対してコードを記述しがちであり、その結果、上記の課題をクリアできないコードを作成してしまいます。CheckBoxにハンドラ「onClicked: checked =!checked」を追加すると、UIコントロールが役に立たなくなります。
LLMが複数のファイルからコンテキストを読み取る必要があるマルチファイルの課題、Qt Quick3D、Qt Multimedia、Qt Charts、Qt PDF、Qt Positioning、またはその他の類似の課題は含まれていません。
生成されたQMLコードが正しいとみなされる基準は?
生成されたコードは、Qt Creator 15でQt 6.8.1キットを使用して手動でチェックされます。実行時エラーを含まず、タスクを解決できなければなりません。冗長なインポートバージョン番号や不要な追加コードがあっても失格にはなりません(動作する限り)。
LLMには一度しか求めません。「3回中最高」などということは行いません。LLMの確率的な性質を考慮すると、ベンチマークの回答が繰り返しまったく同じになることは決してないでしょう。あるLLMが次のLLMよりも1%優れているとか劣っているとかいうことをあまり重視すべきではないでしょう。
テストされたLLMは?
雨上がりの日にキノコが顔を出すように、新しいLLMが次々と登場しています。私たちは主流のLLMの大半をテストしています。商用クラウドサービスとして利用できるLLMや、ロイヤリティなしで自己ホストできるLLMもテストしました。
英語要求に対して、最高のコードを生成するLLMは?
QMLコードの作成に最適なロイヤリティフリーのLLMはDeepSeek-V3で、コード作成の成功率は57%です。総合的に最も優れたLLMはClaude 3.5 Sonnetで、成功率は66%です。

2024年9月末時点で42%だったVisual Studio CodeのGitHub Copilot Chatの性能は、やや期待外れです。今頃は改善されていることを期待したいところです。しかし、上記のほとんどの結果も2024年第4四半期のものであり、DeekSeep-V3とOpenAI o1だけが今年ベンチマークされたものです。StarCoder2とMistral Largeの結果は2024年第2四半期のものです
StarCoder15Bの性能は、Qtのドキュメントでトレーニングしたにもかかわらず、少し期待外れです。しかし、これは事前トレーニングデータが透明な唯一のモデルであるため、試してみる価値があると考えました。
全体的に見て、コード補完とプロンプトベースのコード生成スキルを考慮すると、Claude 3.5 Sonnetは、QMLコーディングスキルに純粋に絞って検討する場合には、個人や顧客にとって真剣に検討すべき選択肢です。しかし、コスト効率、知的財産権の保護、事前学習データの透明性といった他の側面も、ソフトウェア作成プロジェクトに最適なLLMを選択する際に考慮すべきでしょう。
Qt AI Assistant は複数のLLMをサポートしています
Qt AI Assistant は、Claude 3.5 Sonnet、Llama 3.3 70B、GPT4o への接続をサポートしており、このブログ記事を書いている時点で、プロンプトベースのコード生成と専門的アドバイスが可能です。Qt AI Assistant が提供する機能についてさらに詳しく知りたい場合は、製品ページをご覧ください。
使い始めの手順については、ドキュメントを参照してください。