Passer au contenu principal

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 classe ProviderConfig expose les propriétés suivantes.

Utilisation de base

Avec un fournisseur personnalisé, le paramètre model est obligatoire.
Vous pouvez également spécifier ceci sous forme de tableau.

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.
  • type doit être azure (et non openai)
  • baseUrl ne doit contenir que l’hôte (n’incluez pas des chemins comme /openai/v1)

Azure Managed Identity

Utilisez bearerTokenProvider 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.
Gérez l’obtention, la mise en cache et le renouvellement du token dans votre callback.

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.
  • apiKeyCommand doit être null ou une chaîne non vide. Une chaîne vide ou composée uniquement d’espaces lève une InvalidArgumentException avant l’envoi de la requête. Une valeur autre qu’une chaîne fournie sous forme de tableau lève également une InvalidArgumentException. Passer une valeur autre qu’une chaîne au constructeur de ProviderConfig provoque une TypeError via 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 bearerTokenProvider est défini, il est prioritaire et apiKeyCommand n’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.
  • apiKeyCommand n’est disponible que sur ProviderConfig (non pris en charge par NamedProviderConfig).

Points importants

Avec un fournisseur personnalisé, le paramètre model est obligatoire. Son omission provoque une erreur.
  • Pour les endpoints Azure (*.openai.azure.com), utilisez toujours type: 'azure'
  • baseUrl ne 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 que client->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().
En passant null, vous retirez le gestionnaire et rétablissez le comportement par défaut (requête au serveur CLI).
Lorsque 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.
Dernière modification le 26 octobre 2026