{"meta":{"title":"BYOK (独自のキーを持ち込む)","intro":"BYOK を使用すると、GitHub Copilot認証をバイパスして、モデル プロバイダーからの独自の API キーで Copilot SDK を使用できます。 これは、エンタープライズ デプロイ、カスタム モデル ホスティング、またはモデル プロバイダーとの直接課金が必要な場合に便利です。","product":"GitHub Copilot","breadcrumbs":[{"href":"/ja/copilot","title":"GitHub Copilot"},{"href":"/ja/copilot/how-tos","title":"方法"},{"href":"/ja/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/ja/copilot/how-tos/copilot-sdk/auth","title":"認証"},{"href":"/ja/copilot/how-tos/copilot-sdk/auth/byok","title":"BYOK"}],"documentType":"article"},"body":"# BYOK (独自のキーを持ち込む)\n\nBYOK を使用すると、GitHub Copilot認証をバイパスして、モデル プロバイダーからの独自の API キーで Copilot SDK を使用できます。 これは、エンタープライズ デプロイ、カスタム モデル ホスティング、またはモデル プロバイダーとの直接課金が必要な場合に便利です。\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## サポートされているプロバイダー\n\n| Provider                                                         | 型の値           | メモ                                         |\n| ---------------------------------------------------------------- | ------------- | ------------------------------------------ |\n| OpenAI                                                           | `\"openai\"`    | OpenAI API と OpenAI と互換性のあるエンドポイント         |\n| Microsoft Foundry / Azure OpenAI                                 |               |                                            |\n| `\"openai\"` または `\"azure\"`                                         |               |                                            |\n| `/openai/v1/`に`\"openai\"`を使用する。ネイティブ Azure エンドポイントに`\"azure\"`を使用する |               |                                            |\n| Anthropic                                                        | `\"anthropic\"` | クロード モデル                                   |\n| Ollama                                                           | `\"openai\"`    | OpenAI 互換 API を使用したローカル モデル                |\n| マイクロソフト ファウンドリー ローカル                                             | `\"openai\"`    | OpenAI 互換 API を使用してデバイス上で AI モデルをローカルで実行する |\n| その他の OpenAI 互換                                                   | `\"openai\"`    | vLLM、LiteLLM など                            |\n\n## クイック スタート: Microsoft Foundry\n\nMicrosoft Foundry は、企業向けの一般的な BYOK デプロイ ターゲットです。 完全な例を次に示します。\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nimport asyncio\nimport os\nfrom copilot import CopilotClient\nfrom copilot.session import PermissionHandler\n\nFOUNDRY_MODEL_URL = \"https://<resource-name>.openai.azure.com/openai/v1/\"\n# Set FOUNDRY_API_KEY environment variable\n\nasync def main():\n    client = CopilotClient()\n    await client.start()\n\n    session = await client.create_session(on_permission_request=PermissionHandler.approve_all, model=\"gpt-5.2-codex\", provider={\n        \"type\": \"openai\",\n        \"base_url\": FOUNDRY_MODEL_URL,\n        \"wire_api\": \"responses\",  # Use \"completions\" for older models\n        \"api_key\": os.environ[\"FOUNDRY_API_KEY\"],\n    })\n\n    done = asyncio.Event()\n\n    def on_event(event):\n        if event.type.value == \"assistant.message\":\n            print(event.data.content)\n        elif event.type.value == \"session.idle\":\n            done.set()\n\n    session.on(on_event)\n    await session.send(\"What is 2+2?\")\n    await done.wait()\n\n    await session.disconnect()\n    await client.stop()\n\nasyncio.run(main())\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\n\nconst FOUNDRY_MODEL_URL = \"https://<resource-name>.openai.azure.com/openai/v1/\";\n\nconst client = new CopilotClient();\nconst session = await client.createSession({\n    model: \"gpt-5.2-codex\",  // Your deployment name\n    provider: {\n        type: \"openai\",\n        baseUrl: FOUNDRY_MODEL_URL,\n        wireApi: \"responses\",  // Use \"completions\" for older models\n        apiKey: process.env.FOUNDRY_API_KEY,\n    },\n});\n\nsession.on(\"assistant.message\", (event) => {\n    console.log(event.data.content);\n});\n\nawait session.sendAndWait({ prompt: \"What is 2+2?\" });\nawait client.stop();\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n    \"os\"\n    copilot \"github.com/github/copilot-sdk/go\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    client := copilot.NewClient(nil)\n    if err := client.Start(ctx); err != nil {\n        panic(err)\n    }\n    defer client.Stop()\n\n    session, err := client.CreateSession(ctx, &copilot.SessionConfig{\n        Model: \"gpt-5.2-codex\",  // Your deployment name\n        Provider: &copilot.ProviderConfig{\n            Type:    \"openai\",\n            BaseURL: \"https://<resource-name>.openai.azure.com/openai/v1/\",\n            WireAPI: \"responses\",  // Use \"completions\" for older models\n            APIKey:  os.Getenv(\"FOUNDRY_API_KEY\"),\n        },\n    })\n    if err != nil {\n        panic(err)\n    }\n\n    response, err := session.SendAndWait(ctx, copilot.MessageOptions{\n        Prompt: \"What is 2+2?\",\n    })\n    if err != nil {\n        panic(err)\n    }\n\n    if d, ok := response.Data.(*copilot.AssistantMessageData); ok {\n        fmt.Println(d.Content)\n    }\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nusing GitHub.Copilot;\n\nawait using var client = new CopilotClient();\nawait using var session = await client.CreateSessionAsync(new SessionConfig\n{\n    Model = \"gpt-5.2-codex\",  // Your deployment name\n    Provider = new ProviderConfig\n    {\n        Type = \"openai\",\n        BaseUrl = \"https://<resource-name>.openai.azure.com/openai/v1/\",\n        WireApi = \"responses\",  // Use \"completions\" for older models\n        ApiKey = Environment.GetEnvironmentVariable(\"FOUNDRY_API_KEY\"),\n    },\n});\n\nvar response = await session.SendAndWaitAsync(new MessageOptions\n{\n    Prompt = \"What is 2+2?\",\n});\nConsole.WriteLine(response?.Data.Content);\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\n\nvar client = new CopilotClient();\nclient.start().get();\n\nvar session = client.createSession(new SessionConfig()\n    .setModel(\"gpt-5.2-codex\")  // Your deployment name\n    .setOnPermissionRequest(PermissionHandler.APPROVE_ALL)\n    .setProvider(new ProviderConfig()\n        .setType(\"openai\")\n        .setBaseUrl(\"https://<resource-name>.openai.azure.com/openai/v1/\")\n        .setWireApi(\"responses\")  // Use \"completions\" for older models\n        .setApiKey(System.getenv(\"FOUNDRY_API_KEY\")))\n).get();\n\nvar response = session.sendAndWait(new MessageOptions()\n    .setPrompt(\"What is 2+2?\")).get();\nSystem.out.println(response.getData().content());\n\nclient.stop().get();\n```\n\n</div>\n\n</div>\n\n## プロバイダー構成リファレンス\n\n### ProviderConfig フィールド\n\n| フィールド                                                                                                                                                                           | タイプ    | Description                                                                              |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------- |\n| `type`                                                                                                                                                                          |        |                                                                                          |\n| `\"openai\"`                                                                                                                                                                      |        |                                                                                          |\n| \\|                                                                                                                                                                              |        |                                                                                          |\n| `\"azure\"`                                                                                                                                                                       |        |                                                                                          |\n| \\|                                                                                                                                                                              |        |                                                                                          |\n| `\"anthropic\"`                                                                                                                                                                   |        |                                                                                          |\n| プロバイダーの種類 (既定値: `\"openai\"`)                                                                                                                                                     |        |                                                                                          |\n| `baseUrl` / `base_url`                                                                                                                                                          | 文字列    |                                                                                          |\n| **必須。** API エンドポイント URL                                                                                                                                                         |        |                                                                                          |\n| `apiKey` / `api_key`                                                                                                                                                            | 文字列    | API キー (Ollama などのローカル プロバイダーの場合は省略可能)                                                   |\n| `bearerToken` / `bearer_token`                                                                                                                                                  | 文字列    | ベアラー トークン認証 (apiKey よりも優先されます)                                                           |\n| `bearerTokenProvider` / `bearer_token_provider`                                                                                                                                 | コールバック | ベアラー トークンをオンデマンドで返します ( `apiKey` と `bearerToken`よりも優先されます)                               |\n| `wireApi` / `wire_api`                                                                                                                                                          |        |                                                                                          |\n| `\"completions\"`                                                                                                                                                                 |        |                                                                                          |\n| \\|                                                                                                                                                                              |        |                                                                                          |\n| `\"responses\"`                                                                                                                                                                   |        |                                                                                          |\n| 広範なモデル互換性 (Chat Completions API) の `\"completions\"` を選択し、マルチターン状態管理、ツール名の指定、および推論のサポート (Responses API) の `\"responses\"` を選択します。 Anthropicモデルでは、この設定に関係なく、常に Messages API が使用されます。 |        |                                                                                          |\n| `azure.apiVersion` / `azure.api_version`                                                                                                                                        | 文字列    | Azure API バージョン。 設定すると、ランタイムはバージョン管理されたデプロイ ルートを使用します。省略すると、GA のバージョンレス `v1` ルートが使用されます。 |\n\n### Wire API フォーマット形式\n\n`wireApi`設定によって、使用する OpenAI API 形式が決まります。\n\n* **`\"completions\"`** (既定) - 広範なモデル互換性のためのチャット補完 API (`/chat/completions`)。\n* **`\"responses\"`** - 複数ターン状態管理、ツールの名前空間、推論機能のサポートのための応答 API。\n\nAnthropic モデルでは、この設定に関係なく、常に Anthropic Messages API が使用されます。\n\n### 型固有の注記\n\n**OpenAI (`type: \"openai\"`)**\n\n* OpenAI API と任意の OpenAI 互換エンドポイントで動作します\n* `baseUrl` は完全なパスを含める必要があります (例: `https://api.openai.com/v1`)\n\n**Azure (`type: \"azure\"`)**\n\n* ネイティブ Azure OpenAI エンドポイントに使用する\n* `baseUrl` はホスト (例: `https://my-resource.openai.azure.com`) である必要があります\n* URL に `/openai/v1` を含めないでください。SDK はパスの構築を処理します\n\n**アントロピック (`type: \"anthropic\"`)**\n\n* Anthropic API への直接アクセスの場合\n* Claude 固有の API 形式を使用します\n\n## 構成例\n\n### OpenAI Direct\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"https://api.openai.com/v1\",\n    apiKey: process.env.OPENAI_API_KEY,\n}\n```\n\n### Azure OpenAI (ネイティブ Azure エンドポイント)\n\n`type: \"azure\"`のエンドポイントに`*.openai.azure.com`を使用します。\n\n```typescript\nprovider: {\n    type: \"azure\",\n    baseUrl: \"https://my-resource.openai.azure.com\",  // Just the host\n    apiKey: process.env.AZURE_OPENAI_KEY,\n    azure: {\n        apiVersion: \"2024-10-21\",\n    },\n}\n```\n\n### Microsoft Foundry (OpenAI 互換エンドポイント)\n\n`/openai/v1/` エンドポイントを使用する Microsoft Foundry のデプロイでは、`type: \"openai\"` を使用します。\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"https://<resource-name>.openai.azure.com/openai/v1/\",\n    apiKey: process.env.FOUNDRY_API_KEY,\n    wireApi: \"responses\",  // For GPT-5 series models\n}\n```\n\n### Ollama (ローカル)\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"http://localhost:11434/v1\",\n    // No apiKey needed for local Ollama\n}\n```\n\n### マイクロソフト ファウンドリー ローカル\n\n[Microsoft Foundry Local](https://foundrylocal.ai) では、OpenAI 互換 API を使用して、独自のデバイスで AI モデルをローカルで実行できます。 Foundry Local CLI を使用してインストールし、ローカル エンドポイントで SDK をポイントします。\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"http://localhost:<PORT>/v1\",\n    // No apiKey needed for local Foundry Local\n}\n```\n\n> \\[!NOTE]\n> Foundry Local は **動的ポート**で開始されます。ポートは固定されていません。\n> `foundry service status`を使用して、サービスが現在リッスンしているポートを確認してから、`baseUrl`でそのポートを使用します。\n\nFoundry Local の使用を開始するには:\n\n```bash\n# Windows: Install Foundry Local CLI (requires winget)\nwinget install Microsoft.FoundryLocal\n\n# macOS / Linux: see https://foundrylocal.ai for installation instructions\n# List available models\nfoundry model list\n\n# Run a model (starts the local server automatically)\nfoundry model run phi-4-mini\n\n# Check the port the service is running on\nfoundry service status\n```\n\n### Anthropic\n\n```typescript\nprovider: {\n    type: \"anthropic\",\n    baseUrl: \"https://api.anthropic.com\",\n    apiKey: process.env.ANTHROPIC_API_KEY,\n}\n```\n\n### ベアラー トークン認証\n\n一部のプロバイダーでは、API キーではなくベアラー トークン認証が必要です。\n`bearerToken`で静的トークンを指定するか、GitHub Copilot SDK ランタイムが送信プロバイダー要求の前に呼び出す`bearerTokenProvider`コールバックを指定します。 ラップするコールバックまたは ID ライブラリは、トークンのキャッシュと更新を管理します。\n\nアプリケーションに既にトークンがある場合は、 `bearerToken` を使用します。\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"https://<resource-name>.openai.azure.com/openai/v1/\",\n    bearerToken: process.env.MY_BEARER_TOKEN,  // Sets Authorization header\n}\n```\n\n> \\[!NOTE]\n> `bearerToken` オプションは、**静的トークン文字列**のみを受け入れます。 SDK は、このトークンを自動的に更新しません。 トークンの有効期限が切れると、要求は失敗し、新しいトークンを使用して新しいセッションを作成する必要があります。\n\n`bearerTokenProvider`を使用して、必要に応じてトークンを取得します。\n\n<!-- docs-validate: skip -->\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"https://my-custom-endpoint.example.com/v1\",\n    bearerTokenProvider: async () => {\n        return await acquireBearerToken();\n    },\n}\n```\n\nMicrosoft Entra ベアラー トークンの取得と更新の詳細については、[BYOK を使用した Azure マネージド ID](/ja/copilot/how-tos/copilot-sdk/setup/azure-managed-identity) を参照してください。\n\n## カスタム モデルの一覧\n\nBYOK を使用する場合、CLI サーバーはプロバイダーがサポートするモデルを認識できない場合があります。\n`onListModels`がプロバイダーのモデルを標準の`client.listModels()`形式で返すように、クライアント レベルでカスタム `ModelInfo` ハンドラーを指定できます。 これにより、ダウンストリーム コンシューマーは CLI に対してクエリを実行することなく、使用可能なモデルを検出できます。\n\n<div class=\"ghd-codetabs\">\n<div class=\"ghd-codetab\" data-lang=\"typescript\" data-label=\"TypeScript\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">TypeScript</div>\n\n```typescript\nimport { CopilotClient } from \"@github/copilot-sdk\";\nimport type { ModelInfo } from \"@github/copilot-sdk\";\n\nconst client = new CopilotClient({\n    onListModels: () => [\n        {\n            id: \"my-custom-model\",\n            name: \"My Custom Model\",\n            capabilities: {\n                supports: { vision: false, reasoningEffort: false },\n                limits: { max_context_window_tokens: 128000 },\n            },\n        },\n    ],\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"python\" data-label=\"Python\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Python</div>\n\n```python\nfrom copilot import CopilotClient\nfrom copilot.client import ModelInfo, ModelCapabilities, ModelSupports, ModelLimits\n\nclient = CopilotClient(\n    on_list_models=lambda: [\n        ModelInfo(\n            id=\"my-custom-model\",\n            name=\"My Custom Model\",\n            capabilities=ModelCapabilities(\n                supports=ModelSupports(vision=False, reasoning_effort=False),\n                limits=ModelLimits(max_context_window_tokens=128000),\n            ),\n        )\n    ],\n)\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"go\" data-label=\"Go\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Go</div>\n\n```golang\npackage main\n\nimport (\n    \"context\"\n    copilot \"github.com/github/copilot-sdk/go\"\n)\n\nfunc main() {\n    client := copilot.NewClient(&copilot.ClientOptions{\n        OnListModels: func(ctx context.Context) ([]copilot.ModelInfo, error) {\n            return []copilot.ModelInfo{\n                {\n                    ID:   \"my-custom-model\",\n                    Name: \"My Custom Model\",\n                    Capabilities: copilot.ModelCapabilities{\n                        Supports: copilot.ModelSupports{Vision: false, ReasoningEffort: false},\n                        Limits:   copilot.ModelLimits{MaxContextWindowTokens: copilot.Int(128000)},\n                    },\n                },\n            }, nil\n        },\n    })\n    _ = client\n}\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"dotnet\" data-label=\".NET\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">.NET</div>\n\n```csharp\nusing GitHub.Copilot;\n\nvar client = new CopilotClient(new CopilotClientOptions\n{\n    OnListModels = (ct) => Task.FromResult<IList<ModelInfo>>(new List<ModelInfo>\n    {\n        new()\n        {\n            Id = \"my-custom-model\",\n            Name = \"My Custom Model\",\n            Capabilities = new ModelCapabilities\n            {\n                Supports = new ModelSupports { Vision = false, ReasoningEffort = false },\n                Limits = new ModelLimits { MaxContextWindowTokens = 128000 }\n            }\n        }\n    })\n});\n```\n\n</div>\n\n<div class=\"ghd-codetab\" data-lang=\"java\" data-label=\"Java\"><div class=\"ghd-codetab-fallback-label\" role=\"heading\" aria-level=\"3\">Java</div>\n\n```java\nimport com.github.copilot.CopilotClient;\nimport com.github.copilot.rpc.*;\nimport java.util.List;\nimport java.util.concurrent.CompletableFuture;\n\nvar client = new CopilotClient(new CopilotClientOptions()\n    .setOnListModels(() -> CompletableFuture.completedFuture(List.of(\n        new ModelInfo()\n            .setId(\"my-custom-model\")\n            .setName(\"My Custom Model\")\n            .setCapabilities(new ModelCapabilities()\n                .setSupports(new ModelSupports().setVision(false).setReasoningEffort(false))\n                .setLimits(new ModelLimits().setMaxContextWindowTokens(128000)))\n    )))\n);\n```\n\n</div>\n\n</div>\n\n既定の動作と同様に、最初の呼び出しの後に結果がキャッシュされます。 ハンドラーは CLI の `models.list` RPC を完全に置き換えます。サーバーへのフォールバックは発生しません。\n\n## 制限事項\n\n### 機能の制限\n\nBYOK では、一部のCopilot機能の動作が異なる場合があります。\n\n* **モデルの可用性** - プロバイダーでサポートされているモデルのみを使用できます\n* **Rate limiting** - Copilotではなく、プロバイダーのレート制限に従います\n* **Usage tracking** - 使用状況は、GitHub Copilotではなく、プロバイダーによって追跡されます\n* **プレミアム リクエスト** - Copilot のプレミアム リクエストのクォータにはカウントされません\n\n### プロバイダー固有の制限事項\n\n| Provider                                           | 制限事項                                                |\n| -------------------------------------------------- | --------------------------------------------------- |\n| [Microsoft Foundry Local](https://foundrylocal.ai) | ローカルのみ。モデルの可用性は、デバイスのハードウェアによって異なります。API キーは必要ありません |\n| Ollama                                             | API キーがありません。local のみ。モデルのサポートは異なります                |\n| OpenAI                                             | OpenAI のレート制限とクォータの対象                               |\n\n## Troubleshooting\n\n### \"モデルが指定されていません\" エラー\n\nBYOK を使用する場合は、 `model` パラメーターが **必要**です。\n\n```typescript\n// ❌ Error: Model required with custom provider\nconst session = await client.createSession({\n    provider: { type: \"openai\", baseUrl: \"...\" },\n});\n\n// ✅ Correct: Model specified\nconst session = await client.createSession({\n    model: \"gpt-4\",  // Required!\n    provider: { type: \"openai\", baseUrl: \"...\" },\n});\n```\n\n### Azure エンドポイントの種類の混乱\n\nAzure OpenAI エンドポイント (`*.openai.azure.com`)は、正しい種類を使用します。\n\n```typescript\n// ❌ Wrong: Using \"openai\" type with native Azure endpoint\nprovider: {\n    type: \"openai\",  // This won't work correctly\n    baseUrl: \"https://my-resource.openai.azure.com\",\n}\n\n// ✅ Correct: Using \"azure\" type\nprovider: {\n    type: \"azure\",\n    baseUrl: \"https://my-resource.openai.azure.com\",\n}\n```\n\nただし、Microsoft Foundry デプロイで OpenAI と互換性のあるエンドポイント パス (`/openai/v1/` など) が提供される場合は、次の`type: \"openai\"`を使用します。\n\n```typescript\n// ✅ Correct: OpenAI-compatible Microsoft Foundry endpoint\nprovider: {\n    type: \"openai\",\n    baseUrl: \"https://your-resource.openai.azure.com/openai/v1/\",\n}\n```\n\n### 接続が拒否されました (Ollama)\n\nOllama が実行され、アクセスできることを確認します。\n\n```bash\n# Check Ollama is running\ncurl http://localhost:11434/v1/models\n\n# Start Ollama if not running\nollama serve\n```\n\n### 接続が拒否されました (Foundry Local)\n\nFoundry Local は、再起動の間に変更される可能性がある動的ポートを使用します。 アクティブなポートを確認します。\n\n```bash\n# Check the service status and port\nfoundry service status\n```\n\n出力に表示されるポートと一致するように `baseUrl` を更新します。 サービスが実行されていない場合は、モデルを使って起動させます。\n\n```bash\nfoundry model run phi-4-mini\n```\n\n### 認証に失敗しました\n\n1. API キーが正しく、有効期限が切れていないかどうかを確認する\n2. `baseUrl`がプロバイダーの想定される形式と一致するかどうかを確認する\n3. ベアラー トークンの場合は、(プレフィックスだけでなく) 完全なトークンが提供されていることを確認します\n\n## 次のステップ\n\n* [認証](/ja/copilot/how-tos/copilot-sdk/auth) - すべての認証方法について説明します\n* [初めてのCopilot搭載アプリを構築する](/ja/copilot/how-tos/copilot-sdk/getting-started) - 初めてのCopilot搭載アプリを構築する"}