🐨

GitHub Copilot Agent Modeで各モデルの出力結果の違い

に公開

エージェントモードが登場してから何気なくGPT-4.1を使っていましたが、改めて同じタスクを渡した時にどのような違いがあるのか気になったので検証してみました。

対象のモデル

  • GPT-4.1
  • Claude Sonnet 4
  • Gemini 2.5 Pro
  • o4-mini

精度比較に使用するタスク

Vecel AI SDKを使用したGenerative UIのアプリのバージョンアップ対応とAI SDKRSC→AI SDK UIへの移行を依頼してみます。

このアプリは約1年前に作ったのでバージョンと中の書き方が古いままです。
当時は「v3.x」だったのですが、現在は「v4.x」が安定版として出ているようです。

https://zenn.dev/headwaters/articles/c13232086a289a

最新のバージョンへのリプレイスを依頼して生成速度と精度を見てみます。

前提

エディタはVS codeを使用します。
タスクはCopilot ChatのAgentモードを使用します。
独自にプロンプトをカスタマイズしたり、MCPサーバーの設定とか変数の設定とかコンテクストの追加などもできますが、今回は敢えて何も設定しません。

~使用するプロンプト~

このプロジェクトで使用しているVercel AI SDKのバージョンを最新にアップデートし、それに合わせてコードを修正する。
[詳細]
・現在v3.x系のバージョンを使用しているので、最新のバージョンに更新してください。
・大幅なアップデートになるので、コードの書き方が変わっている可能性があります。
・プロジェクト全体を俯瞰して最新のバージョンに合わせた実装に修正してください

GPT-4.1

-- 結果 --
バグが2件発生しました。

1件目はcreateAI関数にinitialUIStateの定義が必要なのですが、抜けていたため以下のバグが発生。

2件目はすぐに原因が掴めなかったのですが、AI側にリクエストを飛ばしたタイミングで、stateの更新をしようとした時にJSONのparseが失敗しているようです。

-- 出力結果とそれに対するコメント --
まず、初手から謎にPythonと勘違いしてしまったので、明示的に「Next.js*TypeScript製のプロジェクト」である旨を伝える必要がありました。


次にpnpm add ai@latestを実行するよう指示されたので、アップデートして修正する箇所を出してきました。


付随する@ai-sdk/azure@latestもバージョンアップが必要なため、コマンドを実行しバージョンを上げました。


コードの修正に入ったのですが、バージョンが変わったことによって実行するメソッドを変えないといけないのか変えなくて良いのかで二転三転していました。

v4だとcallが正しい

いやinvokeが正しい!

あれ、エラーになる...やっぱcallが正しい

ここがあったので処理に時間がかかってるなーと感じた


次に元々定義していた型の修正に入りました。
「v4の新しいMessage型に合わせて修正する」と言っていますが、型はAI SDKの方で用意されたものを使うのではなくてエンジニア側で定義するのが正しいので、ここの修正は全て不要です。


型の修正とそれに合わせたAI側とUI側の実装が入って終了しました。

-- 総評 --
処理に結構時間がかかったのと、無駄なコードの修正が多かったです。
コードが簡潔になる分には全然良いのですが、既存の機能まで削除してしまったのでかなりマイナスです。

あと欲を言えば、コードを削除したのならimport文もついで削除して欲しかった

Claude Sonnet 4

-- 結果 --
.envファイルに設定する環境変数が2つ足らなかったくらいで、その他は問題ありませんでした。

-- 出力結果とそれに対するコメント --
まずは現在使っているバージョンとコードを確認して、アップデートするためのコマンドを実行しました。


次に修正に入っていったのですが、既存で導入してたzodとの互換性によるエラーが発生してるようなので、zodもバージョンアップします。


次は別のエラーが発生したようで、原因が「環境変数ファイルがないこと」と出ているのですが、すでに.envファイルを作成しています...
gitの管理対象外なので見れてないのかな?


バグが発生しなくなったので、buildコマンドを実行してビルドに成功するか確認しました。


ローカルサーバーを立ち上げてもエラーが発生しなかったので、READMEに変更内容を記載して処理が終了しました。

-- 総評 --
バージョンを上げるといったタスクに対して最小限のコード修正で対応してくれました。
あとはReadmeにアップデート履歴を書いてくれました。
要る要らないは置いといてドキュメントにも記載してくれるってことが分かってよかった

buildコマンドを実行してTypeScript周りのエラーとか起動時のエラーが発生しないことも確認してくれるのありがたい。

o4-mini

-- 結果 --
バグが発生しました。
なんならコードもProblemが発生しちゃってます。

-- 出力結果とそれに対するコメント --
まずバージョン上げから入ったのですが、バージョン上げコマンドの実行ではなくて、package.jsonを直接修正しちゃいました。
で、「pnpm installは自分でやってね」とのこと。


次にv4に変えた場合の変えなきゃいけないメソッドやコードを出してきたのですが、どれも事実と異なります。
さらにVercelのドキュメントのリンクも間違っている。


...で、処理が終了しました(笑)

-- 総評 --
出力量はぶっちぎりで少ない割に、生成時間は一番長かったです。
(ここに関しては推論系のモデルってこともありますが。)

の割には出力結果はかなりシンプルで、aiパッケージのアップデートも^4.0.0とかなり雑です。
さらにインストール対応は自分でやる必要がある。

特徴的なのは各ステップでWebサイトを覗いているのですが、どれも404でした。
あとは率直にこれはAgentモードと呼べるのか??といった出力内容で、Askと変わらないなと。

Gemini 2.5 Pro

使いたかったのですが、現状400エラーになります。。

どうやら同じバグが他の人も発生しているようなので、GitHub Copilot側で対応され次第試してみます
https://github.com/microsoft/vscode-copilot-release/issues/8404

感想

結果で見るとClaude 4 Sonnetが一番正確でした。
GPT-4.1も途中まで悪くなかったのですが、無駄にコードを変えちゃったのでその後の修正がちょっとめんどいです。
o4-miniはあまり得意じゃないのかな?という印象です。

2025年6月から1月に遅れるAIへのリクエストがカウント制になったので、Claude4 Sonnetを基本的には使って、上限きたらGPT-4.1にしようかなと思いました。

とはいえ今回は一つのケースでの検証だったので、別の言語にした時やタスクに対するコードの修正量がもっと多い時には違う結果になるかもしれません。

GitHub Copilotのドキュメントに各モデルの使い分けの紹介が載ってあるので、こちらを参考にするのも良さそうです。
https://docs.github.com/ja/copilot/reference/ai-models/choosing-the-right-ai-model-for-your-task

ヘッドウォータース

Discussion