🙌

GitHub Copilotの本当の強み

に公開

💰安い!お手頃!リーズナブル!💰

皆さん、GitHub Copilotの強みって何だと思いますか?
個人的に、GitHub Copilotの最大の強みはコスパだと思っています。

というのも、GitHub Copilotって他のサービスと違って、「プレミアムリクエスト」という課金体系になっているんですよね。
使用したトークン数は関係なく、リクエストの回数で課金される仕組みになっています。

つまり、どれだけ長いコードを生成しても、どれだけ複雑なタスクを処理しても、リクエストあたりのコストは同じなんですよね。

また、機能が豊富な点もGitHub Copilotの強みです。

この二つを組み合わせると、GitHub Copilotは非常にコストパフォーマンスが高いツールになります。
この記事では、安くて高性能なAIエージェントを使い倒すための方法を紹介していきます。

💎プレミアムリクエストとは💎

そもそも、プレミアムリクエストって何でしょうか?
プレミアムリクエストは、GitHub Copilotの課金体系で、ユーザーが行うリクエストの回数に基づいて課金される仕組みです。

プランによってプレミアムリクエストの上限が決まっており、上限を超えると追加のリクエストが従量課金される形になります。

VSCodeのチャットやCLIから指示を出すと、それが1回のリクエストとしてカウントされます。
例えば、VSCodeのチャットで「このコードをリファクタリングして」と指示を出したり、そのチャットで何か追加で指摘をしたりすると、それぞれが1回のリクエストとしてカウントされます。

この指示の内容や、実際にAIが行った作業の量によってプレミアムリクエストの消費量が変わるわけではなく、リクエストの回数で課金されるという点が、GitHub Copilotの大きな特徴です。

どれだけ重いタスクでも料金が変わらないのです。
なんかちょっと、悪いことできそうじゃないですか??

ツール名 課金体系
GitHub Copilot プレミアムリクエスト
Claude Code トークンベース
Codex トークンベース

🤦‍♂️一気に指示すればいい?🤦‍♂️

じゃあ、GitHub Copilotを使うときは、できるだけ一度にまとめて指示を出す方がいいんじゃないかと思いますよね。
一つのタスクを分解して複数のリクエストに分けるより、一度にまとめて指示を出す方が、コストパフォーマンスが高くなるのは明らかです。

しかし、実際にまとめて指示を出すと、AIが処理するタスクが複雑になりすぎて、期待した結果が得られないことがあります。
複数のステップを含むタスクでは、AIが途中からユーザの指示を忘れたり、ユーザの意図と違う判断を勝手に行ったりするんですよね。

当然ですよね。
人間でも、複雑なタスクを上司に確認しないまま進めてしまえば、方向性がずれてしまうことは往々にしてあります。
複雑なタスクだと手順が漏れてしまうことだってあるでしょう。AIだって同じです。

🛠️複雑なタスクを処理する方法🛠️

では、人間はどうやって複雑なタスクを処理しているのでしょうか?

人間は、タスクを分解して処理することで、複雑なタスクを効率的に処理しています。
プロジェクトマネージャーがプロジェクトを小さなタスクに分解して、チームメンバーに割り当てます。
各メンバーも、さらにタスクを細分化して、メモを取りながら自分の作業を管理します。
そして、定期的に上司やチームメンバーとコミュニケーションを取りながら、タスクの進捗を確認し、必要に応じて方向修正を行います。

AIにも同じことをさせればいいのです。
タスクの管理」, 「細かい確認」そして「タスクの分解」。この3つのポイントを押さえましょう。

ポイント 説明
タスクの管理 各メンバーが自分のタスクを管理する。
細かい確認 不明点はユーザに確認しながら、タスクを進める。
タスクの分解 ユーザの指示を小さなタスクに分解し、メンバーに割り振る。

では、これらをどのように実装すればいいのでしょうか?

1. タスクの管理

タスクの管理は、実は超簡単です。
GitHub Copilotのツールに、todoというものがあります。

エージェントがこのツールを使える状況であれば、勝手に自分のタスクを分解・管理してくれます。
その上、VSCode ChatのUI上にtodoリストが表示されるので、ユーザもタスクの進捗を簡単に確認できます。

2. 細かい確認

これも同様に、ツールを利用します。

GitHub Copilotのツールに、vscode/askQuestionsというものがあります。
これは、エージェントがユーザに質問するためのツールです。

質問をVSCodeのUI上に表示し、ユーザに回答してもらうことができます。
選択肢を提示したり、自由記入させたりでき、基本的にはどんな質問でも可能です。

しかし、エージェントがこのツールを使える状況でも、能動的に質問をしてくれるわけではありません。
(モデルごとの性格にもよるのかもしれませんが...。)

指示の中で「不明点があれば #askQuestions を使って質問してね」と明示的に伝えましょう。
そうすれば、AIは不明点があれば積極的に質問してくれるようになります。

3. タスクの分解

タスクの分解もツールを使います。

GitHub Copilotのツールに、agent/runSubagentというものがあります。
このツールは、サブエージェントを起動するためのツールです。

サブエージェントとは

サブエージェントとは、親エージェントから独立して動作するエージェントのことです。
親エージェントとは別に、新しいコンテキストウィンドウが立ち上がり、そこでタスクを処理します。
つまり、人間がエージェントにタスクを依頼するのと同様、エージェントからサブエージェントにタスクを依頼することができるのです。

しかも!!これは「ツールの呼び出し」という扱いになり、プレミアムリクエストが消費されません

オーケストレーションパターン

サブエージェントを活用し、タスクを分解して作業を進めるよう指示の中で明示的に伝えましょう。
「あなたは実際の作業は行わず、タスクを分解して、サブエージェントに移譲してね。各工程の後には別のサブエージェントにレビューを行わせるなど、精度を高めるための工夫もしてね」といった感じです。

このように、親エージェントがタスクを管理し、細かい確認を行いながら、サブエージェントにタスクを分解して処理させるというパターンは、オーケストレーションパターンと呼ばれています。
このパターンを活用すれば、複雑なタスクも効率的に処理することができます。
「オーケストレーションパターン」で調べれば色々記事が出てくるので、色々参考にしてみてください。

先ほどの[細かい確認](#2. 細かい確認)の指示と組み合わせ、狙ったように処理が進むように指示を出しましょう。

🤖カスタムエージェントで定義しよう🤖

さらに、GitHub Copilotには、カスタムエージェントという機能があります。
カスタムエージェントを使うと、自分のニーズに合わせたエージェントを定義することができます。

ここまでの内容を踏まえて、タスクの管理、細かい確認、タスクの分解を行うエージェントを定義してみましょう。

色々なやり方があると思いますが、参考に自分の作成したリポジトリを載せておきます。
まだ完全に完成しているわけではないですが、タスク管理エージェントの例として参考にしてみてください。

https://github.com/yuma-seno/copilot-orchestrator

📝まとめ📝

書いていて改めて思いましたが、このような複雑なフローをコスト気にせず実装できるのは異常と言ってもいいくらいですね。

せっかくGitHub Copilotを使うのであれば、プレミアムリクエストや色々な機能をフルに活用して、コストパフォーマンスの高いAIエージェントを作りましょう!

ヘッドウォータース

Discussion