N バージョンプログラミングとは、エージェント型ソフトウェアエンジニアリング:基盤となる柱と研究ロードマップ で論じられている、同じタスクに対する解を独立に複数バージョン生成する実践である。同論文は、それがエージェント型ソフトウェアエンジニアリングにおいて再び現れていると述べている。エージェントのチームは同じチケットに対して複数の候補プルリクエストを並列に生成でき、これは試行錯誤を通じて成功の確率を高める推論時計算の一形態としても、創造的な探索の手段としても機能する。
用法
同論文の動機づけの例では、7 件のチケットを解決しようとする開発者がエージェントチームを起動し、28 件の候補プルリクエスト(チケットごとに 4 件)を並列に生成させる。開発者はその後、チケットごとに最も有望な候補を選ぶか、受け入れられるものがなければ仕様を洗練してエージェントを再起動する。同論文は、自らが提案する Agent Command Environment(ACE)(ACE)が「規律ある N バージョンプログラミング」をサポートしなければならないと述べており、開発者がエージェントの生成した複数の解を可視化・比較し、それらの構成要素を組み合わせられるようにするとしている。同論文によれば、N バージョンプログラミングを「日常的な」ものにするのは、LoopScript が持つタスク分解と並列化の機能、すなわち 1 つの BriefingScript を複数のエージェントに割り当てる機能であり、これによって重要な指標は単一タスクのレイテンシからシステム全体のスループットへと移る。また同論文は、コーチのガイダンスが、エージェントが生成した異なる草案から最終的な解を合成することを伴いうるケースとして、N バージョンプログラミングを挙げている(たとえば、ある解の UI と別の解のバックエンドロジックを組み合わせる)。
適用される場面
同論文は N バージョンプログラミングを、自らが生み出したものではなく、数十年前から存在するフォールトトレランスの手法がエージェント型コーディングのために転用されているものとして扱っている。同論文は、この実践が再び現れたのは、LLM ベースの複数のエージェント(あるいは、高レベルの計画にはあるモデル、詳細なコード生成には別のモデルを使うといった、専門化されたエージェントの異種混成チーム)を同じ仕様に対して並列に実行できるようになったことで実用的になったためだとしている。