Naar hoofdinhoud gaan

Custom providers

Met custom providers (BYOK - Bring Your Own Key) kun je met je eigen API-sleutel verbinding maken met OpenAI-compatibele API-endpoints. Lokale providers zoals Ollama worden ook ondersteund.

ProviderConfig

De klasse ProviderConfig heeft de volgende properties.

Basisgebruik

Wanneer je een custom provider gebruikt, is de parameter model verplicht.
Je kunt dit ook als array opgeven.

Ollama (lokale provider)

Voor lokale providers zoals Ollama is geen apiKey nodig.

Azure OpenAI

Let bij het gebruik van Azure OpenAI op de volgende punten.
  • Geef voor type altijd azure op (niet openai)
  • Geef in baseUrl alleen de host op (geen paden zoals /openai/v1)

Azure Managed Identity

Gebruik bearerTokenProvider als je provider kortlevende tokens gebruikt, zoals bij Azure Managed Identity. De runtime roept de callback aan bij elke providerrequest. De callback ontvangt een array met providerName en sessionId, en moet de bearer token als string retourneren. Het volgende voorbeeld roept een tokenservice in je applicatie aan.
Regel het ophalen, cachen en vernieuwen van tokens binnen je callback.

API-sleutelcommando

Gebruik je API-sleutels die worden geroteerd, dan kun je met apiKeyCommand vóór elke providerrequest een commando laten uitvoeren dat de actuele sleutel ophaalt. Het commando wordt uitgevoerd door de Copilot-runtime, niet door dit package.
  • apiKeyCommand moet null zijn of een string die niet leeg is. Bij een lege string of een string met alleen witruimte wordt er een InvalidArgumentException gegooid voordat de request wordt verstuurd. Ook een niet-string-waarde in de array-vorm leidt tot een InvalidArgumentException. Geef je een niet-string-waarde door aan de ProviderConfig-constructor, dan levert de typecontrole van PHP een TypeError op. De exceptionmelding bevat het commando niet.
  • Als het commando mislukt, behandelt de runtime dit als een mislukte beurt en wordt er geen request naar het model verstuurd.
  • Als bearerTokenProvider is opgegeven, heeft die voorrang en wordt apiKeyCommand niet uitgevoerd.
  • Behandel de commandostring net zo vertrouwelijk als inloggegevens en schrijf hem niet naar logs of exceptionmeldingen. Ook dit package logt het commando en de uitvoer ervan niet.
  • apiKeyCommand is alleen beschikbaar in ProviderConfig (niet ondersteund in NamedProviderConfig).

Belangrijke aandachtspunten

Bij gebruik van een custom provider is de parameter model verplicht. Zonder deze parameter krijg je een foutmelding.
  • Gebruik voor Azure-endpoints (*.openai.azure.com) altijd type: 'azure'
  • Geef in baseUrl alleen de host op; de SDK bouwt het pad automatisch op

onListModels-handler

Als je een custom provider in BYOK-modus gebruikt, kun je instellen dat client->listModels() een custom handler aanroept in plaats van de CLI-server. Dit configureer je met de methode listModelsUsing(). Omdat de client makkelijk al geïnitialiseerd raakt, moet je listModelsUsing() altijd vóór listModels() instellen.
Geef null door om de handler te verwijderen en terug te keren naar het standaardgedrag van de CLI-server.
Wanneer listModelsUsing() is ingesteld, heeft listModels() geen verbinding met de CLI-server nodig en wordt er ook geen cache gebruikt.
Raadpleeg de GitHub-repository voor de meest actuele informatie.
Laatst gewijzigd op 26 oktober 2026