GitHub Copilot SDK を使用して AI エージェントを設計する
AI エージェントでできることについて説明しました。 次に、それらを機能させるシステムを設計する方法を検討します。 特定のシナリオに関係なく、AI エージェントは共通のアーキテクチャ ブループリントを共有します。 このユニットでは、すべてのエージェント システムに必要な基本的なコンポーネント (AI モデル、ツール、プランナー、メモリ、ガードレール) について説明します。 このブループリントを理解すると、GitHub Copilot SDK を使用するときにエージェントをより効果的に実装できます。
AI エージェント システムのコア コンポーネント
顧客サポートを処理するか IT インフラストラクチャを監視するかに関係なく、すべての AI エージェントは、同じアーキテクチャ構成要素のセットから構築されます。
AI 推論エンジン
エージェントの中核となるのは、命令を解釈して応答を生成する、GPT-5 などの大規模な言語モデル (LLM) です。 この LLM は、"理由" を示すコンポーネントであり、各手順で次に何を行うかを決定します。 LLM の広範なトレーニングにより、言語の理解と一般的な知識が得られ、エージェント フレームワークはその推論に基づいて行動できるようになります。
GitHub Copilot SDK では、セッションを構成するときにモデルを選択します。 モデルが異なると、速度、コスト、推論機能のトレードオフが異なり、SDK ではセッション間でのモデルの切り替えがサポートされます。
Tools
ツールは、エージェントが推論プロセス中に呼び出すことができる外部関数または API です。 各ツールは、データベース レコードの検索、REST API の呼び出し、電子メールの送信、診断コマンドの実行など、エージェントが実行できる特定のアクションを表します。 ツールは、エージェントがテキストの生成を超えて移動し、実際に実際のシステムと対話する方法です。
適切なツール セットの設計は重要な決定です。 エージェントに役立つツールを十分に提供したいが、混乱したり、過剰になったりするほど多くはありません。 各ツールは、AI モデルが使用するタイミングを理解するのに役立つ明確な名前と説明を使用して、1 つの処理を適切に行う必要があります。
計画装置と制御装置
プランナーは、エージェントの推論とツールの使用を調整します。 ツールを呼び出すタイミング、明確な質問をするタイミング、最終的な回答を生成するタイミングを決定します。 最新の AI エージェントは、ReAct (Reason + Act) ループのような手法を使用します。ここで、エージェントは思考 (LLM がステップを提案) と行動 (ツールの呼び出し) を交互に行います。
GitHub Copilot SDK は、このプランナーを組み込み機能として提供します。 SDK のエージェント ループはオーケストレーションを処理します。コンポーネントを構成し、SDK はプランの実行サイクルを管理し、行動、観察、および繰り返します。
メモリとコンテキスト
ステートレス API 呼び出しとは異なり、エージェントはセッション全体でコンテキスト メモリを維持します。 エージェントの 認識 には、会話履歴、ツールの出力、および前の手順で取得したデータが含まれます。 メモリは一貫性を可能にします。ユーザーが "実際には間違った色でした" と言うと、エージェントは "it" が前に説明した項目を参照していることを認識します。
GitHub Copilot SDK は、セッション内の会話履歴を追跡することで、短期メモリを自動的に管理します。 モデルのコンテキスト ウィンドウを超える可能性があるセッションの場合、SDK の無限セッション機能は、重要な情報を保持しながらトークンオーバーフローを防ぐために古いコンテキストを圧縮します。
ポリシーとガードレール
AI エージェントは自律的なアクションを実行するため、安全かつ意図したとおりに動作するように制約が必要です。 ガードレールは、いくつかのカテゴリに分類されます。
- スコープの制限: エージェントが実行できる操作と実行できないことを定義します。 たとえば、エージェントが返品を処理することを許可しますが、特定の金額を超える払い戻しには人による承認が必要です。
-
アクセス許可の制御: SDK の
OnPreToolUseフックを使用して、実行前にツール呼び出しをインターセプトします。 フックは、アクションの続行、ブロック、またはユーザーの確認を要求するかどうかを制御するPermissionDecision値 (Allow、Deny、またはAsk) を返します。 - 安全フィルター: エージェントに (システム プロンプトを通じて) ドメイン内に留まり、内部情報が表示されないように指示します。
- フォールバックとエスカレーション: エージェントが要求を解決できない場合の動作を設計します。 このガードレールは、通常、エージェントが収集したコンテキストを持つ人間に引き渡されることを意味します。
GitHub Copilot SDK では、ガードレールは、公開するツール (エージェントが実行できる機能を本質的に制限する)、システム プロンプト (動作をガイドする機能)、ツール ハンドラーとセッション フックのコード レベルのコントロールの 3 つのソースから取得されます。
実際のエージェント ワークフロー
エージェントは、要求を受信すると、反復的なワークフローに従います。
- 入力の受信: ユーザーがメッセージを送信するか、イベントによってエージェントがトリガーされます。
- 理由と計画: LLM は入力を解釈し、目標を識別し、最初に実行するアクションを決定します。
- Act: エージェントはツールを呼び出します (たとえば、データベース内の注文を検索します)。
- 監視: ツールは結果を返し、エージェントは応答するのに十分な情報があるかどうかを評価します。
- 反復処理または応答: より多くの情報またはアクションが必要な場合、エージェントは手順 2 に戻ります。 目標が達成されると、最終的な応答が生成されます。
このサイクルは、1 つのユーザー要求内で複数回繰り返すことができます。 GitHub Copilot SDK は、エージェント実行エンジンを介してこのループを自動的に管理します。
ウォークスルーの例
eコマース リターン エージェントが要求を処理する方法を検討します。
- ユーザー入力: "注文番号12345の商品が間違っていました。 返したい」
- 計画: エージェントは 2 つの目標を識別します。注文を確認し、返品を開始します。
-
ツール呼び出し: エージェントは
get_order_details(12345)を呼び出して注文情報を取得します。 - 監視: ツールは注文の詳細を返し、品目と配送日を確認します。
-
ツール呼び出し: エージェントは
process_return(12345)を呼び出して戻り要求を作成します。 - 監視: ツールは確認番号を返します。
- 応答: エージェントはユーザーに「注文12345の返品RMA-1001を作成し、明日の集荷をスケジュールしました」と伝えました。 払い戻しは 3 ~ 5 営業日以内に受け取ります。
エージェントは 2 つのツールを使用し、複数の手順で推論しましたが、ユーザーの観点からは、1 つのスムーズな操作でした。
GitHub Copilot SDK の設計上の決定
GitHub Copilot SDK を使用してビルドするエージェントを設計する場合は、次の 3 つの領域に焦点を当てます。
- コンテキスト: エージェントは各セッションの開始時にどのような情報を必要としますか? 通常、このコンテキストには、エージェントのロールと動作のガイドラインを定義するシステム プロンプトと、パーソナライズされた応答を可能にするユーザー固有のデータが含まれます。
- ツール: エージェントはどのようなアクションを実行できる必要がありますか? 明確な名前、説明、およびパラメーター スキーマを使用して、各ツールを定義します。 ツール ハンドラーにビジネス ロジックを実装します。
- ポリシー: エージェントはどの規則に従う必要がありますか? システム プロンプト命令、ツール ハンドラーの検証、またはセッション フック ロジックとしてポリシーをエンコードします。
また、障害モードを計画する必要があります。 ツールの呼び出しが失敗した場合、エージェントは再試行するか、別の方法を試すか、エスカレートするか。 これらの決定は、システム プロンプトでエンコードするか ("ツールがエラーを返した場合、ユーザーに通知して代替手段を提供する") か、エラー処理フックでプログラムによって処理できます。
概要
AI エージェントの設計には、その推論機能、使用できるツール、コンテキストの維持方法、安全な操作を保証するガードレールの定義が含まれます。 GitHub Copilot SDK は、これらのコンポーネントを使用してエージェントを構築するための強力なフレームワークを提供します。 システム プロンプトを慎重に設計し、適切なツールを選択し、ポリシーを実装することで、定義された境界内で運用しながら実際のビジネス価値を提供するエージェントを作成できます。 次のユニットでは、GitHub Copilot SDK を使用してサンプル エージェントを構築することで、これらの設計原則を実際に適用する方法について説明します。