LLMのジレンマとSkillsによる回避策
Lost in the middleという言葉があるようにLLMはコンテキストが長くなると中間の情報が抜け落ち精度が落ちる。
思考を深めるために沢山の情報を与えたい
思考の精度を高めるために与える情報を絞りたい
という一見矛盾したことが必要とされる。
何でもかんでも情報を与えれば良いのではなく、その時、そのタスクをやるために必要な情報だけをすべて与えるというのが理想である。
Claudeが提供するSkillsという機能はまさにそのための機能である。
例えばコードレビューの為のPromptを簡単に考えてみる。
コードレビュワー
- 日本語でレビュー
- 〇〇の原則に従い~
こういった情報をCLAUDE.mdに記載した場合、調査するときも、設計するときも、コードを書くときも常にこのプロンプトが読み込まれることになる。
しかしそれらのタスクにコードレビュワーとしての知識は不要なので完全に無駄なコンテキストを消費することになる。
そんなときはSkillsで分離すればいい。
コードレビュー専用のSkillsを作成しておけば必要な時だけClaudeがPromptを読み込んでコードレビューを実行する。
必要がないと判断されたときには読み込まれないので無駄にコンテキストを圧迫しないという仕組みだ。