OpenAI(オープンエーアイ)は、2021年7月に発表したAIを活用したコーディングアシスタントのCodex(コーデックス)に、すでにいくつかの大きな変更を加えている。現在システムは、平易な英語のコマンドを受け入れ、実際に動作するコードをリアルタイムで出力する。変数に名前をつける必要すらなくゲームやウェブアプリを作成できるようにするのだ。数少ない幸運なコーダーたちは(そしてご想像できるようにノンコーダーたちも)、無償のプライベートベータで提供される新しいCodex APIを使って、その使い心地を試すことができる。
Codexが、OpenAIの多用途言語エンジンであるGPT-3であることはよく知られているが、特に通常の文書ではなくコード生成に向けてのみ訓練されたものである。これにより、コードの行を完成させたり、セクションを完全に生み出したりすることができる。とはいえ、最初発表されたときには、ノンコーダーが実際に対話して利用できるようなものではなかった。
この状況が今回の新しいAPIでは変わった。たとえば「ボールを画面の端で跳ね返らせる」とか「パブリックAPIを使用してそのデータをダウンロードし、日付で並べ替える」といった日常的なリクエストを解釈し、複数のプログラミング言語の1つで実際に動くコードを生成するのだ。
私はOpenAIの共同創業者であるGreg Brockman(グレッグ・ブロックマン)CTOと、CodexのリーダーであるWojciech Zaremba(ボイチェフ・ザレンバ)氏が、簡単なゲームをゼロから作成しながら、舞台裏で何が起こっているのかを説明するライブデモに参加した。
「プログラミングとは、目標を考えて部分へと分割し、そして分割された部分のためのコードを実際に作成していくことです」とブロックマン氏は説明した。Codexの目的は、コーダーが後者よりも前者の部分により多くの時間を費やせるようにすることだ。結局のところ、膨大な量のコードが、他人が以前に行ったことを真似たり完全にコピーしたりしている。もちろんそれも創造的な行為ではあり得る。だが少しばかりのコードのテストのために行うウェブサーバーの展開のような基本的な作業に、想像力を駆使する人はいないだろう。ブロックマン氏はそのことを「次のことを表示するウェブページを作成せよ」といった感じのシンプルな一行で実現してみせた。
1秒後には、その要求を完全に標準的な方法で実現する10行ほどのJavaScript(ジャバスクリプト)プログラムが生成された。
「これはプログラミングの中でも面倒な部分です」とブロックマン氏はいう。「私はこの種のコードをおそらく数十回以上書きましたが、どのようにやっていたかを正確には覚えていないのです。私はこうしたAPIを正確には知りませんし、覚える必要もないのです。少ないキーストロークや操作手順で、同じことを簡単に行うことができるようになるのです」。
Codexは、基本的にGitHub(ギットハブ)上のすべての公開コードを中心に用いてトレーニングされているので、標準的な作法を熟知している。そこでは、ウェブサーバー、キーボードコントロール、オブジェクト操作、アニメーションなどのコードが何百回も誰かによって書かれているのだ。また、自然言語側ではGPT-3が持つ通常の理解能力が備わっているので「それを小さくしてトリミングして」といってから「それの水平位置を左右の矢印キーで制御せよ」といった場合に「それ(it)」が同じものを指していることをシステムは理解することができる。
また、同システムは数キロバイトに相当する自分自身のコーディングコンテキストを知っているために、準拠する必要のある命名規則、ユーザーの入力が暗示する既存の境界と要求およびその他の情報を認識している。
また、コードコーパスに埋め込まれている一般的知識も認識している。例えばブロックマン氏がシステムに対して「丸石を空から落とせ」と命じたとき、システムは、ほとんどキャンバス上に何も定義されていない状況にも関わらず「空」が何であるかを尋ね返してこなかった。システムは画面の上部から丸石を落としただけでなく、通常の物体のように落下速度を加速させた。これは、他の用途や状況から「落下」と「空」が何を意味するかを最もうまく推測できたからだ。
数年前に、博士論文のために今回のシステムの機能限定版を作成していたザレンバ氏は、マイクロソフトワード用のCodexプラグインのデモを行いながら「これは、既存のソフトウェアと対話するための新しい方法を提供すると思います」と語った。もちろん、ワードプロセッサの多くのタスクは自動されているが、たとえば奇妙なフォーマットの問題が発生して、100カ所以上の異なる場所を修正したくなった場合はどうだろうか?「すべてのテキストを同じサイズとフォントにして、ダブルスペースをシングルにせよ」と入力すると、迷子になったスタイルを削除し「通常」と見なされる可能性が最も高いサイズとフォントを選択するのだ。そして「すべての見出しを24ポイントで太字にせよ」と入力すると、猛然と処理をこなしてくれるというわけだ。
ここで注意しておきたいのは、この種のことは多くの人にとって便利なことには違いないが、身体障がいなどのためにこれらのことを行えない人にとっては非常に重要だということだ。音声コマンドまたはジョイスティックを使用してワードプロセッサを操作している場合には、上記のような複雑なタスクを実行できれば非常に役立つ。盲目のコーダーは、他の人と同じように、標準のパブリックテストサーバーにパッチを適用できるが、Stack Overflowを探すこと、最適なコード断片の取得、構文の確認、関連する変数の変更などのプロセスは、ほぼ確実に長くなる。
そして、上から指示された構文や慣習の範囲内で作業する人にとっては、ドキュメントをモデルに与えることで、簡単にCodexがそれらを反映するようにすることができる。Codexは、コードをある言語から別の言語に変換して移植することもできる。これは、翻訳エンジンがスペイン語をフランス語に変換するのとほぼ同じやりかただ。
ブロックマン氏は、GPT-3の場合と同様に、これらは可能なことのほんの一部に過ぎず、開発者が思いつくものに驚かされることを望んでいるという(実際、OpenAIはAI Dungeon[AIダンジョン]の登場は予測していなかった)。ベータ版はGPT-3のベータ版と同様に非公開のものとなるが、開発者は自分のプロジェクトを説明して利用を申請することができる。Codexチームがその申請をレビューして招待を決めることになる。最終的にこのAPIは有料の公開APIになる予定だが、そのタイミングと価格はまだ決定されていない。
関連記事
・GitHubがコーディングの提案を行う新しいAIツールをプレビュー
・人間が操り理解できる大型AIの条件を探るOpenAIメンバーが創設したAI研究機関「Anthropic」
・OpenAIの約109億円スタートアップファンドはマイクロソフトがパートナー
カテゴリー:人工知能・AI
タグ:OpenAI、ベータ版、GPT-3、コーディング、ノーコード
画像クレジット:OpenAI
[原文へ]
(文: Devin Coldewey、翻訳:sako)