📑

Claude 3.7 SonnetとGemini 2.5 ProとGPT-4.1の誰が一番、コードの気持ちを理解できるのか?

に公開

Roo Codeのプロンプト組み立てロジックのコードリーディング調査を題材に、Claude 3.7-SonnetとGemini 2.5 ProとGPT-4.1で比較してみました。

Roo Codeを使っています。

このプロジェクトにおける、会話二回目のときに、LLM実際に投げられるデータはどんな形式になっている?Claude を事例に。

制約条件:
* 実際にメッセージを組み立てるのに必要な全部のソースコードを確認しろ
* 厳密に再現しろ
* system prompt は除外しろ
* JSON形式で出力しろ
* 環境情報などはダミーで良い

題材:
「README.mdを要約して」

Claue 3.7-Sonnet

  • systemプロンプト全体を除外してほしかったが、まぁしゃーない
  • <environment_details> とか再現できてて偉い

優秀!

{
  "messages": [
    {
      "role": "system",
      "content": "You are Roo, an experienced technical leader who is inquisitive and an excellent planner. Your goal is to gather information and get context to create a detailed plan for accomplishing the user's task, which the user will review and approve before they switch into another mode to implement the solution.\n\n====\n\nTOOL USE\n\n... (システムプロンプトの内容) ..."
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "<task>\nREADME.mdを要約して\n</task>"
        },
        {
          "type": "text",
          "text": "<environment_details>\n# VSCode Visible Files\n\n# VSCode Open Tabs\n\n# Current Time\n2025/4/16 午前8:27:59 (Asia/Tokyo, UTC+9:00)\n\n# Current Context Size (Tokens)\n(Not available)\n\n# Current Cost\n$0.00\n\n# Current Mode\n<slug>architect</slug>\n<name>Architect</name>\n<model>o3-mini</model>\n</environment_details>"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "まず、README.mdファイルの内容を確認して要約するために、ファイルを読み取る必要があります。"
        },
        {
          "type": "tool_use",
          "id": "tool_1",
          "name": "read_file",
          "input": {
            "path": "README.md"
          }
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "[read_file for 'README.md'] Result:<file><path>README.md</path>\n<content lines=\"1-100\">\n# Roo Code\n\nRoo Code is a VS Code extension that helps you write, understand, and improve code using Claude.\n\n## Features\n\n- **Chat with Claude**: Ask questions about your code, get explanations, and request improvements.\n- **Code Generation**: Generate new code based on your requirements.\n- **Code Refactoring**: Improve existing code with better patterns and practices.\n- **Bug Fixing**: Identify and fix bugs in your code.\n- **Documentation**: Generate documentation for your code.\n\n... (READMEの内容) ...\n</content>\n</file>"
        },
        {
          "type": "text",
          "text": "<environment_details>\n# VSCode Visible Files\n\n# VSCode Open Tabs\n\n# Current Time\n2025/4/16 午前8:28:05 (Asia/Tokyo, UTC+9:00)\n\n# Current Context Size (Tokens)\n12,732 (6%)\n\n# Current Cost\n$0.05\n\n# Current Mode\n<slug>architect</slug>\n<name>Architect</name>\n<model>o3-mini</model>\n</environment_details>"
        }
      ]
    }
  ]
}

https://gist.github.com/erukiti/d1e0dbd3a65b66af57bffc889e59e982

Gemini 2.5 Pro

  • [SYSTEM INFORMATION] は、大分惜しいけど頑張ってる
  • <thinking> 再現がんばってる(たしか、実際には使われないはずだけど、コード自体はある)

惜しい!

{
  "model": "claude-3-opus-20240229",
  "max_tokens": 4096,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "[SYSTEM INFORMATION]\nOperating System: macOS Sequoia\nDefault Shell: /bin/zsh\nHome Directory: /Users/erukiti\nCurrent Workspace Directory: /Users/erukiti/work/Roo-Code\n\n[WORKSPACE FILES]\n.env.sample\n.eslintrc.json\n...\nREADME.md\n...\n(File list truncated)\n\n[CURRENT TIME]\n2025/4/16 午前8:52:38 (Asia/Tokyo, UTC+9:00)\n\n[MODE]\n<slug>architect</slug>\n<name>Architect</name>\n<model>gemini-2.5-pro-exp-03-25</model>\n\n<task>\nREADME.mdを要約して\n</task>"
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "<thinking>ユーザーはREADME.mdの要約を求めています。まず、ファイルの内容を確認する必要があります。read_fileツールを使用してREADME.mdの内容を取得します。</thinking>"
        },
        {
          "type": "tool_use",
          "id": "toolu_01A09q90qw90lq917835lq9",
          "name": "read_file",
          "input": {
            "path": "README.md"
          }
        }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "tool_result",
          "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
          "content": [
            {
              "type": "text",
              "text": "[Content of README.md - Truncated as requested]"
            }
          ]
        }
      ]
    },
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "README.mdを要約しました。\n\nRoo Code(旧Roo Cline)は、VSCode内で動作するAI搭載の自律型コーディングエージェントです。自然言語での対話、ファイル操作、ターミナル実行、ブラウザ自動化が可能で、カスタムモードにより様々な役割(コーディング、アーキテクト、デバッグなど)に適応します。主な機能はコード生成、リファクタリング、デバッグ、ドキュメント作成、質問応答、タスク自動化などです。MCP(Model Context Protocol)により外部ツールとの連携も可能です。最新版3.11ではパフォーマンスが向上し、APIキー残高表示やプロジェクト単位のMCP設定などの新機能が追加されました。ドキュメントやコミュニティ(Discord, Reddit, GitHub)も提供されています。"
        }
      ]
    }
  ]
}

https://gist.github.com/erukiti/ca56e674230a701c933a51990e99d30f

GPT-4.1

昨日登場したばかりのやつ。コーディング性能上がってるらしいので期待!!!!

  • 期待外れ
  • 一般論の悪癖が出過ぎてる
  • ゾス力が足りない!!!!!
[
  {
    "role": "user",
    "content": [
      {
        "type": "text",
        "text": "README.mdを要約して",
        "cache_control": { "type": "ephemeral" }
      }
    ]
  },
  {
    "role": "assistant",
    "content": "このプロジェクトのREADME.mdは、プロジェクトの概要、セットアップ手順、主な機能、使用方法について説明しています。"
  },
  {
    "role": "user",
    "content": [
      {
        "type": "text",
        "text": "もう少し詳しく説明して",
        "cache_control": { "type": "ephemeral" }
      }
    ]
  }
]

https://gist.github.com/erukiti/9dbb48b237409c4babba9bdcd830fa9a

まとめ

これだけで結論を出しても仕方ないけど、

  • Claude 3.7 Sonnetが一番コードの気持ちを理解できてる
  • Gemini 2.5 Proは惜しい
  • GPT-4.1は、このタスクに限っては論外。ゾス力たんねーぞ

LLMの使い分けは大体Geminiでいい(2025年4月時点)|erukiti の記事ではSonnetをこき下ろしたけど、こうやって見ると、個別タスクとしては強いんだよな。

あーでも、テックな会話相手や、コーディングエージェント全体ではGemini 2.5 Proが一番だと思ってる。Sonnetは小さいレンジでの性能は高くても、コンテキストサイズが小さすぎるのと、近視眼的になりやすいため。

Discussion