{"meta":{"title":"Bring Your Own Key (BYOK)","intro":"BYOK ermöglicht es Ihnen, das Copilot SDK mit Ihren eigenen API-Schlüsseln von Modellanbietern zu verwenden, um GitHub Copilot Authentifizierung zu umgehen. Dies ist nützlich für Unternehmensbereitstellungen, benutzerdefiniertes Modellhosting oder wenn Sie eine direkte Abrechnung mit Ihrem Modellanbieter wünschen.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/enterprise-cloud@latest/copilot","title":"GitHub Copilot"},{"href":"/de/enterprise-cloud@latest/copilot/how-tos","title":"Vorgehensweisen"},{"href":"/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk","title":"Copilot SDK"},{"href":"/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth","title":"Authentication"},{"href":"/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth/byok","title":"BYOK"}],"documentType":"article"},"body":"# Bring Your Own Key (BYOK)\n\nBYOK ermöglicht es Ihnen, das Copilot SDK mit Ihren eigenen API-Schlüsseln von Modellanbietern zu verwenden, um GitHub Copilot Authentifizierung zu umgehen. Dies ist nützlich für Unternehmensbereitstellungen, benutzerdefiniertes Modellhosting oder wenn Sie eine direkte Abrechnung mit Ihrem Modellanbieter wünschen.\n\n<!-- markdownlint-disable GHD046 GHD005 -->\n\n<!-- Suppressed: GHD046 (outdated release terminology), GHD005 (hardcoded data variable) -->\n\n## Unterstützte Anbieter\n\n| Provider                            | Typwert                                                                                              | Hinweise                                                                     |\n| ----------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |\n| OpenAI                              | `\"openai\"`                                                                                           | OpenAI-API und openAI-kompatible Endpunkte                                   |\n| Microsoft Foundry / Azure OpenAI    |                                                                                                      |                                                                              |\n| `\"openai\"` oder `\"azure\"`           | Verwenden Sie `/openai/v1/` für `\"azure\"`; verwenden Sie `\"openai\"` für systemeigene Azure-Endpunkte |                                                                              |\n| Anthropic                           | `\"anthropic\"`                                                                                        | Claude Modelle                                                               |\n| Ollama                              | `\"openai\"`                                                                                           | Lokale Modelle mittels OpenAI-kompatibler API                                |\n| Microsoft Entwicklungszentrum Local | `\"openai\"`                                                                                           | Lokales Ausführen von KI-Modellen auf Ihrem Gerät über openAI-kompatible API |\n| Andere OpenAI-kompatible Produkte   | `\"openai\"`                                                                                           | vLLM, LiteLLM usw.                                                           |\n\n## Schnellstart: Microsoft Foundry\n\nMicrosoft Foundry ist ein gängiges BYOK-Bereitstellungsziel für Unternehmen. Hier ist ein vollständiges Beispiel:\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## Anbieterkonfigurationsreferenz\n\n### ProviderConfig-Felder\n\n| Feld                                                                                                                                                                                                                                                                                                                                                                     | Typ     | Description                                                                                                                                                                 |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `type`                                                                                                                                                                                                                                                                                                                                                                   |         |                                                                                                                                                                             |\n| `\"openai\"`                                                                                                                                                                                                                                                                                                                                                               |         |                                                                                                                                                                             |\n| \\|                                                                                                                                                                                                                                                                                                                                                                       |         |                                                                                                                                                                             |\n| `\"azure\"`                                                                                                                                                                                                                                                                                                                                                                |         |                                                                                                                                                                             |\n| \\|                                                                                                                                                                                                                                                                                                                                                                       |         |                                                                                                                                                                             |\n| `\"anthropic\"`                                                                                                                                                                                                                                                                                                                                                            |         |                                                                                                                                                                             |\n| Anbietertyp (Standard: `\"openai\"`)                                                                                                                                                                                                                                                                                                                                       |         |                                                                                                                                                                             |\n| `baseUrl` / `base_url`                                                                                                                                                                                                                                                                                                                                                   | string  |                                                                                                                                                                             |\n| **Erforderlich**. API-Endpunkt-URL                                                                                                                                                                                                                                                                                                                                       |         |                                                                                                                                                                             |\n| `apiKey` / `api_key`                                                                                                                                                                                                                                                                                                                                                     | string  | API-Schlüssel (optional für lokale Anbieter wie Ollama)                                                                                                                     |\n| `bearerToken` / `bearer_token`                                                                                                                                                                                                                                                                                                                                           | string  | Bearertokenauthentifizierung (hat Vorrang vor apiKey)                                                                                                                       |\n| `bearerTokenProvider` / `bearer_token_provider`                                                                                                                                                                                                                                                                                                                          | Rückruf | Gibt bei Bedarf ein Bearer-Token zurück (hat Vorrang vor `apiKey` und `bearerToken`)                                                                                        |\n| `wireApi` / `wire_api`                                                                                                                                                                                                                                                                                                                                                   |         |                                                                                                                                                                             |\n| `\"completions\"`                                                                                                                                                                                                                                                                                                                                                          |         |                                                                                                                                                                             |\n| \\|                                                                                                                                                                                                                                                                                                                                                                       |         |                                                                                                                                                                             |\n| `\"responses\"`                                                                                                                                                                                                                                                                                                                                                            |         |                                                                                                                                                                             |\n| Wählen Sie `\"completions\"` für umfassende Modellkompatibilität (die Chatvervollständigungs-API) aus. Wählen Sie `\"responses\"` für die Verwaltung des Unterhaltungsstatus über mehrere Dialogrunden hinweg, Toolnamensräume und Reasoning-Unterstützung (die Antworten-API) aus. Anthropic Modelle verwenden unabhängig von dieser Einstellung immer die Nachrichten-API. |         |                                                                                                                                                                             |\n| `azure.apiVersion` / `azure.api_version`                                                                                                                                                                                                                                                                                                                                 | string  | Azure-API-Version Wenn angegeben, verwendet die Laufzeit die versionierte Bereitstellungsroute; wenn sie nicht angegeben wird, verwendet sie die GA-versionlose Route `v1`. |\n\n### Draht-API-Format\n\nDie `wireApi` Einstellung bestimmt, welches OpenAI-API-Format verwendet werden soll:\n\n* **`\"completions\"`** (Standard) – API für Chat-Vervollständigungen (`/chat/completions`) für umfassende Modellkompatibilität.\n* ```\n            **              `\"responses\"`              ** – Antworten-API für die Verwaltung des Unterhaltungsstatus über mehrere Dialogrunden, Toolnamensräume und Reasoning-Unterstützung.\n  ```\n\nAnthropic Modelle verwenden unabhängig von dieser Einstellung immer die Anthropic Nachrichten-API.\n\n### Typspezifische Notizen\n\n**OpenAI (`type: \"openai\"`)**\n\n* Funktioniert mit der OpenAI-API und jedem openAI-kompatiblen Endpunkt\n* `baseUrl` sollte den vollständigen Pfad enthalten (z. B. `https://api.openai.com/v1`)\n\n**Azure (`type: \"azure\"`)**\n\n* Verwendung für systemeigene Azure OpenAI-Endpunkte\n* `baseUrl` sollte nur der Host sein (z. B. `https://my-resource.openai.azure.com`)\n* Fügen Sie `/openai/v1` NICHT in die URL ein – das SDK übernimmt die Pfaderstellung\n\n**Anthropic (`type: \"anthropic\"`)**\n\n* Für direkten Anthropic-API-Zugriff\n* Verwendet claudespezifisches API-Format\n\n## Beispielkonfigurationen\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 (nativer Azure-Endpunkt)\n\nVerwenden Sie `type: \"azure\"` für Endpunkte bei `*.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-kompatibler Endpunkt)\n\nVerwenden Sie für Microsoft Foundry-Bereitstellungen mit `type: \"openai\"`-Endpunkten `/openai/v1/`:\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 (lokal)\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 Entwicklungszentrum Local\n\nmit [Microsoft Foundry Local](https://foundrylocal.ai) können Sie KI-Modelle lokal auf Ihrem eigenen Gerät mit einer openAI-kompatiblen API ausführen. Installieren Sie es über das Foundry Local CLI und richten Sie das SDK dann auf Ihren lokalen Endpunkt aus.\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 startet auf einem **dynamischen Port** – der Port ist nicht behoben. Verwenden Sie `foundry service status`, um zu bestätigen, an welchem Port der Dienst derzeit lauscht, und verwenden Sie dann diesen Port in Ihrem `baseUrl`.\n\nErste Schritte mit 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### Bearertokenauthentifizierung\n\nEinige Anbieter erfordern die Bearertokenauthentifizierung anstelle von API-Schlüsseln. Geben Sie ein statisches Token mit `bearerToken` an oder geben Sie einen `bearerTokenProvider`-Callback an, den die GitHub Copilot SDK-Laufzeit vor ausgehenden Anfragen an den Anbieter aufruft. Die Callback-Funktion oder die Identitätsbibliothek, die sie kapselt, verwaltet das Zwischenspeichern und Aktualisieren von Token.\n\nVerwenden Sie diese Methode `bearerToken` , wenn Ihre Anwendung bereits über ein Token verfügt:\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> Die `bearerToken` Option akzeptiert nur eine **statische Tokenzeichenfolge** . Das SDK aktualisiert dieses Token nicht automatisch. Wenn Ihr Token abläuft, schlagen Anforderungen fehl, und Sie müssen eine neue Sitzung mit einem neuen Token erstellen.\n\nVerwenden Sie `bearerTokenProvider`, um Token bei Bedarf abzurufen:\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\nWeitere Informationen zum Anfordern und Aktualisieren von Microsoft Entra Bearer-Token finden Sie unter [Azure verwaltete Identität mit BYOK](/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/setup/azure-managed-identity).\n\n## Auflistung benutzerdefinierter Modelle\n\nBei Verwendung von BYOK weiß der CLI-Server möglicherweise nicht, welche Modelle Ihr Anbieter unterstützt. Sie können einen benutzerdefinierten `onListModels` Handler auf Clientebene bereitstellen, sodass die `client.listModels()` Modelle Ihres Anbieters im Standardformat `ModelInfo` zurückgegeben werden. Auf diese Weise können nachgeschaltete Verbraucher verfügbare Modelle ermitteln, ohne die CLI abfragen zu müssen.\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\nErgebnisse werden nach dem ersten Aufruf wie das Standardverhalten zwischengespeichert. Der Handler ersetzt das RPC der CLI `models.list` vollständig – es erfolgt kein Fallback auf den Server.\n\n## Einschränkungen\n\n### Featurebeschränkungen\n\nEinige Copilot Features verhalten sich mit BYOK möglicherweise anders:\n\n* **Modellverfügbarkeit** – Es sind nur Modelle verfügbar, die von Ihrem Anbieter unterstützt werden.\n* **Ratenbegrenzung** – Abhängig von den Ratenlimits Ihres Anbieters, nicht von denen von Copilot\n* **Nachverfolgung** – Die Nutzung wird von Ihrem Anbieter nachverfolgt, nicht GitHub Copilot\n* **Premiumanfragen** – werden nicht auf die Kontingente für Copilot-Premiumanfragen angerechnet\n\n### Anbieterspezifische Einschränkungen\n\n| Provider                                           | Einschränkungen                                                                                     |\n| -------------------------------------------------- | --------------------------------------------------------------------------------------------------- |\n| [Microsoft Foundry Local](https://foundrylocal.ai) | Nur lokal; Die Modellverfügbarkeit hängt von der Gerätehardware ab; kein API-Schlüssel erforderlich |\n| Ollama                                             | Kein API-Schlüssel; nur lokal; Modellunterstützung variiert                                         |\n| OpenAI                                             | Vorbehaltlich von OpenAI-Tariflimits und -quoten                                                    |\n\n## Troubleshooting\n\n### Fehler \"Modell nicht angegeben\"\n\nBei Verwendung von BYOK ist der `model` Parameter **erforderlich**:\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### Verwirrung beim Azure-Endpunkttyp\n\nVerwenden Sie für Azure OpenAI-Endpunkte (`*.openai.azure.com`) den richtigen Typ:\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\nWenn Ihre Microsoft Foundry-Bereitstellung jedoch einen OpenAI-kompatiblen Endpunktpfad bereitstellt (z. B. `/openai/v1/`), verwenden Sie `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### Verbindung verweigert (Ollama)\n\nStellen Sie sicher, dass Ollama ausgeführt wird und barrierefrei ist:\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### Verbindung verweigert (Foundry Local)\n\nFoundry Local verwendet einen dynamischen Port, der sich zwischen Neustarts ändern kann. Bestätigen Sie den aktiven Port:\n\n```bash\n# Check the service status and port\nfoundry service status\n```\n\nAktualisieren Sie Ihr `baseUrl`, damit es mit dem in der Ausgabe angezeigten Port übereinstimmt. Wenn der Dienst nicht ausgeführt wird, starten Sie ein Modell, um es zu starten:\n\n```bash\nfoundry model run phi-4-mini\n```\n\n### Fehler bei der Authentifizierung.\n\n1. Überprüfen, ob Der API-Schlüssel korrekt und nicht abgelaufen ist\n2. Überprüfen Sie, ob `baseUrl` dem von Ihrem Anbieter erwarteten Format entspricht.\n3. Stellen Sie für Bearertoken sicher, dass das vollständige Token bereitgestellt wird (nicht nur ein Präfix)\n\n## Nächste Schritte\n\n* [Authentication](/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/auth) – Erfahren Sie mehr über alle Authentifizierungsmethoden\n* [Erstellen Sie Ihre erste Copilot-gestützte App](/de/enterprise-cloud@latest/copilot/how-tos/copilot-sdk/getting-started) – Erstellen Ihrer ersten Copilot-basierten App"}