copilot-router は何をしますか?
🛠️ シンプルなチャットプロキシを介してGitHub CopilotをOpenAIおよびAnthropicクライアントと接続し、開発体験をシームレスに向上させます。
概要
copilot-router は、GitHub Copilot の認証システムを活用しながら、OpenAI 互換または Anthropic 互換のクライアントから Copilot のモデルにアクセスできるようにするプロキシサーバーです。これにより、既存の Copilot サブスクリプションを最大限に活用し、コード補完やチャット支援を拡張できます。
特徴
- マルチプロバイダ対応: OpenAI および Anthropic クライアントとの互換性を提供
- 簡単セットアップ: 環境変数と設定ファイルだけで即座に実行可能
- 認証透過: GitHub Copilot の認証トークンを自動的に管理
- 軽量: 依存関係が最小限で、リソース消費が少ない
はじめ方
前提条件
- Node.js 18 以上
- GitHub Copilot の有効なサブスクリプション
- 使用する IDE(VS Code、JetBrains、Neovim など)で Copilot が設定済みであること
インストール
git clone https://github.com/Niravgoyani7/copilot-router.git
cd copilot-router
npm install
設定
プロジェクトルートに .env ファイルを作成します(テンプレートとして .env.example をコピー)。
# 必須: GitHub Copilot トークン(gh auth token から取得)
GITHUB_TOKEN=your_github_token_here
# オプション: プロキシのポート番号(デフォルトは 3000)
PORT=3000
# オプション: ターゲットプロバイダ(openai または anthropic、デフォルトは openai)
PROVIDER=openai
実行
npm start
プロキシが http://localhost:3000 で起動します。
使用方法
OpenAI または Anthropic のクライアントライブラリで、ベース URL をプロキシのアドレスに変更します。
OpenAI クライアント(Python)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:3000/v1",
api_key="any-key" # プロキシが認証を処理するため、ダミーキーでOK
)
response = client.chat.completions.create(
model="gpt-4", # モデル名は Copilot が利用可能なものに
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
Anthropic クライアント(Python)
from anthropic import Anthropic
client = Anthropic(
base_url="http://localhost:3000",
api_key="any-key"
)
response = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1000,
messages=[{"role": "user", "content": "Hello"}]
)
print(response.content)
アーキテクチャ
[クライアント (IDE/CLI)] → [copilot-router プロキシ] → [GitHub Copilot API]
プロキシはリクエストをインターセプトし、適切な Copilot エンドポイントに転送します。認証トークンは GitHub CLI から自動的に取得され、有効期限が切れた場合は更新されます。
サポートされるプラットフォーム
- Visual Studio Code
- JetBrains IDE(IntelliJ、PyCharm など)
- Neovim
- その他 Copilot 対応エディタ
トラブルシューティング
認証エラー
認証トークンが有効かどうかを確認します:
gh auth status
必要に応じて再ログイン:
gh auth login
ポート競合
デフォルトのポートが使用中の場合は、環境変数 PORT を変更します。
ライセンス
MIT
貢献
プルリクエストを歓迎します。大規模な変更を行う場合は、最初に issue を開いて議論してください。
謝辞
GitHub Copilot チームと、このプロジェクトのインスピレーションとなったコミュニティに感謝します。