OpenAI O3:エージェンティックコーディングの画期的進歩?

AGIに仕事を奪われたい
この記事は約16分で読めます。

9,156 文字

OpenAI O3: A Breakthrough in Agentic Coding?
Exploring the coding capabilities of the newly released o3 from #openai LINK:chat.openai.comRAG Beyond Basics Course:

こちらが私のプロンプトです。「第1世代の伝説のポケモン25種の簡単な百科事典を作成してください。タイプ、コード断片、画像を含めて、CSS、JS、HTMLを1つのファイルにまとめてください。」これはおそらくこのプロンプトに対して見た中で最も見栄えの良いウェブサイトの一つです。検索機能も動作し、さらに数字でチャンネルが切り替わるTVチャンネルまで作成してくれました。とても素敵なアニメーションが単一の短いプロンプトで実現されています。この素晴らしいアニメーションをご覧ください。そして、これは何の問題もなくこれを実行できる初めてのOpenAIモデルです。
しかし、完璧ではなく、派手な方法で失敗することもあります。これについては後ほど例を見ていきます。この動画ではO3のコーディング機能について見ていきますが、他のモデルでは見たことがない非常に印象的な機能がいくつかあります。私はO3でこのとても単純なウェブアプリを作成しましたが、モデルがこれまでに行ったことの中で最も印象的なものの一つだと思います。理由は後ほど説明します。
いくつかのコーディング例を見る前に、これをお見せしたいと思います。O3に「モデルコンテキストプロトコルとは何か、エージェントツーエージェントプロトコルとどう違うのか」と尋ねました。ウェブ検索を有効にしていないことに注意してください。他のモデルでこのプロンプトをテストした際のように、モデルが単に幻覚を見るだろうと予想していました。
しかし、これが出てきました。これは内部の思考の連鎖です。「ユーザーはモデルコンテキストプロトコルとエージェントツーエージェントプロトコルについて尋ねています。これらの用語は2025年以降の新しいものか動的なものである可能性が高いので、正確な定義を得るために調べるべきです。モデルコンテキストプロトコルは新しい概念かもしれず、エージェントツーエージェントプロトコルはAIアライアンスからのエージェントツーエージェント仕様に関連している可能性があります。」
これは以前に気づいたことのない機能です。推論モデルにこのような質問をしても、通常は何らかの回答を出しますが、このモデルは回答を出す前にウェブ検索を行うことを決定しました。繰り返しますが、デフォルトでウェブ検索を有効にしていませんでしたが、どうやらこのウェブ検索ツールにアクセスできるようで、それを使用することを決定したようです。
もう一つ注目すべき点は、それが行うウェブ検索はGPT4oが以前行っていた通常のウェブ検索とは大きく異なることです。これはより「エージェンティック」な性質を持っています。まず「モデルコンテキストプロトコル仕様」と「エージェントツーエージェントプロトコル」を検索し、次に二次的なウェブ検索を行い、それらすべてに基づいて最終的な回答を導き出しています。これは非常に印象的です。
私が見た他のエージェンティックなウェブ検索の実装はClaudeからのものです。ここではウェブ検索と拡張思考を有効にできます。これを使用すると、非常に似たパターンが見られます。まず内部の思考の連鎖が生成され、ウェブ検索クエリが出され、そのウェブ検索が実行されます。ここでは中間的なウェブ検索を行い、現在そのウェブ検索に基づいて応答を生成していると思いますが、時にはウェブ検索を洗練し、検索エンジンに二次的なクエリを行うこともあります。
では、テストしたいくつかのコード例を見ていきましょう。最初のプロンプトは「第1世代の伝説のポケモン25種の簡単な百科事典を作成し、タイプ、コード断片、画像を含め、CSS、JS、HTMLを1つのファイルにまとめてください」でした。このモデルの内部思考の連鎖はO1とは大きく異なり、よりエージェンティックな性質を持っています。ユーザーの要件は何か、どのようにそれを満たせるかを考え、計画を立てています。後ほど、思考の連鎖内で順次ツール呼び出しや関数呼び出しを行うのを見せますが、これは以前に見たことがありません。
これが生成されたコードであり、このような特定のプロンプトに対してLLMが作成した中でおそらく最も見栄えの良いウェブサイトの一つです。コーディング、特にUIデザインのためにファインチューニングされていることは明らかです。この場合、上部に検索バーが表示されていなかったので、モデルに検索バーを含めるよう単純に頼んだところ、以前の機能を保ちながら完璧なコードを提供してくれました。
完全なコードを提供するよう常に頼む必要があることに注意してください。通常は単に更新されたコード編集を提供する傾向があり、コーディングIDE内で作業している場合は問題ありませんが、ここではすべてを使用していたため、動作するコードが欲しかったのです。更新も問題なく機能しており、非常に素晴らしく見えます。
最初のプロンプトでは創造的な自由度が高かったのですが、これらのLLMの主な有用性は特定の指示に従えるかどうかです。創造性のための余地を多く残せば、モデルは何かを思いつくでしょう。ここで私が使用するのが好きなプロンプトの一つを紹介します。これはLLMに非常に具体的な指示を与えながらも、創造性のための余地も残しています。
プロンプトは「数字キー0〜9でチャンネルを切り替えられるTVをコーディングして」というものです。各チャンネルにはアイデアと面白いアニメーションを思いつく必要がありますが、それは古典的なTVチャンネルのジャンルにインスパイアされている必要があります。P5.jsで800×800のスケッチを作成し、HTMLは使用せず、すべてのTVチャンネルは作成するよう求められたTVスクリーン領域にマスクする必要があります。
このコードをコピーします。出力はこのようになっています。これが最初のチャンネルの「クラシックチューン」です。「グローバルニュース」も見てみましょう。このバーも追加されています。これは「アクションスポーツ」、「グルーヴTV」、「ネイチャースケープ」、そして「コスモスサイファイ」です。何らかの理由で、この場合はTVチャンネル名が下部に表示されています。
このような特定のプロンプトで見た最高のアニメーションはGPT-4.1からのものだったと思います。アニメーションについてはもう少し改良を求めることもできますが、全体的にはとても良い仕事をしています。
このモデルを混乱させることができるか試してみたかったので、スクリーンショットを提供し、「実際の要件に基づいて何か問題が見えますか?」と尋ねました。モデルは「ユーザーは元の要件に基づいて提供したソリューションに問題があるかどうか尋ねているようです」と言い、天気チャンネルの画像なので、デッドピクセルなどについて考えています。
興味深いことに、思考の連鎖の中で実際にこの画像を表示しており、これは他のモデルでは見たことがないことです。しかし最も興味深い部分は次のとおりです。「各番号のチャンネルのアイデアを思いつくという要件は満たしていますが、レイヤーの重なり方に問題があるかもしれません。チャンネルテキストが重なったり、TVセットの境界線が不要な可視性を引き起こしたりする可能性があります。チャンネル関数内での背景呼び出しがクリッピング領域を超えてキャンバスをリセットする可能性があることも懸念されます。」
基本的に、さまざまなデバッグ戦略について考えているのです。そしてPythonコードを書き始め、分析したいさまざまなことに対してそのコードを実行しているのが見えます。これは思考の連鎖の中で起こっています。順次関数呼び出しや関数実行を行い、それらの結果を分析し、それに基づいて計画や実装を更新しています。これは非常に興味深く、個人的には以前に見たことがありません。これは確かに推論モデルの新たな知性レベルを示しています。
ここで幻覚を見ているかどうかは分かりませんが、その分析に基づいて「はい、天気チャンネルがTVスクリーンマスクから漏れています」と言っていますが、視覚的に見ると、そのようには見えません。いくつかの更新を推奨しました。
私が問題かもしれないと思ったのは「スケッチが800×800ではなく、正方形ではなく長方形です。画像をもう一度見てください」と言ったことです。するとキャンバスは作成されているが、表示方法によって長方形のように見える可能性があると言われました。
いくつかの例を見た後、この特定のアプリとそれがどのように作成されたかについて議論したいと思います。これはChart GPT内で多くの可能性を開くと思います。
大きな推論モデル向けに使用するもう一つのプロンプトがあります。「回転する非同期数字で作られた球体のJSシミュレーションを作りたいです。最も近い数字は純白で、最も遠い数字は黒い背景の上でグレーに薄くなるべきです。すべてのコードを1行にしてください。」
これが生成されたコードですが、このコードを実行すると問題が見えてきます。最も近い数字は純白で、遠い数字はグレーであるべきと頼みましたが、それが逆になっています。そこで画像を提供し、マルチモーダル推論機能を持っているので「あなたが作成したこのシミュレーションに問題がありますか?」と尋ねました。
約20秒間考えた後、「スクリーンショットを元の要件と比較しています。球体のグラデーションはほぼ正しく、中心が白で端がグレーに薄くなっていますが、最初に4点を描画しているのでZ軸でのソート問題がある可能性があります。数字が重なっているかもしれません。」と返答しました。
何らかの理由で最初に20秒間考えた後、別の思考プロセスを開始しました。こちらでは47秒間考えました。他の推論モデルのように数秒間考えてから応答を生成するのではなく、思考の連鎖の中で実際に行動を取ることができます。これは興味深いことに、2つの異なるセッションで考えたということです。
今、ペインターズアルゴリズムの順序が逆であることを理解しました。「カメラから後ろに向かってポイントをソートしたので、一番後ろの数字が最後に描画され、近くの明るい数字を部分的に覆っています。」と言って更新されたコードを提供しましたが、これを実行しても同じ問題が続きました。
「同じ問題が続いています」と言うと、再び時間をかけて考えました。思考プロセスは正しいのですが、コード実装が正しくなかったようです。「両方の問題を修正した単一バージョンを以下に示します。ペインターズアルゴリズムはまだ遠いポイントを最初に描画し、次に近いものを描画します。そして深度シェーディングマッピングは、近いものが純白で遠いものがグレーになるように修正しています。」
これで問題が解決するか見てみましょう。問題が解決したのが分かります。数回の反復で問題を解決できましたが、ガイドする必要がありました。両方の場合でスクリーンショットを提供するだけでよかったのは良いことです。モデルがスクリーンショットだけから問題を理解し、マルチモーダルデータに対して推論できるのは非常に印象的です。
コーディングプロジェクトの例をもう2つ紹介してから、テキストから画像へのジェネレーターとなぜ個人的に感銘を受けたのかを見ていきます。
これはウイルス性の六角形内でのボールの跳ね返りの変化形です。非常に似たプロンプトですが、今回は20個のボールが内部で跳ね返るようにしたいと思っています。すべて同じ半径で、番号が付けられており、中央から落下し始める必要があります。ここにカラースキームがあります。そして、ボールと辺の間、ボール同士の間の相互作用に関してもとても具体的な要件があります。すべてを単一のHTMLファイルにまとめる必要があります。
コード固有のことに関しては、まず要件について推論していますが、生成されるコードは通常かなり簡潔で、他の小さなモデルと比較して説明はあまり行わない傾向があります。
これがコードです。これは実際にこれを効果的に解決できるOpenAIの最初のモデルだと思います。再度実行してみましょう。すべてが中央から始まり、ヘキサゴンの回転あるいはヘプタゴンの回転に基づいて回転していることが分かります。実際にヘプタゴンであることを確認する必要がありますが、はい、ヘプタゴンです。すべての要件を満たすことができています。非常に印象的です。これを行えるOpenAIモデルは見たことがありません。私のテストで最も近づいた他のモデルはClaudeだけでした。
決して完璧なモデルではなく、かなり奇妙な方法で失敗することもあります。他の結果を見た後、かなり簡単にできるはずだと思ったプロンプトがあります。「現実的な物理を持つ落下する文字のJavaScriptアニメーションを作成してください。文字は異なるサイズでランダムに画面上部に現れ、地球の重力の下で落下する必要があります。」ボールの場合と非常に似た衝突検知など、まとめた要件がたくさんあります。
このコードを作成してくれました。ここで興味深い問題が発生しました。このコードを貼り付けて実行すると、「unsupported open type signature 404」に関連するエラーが表示されます。この後、いくつかの解決策を推奨する反復があり、さらにやり取りを追加しました。他のテストに進みたかったので中断しましたが、これが最終的に到達した結果です。
文字は落下しているようですが、実際には表示されていません。他のモデルでよく見られるのは、通常は文字の周りに長方形があり、それが文字を隠すことがあります。それが原因かもしれませんが、4、5回の異なる相互作用を試みた後でも、O3はこの機能するコードを提供できませんでした。
これで最後の例に移りますが、これは他のモデルでは見たことがなかったため、実際に感銘を受けたものです。プロンプトはとてもシンプルでした。「テキストから画像へのアプリを作成するのを手伝ってください。ユーザーはテキストプロンプトを提供し、Gemini Flash 2.0ネイティブ画像生成APIを使用して画像を作成し、ユーザーに表示します。画像を再生成するとともにダウンロードする機能も必要です。」これを2回提供しました。2回目は単一のPythonファイルですべてを実装してほしかったからです。
通常、他のLLMでこのプロンプトをテストする場合、使用するAPIのドキュメントを提供します。そうすることでLLMが実装中に参照できるようにします。このモデルは検索機能を持っているので、Gemini SDKが最近変更されたことを考えると、どのように対応するか見たいと思いました。ほとんどのモデルはトレーニングデータで古いSDKを見ており、ドキュメントを提供しても通常は新しいSDKと古いSDKの間で混乱しています。
この場合、どのSDKを使用すべきかを把握し、問題がある場合はどのように解決するのかを見たいと思いました。
内部思考の連鎖はこのようになっています。「ユーザーはテキストプロンプトを入力し、Gemini Flash 2.0 APIが画像を生成して表示するテキストから画像へのアプリを作成したいと考えています。」次に「指示はFast API、FlaskやRadioなどのプラットフォームを使用した小さなPythonウェブアプリを示唆しています」と言っていますが、どれを使用するかは指定していなかったので、モデルが決定する必要がありました。
次に「Gemini flash 2.0画像生成API」のウェブ検索を行い、「少なくとも10の多様で高品質なソースを集める必要があります。以前のものも含まれますが、gradioやstreamlitに関するものも必要です」と言って二次的なウェブ検索を行っています。これも順次ツール使用の例です。ビデオ全体で言ってきたように、これはより「エージェンティック」なシステムのようです。
モデルが原因かもしれませんが、私の推測では、複数のパスを促すシステムです。「リソースのリストを収集しましたが、少なくとも10の多様で高品質なものが必要です」と言っているので、最初のパスでは十分なソースが得られなかったと判断し、もう一度パスを行うことを決定したようです。これは単純なウェブ検索メカニズムを使用しているだけであり、ディープサーチ機能について話しているわけではないことを考えると非常に印象的です。
これらすべてに基づいて実装計画を立て、すべてを実装しています。興味深いのは、実際にGemini SDKの新しいバージョンを使用することを決定したことです。新しいバージョンを使用していることを示しましょう。これは非常に良いことです。しかし、構成を見る際にミスを犯し、古いSDKからいくつかの構成を使用してしまいました。
これは、古いSDKでこのconfigure関数を使用しようとした以前のバージョンです。問題が発生したので、間違ったSDKを見ていることを伝えました。いくつかのことが起こり、エラーメッセージを提供するだけで、再度計画を立て、二次検索を行い、コードを更新しました。
また、非常に興味深いこともあります。コードを実行する前に「アプリがどのように見えるはずかの画像を作成してください」と頼みました。コードに基づいて、アプリがどのように見えるかについての考えは、実際に生成されたアプリに非常に近いものでした。
ここが元のアプリ、つまり実際に生成されたアプリです。生成設定があり、要求できる画像の数もあります。現在は1つに制限されています。サンプルプロンプトも追加されています。戻って見ると、おそらくもっとクリーンですが、タイトルはまったく同じです。アプリにいくつかの追加テキストが加えられていますが、全体的なデザインは非常に似ています。
数回の反復の後、アプリは完全に機能しています。私が頼んだように、すべてが単一のファイルに自己完結しており、機能は期待通りに動作します。
なぜこれに本当に感銘を受けたのかというと、SDKバージョン間の違いを推論し、SDKに変更があるかどうかを把握する能力があることです。Google検索またはどのような検索メカニズムを使用しているにしても、非常に優れており、思考の連鎖内で順次ツール呼び出し機能を持っていることが非常に強力です。
このケースでも、一度のパスですべてを行ったわけではありません。例えば、ここに構成機能を持つ最初の画像がありますが、エラーメッセージを提供するだけで、再び検索に戻り、その情報を使用して応答を更新することができます。
OpenAIがこれをコーディングIDE内に組み込んだらどうなるか想像してみてください。OpenAIがWindSurfと話し合いを進めているという噂があり、O3のようなモデルのすべてのコーディングやエージェンティックコーディング機能をWindSurfのようなものに導入することは、特にOpenAIがこれらの推論モデルの周りに製品を構築できれば、非常に素晴らしいものになるでしょう。
また、OpenAIのCodex CLIもAnthropicのCloud Codeへの回答のように見えます。実際のソフトウェア開発においてそれがどれほど優れているかを確認するための動画を作成する予定です。興味があれば、ぜひチャンネル登録をお願いします。
また、推論能力、特に誤った注意データセットおよび画像に対する推論能力についてテストする別の動画も予定しています。これらのトピックに興味がある方も、ぜひチャンネル登録をお願いします。
ベンチマークについて話しましょう。いくつかの独立したベンチマークが出始めており、特にOpenAIが強調することを選んだベンチマークでは、Gemini 2.5 Proと比較してかなり良い結果を示しています。例えば、ここに人文科学の期末試験があります。これはテキストバージョンだけだと思います。そしてこれはマルチチャレンジベンチマーク「Enigma Evolves」です。これらはコミュニティによって実行されたベンチマークですが、パフォーマンス対コスト比を見ると、コストの面ではGemini 2.5 Proが依然としてO3よりも比較的良いパフォーマンスを示しています。
例えば、これはブログ投稿あるいはReddit投稿でした。元投稿へのリンクを貼っておきますが、Amy 2025 O4 Miniが最高のパフォーマンスとコスト比を持っています。GeminiはO3に遅れをとっていますが、70から100までの範囲だけを見ていることに注意してください。しかしGeminiのコストは確実に低いです。
PhD水準の質問回答を目的としたGPQAでは、GeminiはO3とO4 miniの両方より優れたパフォーマンスを示し、コストもはるかに低いです。これはHDパフォーマンス、これは別のベンチマークMMUです。O3が比較的良いパフォーマンスを示していますが、Geminiははるかに低いコストでこれらのベンチマークのいくつかで比較的似たレベルのパフォーマンスに達しています。
しかし、コード固有のAderポリグロットを見ると、O3が新しい標準です。ただし、はるかに高いコストがかかります。コストを別にして、私自身のテストに基づくと、本当に優れたコーディングモデルのようです。
AGIなのでしょうか?全く近くもありません。本当に優れたコーディングモデルからは期待できないような、本当に愚かなミスをいくつか犯します。しかし、エージェンティックワークフローでツールを使用する能力は、特に推論モデルにとっては、これまで見たことのないものです。それは大きな価値を持つ追加機能になると思います。そしてコーディング能力は、利用可能なベンチマークにおいては最先端です。
このニューモデルで何を構築するのか楽しみにしています。あなたの経験はどうですか?Gemini 2.5 Proと同様のパフォーマンスを感じていますか?それより良いですか?悪いですか?コメント欄に書いて、この新しいリリースについての考えを聞かせてください。
この動画が役立ったことを願っています。ご視聴ありがとうございました。いつものように、次回の動画でお会いしましょう。

コメント

タイトルとURLをコピーしました