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 klasseProviderConfig heeft de volgende properties.
Basisgebruik
Wanneer je een custom provider gebruikt, is de parametermodel verplicht.
Ollama (lokale provider)
Voor lokale providers zoals Ollama is geenapiKey nodig.
Azure OpenAI
Let bij het gebruik van Azure OpenAI op de volgende punten.- Geef voor
typealtijdazureop (nietopenai) - Geef in
baseUrlalleen de host op (geen paden zoals/openai/v1)
Azure Managed Identity
GebruikbearerTokenProvider 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.
API-sleutelcommando
Gebruik je API-sleutels die worden geroteerd, dan kun je metapiKeyCommand 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.
apiKeyCommandmoetnullzijn of een string die niet leeg is. Bij een lege string of een string met alleen witruimte wordt er eenInvalidArgumentExceptiongegooid voordat de request wordt verstuurd. Ook een niet-string-waarde in de array-vorm leidt tot eenInvalidArgumentException. Geef je een niet-string-waarde door aan deProviderConfig-constructor, dan levert de typecontrole van PHP eenTypeErrorop. 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
bearerTokenProvideris opgegeven, heeft die voorrang en wordtapiKeyCommandniet 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.
apiKeyCommandis alleen beschikbaar inProviderConfig(niet ondersteund inNamedProviderConfig).
Belangrijke aandachtspunten
- Gebruik voor Azure-endpoints (
*.openai.azure.com) altijdtype: 'azure' - Geef in
baseUrlalleen de host op; de SDK bouwt het pad automatisch op
onListModels-handler
Als je een custom provider in BYOK-modus gebruikt, kun je instellen datclient->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.
null door om de handler te verwijderen en terug te keren naar het standaardgedrag van de CLI-server.
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.