{"meta":{"title":"БЁК (принеси свой ключ)","intro":"BYOK позволяет использовать Copilot SDK с вашими собственными API-ключами от поставщиков моделей, обходя аутентификацию GitHub Copilot. Это полезно для корпоративных развертываний, хостинга кастомных моделей или когда вам нужен прямой биллинг с вашим поставщиком модели.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/how-tos","title":"Инструкции"},{"href":"/ru/copilot/how-tos/copilot-sdk","title":"Второй пилот SDK"},{"href":"/ru/copilot/how-tos/copilot-sdk/auth","title":"Проверка подлинности"},{"href":"/ru/copilot/how-tos/copilot-sdk/auth/byok","title":"BYOK"}],"documentType":"article"},"body":"# БЁК (принеси свой ключ)\n\nBYOK позволяет использовать Copilot SDK с вашими собственными API-ключами от поставщиков моделей, обходя аутентификацию GitHub Copilot. Это полезно для корпоративных развертываний, хостинга кастомных моделей или когда вам нужен прямой биллинг с вашим поставщиком модели.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Поддерживаемые поставщики\n\n| Provider                         | Значение типа                                                                                           | Notes                                                                            |\n| -------------------------------- | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |\n| OpenAI                           | `\"openai\"`                                                                                              | API OpenAI и совместимые с OpenAI конечные точки                                 |\n| Microsoft Foundry / Azure OpenAI |                                                                                                         |                                                                                  |\n| `\"openai\"` или `\"azure\"`         | Использование для `\"openai\"`; использование `/openai/v1/``\"azure\"` для собственных конечных точек Azure |                                                                                  |\n| Anthropic                        | `\"anthropic\"`                                                                                           | Модели Claude                                                                    |\n| Ollama                           | `\"openai\"`                                                                                              | Локальные модели через совместимый с OpenAI API                                  |\n| Microsoft Foundry Local          | `\"openai\"`                                                                                              | Запускайте модели ИИ локально на вашем устройстве через совместимый с OpenAI API |\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`                                                                                                                                                                                                                                                                                          | string         |                                                                                                                                                    |\n| **Обязательно**. URL конечной точки API                                                                                                                                                                                                                                                                         |                |                                                                                                                                                    |\n| `apiKey` / `api_key`                                                                                                                                                                                                                                                                                            | string         | Ключ API (опционально для местных провайдеров, таких как Ollama)                                                                                   |\n| `bearerToken` / `bearer_token`                                                                                                                                                                                                                                                                                  | string         | Аутентификация токена носителя (имеет приоритет над apiKey)                                                                                        |\n| `bearerTokenProvider` / `bearer_token_provider`                                                                                                                                                                                                                                                                 | обратный вызов | Возвращает маркер носителя по запросу (имеет приоритет над `apiKey` и `bearerToken`)                                                               |\n| `wireApi` / `wire_api`                                                                                                                                                                                                                                                                                          |                |                                                                                                                                                    |\n| `\"completions\"`                                                                                                                                                                                                                                                                                                 |                |                                                                                                                                                    |\n| \\|                                                                                                                                                                                                                                                                                                              |                |                                                                                                                                                    |\n| `\"responses\"`                                                                                                                                                                                                                                                                                                   |                |                                                                                                                                                    |\n| Выберите `\"completions\"` для широкой совместимости моделей (API Chat Completions); выберите `\"responses\"` для многоходного управления состоянием, промежуточного расположения имён инструментов и поддержки рассуждения (API Responses). Anthropic всегда используют API Messages независимо от этой настройки. |                |                                                                                                                                                    |\n| `azure.apiVersion` / `azure.api_version`                                                                                                                                                                                                                                                                        | string         | Azure версии API. При установке среда выполнения использует маршрут развертывания с версией; При опущении используется маршрут без `v1` версии GA. |\n\n### Формат API провода\n\nНастройка `wireApi` определяет, какой формат API OpenAI использовать:\n\n* **`\"completions\"`** (по умолчанию) — API завершения чата (`/chat/completions`) для широкой совместимости моделей.\n* **`\"responses\"`** - API Responses для многоходного управления состоянием, промежуточности имён инструментов и поддержки рассуждения.\n\nAnthropic всегда используют API Anthropic Messages независимо от этой настройки.\n\n### Заметки, специфичные для типа\n\n**OpenAI (`type: \"openai\"`)**\n\n* Работает с API OpenAI и любыми конечными точками, совместимыми с 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* НЕ включайте `/openai/v1` в URL — 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Для развертываний Microsoft Foundry с `/openai/v1/` конечными точками используйте`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### Оллама (местный)\n\n```typescript\nprovider: {\n    type: \"openai\",\n    baseUrl: \"http://localhost:11434/v1\",\n    // No apiKey needed for local Ollama\n}\n```\n\n### Microsoft Foundry Local\n\n[Microsoft Foundry Local](https://foundrylocal.ai) позволяет запускать модели ИИ локально на вашем устройстве с API, совместимым с OpenAI. Установите его через 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 начинается с **динамического порта** — порт не фиксирован. Используйте `foundry service status` для подтверждения порта, на котором сервис сейчас слушает, затем используйте этот порт в вашем `baseUrl`.\n\nЧтобы начать с Foundry 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. Укажите статический маркер или `bearerToken`предоставьте обратный `bearerTokenProvider` вызов, который среда выполнения пакета SDK GitHub Copilot вызывается перед запросами поставщика исходящих подключений. Обратная связь или библиотека удостоверений, которую она упаковывает, управляет кэшированием маркеров и обновлением.\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\nДополнительные сведения о получении и обновлении маркеров носителя Microsoft Entra см. в разделе [управляемое удостоверение Azure с помощью BYOK](/ru/copilot/how-tos/copilot-sdk/setup/azure-managed-identity).\n\n## Индивидуальный список моделей\n\nПри использовании BYOK CLI-сервер может не знать, какие модели поддерживает ваш провайдер. Вы можете предоставить индивидуальный `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Результаты кэшируются после первого вызова, как и по умолчанию. Обработчик полностью заменяет RPC CLI `models.list` — резервного перехода к серверу не происходит.\n\n## Ограничения\n\n### Ограничения функций\n\nНекоторые функции Copilot могут вести себя иначе с BYOK:\n\n* **Доступность моделей** — доступны только модели, поддерживаемые вашим провайдером\n* **Rate limiting** — Подчиняется тарифным лимитам вашего провайдера, а не Copilot\n* **отслеживание использования** - Использование отслеживается вашим провайдером, а не GitHub Copilot\n* **Запросы на премии** - Не учитываются в квотах Copilot премиум\n\n### Ограничения, специфичные для поставщика,\n\n| Provider                                           | Ограничения                                                                                             |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |\n| [Microsoft Foundry Local](https://foundrylocal.ai) | Только местные; Доступность модели зависит от аппаратного обеспечения устройства; API-ключ не требуется |\n| Ollama                                             | Нет ключа API; только местные; Поддержка моделей варьируется                                            |\n| OpenAI                                             | С учетом ограничений и квот OpenAI                                                                      |\n\n## Troubleshooting\n\n### Ошибка «Модель не указана»\n\nПри использовании BYOK `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\nДля Azure конечных точек 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### Соединение отказано (Оллама)\n\nУбедитесь, что Ollama работает и доступна:\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* [АВТОТИТРЫ](/ru/copilot/how-tos/copilot-sdk/auth) — Изучите обо всех методах аутентификации\n* [Создайте своё первое приложение на базе Copilot](/ru/copilot/how-tos/copilot-sdk/getting-started) — Создайте своё первое приложение на базе Copilot"}