こんにちは、健康診断に向けて油物を控えないとな〜、と思いながら半額の唐揚げを買ってしまうボンレスハムです。どうして買ってしまうのか、、わたし、気になります。
さて本題に入ります。
個人でGitHub Copilotを契約しているのですが、先日「GitHub Copilot SDK」というAI Agentを作成できるSDKがあるよ、という案内メールが届きました。
「AI Agentってなんぞや??」状態だったので、せっかくなので試してみました。
AI Agentとは?
AI Agentとは、目標達成に向けて自律的に計画・判断・行動し、タスクを完了させるAIソフトウェアのことです。Agentが日本語で「代理人」ということを知っているとイメージしやすいかも知れません。
「これやっといて!」とお願いすれば、そのタスクを完了するまでの手順をAIが計画し、一つ一つ実行していってくれる感じです。最近だとGeminiや、ChatGPTなどでもAgentが使えるかと思うので、普段使いされている方もいるかもしれないですね。
Github Copilot SDKを使えば、自分のやりたいことに特化したAI Agentが作れるようです。例えば、Githubの各レポジトリのヘルスチェックを行ってくれるエージェント、社内の情報を横断的に検索、要約して欲しい情報を教えてくれるエージェント、他にもあなたの健康データを入力、管理させれば、健康コーチングエージェントなんかもできるはずです。
実際にやってみた
すごいことができそうなことは分かりましたが、今回は第一歩を踏み出すために「質問に対して、検索して回答してくれる」というとても簡単なエージェントを作ってみます。
幸い、Copilot SDK にはスタートガイドが用意されていたので、その内容を参考に進めてみました。
セットアップ
今回は以下の環境を準備し、動作させてみました。
- Node.js: v24.13.0
- GitHub Copilot CLI
npm 経由でインストール(@github/copilot@0.0.394)
認証済み
正しくインストールできているか、バージョンを確認します。
copilot --version
0.0.394
Commit: 3d79feb
次にプロジェクトを作成し、package.jsonを初期化します。
あわせて、SDKとtsxなどをインストールします。
mkdir copilot-demo && cd copilot-demo
npm init -y --init-type module
npm install @github/copilot-sdk tsx
npm install --save-dev @types/node
実装していく
続いてindex.tsを作成し、以下のコードを記述します。
import { CopilotClient, SessionEvent } from "@github/copilot-sdk";
// Copilot クライアントの作成
const client = new CopilotClient();
// セッションの作成
const session = await client.createSession({
model: "gpt-4.1",
streaming: true, // ストリーミング対応
});
// セッションイベントのハンドリング
session.on((event: SessionEvent) => {
if (event.type === "assistant.message_delta") {
process.stdout.write(event.data.deltaContent);
}
// 使用するツール名を出力
if (event.type === "tool.execution_start") {
console.log(`[Tool Execution Started: ${event.data.toolName}]\n`);
}
if (event.type === "session.idle") {
// 出力完了後に改行
console.log("");
}
});
await session.sendAndWait({
prompt: "GitHub Copilot SDKについて教えて",
});
await client.stop();
process.exit(0);
早速実行してみるとエラーなどが発生することなく、以下のような出力が得られました。
npx tsx index.ts
# 下記は実際の出力結果(ツールのログも含む)
[Tool Execution Started: fetch_copilot_cli_documentation]
「GitHub Copilot SDK」という名称の公式プロダクトは存在しませんが、GitHub Copilot CLIはCopilotのAI機能をターミナルで使えるツールです。CLIを使うことで、自然言語でコードの生成・編集・デバッグ・リファクタリングなどが可能です。詳細は公式ドキュメントをご覧ください。
もし「Copilot SDK」について他の意味や具体的な用途があれば、もう少し詳しく教えてください。
出力を見る限り、現状ではCLIのドキュメント確認のみが行われており、SDK自体の情報は取得できていないようです。
ドキュメントを読んだところ、Copilot CLIで使えるGithubが提供しているツールはSDKで使えるようになっているみたいです。
検索機能も利用できるはずなので、以下のように「Webで検索してください」と指示を出すようにし、検索を用いた出力であることがわかるよう対応言語を教えてくれるようにプロンプトを変更して再度実行してみました。
await session.sendAndWait({
prompt:
"GitHub Copilot SDKがどの言語に対応しているか教えて。Webで検索してください。",
});
npx tsx index.ts
[Tool Execution Started: web_fetch]
[Tool Execution Started: web_fetch]
[Tool Execution Started: web_fetch]
[Tool Execution Started: web_fetch]
GitHub Copilot SDKは、Python、TypeScript(Node.js)、Go、.NETに対応しています。各言語向けのSDKが公式に提供されています。
4回ほどWeb検索を行った結果、必要な情報が揃ったようで、正しい回答が返ってきました。無事質問に対して、調査して結果を返してくれるAgentができました!
今回は試していませんが、対話形式のインターフェースを実装することも可能です。
まとめ
GitHub Copilot SDKは、AWSのBedrock Agent Coreと比べても、動かすまでの手間が非常に少ないので、とにかく触ってみたい方にはおすすめしやすいな、と思いました。(Copilotのサブスク入っていないとすぐ上限が来てしまうのはネックですが。。。)
今回はWeb検索しか行っていませんが、Cookbookを見てみると以下のようなものが紹介されていました。自分で独自のツールを追加することも可能なため、アイデアさえあればできることは無限大になっていきそうです。
- 複数のAgentを同時に使って並列で質問・処理するAgent
- フォルダを自動で整理するローカルファイル整理Agent
- PRの差分や内容を可視化・解析するPR分析Agent
今後は、より複雑な動作をさせたり、実際のアプリケーションに組み込んだりしてみたいと考えています。
のんびりって言葉が好きです