Software 3.0 は、コンピュータがどのようにプログラムされるかについて Andrej Karpathy が示す系列の第三の段階である。その前には、人間が明示的なコードを書く Software 1.0 と、人間がデータセット、目的関数、ニューラルネットワークのアーキテクチャを組み立て、プログラムが重みとして学習される Software 2.0 がある。Software 3.0 では、プログラムはプロンプト、コンテキスト、ツール、例、メモリ、指示として表現され、大規模言語モデルがインタプリタとなる。コンテキストウィンドウに置かれたものがそのモデルに対するレバーであり、モデルが行う計算はデジタル情報を対象とする。これが可能になった経緯についての彼の説明は、十分に大きなタスクの集合(インターネットには多くのタスクが含まれている)で訓練されたモデルは、暗黙のうちにプログラム可能なコンピュータになる、というものである。

用法

Karpathy がこの転換を具体的に示すために用いる例はインストールである。彼の主張によれば、多くのプラットフォームとマシン構成をシェルスクリプトで対象にしようとすると、Software 1.0 の世界ではあらゆる詳細を正確なコードで書き尽くす必要があるため、スクリプトは条件分岐で膨れ上がる。彼が示す代替案は、エージェントに貼り付けるテキストのブロックとして配布されるインストール手順である。エージェントはローカル環境を読み取り、知的な行動をとり、ループの中でエラーをデバッグし、セットアップを完了させる。彼はこれを、精度は低いがより適応的な、別の種類のプログラムだと説明し、そこから「エージェントにコピー&ペーストするテキストは何か」ということ自体が今やプログラミングの問いである、という実践的な帰結を導いている。

彼の第二の例は、議論をさらに進めて、存在しなくなるソフトウェアにまで至る。彼が通常の方法で作ったメニュー写真アプリには、OCR、画像生成器、フロントエンド、デプロイ、認証、決済、シークレット、インフラが必要だった。Software 3.0 版では、写真をマルチモーダルモデルに渡し、料理の画像をメニュー画像の上に直接描画するよう頼むだけである。彼の読みでは、古いスタックはモデルが今や自ら実行できる変換を取り巻く足場にすぎず、創業者にとっての帰結は、一部のアプリケーションはそもそもアプリケーションとして存在すべきではないということである。彼は同じ論理を推測的にハードウェアにまで広げ、ニューラルネットワークがホストプロセスとなり CPU がコプロセッサとなる姿を思い描いているが、そこへの道のりは断片的なものになるだろうとも述べている。

この枠組みはコードの外にも及ぶ。Karpathy は、古典的なプログラムは構造化データを扱っていたが、新たに自動化可能になったのは、これまでまったくプログラム可能でなかった情報処理だと主張する。彼の例は、雑多なドキュメントを、要約、エンティティページ、概念ページ、矛盾、相互リンクからなる永続的な Markdown のナレッジベースへと段階的にコンパイルしていくエージェントである。したがって彼が勧める問いは、既存のどのワークフローを AI で速くできるかだけではなく、以前は不可能だったがいまや自然に行えるようになった情報変換はどれか、というものである。

この枠組みは、Karpathy 固有のプログラミングに関する議論としてではなく、時代を表すラベルとして他の人々にも使われている。Software 3.0 時代、Harness による組織生産性の底上げ は「Software 3.0 の時代」を舞台設定とし、その中で組織的な問いを立てている。プログラムがいまやプロンプト、コンテキスト、指示であるならば、チームがかつて共有ライブラリを互いに配布していたのと同じように配布すべきものは、それらの成果物だということになる。その記事の提案、すなわちチームの知識をエージェントプラグインとして保持し(記事はそれが 実行可能な SSOT(Executable SSOT) になる可能性を持つと述べている)、マーケットプレイスを通じて公開するという提案は、モジュールの中身がコードからプロンプトとエージェントのロジックへと変わった一方で、その周囲のエンジニアリングの実践は引き継がれるものとして扱っている。共有モジュールをワークフロープラグインに、ライブラリの公開をマーケットプレイスへのアップロードに対応づけ、共有モジュールに適用されるコードレビューと品質管理は AI ワークフローにも適用されるべきだと論じている。その記事の著者は、これらすべてを成果ではなく方向性と仮説として提示している。このように読むと、この用語はモデルをプログラミングする行為だけでなく、組織が扱う素材を指すものになる。

適用される場面

このパラダイムのトレードオフは、提唱者自身によって率直に述べられている。精度を犠牲にして適応性を得るものであるため、環境が変化しやすく厳密な仕様では脆くなるような作業に適しており、ループの中で行動しデバッグできるだけの能力を持つモデルを前提としている。これは業界で合意された用語ではなく一個人の枠組みであり、ここでの説明は、イベントの書き起こしからモデルが文章を生成し、それを彼が確認したトークの記事に基づいている。

関連用語

コンテキストエンジニアリング、ジャギッド・インテリジェンス、プロンプトエンジニアリング、エージェント型エンジニアリング、実行可能な SSOT(Executable SSOT)、底上げ(Raising the Floor)