L'interface ConfigProviderInterface permet d'obtenir et de surcharger dynamiquement la configuration runtime de l'IA (modèle, température, preset actif, etc.).
ArnaudMoncondhuy\SynapseCore\Contract\ConfigProviderInterface
interface ConfigProviderInterface
{
public function getConfig(): SynapseRuntimeConfig;
public function setOverride(?SynapseRuntimeConfig $config): void;
public function getConfigForPreset(SynapseModelPreset $preset): SynapseRuntimeConfig;
}
| Méthode | Rôle |
|---|---|
getConfig(): SynapseRuntimeConfig |
Retourne la configuration dynamique active sous forme typée. |
setOverride(?SynapseRuntimeConfig $config): void |
Configure un override temporaire en mémoire (réinitialisé après chaque échange). |
getConfigForPreset(SynapseModelPreset $preset): SynapseRuntimeConfig |
Retourne la configuration complète pour un preset Doctrine spécifique. |
!!! note "Objet typé, pas un tableau"
Contrairement à une configuration YAML statique, getConfig() retourne un objet SynapseRuntimeConfig qui encapsule tous les paramètres runtime : modèle, température, streaming, maxTurns, presetId, agentId, debugMode, etc.
Le Value Object SynapseRuntimeConfig contient les propriétés suivantes (principales) :
class SynapseRuntimeConfig
{
public ?string $model;
public ?string $provider;
public ?float $temperature;
public ?int $maxOutputTokens;
public bool $debugMode;
public ?int $presetId;
public ?int $agentId;
public ?int $maxTurns;
// ... et d'autres paramètres techniques
}
Le ChatService utilise setOverride() pour appliquer temporairement la configuration d'un preset ou d'un agent. L'override est toujours réinitialisé (null) à la fin de l'échange (même en cas d'exception) via un bloc finally.
// Exemple interne dans ChatService::ask()
$this->configProvider->setOverride($config);
// ... traitement ...
$this->configProvider->setOverride(null); // dans le bloc finally
!!! warning "Mode FrankenPHP Worker"
En mode worker (processus long), les services sont partagés entre requêtes. La réinitialisation de l'override dans finally est critique pour éviter qu'une config d'une requête ne contamine la suivante.
preset de ChatService::ask().ConfigProviderInterface pour chaque échangeHow can I help you explore Laravel packages today?