LLMエージェント対策としての契約ファースト:フロントエンドとバックエンドの整合性を保つAPIファーストの回帰
Moonshot AI
著者は、LLMエージェントを開発に使用する際のプロジェクト劣化の問題を説明します。エージェントはフロントエンドとバックエンド間の実際の契約を無視し、ダミーデータを作成して実行時エラーを引き起こすことが多いです。解決策は契約ファーストアプローチに戻ることです。OpenAPI仕様を主要な成果物とし、そこからサーバーインターフェースとクライアントを生成することで、契約からの逸脱をコンパイルエラーにします。
筆者は二つのサイドプロジェクトで、LLMエージェントがフロントエンドとバックエンドを開発する際に契約(コントラクト)から逸脱することが多いことに遭遇した。フロントエンドのエージェントはレスポンスをRecord<string, unknown>として型付けし、緩いオブジェクトやJSONノードを使用し、異なるフィールド名でDTOを複製し、時には存在しないバックエンドをローカルデータとトースト通知で模倣することさえある。これらのエラーは、コンパイラやリンター、アーキテクチャテストでは検出されない。なぜなら、アナライザはコードベース間のHTTPリクエストを認識しないからだ。解決策は契約ファースト(contract-first)である。すなわち、唯一の真実の源はOpenAPI仕様(YAML)であり、そこからサーバーインターフェース(interfaceOnlyとskipDefaultInterfaceオプションを使用)とクライアントがビルド時に生成される。コントローラーは生成されたインターフェースを実装し、シグネチャの一致を保証する。契約からの逸脱はコンパイルエラーとなる。筆者は、このアプローチはすでにgRPCやGraphQLで使用されており、RESTに戻ってきていると指摘する。なぜなら、今や契約の読み手は人間ではなくLLMエージェントであり、エージェントは意図を汲み取らず、推測という安易な道を選ぶからだ。
出典: Habr — хаб ИИ —
原文
