スキルが役割を果たせていない?(検証結果が衝撃的)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00エージェントにコンテキストを追加するには、「Skills(スキル)」よりも「agents.md」ファイルに戻る方が、実は効果的かもしれません。
00:00:08これは、VercelがコーディングエージェントにNext.jsのドキュメントを提供するための最適な方法をテストしていた際に見つけた、驚きの結果です。
00:00:15それでは、具体的に何が起きたのか、なぜそうなったのか、そしてコーディングエージェントを効果的に使うための教訓を紐解いていきましょう。
00:00:26先ほど言ったように、Vercelの目的はエージェントにNext.jsのドキュメントという追加のコンテキストを与えることでした。そうすれば、最新のAPIが学習データに含まれていなくても、エージェントがそれを把握できるからです。
00:00:41あるいはその逆で、古いバージョンのNext.jsを使っている場合に、そのバージョンで利用可能なメソッドだけを確実に使わせたいという意図もあります。
00:00:47彼らは、エージェントが利用できる「バージョンが一致したドキュメントシステム」を求めていました。
00:00:51そのために、彼らは2つの一般的なアプローチをテストしました。
00:00:541つ目は「Skills(スキル)」です。
00:00:56これは最近、多くのフレームワークやツールで採用され、非常に人気が高まっています。
00:01:01皮肉なことに、Vercel自身もSkills CLIやリポジトリを通じて、この普及を後押ししている側の一人なのですが。
00:01:08これらは非常に素晴らしいので、チェックしてみることをお勧めします。
00:01:09「Skills」が何かをご存じない方のために説明すると、これはAnthropicが提唱しているオープン規格で、タスクをより正確に実行するためにエージェントが必要に応じて読み込む、指示、スクリプト、コンテキストのモジュール式バンドルのことです。
00:01:20しかし、ここが重要な点なのですが、この情報をいつ読み込むかは、完全にエージェントの判断に委ねられているのです。
00:01:26そして、その点が現状の弱点のようです。Vercelが評価(evals)を行ったところ、56%の確率でスキルが一度も呼び出されませんでした。
00:01:35エージェントが「使わない」と判断してしまったのです。
00:01:37さらに驚くべきことに、スキルを与えたエージェントと与えていないエージェントを比較しても、評価スコアに全く改善が見られませんでした。
00:01:44それどころか、スキルが逆効果になる可能性さえあることが分かりました。
00:01:48スキルが使われなかった際、ベースラインよりもパフォーマンスが低下する場合があり、使われないスキルがノイズや注意散漫を引き起こしている可能性が示唆されたのです。
00:01:57これを解決するために、彼らはプロンプトで「このスキルを使ってください」と明示的に指示してみました。
00:02:02すると確かに効果があり、スキルの発動率は95%に上昇し、評価の合格率も79%まで向上しました。
00:02:09しかし、それには別の問題が伴いました。言い回しが少し違うだけで、結果が劇的に変わってしまうことが判明したのです。
00:02:15例えば、「必ずスキルを使え」と言うと、スキルは使いますが、今度はプロジェクトのコンテキストを無視してしまいました。
00:02:21そのため、「スキルとプロジェクトのコンテキストの両方を使え」と言う必要がありました。
00:02:24Vercelは、わずかな言葉の調整で挙動が大きく変動するこのシステムの脆さを嫌い、「本番環境で使うには不安定すぎる」と結論付けました。
00:02:33そこで彼らは、エージェント自身に判断させる必要のない、より信頼性の高い解決策を必要としました。
00:02:40そこで試されたのが「agents.md」ファイルです。
00:02:42これは多くのエージェントで使われているオープン形式で、Claudeユーザーなら「claude.md」と同じものだと考えれば分かりやすいでしょう。
00:02:49これは、システムプロンプトに常に含まれるコーディングエージェントへの指示を提供するために使われます。
00:02:53つまり、Skillsとは異なり、情報を取得するかどうかをエージェントが判断するわけではありません。
00:02:58システムプロンプトに最初から存在しているのです。しかし、これにはコンテキストが肥大化するという特有の問題もあります。
00:03:03コンテキストが増えすぎると、出力の質が低下してしまう現象です。
00:03:06Next.jsのドキュメントすべてを「agents.md」に詰め込むわけにはいきません。
00:03:10ではどうしたか。これに対抗するため、Vercelは「agents.md」の中に「ドキュメント・インデックス」を作成しました。
00:03:17これは単に、ローカルファイルシステム内にある個々のドキュメントファイルへのパスをリスト化したものです。
00:03:22そしてもう一つの重要な要素として、「Next.jsのタスクについては、学習済みの知識よりも、検索ベースの推論を優先せよ」という指示を加えました。
00:03:31個人的には、これを聞いた時、結局エージェントがドキュメントを読みに行く必要があるなら、Skillsと同じような結果になるのではないかと思いました。
00:03:38しかし、彼らが評価を行ったところ、エージェントはすべての項目で100%を記録し、ビルド、Lint、テストの各評価で完璧なスコアを獲得しました。
00:03:47つまり、Skillsよりも大幅に信頼性と精度が高いことが証明されたのです。ソフトウェアエンジニアリングでよくあるパターンですね。
00:03:53よりシンプルで「愚直な」アプローチこそが、結局は最善だったということです。過剰なエンジニアリングは必要ありません。
00:03:58では、なぜそうなったのでしょうか? なぜagentsファイルの方がSkillsよりも優れているのか。その理由は、実は断定が難しい部分です。
00:04:03AIはブラックボックスですから。しかしVercelは、意思決定に関わる3つの要因が関係していると推測しています。
00:04:10「agents.md」を使う場合、エージェントには意思決定の余地がありません。
00:04:14システムプロンプトの冒頭で、ドキュメントを使うこと、そして各ファイルがどこにあるかを、最初から明確に指示しているからです。
00:04:20これにより、知識を「オンデマンドで使うかどうか判断するもの」から「永続的なコンテキスト」へと変えています。
00:04:27システムプロンプトに含まれているため、推論プロセスに最初から組み込まれているのです。
00:04:31ただし、これでSkillsが完全に無用になったわけではありません。実際、Vercelはこれらが互いに補完し合えることを見出しました。
00:04:36彼らによれば、Skillsはユーザーが明示的にトリガーするワークフローに向いています。例えば「Next.jsのバージョンをアップグレードして」とか、
00:04:41「App Routerに移行して」「フレームワークのベストプラクティスを適用して」といった指示です。
00:04:45一方で、コーディングエージェントにフレームワークの一般的な知識を持たせたいのであれば、
00:04:48「agents.md」による受動的なコンテキストの方が、現在のモデルにおいてはSkillsを凌駕します。
00:04:54将来、モデルがスキルベースの検索ワークフローに最適化される日は来るでしょうが、今はまだその段階ではありません。
00:04:59今のところ、フレームワークの作者や、Skillsあるいはagents.mdを作成しようとしている方々へのVercelの推奨事項はこうです。
00:05:06「スキルの向上を待つのではなく、コンテキストを可能な限り圧縮せよ」
00:05:10「記憶ではなく検索のために設計せよ。そして最も重要なのは、常に評価(evals)でテストすることだ」とのことです。
00:05:16また、これらのファイルの利用者向けに、Vercelはドキュメントをダウンロードするためのツールや、
00:05:21Next.jsの特定バージョンに合わせた、ビルド済みの「agents.md」ファイルを提供しており、この新しいアプローチをすぐに活用できるようになっています。
00:05:29他のツールもこのアプローチを採用するのか、非常に興味深いです。皆さんはどう思われますか?
00:05:34エージェントとSkillsについて、ぜひコメント欄で意見を聞かせてください。
00:05:37それから、チャンネル登録もお忘れなく。それでは、また次の動画でお会いしましょう。

Key Takeaway

AIエージェントの精度向上には、エージェントの判断に依存する「Skills」よりも、システムプロンプトに検索用インデックスを組み込む「agents.md」による指示の方が圧倒的に有効である。

Highlights

Vercelによる検証の結果、コーディングエージェントにおいて「Skills」機能よりも「agents.md」ファイルの方が高い信頼性を示した

エージェントに意思決定を委ねる「Skills」は、56%の確率で呼び出されず、パフォーマンスが低下する「ノイズ」になるリスクがある

「agents.md」はシステムプロンプトに情報を直接組み込むため、エージェントが判断を介さずに永続的なコンテキストとして利用できる

ドキュメントの全文を詰め込むのではなく、インデックス化と検索ベースの推論を優先させる指示が100%の合格率達成の鍵となった

「Skills」はユーザーが明示的に実行する特定のワークフロー(アップグレード等)に適しており、用途に応じた使い分けが重要である

Timeline

Vercelによる驚きの検証結果と「Skills」の限界

VercelはNext.jsの最新ドキュメントをエージェントに提供する最適な方法を模索し、一般的な「Skills」アプローチをテストしました。SkillsはAnthropicが提唱するオープン規格であり、必要な時にエージェントが読み込むモジュール式の指示セットです。しかし検証の結果、エージェントがいつこれを使うかを自分で判断しなければならない点に重大な弱点があることが判明しました。このセクションでは、開発者が期待する理想と現実のAIの挙動の乖離について、Vercelの動機とともに詳しく解説されています。既存の学習データにない最新APIをいかに正確に扱わせるかという課題が提示されています。

「Skills」が抱える信頼性の問題と逆効果の懸念

Vercelの評価(evals)では、スキルの呼び出し率が低く、56%のケースで一度も使用されないという衝撃的な数値が出ました。スキルを与えてもスコアの改善が見られないばかりか、使われないスキルがノイズとなり、ベースラインより精度が下がる現象も確認されています。プロンプトで強制的に使わせようとすると、今度はプロジェクトのコンテキストを無視するという極端な挙動に陥りました。このシステムの脆さは、本番環境で運用するにはあまりにも不安定であるという結論に至っています。AIの自由度を制御しようとする試みが、かえって出力の質を損なうリスクを浮き彫りにしています。

「agents.md」の導入と完璧なスコアの達成

不安定なSkillsに代わり、Vercelは「agents.md」という常にシステムプロンプトに含まれる形式を採用しました。コンテキストの肥大化を防ぐため、ドキュメントの全文ではなくローカルファイルの「インデックス」を記述し、検索ベースの推論を優先させるよう指示しています。このアプローチにより、ビルドやテストの評価においてエージェントは100%という驚異的な完璧なスコアを記録しました。複雑な仕組みよりも、シンプルで直接的な指示の方がソフトウェアエンジニアリングにおいて優れていることを証明しています。過剰なエンジニアリングを避け、愚直な方法を選択することの重要性が強調されています。

なぜ「agents.md」が優れているのか:3つの要因

Vercelは、agents.mdが優位に立つ理由として、エージェントの意思決定の余地を排除している点を挙げています。システムプロンプトの冒頭でファイル位置を指定することで、知識が「判断して使うもの」から「前提条件」へと変化します。これにより、AIの推論プロセスに情報が最初から組み込まれ、見落としがなくなるというブラックボックス内の推測が語られています。ただし、Skillsが完全に不要というわけではなく、ユーザーが直接命令する特定のワークフローには依然として有用であることも示されました。受動的なコンテキスト提供と能動的なタスク実行で、ツールを使い分けるべきだという洞察です。

今後の推奨事項とVercelが提供するツール

最後に、Vercelは開発者に対し、AIの「記憶」に頼るのではなく「検索」のために設計し、コンテキストを可能な限り圧縮することを推奨しています。何よりも重要なのは、主観的な評価ではなく客観的な「評価(evals)」で常にテストすることであると説いています。Vercelは現在、この手法をすぐに試せるように、Next.jsの特定バージョンに最適化されたagents.mdやドキュメント取得ツールを提供しています。動画は、他のAIツールもこの高精度なアプローチを採用していくのかという問いかけで締めくくられています。視聴者に対して、スキルの未来についての意見を募る形で終わります。

Community Posts

View all posts