はじめに
今回は「2 つの Copilot インスタンスに同じテーマについて会話させる」というハンズオンを通じて、Copilot SDK の基本的な使い方を紹介します。
実装したデモは以下のリポジトリで公開しています。
Copilot SDK とは
Copilot SDK は GitHub が提供する公式 SDK で、Copilot の機能をプログラムで利用できるようにするパッケージです。
現在は以下の言語で利用可能です。
- Node.js / TypeScript:
@github/copilot-sdk - Python:
github-copilot-sdk - Go:
github.com/github/copilot-sdk/go - .NET:
GitHub.Copilot.SDK
デモアプリの概要
ai-talk-room は起動すると会話のテーマとターン数を対話的に入力でき、Copilot A と Copilot B がそのテーマを起点に互いに応答し合う様子を表示します。
会話のテーマ/最初のメッセージを入力してください: 意識とは何か
会話のターン数を入力してください (デフォルト: 6): 4
=== Copilot 同士の会話 (モデル: gpt-4.1, 4ターン) ===
Copilot A: 意識とは...
Copilot B: 興味深い視点ですね...
...
=== 会話終了 ===
セットアップ
必要な環境は以下のとおりです。
- Node.js
- GitHub Copilot へのアクセス権を持つ認証済みの GitHub アカウント
git clone https://github.com/shutils/ai-talk-room.git
cd ai-talk-room
npm install
npm start起動後にプロンプトが表示されるので、会話のテーマと何ターン会話させるかを入力します。途中で止めたい場合は Ctrl+C で中断できます。
コードの解説
クライアントの起動とセッション作成
CopilotClient を生成して start() を呼び出すとクライアントが起動します。その後 createSession() でセッションを作成します。セッションごとにシステムメッセージを設定することで、それぞれの AI に異なる役割を与えられます。
const client = new CopilotClient();
await client.start();
const sessionA = await client.createSession({
model: "gpt-4.1",
streaming: true,
systemMessage: {
mode: "replace",
content:
"You are Copilot A, an AI assistant engaged in a lively " +
"intellectual conversation with another AI called Copilot B. " +
"Respond thoughtfully, build on the other's points, and keep each reply to 2–4 sentences.",
},
onPermissionRequest: permissionHandler,
});sessionB も同様に作成し、システムメッセージだけ変えています。2 つの独立したセッションを持つことで、それぞれが独自の会話履歴を保持します。
ターンを交互に回す
一方の返答を次のターンの入力として渡すことで、会話が成立します。
let currentMessage = topic;
for (let i = 0; i < turns; i++) {
const isATurn = i % 2 === 0;
if (isATurn) {
currentMessage = await sendAndCollect(sessionA, currentMessage, "Copilot A");
} else {
currentMessage = await sendAndCollect(sessionB, currentMessage, "Copilot B");
}
await new Promise((r) => setTimeout(r, 300));
}終了処理
セッションとクライアントを破棄します。SIGINT ハンドラで Ctrl+C 時にもクリーンアップが走るようにしています。
process.on("SIGINT", async () => {
await sessionA.destroy();
await sessionB.destroy();
await client.stop();
process.exit(0);
});まとめ
@github/copilot-sdk を使うとCopilotのセッションの機能が使えるので、基本的な会話の機能を実装せずに済むため簡単にAIアプリケーションを構築できます。
今回は2つのAIを会話させるという遊び的なデモでしたが、同じ仕組みを応用すれば多段階のレビューや自動的なコード生成パイプラインなど、より実用的なユースケースにも活用できそうです。


コメント