Microsoftは7月15日、Python向けの安定版 Agent Skills フレームワークをリリースしました。これにより、LLM駆動のエージェントが実際に必要としたときにのみ、機能を呼び出すことが可能になります。肥大化し続ける単一のシステムプロンプトを、オンデマンドのスキル読み込みに置き換えることで、プロンプトのサイズを抑え、トークンコストを削減し、エージェントの推論をより明確に保つことができます。

プロンプトが肥大化する理由とその重要性

LLMエージェントは、モデルが毎ターン参照すべきポリシー、ランブック、リファレンス資料をまとめた「システムプロンプト」に依存しています。いくつかのポリシー文書を追加するだけで、プロンプトは数千トークンへと膨れ上がります。プロンプトが大きくなると、推論コスト(モデルが処理するトークンごとに課金される)が増大するだけでなく、指示の信号が希釈され、エージェントの出力が曖昧になります。インシデントのトリアージやコンプライアンスチェックにおいて、プロンプトが不明瞭になると、有用なアシスタントが誤情報の源へと変わってしまう可能性があります。

Agent Skillsパターン:段階的開示(progressive disclosure)

新しいフレームワークは、モノリシックなプロンプトを以下の4ステップのワークフローに置き換えます。

  1. スキルの広告(Advertise the skill) – ルーティング層にスキルの名前を伝える軽量なメタデータエントリ。
  2. 指示の読み込み(Load instructions) – エージェントがそのスキルがリクエストに適合するかどうかを判断するために読み取る簡潔な説明。
  3. リソースの読み込み(Read resources) – エージェントがスキルを選択した後にのみ取得される、オプションのポリシーまたはリファレンスファイル。
  4. スクリプトの実行(Run scripts) – 明示的な承認によって制御される、アクションを実行するためのコード実行。

コアプロンプト内に存在するのは、短い SKILL.md ファイルのみです。より大きなドキュメントやスクリプトは、ランタイムが必要に応じて呼び出すファイルベースのスキルパッケージ内に配置されます。ディレクトリ構成はシンプルです。

  • SKILL.md – 簡潔で人間が読みやすい説明。
  • references/ – ポリシーまたはガイダンスファイル。
  • scripts/ – 実行可能なコード。

エージェントは、スキルが適切であると判断するまで references/scripts/ の全内容を見ることはないため、登録するスキルの数に関わらず、メインプロンプトは軽量なまま保たれます。

フレームワークに組み込まれたセーフティガード

このフレームワークは、スキルの読み込みにはリスクが伴うことを前提としており、開発者が従うべきルールを強制します。

  • スキルの名前の広告 – 自動的に行われ、ルーティングにのみ使用されます。
  • 指示の読み込み – 厳選されたリストについては自動的に行われますが、レビューされていない指示は意図せず動作を変化させる可能性があります。
  • ポリシーの読み込み – データが機密でない場合は自動的に行われます。機密情報は追加のアクセス制御の下に置いてください。
  • スクリプトの実行 – 常に明示的な承認が必要です。スクリプトはエージェントを「提案」から「実行」へと移行させるため、人間またはポリシーによるチェックが介在する必要があります。
  • 外部システムコール – 権限を制限した個別のツールを経由する必要があります。スキル自体は認可メカニズムではありません。

これらのルールにより、開発者はデータベースの更新やコードのデプロイといった書き込み指向のアクションを試みる前に、インシデントのトリアージ、ポリシーの検索、ステータス照会などの読み取り専用ワークフローから始めることが推奨されます。

運用の衛生管理:ロギングとバージョニング

スキルが実行される際、フレームワークは以下の項目のロギングを推奨(多くのデプロイでは義務付け)しています。

  • 元のリクエストと選択されたスキルID。
  • 使用されたスキルパッケージのバージョン。
  • エージェントが説明のみを読み込んだのか、リソースファイルも取得したのか。
  • スクリプト実行に対する承認の決定。
  • 提供されたすべてのツール引数と返された結果。

エージェントが誤ったスキルを選択した場合は、その誤選択をテストケースに変換してください。これにより、スキルが本番環境に到達する前に回帰テストを行うことができます。

各スキルを、プロンプトの緩いフォルダとしてではなく、明確な境界を持つバージョニングされた依存関係として扱ってください。バージョニングを行うことで、エージェントの他の知識ベースを乱すことなく、不具合のあるスクリプトをロールバックできます。

はじめの一歩:実用的なチェックリスト

  1. 読み取り専用のワークフローを選ぶ – 例:「最新のセキュリティインシデント・ガイドラインを検索する」。
  2. 指示とスクリプトを個別にパッケージ化するSKILL.md は短く保ち、重いポリシーファイルは references/ に格納します。
  3. カタログを厳選する – 承認済みスキルのリストを維持し、あらゆるスクリプトに対して必須の承認を強制します。
  4. サンドボックスの制限を設定する – スクリプト実行のためのCPU、メモリ、ネットワークの制約を定義し、すべての実行をログに記録します。
  5. 従来の巨大なプロンプトと比較してベンチマークを取る – トークン使用量、レイテンシ、成功率を比較し、コスト削減を確認します。

次に注目すべき点

Microsoftのリリースは、現在は安定したPython実装となっています。

結論

Agent Skillsは、LLM駆動型アシスタントが、増え続けるポリシーやスクリプトのライブラリにアクセスしながら、軽量な状態を維持することを可能にします。事前に説明のみをロードし、必要に応じて重いリソースを呼び出すことで、プロンプトを短く保ち、推論コストを削減し、エージェントの推論を的確な状態に保つことができます。