Gemma4 vs Qwen3.6:コードデバッグにおける「思考機能」の差を検証した結果
はじめに:なぜこの検証を行ったのか
本検証は、Open WebUI向けにPandasAIを活用したデータ分析ツールを開発していた際に発生した不具合について、ローカルLLMによるデバッグ能力の違いを検証するために実施しました。
開発中、チャート生成機能において「valve設定でoutput=”png”を指定しているにもかかわらず、HTML(iframe)形式でグラフが出力されてしまう」という現象に直面しました。この問題を解決するため、複数のローカルLLMに対してコードと設定ファイルを渡し、「問題の本質を捉える力」にどのような差が出るかを比較しました。

検証環境の概要
ハードウェア環境
- マシン: MacBook M1 Max
- メモリ: 64GB RAM
使用モデル
- Gemma4-26B-E4B
- Qwen3.6-35B-A3B(思考OFF)
- Qwen3.6-35B-A3B(思考ON)
開発の前提条件
- プラットフォーム: Open WebUI向けツール開発
- 活用技術: PandasAI(データ分析)、Pythonによるチャート生成機能の実装
- 発生した問題: 設定でPNG(画像)を要求しているにもかかわらず、なぜかHTML形式のグラフが表示される
各モデルによるデバッグ結果と分析
1. Gemma4-26B-E4B:表面的な現象の説明に留まる
Gemma4は、プログラム内の条件分岐(if文など)による挙動の変化に焦点を当てた回答を行いました。
【Gemma4の回答要点】
- chart_generator.py内のメソッドにおいて、サーバーから返ってきたレスポンスの「形式(Content-Type)」によって処理が分岐している。
- サーバー側からHTMLが返ってきた場合、プログラムはそれを「正常なHTML出力」として受け取り、そのまま画面に表示するフローになっている。
評価:
プログラムの挙動を論理的に説明できていますが、分析は「コード内の動き」に留まっています。「なぜそもそもHTMLが返ってきているのか」という根本原因には踏み込めていません。

わかりやすい例え話(テレビ)
「テレビが映らない。それは、リモコンの信号が届かず、画面(ディスプレイ)そのものがオフになっているからだ」と、目の前の「表示結果」だけを原因として指摘している状態です。

2. Qwen3.6-35B-A3B(思考OFF):接続部の仕様を指摘
思考モードをオフにしたQwen3.6は、Gemma4よりも一歩踏み込み、サーバー側の「フォールバック(代替処理)」の仕組みに言及しました。
【Qwen3.6(思考OFF)の回答要点】
- server.pyにおいて、PNG生成に失敗した際の「エラー回避用処理(フォールバック)」が実装されている。
- サーバー側で画像化に失敗した際、エラーを出すのではなく「代わりにHTMLを返す」という仕様になっているため、クライアント側がそれをそのまま表示してしまっている。
評価:
「プログラムの仕様によって、意図しない挙動が起きている」という問題構造を正確に捉えています。しかし、「なぜ画像生成自体が失敗したのか」という、環境依存の根本原因までは特定できていません。

わかりやすい例え話(テレビ)
「テレビが映らない。それは、本体と壁の接続端子が緩んでいたり、入力切替が間違っていたりして、映像信号が届いていないからだ」と、接続部(ケーブルや設定)に焦点を当てています。しかし、「なぜ信号が届かないのか」という根本的な原因までは考えていません。

3. Qwen3.6-35B-A3B(思考ON):環境設定まで踏み込んだ根本原因の特定
今回の検証で最も驚異的だったのが、思考モードをオンにしたQwen3.6の回答です。Docker環境の設定不足という、コードの外側にある根本原因を特定しました。
【Qwen3.6(思考ON)の回答要点】
- 環境変数の不足: server.pyが必要とするブラウザ(Chromium)やドライバーのパスが、docker-compose.yamlに定義されていない。
- 再起動によるエラーの発生: Docker環境では、設定が不足しているとコンテナの再起動時にパスの不一致が発生し、画像生成プロセスが失敗する。
- 連鎖的な挙動: 「環境変数不足によるエラー」→「サーバーでの画像生成失敗」→「仕様に基づくHTMLへのフォールバック」という一連の因果関係を完全に解明。
- 解決策の提示: 具体的なdocker-compose.yamlの修正案まで提示。
評価:
コード、サーバー仕様、そしてDocker環境という「システム全体」を俯瞰して分析しています。問題の発生源から結果としての挙動までを論理的な鎖でつなぎ合わせる、極めて高度なデバッグを行いました。

わかりやすい例え話(テレビ)
「テレビが映らない。それは画面やケーブルの問題ではなく、そもそもコンセントに電気が来ていないからだ」と指摘しています。さらに、「電源コードの不備や、家のブレーカーが落ちている可能性」まで考慮し、「コンセントの確認と修正」という根本的な解決策を提示しています。画面という「結果」ではなく、電気(インフラ)という「環境・原因」まで見抜いています。

限られた情報から、問題の根源を見つけ出すプロセスが明確に異なります。
まとめ:デバッグ能力の比較表
今回の検証結果をまとめると、以下のようになります。
| 特徴 | Gemma4-26B | Qwen3.6(思考OFF) | Qwen3.6(思考ON) |
|---|---|---|---|
| 分析の焦点 | コード内のロジック(分岐) | サーバー側の仕様・挙動 | システム全体と環境設定 |
| 問題の深さ | 「何が起きているか」の説明 | 「なぜそう動くのか」の指摘 | 「根本原因は何か」の特定 |
| 解決策の提示 | 弱い(コード修正のみ) | 中程度(仕様への言及) | 非常に強い(環境設定の修正案まで提示) |
| デバッグ精度 | プログラム理解レベル | 業務フロー・仕様理解レベル | インフラ・環境を含めたプロ級 |
結論:思考機能がデバッグの「深さ」を決める
今回の実験を通して、「思考機能(Chain of Thought)」の有無が、デバッグにおける到達点に決定的な差を生むことが明らかになりました。
- 思考OFFのモデルは、目の前のコードや仕様を正しく解釈できますが、その背後にある「環境」や「原因の連鎖」を追うことは困難です。
- 思考ONのモデルは、提示された断片的な情報から、「なぜこの問題が起きるのか」という因果関係を推論し、コードの外側(Dockerやインフラ設定など)まで視野に入れた根本的な解決策を導き出すことができます。
高度なシステム開発において、環境依存の複雑なバグに直面した際、思考機能を持つLLMは単なる「コードチェッカー」を超え、「システムの診断士」として極めて強力なパートナーになるでしょう。


コメント