メモ
Copilot SDK は現在 パブリック プレビューです。 機能と可用性は変更される場合があります。
Bring Your Own Key (BYOK) を使用すると、モデル プロバイダーからの独自の API キーで Copilot SDK を使用し、 GitHub Copilot 認証をバイパスできます。 これは、エンタープライズ デプロイ、カスタム モデル ホスティング、またはモデル プロバイダーとの直接課金が必要な場合に便利です。
サポートされているプロバイダー
| プロバイダー | 種類の値 | メモ |
|---|---|---|
| OpenAI | "openai" | OpenAI API と OpenAI と互換性のあるエンドポイント |
| Azure OpenAI /Azure AI Foundry |
`"azure"` または `"openai"` | Azure でホストされるモデル ( [Azure エンドポイントの種類](#azure-endpoint-type-confusion)を参照) |
| Anthropic | "anthropic" | クロード モデル |
| Ollama | "openai" | OpenAI 互換 API を使用したローカル モデル |
| Microsoft Foundry Local | "openai" | OpenAI 互換 API を使用してデバイス上で AI モデルをローカルで実行する |
| その他の OpenAI 互換 | "openai" | vLLM、LiteLLM など |
クイックスタート:Azure AI Foundry
Azure AI Foundry (旧称 Azure OpenAI) は、企業向けの一般的な BYOK デプロイ ターゲットです。 次の例は、/TypeScript セットアップの完全な Node.jsを示しています。
-
Azure AI Foundry エンドポイントと API キーを使用してセッションを作成します。
TypeScript import { CopilotClient } from "@github/copilot-sdk"; const client = new CopilotClient(); const session = await client.createSession({ model: "YOUR-DEPLOYMENT-NAME", provider: { type: "openai", baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/", wireApi: "responses", // Use "completions" for older models apiKey: process.env.FOUNDRY_API_KEY, }, }); session.on("assistant.message", (event) => { console.log(event.data.content); }); await session.sendAndWait({ prompt: "What is 2+2?" }); await client.stop();import { CopilotClient } from "@github/copilot-sdk"; const client = new CopilotClient(); const session = await client.createSession({ model: "YOUR-DEPLOYMENT-NAME", provider: { type: "openai", baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/", wireApi: "responses", // Use "completions" for older models apiKey: process.env.FOUNDRY_API_KEY, }, }); session.on("assistant.message", (event) => { console.log(event.data.content); }); await session.sendAndWait({ prompt: "What is 2+2?" }); await client.stop();`YOUR-RESOURCE`を Azure リソース名に置き換え、`YOUR-DEPLOYMENT-NAME`をモデルのデプロイ名に置き換えます。 `FOUNDRY_API_KEY`環境変数を Azure API キーに設定します。
Python、Go、.NET の例については、 リポジトリの github/copilot-sdk を参照してください。 Java については、 github/copilot-sdk-java リポジトリを参照してください。
プロバイダー構成リファレンス
ProviderConfig フィールド
| フィールド | タイプ | 説明 |
|---|---|---|
type |
`"openai"`
\|
`"azure"`
\|
`"anthropic"`
| プロバイダーの種類。 既定値は `"openai"` です。 |
| baseUrl | 文字列 |
必須。 API エンドポイント URL。 |
| apiKey | 文字列 | API キー。 Ollama などのローカル プロバイダーの場合は省略可能です。 |
| bearerToken | 文字列 | ベアラー トークン認証。
apiKeyよりも優先されます。 |
| wireApi |
"completions"
|
"responses"
| API 形式。 既定値は "completions" です。 |
| azure.apiVersion | 文字列 | Azure API バージョン。 既定値は "2024-10-21" です。 |
Wire API フォーマット形式
`wireApi`設定によって、使用する OpenAI API 形式が決まります。
*
**
"completions"
** (既定値): Chat Completions API (/chat/completions)。 ほとんどのモデルに使用します。
*
**
"responses"
**: 応答 API。 新しい応答形式をサポートする GPT-5 シリーズ モデルに使用します。
型固有の注記
**OpenAI (`type: "openai"`)**
-
OpenAI API と任意の OpenAI 互換エンドポイントで動作します。
-
`baseUrl` には、 `https://api.openai.com/v1`など、完全なパスを含める必要があります。 **Azure (`type: "azure"`)** -
ネイティブの Azure OpenAI エンドポイントに使用します。
-
`baseUrl` はホスト (たとえば、 `https://YOUR-RESOURCE.openai.azure.com`) である必要があります。 -
URL に
/openai/v1を含めないでください。SDK はパスの構築を処理します。**アントロピック (`type: "anthropic"`)** -
直接 Anthropic API アクセスの場合。
-
Claude 固有の API 形式を使用します。
構成例
OpenAI Direct
provider: {
type: "openai",
baseUrl: "https://api.openai.com/v1",
apiKey: process.env.OPENAI_API_KEY,
}
provider: {
type: "openai",
baseUrl: "https://api.openai.com/v1",
apiKey: process.env.OPENAI_API_KEY,
}
Azure OpenAI (ネイティブ Azure エンドポイント)
`type: "azure"`のエンドポイントに`*.openai.azure.com`を使用します。
provider: {
type: "azure",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com", // Just the host
apiKey: process.env.AZURE_OPENAI_KEY,
azure: {
apiVersion: "2024-10-21",
},
}
provider: {
type: "azure",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com", // Just the host
apiKey: process.env.AZURE_OPENAI_KEY,
azure: {
apiVersion: "2024-10-21",
},
}
`YOUR-RESOURCE`を Azure リソース名に置き換えます。
Azure AI Foundry (OpenAI と互換性のあるエンドポイント)
`/openai/v1/` エンドポイントを使用した Azure AI Foundry デプロイの場合は、次の`type: "openai"`を使用します。
provider: {
type: "openai",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
apiKey: process.env.FOUNDRY_API_KEY,
wireApi: "responses", // For GPT-5 series models
}
provider: {
type: "openai",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
apiKey: process.env.FOUNDRY_API_KEY,
wireApi: "responses", // For GPT-5 series models
}
Ollama (ローカル)
provider: {
type: "openai",
baseUrl: "http://localhost:11434/v1",
// No apiKey needed for local Ollama
}
provider: {
type: "openai",
baseUrl: "http://localhost:11434/v1",
// No apiKey needed for local Ollama
}
Microsoft Foundry Local
[Microsoft Foundry Local](https://foundrylocal.ai) を使用すると、OpenAI と互換性のある API を使用して AI モデルをローカルで実行できます。 Foundry Local CLI を使用してインストールし、ローカル エンドポイントで SDK をポイントします。
provider: {
type: "openai",
baseUrl: "http://localhost:YOUR-PORT/v1",
// No apiKey needed for local Foundry Local
}
provider: {
type: "openai",
baseUrl: "http://localhost:YOUR-PORT/v1",
// No apiKey needed for local Foundry Local
}
メモ
Foundry Local は、固定されていない動的ポートで開始されます。
foundry service statusを実行して、サービスが現在リッスンしているポートを確認してから、baseUrlでそのポートを使用します。
Foundry Local の使用を開始するには:
# Windows: Install Foundry Local CLI (requires winget) winget install Microsoft.FoundryLocal # List available models foundry model list # Run a model (starts the local server automatically) foundry model run phi-4-mini # Check the port the service is running on foundry service status
# Windows: Install Foundry Local CLI (requires winget)
winget install Microsoft.FoundryLocal
# List available models
foundry model list
# Run a model (starts the local server automatically)
foundry model run phi-4-mini
# Check the port the service is running on
foundry service status
macOS/Linux のインストールについては、 foundrylocal.ai を参照してください。
Anthropic
provider: {
type: "anthropic",
baseUrl: "https://api.anthropic.com",
apiKey: process.env.ANTHROPIC_API_KEY,
}
provider: {
type: "anthropic",
baseUrl: "https://api.anthropic.com",
apiKey: process.env.ANTHROPIC_API_KEY,
}
ベアラー トークン認証
一部のプロバイダーでは、API キーの代わりにベアラー トークン認証が必要です。
provider: {
type: "openai",
baseUrl: "https://YOUR-CUSTOM-ENDPOINT.example.com/v1",
bearerToken: process.env.MY_BEARER_TOKEN, // Sets Authorization header
}
provider: {
type: "openai",
baseUrl: "https://YOUR-CUSTOM-ENDPOINT.example.com/v1",
bearerToken: process.env.MY_BEARER_TOKEN, // Sets Authorization header
}
メモ
`bearerToken` オプションは、静的トークン文字列のみを受け入れます。 SDK は、このトークンを自動的に更新しません。 トークンの有効期限が切れると、要求は失敗し、新しいトークンを使用して新しいセッションを作成する必要があります。
カスタム モデルの一覧
BYOK を使用する場合、CLI サーバーはプロバイダーがサポートするモデルを認識できない場合があります。 クライアント レベルでカスタム onListModels ハンドラーを指定して、 client.listModels() がプロバイダーのモデルを標準の ModelInfo 形式で返すようにすることができます。
import { CopilotClient } from "@github/copilot-sdk";
import type { ModelInfo } from "@github/copilot-sdk";
const client = new CopilotClient({
onListModels: () => [
{
id: "my-custom-model",
name: "My Custom Model",
capabilities: {
supports: { vision: false, reasoningEffort: false },
limits: { max_context_window_tokens: 128000 },
},
},
],
});
import { CopilotClient } from "@github/copilot-sdk";
import type { ModelInfo } from "@github/copilot-sdk";
const client = new CopilotClient({
onListModels: () => [
{
id: "my-custom-model",
name: "My Custom Model",
capabilities: {
supports: { vision: false, reasoningEffort: false },
limits: { max_context_window_tokens: 128000 },
},
},
],
});
結果は、最初の呼び出しの後にキャッシュされます。 ハンドラーは CLI の models.list RPC を完全に置き換えます。サーバーへのフォールバックは発生しません。
Python、Go、.NET の例については、 リポジトリの github/copilot-sdk を参照してください。 Java については、 github/copilot-sdk-java リポジトリを参照してください。
制限事項
ID の制限事項
BYOK 認証では、静的資格情報のみが使用されます。 次の ID プロバイダーはサポートされていません。
- Microsoft Entra ID (Azure AD)—Entra マネージド ID またはサービス プリンシパルはサポートされません。
- サード パーティの ID プロバイダー 。OIDC、SAML、またはその他のフェデレーション ID はありません。
- マネージド ID - Azure マネージド ID はサポートされていません。
自分で管理する API キーまたは静的ベアラー トークンを使用する必要があります。
メモ
Entra ID はベアラー トークンを発行しますが、これらのトークンは有効期間が短く (通常は 1 時間)、Azure Identity SDK を使用した自動更新が必要です。
bearerToken オプションは静的文字列のみを受け入れます。SDK が新しいトークンを要求するためのコールバック メカニズムはありません。 Entra 認証を必要とする実行時間の長いワークロードの場合は、独自のトークン更新ロジックを実装し、更新されたトークンを使用して新しいセッションを作成する必要があります。
機能の制限事項
BYOK では、一部の Copilot 機能の動作が異なる場合があります。
-
**モデルの可用性**: プロバイダーでサポートされているモデルのみを使用できます。 -
**レート制限**: Copilotではなく、プロバイダーのレート制限に従います。 -
**使用状況の追跡**: 使用状況は、 GitHubではなく、プロバイダーによって追跡されます。 -
**Premium 要求**: Premium 要求クォータにカウントされません。
プロバイダー固有の制限事項
| プロバイダー | 制限事項 |
|---|---|
| Azure AI Foundry | Entra ID 認証なし。API キーを使用する必要があります。 |
| Ollama | API キーがありません。local のみ。モデルのサポートは異なります。 |
| Microsoft Foundry Local | ローカルのみ。モデルの可用性は、デバイスのハードウェアによって異なります。API キーは必要ありません。 |
| OpenAI | OpenAI のレート制限とクォータに従います。 |
Troubleshooting
"モデルが指定されていません" エラー
BYOK を使用する場合は、 model パラメーターが必要です。
// Error: model required with custom provider
const session = await client.createSession({
provider: { type: "openai", baseUrl: "..." },
});
// Correct: model specified
const session = await client.createSession({
model: "gpt-4",
provider: { type: "openai", baseUrl: "..." },
});
Azure エンドポイントの種類の混乱
Azure OpenAI エンドポイント (*.openai.azure.com)は、適切なプロバイダーの種類を使用していることを確認します。
// Wrong: using "openai" type with native Azure endpoint
provider: {
type: "openai",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com",
}
// Correct: using "azure" type
provider: {
type: "azure",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com",
}
Azure AI Foundry デプロイで OpenAI と互換性のあるエンドポイント パス (たとえば、 /openai/v1/) が提供される場合は、代わりに type: "openai" を使用します。
// Correct: OpenAI-compatible Azure AI Foundry endpoint
provider: {
type: "openai",
baseUrl: "https://YOUR-RESOURCE.openai.azure.com/openai/v1/",
}
接続が拒否されました (Ollama)
Ollama が実行され、アクセスできることを確認します。
# Check Ollama is running curl http://localhost:11434/v1/models # Start Ollama if not running ollama serve
# Check Ollama is running
curl http://localhost:11434/v1/models
# Start Ollama if not running
ollama serve
接続が拒否されました (Foundry Local)
Foundry Local は、再起動の間に変更される可能性がある動的ポートを使用します。 アクティブなポートを確認します。
foundry service status
foundry service status
出力に表示されるポートと一致するように baseUrl を更新します。 サービスが実行されていない場合は、モデルを使って起動させます。
foundry model run phi-4-mini
foundry model run phi-4-mini
認証に失敗しました
- API キーが正しく、期限切れではないことを確認します。
-
`baseUrl`がプロバイダーの予想される形式と一致することを確認します。 - ベアラー トークンの場合は、プレフィックスだけでなく、完全なトークンが提供されていることを確認します。