Microsoftは、Microsoft Agent Frameworkを使用してC#でAIエージェントを構築するための、4回の実践的なセッションを提供している。IChatClientインターフェースをラップする単純な呼び出しから始め、監視、評価、ガバナンスを行い、Microsoft Foundryにデプロイできるエージェントへと発展させる。例では個人金融向けの教育アシスタントを使用し、データの読み取り、ファイルの変更、仮想的な取引のような影響を伴う操作の実行の違いを明らかにしている。
Agent Harnessとは何か?
大規模言語モデルはテキストを生成できるが、エージェントに必要な実行ループを単独で提供するわけではない。このループは、ツールを呼び出し、その結果を検査し、計画を更新し、メモリを維持し、コンテキストウィンドウを処理し、機密性の高い操作についてユーザーの承認を求め、その後タスクが完了するまで作業を続ける。出典では、この周辺レイヤーをharnessと呼び、「claw」という概念は、このレイヤー上に構築されたコマンドラインツール方式のエージェントを指している。
この例では、指示とツールを含む初期化だけで、関数を自動的に呼び出し、モデル呼び出し後に履歴を保存し、タスクリストを作成し、コンテキストを圧縮し、ファイルメモリを使用し、モデルサービスが対応している場合にはウェブ検索を実行できるエージェントを開始できる。さらに、ツールの承認を求め、OpenTelemetryを通じて計測データを送信することもできる。これらの機能は、カスタムプロバイダーによって置き換えたり、無効化したり、拡張したりできる。
エージェント構築の4段階
第1セッションでは、Microsoft Foundryのモデルに接続されたチャットクライアントを、説明用の株価を取得するカスタムC#ツールを備えたエージェントへと変換する。エージェントにMSFTの株価を尋ねると、モデルがツールを選択し、harnessがそれを呼び出し、その結果をモデルへ返して回答を生成する。ウォッチリストを確認して次に調査すべき内容を提案する、といったより広いタスクを与えた場合、開発者がデモ用の独立した計画エンジンを構築しなくても、エージェントは計画とタスクリストを作成できる。
第2セッションでは、ユーザーデータを安全に扱うことに重点を置く。エージェントは、承認済みの作業ディレクトリからのみCSV形式のポートフォリオファイルを読み取り、定義された境界によってファイルシステム上の任意のパスへのアクセスを禁止される。また、仮想的な取引は承認を必要とするツールでラップされるため、モデルは操作を要求できるが、直接実行することはできない。一方、読み取り専用の操作は自動的に通過させることで、不要な確認要求によってユーザーを煩わせないようにできる。
出典では、時間制限付きの承認ポリシーも示している。各試行の制限時間は5秒、試行回数の上限は5回で、入力がない場合や無効な場合は再試行する。yが入力された場合は即時承認し、nが入力された場合は拒否する。その後、最後の試行を終えると自動的に拒否する。また、applicationが所有するローカルJSONメモリとMicrosoft Foundry Memoryの違いについても説明しており、モデルが「保存しました」と言っただけでは、データが実際に書き込まれたことや、正しいスコープ内に保存されたことの証明にはならないと強調している。
第3セッションでは、専門知識をファイルにまとめ、必要な場合にのみ基本指示へ読み込むスキルを追加する。さらに、shellへの制限付きアクセス、管理された環境でコードを実行するCodeAct、独立した調査タスクを並行して実行できるバックグラウンドエージェントも扱う。出典は、コマンドやコードを実行する際、承認やポリシーだけでは分離の代わりにならないことを明確に指摘している。
本番環境では実際に何が変わるのか?
第4セッションでは、監視、ガバナンス、評価、デプロイを扱う。監視にはOpenTelemetryのトレース、ツールとモデルの呼び出し、トークン消費量が含まれ、ガバナンスはMicrosoft Purviewのポリシーと結び付けられる。また、反復評価を使用して、デモの品質に対する印象を測定可能な指標へ変換する。さらに、Foundryでホストされるエージェントをデプロイする選択肢も提示されており、コンソールアプリケーション、ホストされたエンドポイント、評価環境の間で1つの定義を共有できる。
ここで最も重要なメッセージは、機能を組み合わせられるからといって、それらすべてを本番環境へ移行する必要はないということだ。開発用エージェントにはファイルやshellが必要な場合があるが、共有ホストコンテナーは、構築中にこれらの権限が役立ったという理由だけで、広範なローカルアクセスを引き継ぐべきではない。何を読み取り、書き込み、実行、記憶、追跡することを許可するかを決めるのは、開発組織が担う設計上の判断である。
なぜこのアプローチが重要なのか?
harnessレイヤーは、プロジェクトごとにツール、計画、メモリ、承認のループを再構築する必要性を減らすが、境界を定義する責任をなくすわけではない。このシリーズの実用的な価値は、高度な機能と、それに対応する制御を結び付けている点にある。ファイルは承認済みのディレクトリに、機密性の高い操作は承認に、メモリは検証可能な保存結果に、コード実行は分離とポリシーに、デプロイは監視と評価に結び付けられる。なお、金融関連の例は教育目的であり、使用されている価格と取引はモックおよび説明用のもので、金融助言ではない。