
9,115 文字

こんにちは、皆さん。ようこそ。ソフトウェアエンジニアリングは変化しており、2025年末までには根本的に異なる形になるでしょう。2021年、私たちは「Codex」と呼ぶ最初のモデルを発表しました。これは、現在ではVibコーディングと呼ぶものを初めて実証した瞬間でした。
ほんの数週間前、私たちはCodex CLIをリリースしました。これはあなたのラップトップの端末で動作するローカルエージェントで、同期的な方法でペアリングして対話することができます。今日、私たちはソフトウェアエンジニアリングの行く末に向けた一歩を踏み出します。多くのタスクを並行して実行できる新しいシステム、リモートソフトウェアエージェントをリリースします。
OpenAIの命名の伝統に倣い、このシステムをCodexと呼んでいます。Codexの魅力的な点は、あなたのリポジトリ、環境をOpenAIのコンピューティング上で実行できることです。これにより、多くのコピーを実行し、並行して多くのタスクを実行し、後で確認することができます。今日はそれをお見せする予定です。
これを本日からPro、Enterprise、Teamsユーザー向けにChatGPTでロールアウトしています。Plus及びEduユーザー向けには今後対応予定です。CodexはCodex oneという新しいモデルによって動作しています。これは現在最高のコーディングモデルです。O3をベースにベンチマークだけでなく、実際にコードベースにマージしたいコードに最適化しました。
コメント、余分な変更、スタイルなどを考慮し、実際に作業を加速するものに仕上げています。この素晴らしいシステムをお見せするために、Codexチームのメンバーが集まっています。私はHansenで、Codexリサーチチームのメンバーです。私はJoshで、Codexチームのエンジニアです。私はTiboで、コードエージェントとそれを動かすインフラを構築しました。
早速デモに入りましょう。通常はGitHubアカウントを接続する必要がありますが、私はすでに済ませています。ここで私のリポジトリを選択します。オープンソースのpreparednessリポジトリを選びました。これには素晴らしいpreparednessチームが作成したフロンティア評価が含まれています。フロンティア評価はエージェントに関するものなので、この環境を使用します。
そして、どんなリポジトリでも始めるのに良い3つのタスクが表示されました。一つ目はaskタスクで、CodexエージェントにコードベースをNewcomerに説明させます。二つ目はcodeタスクで、リポジトリ内のバグを見つけて修正するよう依頼します。ご存知の通り、ほとんどのリポジトリにはバグがあります。
Codexエージェントがバグを見つけられるか見てみましょう。わざとバグを入れたわけではありません。これは毎日使っているコードです。今日は二つのリポジトリを紹介します。一つはpreparednessリポジトリ、もう一つはcodex cliです。最後の三つ目は特に楽しみにしているもので、コードベースを探索するだけでなく、自発的なタスク提案も行ってもらいます。
では始めましょう。これで3つのCodexエージェントが並行してバックグラウンドでタスクに取り組んでいます。さらにもう一つ、私のお気に入りのタスクを追加します:「できるだけ多くのtypoや文法ミスを見つけて修正してください」。間違えてもいいか見てみましょう。私の指示に含まれるtypoも理解できるか確認します。
このデモの前に、Codexエージェントに興味深いタスクを予約していました。私の目標についての質問です。「コードベースを保守しやすくバグのないものにしたい。コードを読んで、この目標に役立つタスクを提案してください。TODOに過度に重点を置かないでください」。TODOはコードベースのどこにでもあります。それは知っています。新しいことを求めています。
Codexエージェントはコードベースを調査し、複数の問題を発見しました。見てみましょう。ここでは引数にミュータブルなデフォルト値があります。Codexに修正してもらいましょう。変数のスペルも修正します。これは他のタスクの一部として修正されるかもしれませんが、スケジュールしておきましょう。
タイムアウトの設定に一貫性がないようです。ある時は120、別の時は60に設定されています。ここでCodexエージェントは自分自身にタスクを提案しています。これは毎回驚くべきことです。120に設定するよう指示します。これは適切なタイムアウト値でしょう。では、コードを書き出してもらいましょう。
このタスクに進み、Codexエージェントの作業を見てみましょう。これは私のラップトップ上では実行されていません。正確には何が起きているのでしょうか?
良い質問です。これらのタスクが並行して起動しているのを見ると分かるように、エージェントがGPUだけでなく複数のCPUも必要とする世界では、新しいエージェンティックコーディングインフラが必要です。これはOpenAIのコンピューティングインフラ上で実行されています。実際、強化学習に使用しているのと同じインフラで、幸いにもこのリリースに先立って大規模トレーニング実行で十分にテストされており、重要なことにトレーニング中のエージェンシーと後の本番環境でのエージェンシーの一貫性が保たれています。
各タスクは独自のマイクロVMサンドボックス、ファイルシステム、CPU、メモリ、ネットワークポリシーで実行され、エージェントはその中で自由に動き回れます。エージェントはGit setなどのPIXコマンドの使い方を学び、リンティング、フォーマットの実行方法を知っており、明らかに多くのコードを書いて実行するのが好きです。
このインターフェースについて特に気に入っているのは、タスクの立ち上げがとても軽量なことです。左右にタスクがあるだけで、使い方に大きな違いを生み出します。これは強力なインフラであり、ウェブインターフェースがあることで使いやすくなっていますが、より設定可能でもあります。
各タスクは「環境」で実行されます。基本的にはリポジトリですが、環境変数、シークレット、セットアップスクリプトが設定されており、エージェントの能力を最大限に引き出すためにランタイムをカスタマイズできます。初期のアルファテスターと協力した際、リンターやフォーマッターのような単純なものをインストールするだけで大きな初期成果が得られることがわかりました。
現在は多くのものをデフォルトでインストールしています。もちろん、パワーユーザーはすべてのテスト依存関係を設定しています。OpenAIの内部環境では、プリコミットフックも設定しています。エージェントがコーディングする際、実際にコミットしてコミットフックの結果を確認します。これは私自身の開発環境と非常に似ています。
それは本当に素晴らしいですね。実際に作業している様子を見てみましょう。完全に設定されたCodex CLIの環境に移って、何か面白いものをデモしましょう。
私がCodexで最も気に入っているユースケースの一つは、複雑な問題を見つけて解決する能力です。このリリースに向けた準備期間中にも、Codexは私たちのコードの重要なバグをいくつか見つけて修正しました。ここで見ているのはCodex CLIで、TiboとJoshが取り組んできたものです。
ユーザーからのバグレポートがあります。特殊文字を含むファイル名がある場合、CLIのdiffコマンドでエラーメッセージが表示されるというものです。私たちがエージェントに訓練したのは、単に問題に対処するだけでなく、agents.mdファイルという概念を導入したことです。開発者にとってモデルへの操作性と指示の提供が非常に重要であることを知っているからです。
まず最初に行うのは、リポジトリ内のagents.mdファイルを確認することです。ここでは、リポジトリのレイアウトに関する指示を提供しています。特別な指示の一つとして、ターミナルにASCIIアートを表示するよう依頼しています。これは猫のように見えますか?そうです。毎回違う猫が表示されます。私の猫テストに合格しました。
上記では、基本的にCodex CLIリポジトリのTypeScript部分と、エージェントにとって重要なテストの実行方法に関する指示も提供しています。エンドツーエンドの強化学習でモデルをトレーニングする方法の素晴らしい点は、コードを書くだけでなく、コードベースをナビゲートし、問題を再現する方法も知っていることです。
ここでエージェントは自分のための小さなスクリプトを書いています。皆さんと同様、私もプリントデバッグを使うのが大好きです。これはRL訓練の一部として自然に現れるものです。実際にユーザーの説明に合わせたファイルを作成し、コードを実行して問題が再現できることを確認しています。
非常に複雑な行動を示していて、私たちの働き方とよく似ています。どうやってエージェントにこれを教えたのでしょうか?
トレーニングにはこのような多くのタスクがあります。エンドツーエンドの強化学習を使用して、コードの作成からテストの実行まで、全サイクルを完了できることを確認し、タスクを完了してスタイルチェックやプログラム的チェックなど多くの条件を満たせることを検証します。
Sweetbenchのような評価では、最先端のパフォーマンスを達成しています。ここでは実際に問題を見つけ、自分でテストを書いて作業を検証しています。さらにリンターを実行して、コードが私たちのスタイル期待に合っているかを確認しています。agents.mdを参照していますね。
agents.mdの一部として、コミットメッセージやPRメッセージ、コードの構造化方法などに関する詳細なガイドラインを提供できます。コミット用にファイルを準備しているようですね。もうすぐ完了です。私たちが話している間に、この変更が完了しました。この種のデバッグと修正は、私なら少なくとも30分、あるいは数時間かかったでしょう。すぐに最終的なPRが見られると思います。
しかも、これをスマートフォンからでも実行できます。その通りです。PRを見てみましょう。コードをこんなに速くレビューするのは難しいですね。ここでは、テストを追加しています。言及した問題の再現テストです。これは一致しているようです。
自信を持てるのは、実際にこのテストを実行したことです。これが実際に合格したという確信を得られる証拠があります。これを押してPRを作成するだけです。もっとたくさんのタスクが完了しているようですが、どう思いますか、Greg?
これは魔法のようです。明らかにAGIを感じています。皆さん、ありがとうございます。私の考えでは、このシステムが示しているのは、AIシステムを単なる言語モデルとして考えることを超えて、実際にそれらの周りにシステムを構築しているということです。
中核的なAIインテリジェンスだけでなく、どのようなツールにアクセスでき、どのような環境で操作でき、どのような種類の実世界の条件に晒されるよう訓練されているかということなのです。これは本物のAGIに対するインターフェースのように感じ始めています。
まだまだ構築すべきことはありますが、正しい形に近づいているように感じます。このシステムの構築方法についてさらに詳しく説明するために、チームのメンバーがここにいます。
皆さん、こんにちは。私はAndreです。強化学習とコーディングエージェントのための研究とシステムに取り組んでいます。私はKatieで、研究チームにいます。私はJerryで、こちらでも研究に取り組んでいます。
歴史を振り返ると、私たちは長年にわたって大規模言語モデルのコード開発に取り組んできました。最初のCodexモデルはGitHub Copilotを動かし、賢いオートコンプリート程度のものでしたが、今日大きく発展しているAI駆動のコーディング革命を開始したと思います。
それ以来、多くのことに取り組んできました。事前トレーニングスタックのあらゆる層を改善し、あらゆる種類のプログラミングタスクに非常に優れたモデルを作りました。GPT-4がリリースされた時点で、世界で最も優れたプログラミングモデルでした。また、ChatGPTのモデルがユーザーのプログラミング関連の質問に本当に素晴らしく回答できるよう、後処理のレシピを常に改善してきました。
毎日何百万人ものユーザーがChatGPTを使って作業を加速しています。しかし、プログラミング関連のプロジェクトでLLMを使うことはまだぎこちなく感じます。多くの手助けとコンテキスト切り替えを必要とします。強化学習のスケールアップという現在のパラダイムは、より大きな作業の塊を自動化できる場所、そしてモデルに何をどうするかではなく何をしたいのかを伝え、実際の本番コードベースでユーザーのためにそのタスクに長時間取り組むことができる場所に私たちを連れて行けると信じています。
さらに重要なのは、私たちが開放しているインフラが完全にスケーラブルだということです。あなたのラップトップではなく、クラウド上で実行されます。ボタン一つで、1つ、10個、あるいは10,000個のエージェントを起動できます。これはオンデマンドのAIパワー倍増器です。
内部的にも本当に素晴らしい結果を得ています。
デモの中で最も運に左右される部分を担当することになりました。新しいタスクを開始するのではなく、Tibo、Hansen、Joshが開始したタスクを見てみて、それらが良いものであることを願います。
これは実際、過去数年間でエンジニアリング作業がどのように変化したかを反映しています。私の時間の多くは今、コードを書くというよりレビューすることに費やされています。その意味で、私たちのモデルが私たちの望むものと非常に整合していることがさらに重要になります。これらのタスクをいくつか見ながら、整合性を念頭に置いてどのようにモデルをトレーニングしたか説明します。
Tiboが開始したタスクに戻りましょう。ここには3つの重要な部分があります。右側にはモデルが生成した実際のコード出力があります。コードをレビューする際、意味のある変更がされているか、PRの説明通りに正確に行われているか、余分な変更がないかなどを確認します。
コード全体に余分なコメントが散りばめられていないことも重要です。これは以前モデルについて聞いたフィードバックです。そのため、コードの品質とスタイルに焦点を当て、レビューしやすくしました。もう一つ重点を置いたのは解釈可能性と検証可能な出力です。
左側にはモデルが生成した、正確に何を行ったかの要約があります。この関数のインポートを追加したことや、何をなぜ行っているのかが示されています。そして引用ビューでは、モデルが何を行ったかについて説明する際に参照したコードが正確に表示されています。
テストセクションでは、モデルが実際にagents.mdファイルで指示されたテストを実行しています。単にテストを実行するだけでなく、モデルはテストが合格したか失敗したかを報告します。この場合、作業ログのどこでテストが実行されたかを確認でき、それが成功したことを確認できます。
もう一つのタスクを見てみましょう。preparednessリポジトリで行われた別のタスクですが、このモデル出力を見ると最初は問題なさそうに見えますが、モデルのテスト出力からテストに合格できなかったことがわかります。
見たところ、環境内の依存関係の問題かもしれません。pedanticがインストールされていない可能性があります。このPRはコンピューターにチェックアウトしてテストをローカルで再実行し、価値があると判断すれば環境設定に戻って再インストールすることかもしれません。
結局のところ、私たちはCodexを同僚と同じくらい、あるいはそれ以上信頼できると考えています。Andreがある日何をしたかについて、ログや実際のテスト出力などのアクセス権はありません。AIがますます多くのコードを書く世界に向かう中、この種の検証可能性は非常に重要になるでしょう。
今日、これを皆さんと共有できることをとても嬉しく思います。2年以上にわたってこれに取り組んできました。実際、その多くの時間をJerryと一緒に過ごしました。本当に楽しい経験でした。
内部的にこれを使用し、本当に魔法のような瞬間が現れ始めるのを目にしています。今日これを共有するのは、ソフトウェアエンジニアリングがどのように行われるかの未来への一瞥を示していると考えるからです。この製品をどのように使用しているか少しお話しします。
このリリースに向けて、私は多くの調整作業を行うことになりました。以前ほどコーディングの時間が取れなくなりました。理想的には、もっと時間が欲しいところです。Gregもそれには共感できるかもしれませんね。他の人のコードをレビューしたり、Slackを読んだり、製品が適切に開発されているかを確認するために製品を試したりしている時に、コード変更のアイデアや製品の変更、リファクタリングなどを思いつくことがあります。
そんな時はCodexでタスクを開始します。これには30秒ほどしかかかりません。非常に軽量な作業です。そしてSlackや他の作業に戻ります。後で戻ってくると、タスクが完了しています。小さなタスクの場合もあれば、野心的に大きなリファクタリングや機能のリクエストを出した場合もあります。
これが常にうまくいくわけではありません。これは研究プレビューであり、まだ初期段階だと考えています。しかし時には数百行の差分があり、開いて読み始めると「わあ、これは実際に正しそうだ」と思います。モデルが何をしたかを読み、モデルがいくつかのテストを実行したこと、テストが失敗して修正したことなどを確認します。左側を見ると小さなテスト結果がすべて緑色で、「この変更は本当に良さそうだ。PRを開こう。同僚にレビューを依頼しよう。承認されれば、マージしてコードベースに取り込まれるだろう」と思います。
そして一歩引いて気づくのは、非自明な変更、大きな変更をコードベースに取り込んだのに、そのブランチが自分のラップトップに一度も触れていないということです。それはこれらのエージェントへの非同期委任を通じたインタラクションによって完全に行われたものでした。これがうまくいくと本当に魔法のような瞬間であり、素晴らしいことです。他の同僚と話すと、彼らもこの製品を使っていて、それぞれ異なる方法で使い、独自の魔法のような瞬間や相互作用を経験しています。これらのストーリーの一部は、このリリースに関連するブログからリンクされているビデオで見ることができます。
これらはすべて非常に興奮することですが、最も興奮しているのは今日これを皆さんと共有し、皆さんがそれで何をするかを見ることです。Codexの動作について本当に興味深いのは、非常に非人間的な強みと弱みを持っていることです。そのため、静的なツールとしてだけでなく、コードベースをその能力に最適化すると、はるかに多くのメリットが得られます。
実際、Codexが恩恵を受けるのは、モジュール式のコードベースと適切なテストなど、良いソフトウェアエンジニアリングの実践です。そうすることで、非常に迅速に進むことができます。これはOpenAIの多くの人々で内部的に見てきたことです。
今日、これをChatGPT Enterprise、Teams、およびProユーザーにリリースします。非常に寛大なレート制限で始めます。人々がどのように使用しているかについてのフィードバックと感覚を得始めるにつれて、より多くのレート制限を導入していきます。
PlusとEduユーザーへのロールアウトも予定しています。追加クエリを取得するための価格設定も検討しています。一般的に、OpenAIの全員がCodexを異なる方法で使用しているので、人々がどのように使用するかを見るのが非常に楽しみです。
この旅の終わりには程遠く、むしろ始まりにいます。私たちはCodexを改善し続け、より多くのシステムに統合していきます。例えば、課題トラッカーに統合したり、APIをリリースしてCIに自動的に統合できるようにし、CIエラーが発生した場合はCodexが対処するようにします。
また、ラップトップ上でローカルに実行されるエージェントであるCodex CLIの開発も続けています。今日、ミニモデルをリリースし、ChatGPTでのサインインも提供して、より簡単に使い始められるようにします。考えてみると、私たちが話した2つの異なる形態があります。
ローカルで同期的なコンピューター上のバージョンと、Codexのような非同期的なクラウド上で独自のコンピューターで実行するバージョンです。私たちは、将来はこれら2つのシステムが融合すると考えています。本当に必要なのは、独自のコンピューターを持つリモートの協力者であり、しかもあなたの肩越しに見ることもできる存在です。
あなたがタイプしながら作業をしていて、「ああ、お昼に行きたい。Codex、これを完成させてくれない?」と思えば、それをシームレスに引き継いでクラウドで実行します。また、何かについて質問があったり、依存関係がインストールされていないなどの理由で変更をプルダウンしたい場合も、すべてが完全にシームレスに移動します。
つまり、それは協力者であり、委任できるインターン、メンター、ペアプログラマーであり、これらすべてを一度に兼ね備えています。私たちの目標は、有用な作業を加速させ、世界にもっと多くのソフトウェアエンジニアが存在し、より多くの有用で世界を前進させるプログラミングが行われるよう支援することです。
Codexで皆さんが何をするか見られることをとても楽しみにしています。ありがとうございました。


コメント