Skip to main content

BYOK (独自のキーを持ち込む)

BYOK を使用すると、GitHub Copilot認証をバイパスして、モデル プロバイダーからの独自の API キーで Copilot SDK を使用できます。 これは、エンタープライズ デプロイ、カスタム モデル ホスティング、またはモデル プロバイダーとの直接課金が必要な場合に便利です。

サポートされているプロバイダー

Provider型の値メモ
OpenAI"openai"OpenAI API と OpenAI と互換性のあるエンドポイント
Microsoft Foundry / Azure OpenAI
"openai" または "azure"
"openai"/openai/v1/を使用する。ネイティブ Azure エンドポイントに"azure"を使用する
Anthropic"anthropic"クロード モデル
Ollama"openai"OpenAI 互換 API を使用したローカル モデル
マイクロソフト ファウンドリー ローカル"openai"OpenAI 互換 API を使用してデバイス上で AI モデルをローカルで実行する
その他の OpenAI 互換"openai"vLLM、LiteLLM など

クイック スタート: Microsoft Foundry

Microsoft Foundry は、企業向けの一般的な BYOK デプロイ ターゲットです。 完全な例を次に示します。

コード言語 navigation

Python
import asyncio
import os
from copilot import CopilotClient
from copilot.session import PermissionHandler

FOUNDRY_MODEL_URL = "https://<resource-name>.openai.azure.com/openai/v1/"
# Set FOUNDRY_API_KEY environment variable

async def main():
    client = CopilotClient()
    await client.start()

    session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model="gpt-5.2-codex", provider={
        "type": "openai",
        "base_url": FOUNDRY_MODEL_URL,
        "wire_api": "responses",  # Use "completions" for older models
        "api_key": os.environ["FOUNDRY_API_KEY"],
    })

    done = asyncio.Event()

    def on_event(event):
        if event.type.value == "assistant.message":
            print(event.data.content)
        elif event.type.value == "session.idle":
            done.set()

    session.on(on_event)
    await session.send("What is 2+2?")
    await done.wait()

    await session.disconnect()
    await client.stop()

asyncio.run(main())

プロバイダー構成リファレンス

ProviderConfig フィールド

フィールドタイプDescription
type
"openai"
|
"azure"
|
"anthropic"
プロバイダーの種類 (既定値: "openai")
baseUrl / base_url文字列
必須。 API エンドポイント URL
apiKey / api_key文字列API キー (Ollama などのローカル プロバイダーの場合は省略可能)
bearerToken / bearer_token文字列ベアラー トークン認証 (apiKey よりも優先されます)
bearerTokenProvider / bearer_token_providerコールバックベアラー トークンをオンデマンドで返します ( apiKeybearerTokenよりも優先されます)
wireApi / wire_api
"completions"
|
"responses"
広範なモデル互換性 (Chat Completions API) の "completions" を選択し、マルチターン状態管理、ツール名の指定、および推論のサポート (Responses API) の "responses" を選択します。 Anthropicモデルでは、この設定に関係なく、常に Messages API が使用されます。
azure.apiVersion / azure.api_version文字列Azure API バージョン。 設定すると、ランタイムはバージョン管理されたデプロイ ルートを使用します。省略すると、GA のバージョンレス v1 ルートが使用されます。

Wire API フォーマット形式

wireApi設定によって、使用する OpenAI API 形式が決まります。

  • "completions" (既定) - 広範なモデル互換性のためのチャット補完 API (/chat/completions)。
  • "responses" - 複数ターン状態管理、ツールの名前空間、推論機能のサポートのための応答 API。

Anthropic モデルでは、この設定に関係なく、常に Anthropic Messages API が使用されます。

型固有の注記

OpenAI (type: "openai")

  • OpenAI API と任意の OpenAI 互換エンドポイントで動作します
  • baseUrl は完全なパスを含める必要があります (例: https://api.openai.com/v1)

Azure (type: "azure")

  • ネイティブ Azure OpenAI エンドポイントに使用する
  • baseUrl はホスト (例: https://my-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,
}

Azure OpenAI (ネイティブ Azure エンドポイント)

type: "azure"のエンドポイントに*.openai.azure.comを使用します。

provider: {
    type: "azure",
    baseUrl: "https://my-resource.openai.azure.com",  // Just the host
    apiKey: process.env.AZURE_OPENAI_KEY,
    azure: {
        apiVersion: "2024-10-21",
    },
}

Microsoft Foundry (OpenAI 互換エンドポイント)

/openai/v1/ エンドポイントMicrosoft Foundry デプロイの場合は、次のtype: "openai"を使用します。

provider: {
    type: "openai",
    baseUrl: "https://<resource-name>.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
}