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.
PropriétéTypeDescription
baseUrlstringRequis. URL de l’endpoint d’API
typestring|nullType de fournisseur. openai (par défaut), azure, anthropic
wireApistring|nullFormat d’API (openai/azure uniquement). completions (par défaut) ou responses
apiKeystring|nullClé d’API. Non nécessaire pour les fournisseurs locaux comme Ollama
bearerTokenstring|nullPour l’authentification par Bearer Token. Prioritaire sur apiKey
azurearray|nullOptions spécifiques à Azure, ex. ['apiVersion' => '2024-10-21']

Utilisation de base

Avec un fournisseur personnalisé, le paramètre model est obligatoire.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'gpt-4', // Requis avec un fournisseur personnalisé
        provider: new ProviderConfig(
            baseUrl: 'https://my-api.example.com/v1',
            apiKey: config('services.openai.key'),
        ),
    ),
);
Vous pouvez également spécifier ceci sous forme de tableau.
$response = Copilot::run(
    prompt: 'Hello!',
    config: [
        'model' => 'gpt-4',
        'provider' => [
            'baseUrl' => 'https://my-api.example.com/v1',
            'apiKey' => config('services.openai.key'),
        ],
    ],
);

Ollama (fournisseur local)

Avec les fournisseurs locaux comme Ollama, apiKey n’est pas nécessaire.
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'deepseek-coder-v2:16b',
        provider: new ProviderConfig(
            type: 'openai',
            baseUrl: 'http://localhost:11434/v1',
        ),
    ),
);

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)
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ProviderConfig;
use Revolution\Copilot\Types\SessionConfig;

$response = Copilot::run(
    prompt: 'Hello!',
    config: new SessionConfig(
        model: 'gpt-4',
        provider: new ProviderConfig(
            type: 'azure', // Toujours 'azure' pour un endpoint Azure
            baseUrl: 'https://my-resource.openai.azure.com', // Hôte uniquement
            apiKey: config('services.azure.openai_key'),
            azure: [
                'apiVersion' => '2024-10-21',
            ],
        ),
    ),
);

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().
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ModelInfo;

$models = Copilot::client()->listModelsUsing(function (): array {
    // Retourne les modèles disponibles chez le fournisseur personnalisé
    return [
        ['id' => 'my-model-1', 'name' => 'My Model 1', 'version' => '1.0'],
        ['id' => 'my-model-2', 'name' => 'My Model 2', 'version' => '2.0'],
    ];
})->listModels();
En passant null, vous retirez le gestionnaire et rétablissez le comportement par défaut (requête au serveur CLI).
// Retire le gestionnaire et revient au comportement par défaut (interroger le serveur CLI)
$models = Copilot::client()->listModelsUsing(null)->listModels();
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 13 juillet 2026