Toute la configuration du bundle se fait dans le fichier config/packages/synapse.yaml.
persistence)Permet d'enregistrer les conversations et messages en base de données.
| Option | Type | Défaut | Description |
|---|---|---|---|
conversation_class |
string | null |
FQCN de votre entité Conversation (ex: App\Entity\Conversation). |
message_class |
string | null |
FQCN de votre entité Message. |
La persistance est automatiquement activée dès que
conversation_classetmessage_classsont définis.
security)Gère les accès à l'administration et au chat.
| Option | Type | Défaut | Description |
|---|---|---|---|
admin_role |
string | ROLE_ADMIN |
Le rôle requis pour accéder à l'administration (défaut: /synapse/admin). |
chat_role |
string | ROLE_USER |
Le rôle requis pour le chat (défaut: /synapse/chat). PUBLIC_ACCESS pour désactiver. |
api_csrf_enabled |
bool | true |
Active la vérification CSRF sur les endpoints /synapse/api/*. |
mcp_trusted |
bool | false |
Considère les requêtes sur /_mcp comme trusted (bypass du check admin). Nécessaire pour les clients MCP sans session HTTP. La sécurité devient alors une responsabilité réseau. |
routing)Permet de personnaliser les préfixes d'URL du bundle.
| Option | Type | Défaut | Description |
|---|---|---|---|
admin_prefix |
string | /synapse/admin |
Préfixe pour toutes les routes d'administration. |
chat_ui_prefix |
string | /synapse/chat |
Préfixe pour l'interface de chat principale. |
chat_api_prefix |
string | /synapse/api |
Préfixe pour les endpoints API (chat complet, CSRF, etc.). |
token_tracking)Synapse permet de suivre l'usage et de brider la consommation.
| Option | Type | Défaut | Description |
|---|---|---|---|
enabled |
bool | false |
Active l'enregistrement des tokens et des coûts en base. |
reference_currency |
string | EUR |
Devise de référence pour les plafonds et agrégats. |
currency_rates |
array | {} |
Taux de conversion (ex: { USD: 0.92, GBP: 1.17 }). |
sliding_day_hours |
int | 4 |
Durée (en heures) de la fenêtre glissante pour les quotas journaliers (1–8760). |
synapse:
token_tracking:
enabled: true
reference_currency: EUR
currency_rates:
USD: 0.92
GBP: 1.17
sliding_day_hours: 4
Le bundle implémente une protection CSRF automatique sur tous ses formulaires et endpoints d'API (POST/PUT/DELETE) si le composant symfony/security-csrf est installé et activé dans votre application.
synapse_api. Le template du chat fournit déjà une meta et le composant un data-csrf-token ; le front envoie le header X-CSRF-Token.synapse_admin. Dans le layout : <meta name="csrf-token" content="{{ csrf_token('synapse_admin') }}">.En AJAX, envoyez le header X-CSRF-Token (ou le champ _csrf_token dans le body).
Le bundle gère le CSRF sans configuration : le front récupère le jeton via l'API si le data-csrf-token est absent (page surchargée, cache). Aucune action requise normalement.
En dernier recours (403 persistant) : désactiver la vérification CSRF sur l’API dans config/packages/synapse.yaml :
synapse:
security:
api_csrf_enabled: false
Puis php bin/console cache:clear. L’API reste protégée par la session / le firewall.
encryption)Le chiffrement est obligatoire. La clé de 32 bytes est utilisée pour chiffrer les credentials des providers LLM stockés en base de données.
synapse:
encryption:
key: '%env(SYNAPSE_ENCRYPTION_KEY)%'
Générez votre clé avec :
php -r "echo base64_encode(random_bytes(32));"
Puis ajoutez-la dans .env.local (ne jamais commiter cette valeur) :
SYNAPSE_ENCRYPTION_KEY=base64_de_votre_clé
!!! warning "Clé obligatoire"
La configuration encryption.key est requise et ne peut pas être vide. Utilisez toujours %env(SYNAPSE_ENCRYPTION_KEY)% — jamais la clé en clair dans un fichier YAML commité.
La durée de rétention est configurable depuis l'interface d'administration (Paramètres → Rétention RGPD). Elle définit le nombre de jours avant que les conversations soient purgées par synapse:purge. Ce n'est pas une option YAML.
vector_store)Permet de choisir l'implémentation de stockage pour le RAG.
| Option | Type | Défaut | Description |
|---|---|---|---|
default |
string | null |
L'implémentation à utiliser : null, in_memory, doctrine ou un service ID personnalisé. |
[!TIP] L'option
doctrinedétecte automatiquement la présence de l'extensionpgvectorsur PostgreSQL pour des performances optimales.
Ces paramètres sont gérés globalement dans l'interface d'administration Synapse (onglet Embeddings). Ils définissent comment les documents sont découpés avant d'être envoyés à l'IA.
Taille des segments : Taille maximale d'un chunk (ex: 1000 caractères).
Chevauchement (Overlap) : Nombre de caractères partagés entre deux segments pour garder le contexte.
Stratégie : Recursive (recommandé pour la qualité sémantique) ou Fixed.
Stratégie : Recursive (recommandé pour la qualité sémantique) ou Fixed.
Synapse utilise le composant Translation de Symfony pour gérer le multilingue.
synapse_core : Promps système (date, instructions), messages d'erreur de mémoire.synapse_admin : Toute l'interface d'administration.synapse_chat : Composants Twig du chat, boutons, placeholders.Pour modifier un texte par défaut, créez un fichier YAML dans votre projet :
translations/synapse_chat.fr.yaml (ou .en.yaml).
synapse.chat.input_area.placeholder: "Votre message ici..."
La langue est pilotée par le paramètre synapse.context.language (configurable par preset ou mission) et s'appuie sur la locale Symfony de la requête.
Voici les variables recommandées à définir dans votre .env :
# Clé de chiffrement (32 bytes)
SYNAPSE_ENCRYPTION_KEY=...
# Rôle admin custom
SYNAPSE_ADMIN_ROLE=ROLE_SUPER_ADMIN
Vous pouvez voir la configuration finale résolue par Symfony avec la commande :
php bin/console config:dump synapse
How can I help you explore Laravel packages today?