Fournisseurs personnalisés
Les fournisseurs personnalisés (BYOK — Bring Your Own Key) permettent de se connecter à des endpoints d’API compatibles OpenAI avec votre propre clé d’API. Les fournisseurs locaux comme Ollama sont également pris en charge.ProviderConfig
La classeProviderConfig expose les propriétés suivantes.
Utilisation de base
Avec un fournisseur personnalisé, le paramètremodel est obligatoire.
Ollama (fournisseur local)
Avec les fournisseurs locaux comme Ollama,apiKey n’est pas nécessaire.
Azure OpenAI
Pour utiliser Azure OpenAI, tenez compte des points suivants.typedoit êtreazure(et nonopenai)baseUrlne doit contenir que l’hôte (n’incluez pas des chemins comme/openai/v1)
Azure Managed Identity
UtilisezbearerTokenProvider lorsque votre fournisseur utilise des tokens de courte durée, comme avec Azure Managed Identity. Le runtime appelle le callback à chaque requête vers le fournisseur. Le callback reçoit un tableau contenant providerName et sessionId, et doit renvoyer le Bearer Token sous forme de chaîne. L’exemple suivant appelle un service de tokens de votre application.
Commande de clé d’API
Si vous utilisez des clés d’API soumises à rotation,apiKeyCommand permet d’exécuter une commande avant chaque requête vers le fournisseur afin d’obtenir la clé la plus récente. La commande est exécutée par le runtime Copilot, et non par ce package.
apiKeyCommanddoit êtrenullou une chaîne non vide. Une chaîne vide ou composée uniquement d’espaces lève uneInvalidArgumentExceptionavant l’envoi de la requête. Une valeur autre qu’une chaîne fournie sous forme de tableau lève également uneInvalidArgumentException. Passer une valeur autre qu’une chaîne au constructeur deProviderConfigprovoque uneTypeErrorvia la vérification de types de PHP. Les messages d’exception ne contiennent pas la commande.- Un échec de la commande est traité par le runtime comme un échec du tour, et aucune requête n’est envoyée au modèle.
- Si
bearerTokenProviderest défini, il est prioritaire etapiKeyCommandn’est pas exécutée. - Traitez la chaîne de commande comme un identifiant sensible et ne l’écrivez ni dans les logs ni dans les messages d’exception. Ce package n’enregistre pas non plus la commande ni sa sortie dans les logs.
apiKeyCommandn’est disponible que surProviderConfig(non pris en charge parNamedProviderConfig).
Points importants
- Pour les endpoints Azure (
*.openai.azure.com), utilisez toujourstype: 'azure' baseUrlne contient que l’hôte ; le SDK construit automatiquement le chemin
Gestionnaire onListModels
En mode BYOK avec un fournisseur personnalisé, vous pouvez faire en sorte queclient->listModels() appelle un gestionnaire personnalisé plutôt que le serveur CLI.
Configurez cela via la méthode listModelsUsing(). Comme le client s’initialise facilement, appelez toujours listModelsUsing() avant listModels().
null, vous retirez le gestionnaire et rétablissez le comportement par défaut (requête au serveur CLI).
listModelsUsing() est configuré, listModels() n’a pas besoin de se connecter au serveur CLI et n’utilise pas de cache.
Pour les dernières informations, consultez le dépôt GitHub.