テストアンカーとは、AlphaCodium によるコード生成:プロンプトエンジニアリングからフローエンジニアリングへ で説明されている手法であり、LLM が生成したコードを、モデル自身が生成したがゆえに誤っている可能性のあるテストに対して実行し修正するためのものである。そうしたテストが失敗した場合、誤っているのがコードなのかテストなのかは明らかではなく、同論文は、モデルに「どちらが誤っているか」を直接尋ねるとしばしばハルシネーションが生じ、誤って修正されたコードに行き着くことがあると報告している。テストアンカーでは、正しいことがわかっている公開テストから反復を開始し、合格したテストはすべてアンカーとなる。次にモデルは AI が生成したテストを 1 つずつ反復処理し、合格したテストをアンカーに加えていく。テストが失敗した場合はコードが誤っていると仮定して修正するが、修正後のコードがそれまでに獲得したすべてのアンカーに引き続き合格することを求める。これにより、アンカーが誤ったコード修正に対する防御となる。

用法

この用語は競技プログラミング向けのコード生成フローである AlphaCodium に由来し、テストアンカーは AI 生成テストを反復処理する最終段階で用いられる。著者らは最適化も加えている。AI が生成したテストを易しいものから難しいものへと並べ替えることで、反復プロセスが早い段階でアンカーを獲得し、より複雑な AI テストを反復処理する際にそれらを防御として利用できる可能性を高めるというものである。

適用される場面

テストアンカーは、正しいことがわかっている初期のテスト群(公開テスト)、生成されたコードをテストに対して実行できる実行環境、そして正しさが不確かな追加のテストが揃っていることを前提とする。著者らはこの手法を、二重の検証を経てもなお一部の AI 生成テストは誤っているという事実への対処として提示している。これは AlphaCodium の著者らが自らのフローにおいて有益であったと報告している、コード指向の設計手法の 1 つであり、CodeContests データセットで評価されている。同論文は、この手法単体の寄与を個別に測定した結果は報告していない。

関連用語