> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Fournisseurs personnalisés

> Découvrez comment configurer les fournisseurs BYOK compatibles OpenAI, Ollama, Azure OpenAI, etc. avec Laravel Copilot SDK.

## 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é     | Type           | Description                                                                       |
| ------------- | -------------- | --------------------------------------------------------------------------------- |
| `baseUrl`     | `string`       | **Requis**. URL de l'endpoint d'API                                               |
| `type`        | `string\|null` | Type de fournisseur. `openai` (par défaut), `azure`, `anthropic`                  |
| `wireApi`     | `string\|null` | Format d'API (openai/azure uniquement). `completions` (par défaut) ou `responses` |
| `apiKey`      | `string\|null` | Clé d'API. Non nécessaire pour les fournisseurs locaux comme Ollama               |
| `bearerToken` | `string\|null` | Pour l'authentification par Bearer Token. Prioritaire sur `apiKey`                |
| `azure`       | `array\|null`  | Options spécifiques à Azure, ex. `['apiVersion' => '2024-10-21']`                 |

## Utilisation de base

Avec un fournisseur personnalisé, le paramètre `model` est **obligatoire**.

```php theme={null}
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.

```php theme={null}
$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.

```php theme={null}
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`)

```php theme={null}
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

<Warning>
  Avec un fournisseur personnalisé, le paramètre `model` est obligatoire. Son omission provoque une erreur.
</Warning>

* 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()`.

```php theme={null}
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).

```php theme={null}
// 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.

<Info>
  Pour les dernières informations, consultez le [dépôt GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Télémétrie](/fr/packages/laravel-copilot-sdk/telemetry.md)
- [Créer un fournisseur personnalisé pour l'AI SDK](/fr/advanced/ai-sdk-custom-provider.md)
- [Socialite for Discord](/fr/packages/socialite-discord.md)
- [Démarrer - GitHub Copilot SDK pour Laravel](/fr/packages/laravel-copilot-sdk/getting-started.md)
- [Authentification - GitHub Copilot SDK pour Laravel](/fr/packages/laravel-copilot-sdk/auth.md)
