Login / Sign up
Discover Bonzai
Terms of Use
Legal notice
Privacy
Region
Language
matyo91
matyo91
14
Subscribers
Facebook
X
Whatsapp
Telegram
👉 You must follow matyo91 to access chat.
Feed Shop About

🚨 Darkwood IaExceptionBundle — Quand les erreurs commencent à s'expliquer d'elles-mêmes

Facebook
Twitter
Whatsapp
Telegram
3 months ago

Les erreurs ne sont pas le problème. Le silence, si.

Tous les développeurs back-end connaissent les erreurs HTTP 500. Elles surviennent. Elles sont inévitables. Et lorsqu'elles se produisent, le système réagit généralement comme il le fait depuis des décennies :

Crash. Journal. Passer à autre chose.

Et si une erreur pouvait faire plus que simplement échouer ? Et si elle pouvait s'expliquer d'elle-même ?

C’est ainsi qu’est né Darkwood IaExceptionBundle : un bundle Symfony qui enrichit les erreurs HTTP 500 avec des explications générées par l’IA, les causes probables et des suggestions de correction, le tout basé sur Symfony AI.

🧭 L'observation

Les frameworks modernes excellent dans les domaines suivants :

  • Levée d'exceptions précises

  • Production de traces de pile

  • Exportation des journaux vers des plateformes d'observabilité

Pourtant, la responsabilité de comprendre une erreur incombe toujours aux humains.

Le système sait :

  • quelle exception a été levée

  • où cela s'est produit

  • dans quelles conditions

Mais le silence persiste. Le développeur doit reconstituer le sens à partir de fragments.

🧠 Une idée simple

Au lieu de demander :

Comment corrigeons-nous les erreurs automatiquement ?

Nous avons demandé quelque chose de plus modeste :

Et si le système pouvait expliquer ce qui vient de se passer — en termes humains ?

Non pas pour remplacer les outils de débogage. Non pas pour réparer quoi que ce soit. Juste pour formuler des hypothèses plus rapidement.

⚙️ Pourquoi Symfony ?

Symfony est particulièrement bien placé pour ce type d'expérimentation :

  • un environnement d'exécution unique et bien défini

  • un point d'extension kernel.exception explicite

  • une culture de modules optionnels

  • et maintenant, un point d'intégration de premier ordre via Symfony AI

Il ne s'agit pas d'une fonctionnalité essentielle du framework, et cela ne devrait pas l'être. Son utilisation doit rester optionnelle, limitée et réversible.

🧩 Ce que le bundle fait (et ne fait pas)

✅ Ce que ça fait

En cas d'erreur HTTP 500, le bundle peut générer :

  • Une explication claire en anglais de l'exception

  • Les causes probables

  • Les solutions proposées / les prochaines étapes

  • Un score de confiance

  • Un identifiant d'erreur pour la corrélation

❌ Ce qu'il ne fait pas

  • Ce programme ne corrige pas les bogues.

  • Il ne remplace pas Sentry/les journaux.

  • Il ne garantit pas l'exactitude des résultats.

  • Il ne s'exécute pas s'il n'est pas activé.

C'est un assistant, pas une autorité.

🔐 La sécurité avant tout (non négociable)

Les erreurs peuvent contenir des informations sensibles. C'est pourquoi le package est conçu pour être sécurisé par défaut :

  • Il n'envoie jamais d'en-têtes, de cookies, de variables d'environnement ni de données de requête au modèle.

  • Les traces de pile sont exclues par défaut (option réservée aux développeurs).

  • En cas d'échec ou de délai d'attente de l'IA : la gestion des erreurs 500 par défaut de Symfony s'exécute normalement (compatibilité avec les défaillances).

  • Le statut de la réponse reste 500 ; seul le corps de la réponse est modifié.

📦 Installez-le et utilisez-le dans un projet Symfony existant

Exigences

  • PHP 8.2+

  • Symfony 6.4+ également compatible avec 7.x / 8.x

  • Plateforme et agent symfony/ai-bundle configurés

Installez le bundle

composer require darkwood/ia-exception-bundle

Enregistrez le bundle (si nécessaire)

Si Symfony Flex ne l'enregistre pas automatiquement, ajoutez-le à config/bundles.php :

return [ // ... Darkwood\IaExceptionBundle\DarkwoodIaExceptionBundle::class => ['all' => true], ];

Configurer Symfony AI

Exemple de configuration OpenAI :

# config/packages/ai.yaml
ai:
platform:
openai:
api_key: '%env(OPENAI_API_KEY)%'
agent:
default:
model: 'gpt-4o-mini'

Activer et configurer le bundle

# config/packages/darkwood_ia_exception.yaml darkwood_ia_exception:
enabled: true
only_status_codes: [500]
agent: 'ai.agent.default'
timeout_ms: 800
cache_ttl: 600
cache: 'cache.app'
include_trace: false

Appliquer correctement le délai d'expiration

Pour garantir le délai d'expiration au niveau HTTP, configurez un client HTTP à portée limitée pour votre plateforme d'IA :

# config/packages/ai.yaml
framework:
http_client:
scoped_clients:
ai.timeout_client:
base_uri: 'https://api.openai.com'
timeout: 0.8
ai:
platform:
openai:
api_key: '%env(OPENAI_API_KEY)%'
http_client: 'ai.timeout_client'

🧾 Formats de sortie

JSON (pour les API)

Si la requête inclut Accept: application/json, le bundle renvoie un JSON structuré comme suit :

{
"error_id": "a1b2c3d4e5f6g7h8",
"english_exception": "La connexion à la base de données a échoué ou une table requise est manquante.",
"probable_causes": ["..."],
"suggested_fixes": ["..."],
"confidence": 0.85
}

HTML (par défaut)

Sinon, il génère une page HTML affichant :

  • ID de l'erreur

  • Explication de l'IA

  • Causes et suggestions

  • Score de confiance

  • Classe/message d'exception d'origine

  • Avertissement : les résultats sont des hypothèses

🧠 Dernière réflexion

Nous avons passé des années à rendre nos systèmes plus résilients. Nous avons amélioré les journaux, les tableaux de bord et les alertes.

L'étape suivante est peut-être plus simple :

Améliorer la capacité des systèmes à s'expliquer.

Non pas pour remplacer les développeurs, mais pour les aider à penser plus vite, avec un meilleur contexte.

📖 Le code est Open Source

Ce bundle est aussi une expérimentation de l'intégration des erreurs générés par l'IA dans Symfony

Vous pouvez contribuer en vous rendant sur le dépot github Darkwood IaExceptionBundle

Follow matyo91 to comment
matyo91

matyo91

Je t'aide à automatiser tes process
14
Visit this Bonzai
Follow matyo91 to get the latest updates.

🎤 Sunday Labs #4 : ce que l’écosystème builder parisien cherche vraiment

2 days ago
6

🧩 Un agent IA aujourd’hui, c’est un stagiaire hypermotivé avec 400 onglets ouverts.

5 days ago
11

⬆️ Flowvox update : Symfony devient une plateforme d’agents vocaux temps réel

1 week ago
20

⚙️ NoLife Models - Vers une infrastructure locale des runtimes IA avec Symfony

2 weeks ago
20

💡 Devoxx France 2026 - L'Ère de l'Agentique au Cœur de Paris

2 weeks ago
49

💫 J’ai forcé 4 IA à recréer Mario de zéro avec Symfony AI et Godot

2 weeks ago
24

⚡️ Projection du film "Mon Extraordinaire"

3 weeks ago
33

✨ Le design transformatif : ne plus concevoir des usages, mais des métamorphoses

3 weeks ago
33

⚙️ Construire une architecture multi-agent gouvernée avec Symfony AI, Flow et Navi

4 weeks ago
66

🚀 Levée de fonds vs Bootstrap : deux chemins pour construire une boîte

4 weeks ago
37

🚀 J’ai reconstruit un LLM… avec des pixels.

1 month ago
36

🔊 DJ Matyo Live - Soundcloud set

1 month ago
36

🤖 Symfony AI in Action - Construire des systèmes IA réels avec Symfony

1 month ago
47

🐳 Agentic Workflows avec Docker - vers des systèmes autonomes, sécurisés et orchestrés

1 month ago
44

👨‍💻 Évaluation comparative de petits modèles de langage dans le monde réel

1 month ago
39

🚀 Sundays Lab #3 - Quand l’IA devient un terrain de jeu collectif

1 month ago
43

⚙️ Message-oriented vs Data-oriented orchestration - de la donnée à la connaissance

1 month ago
57

🤩 Relâcher les connecteurs - Des outils au langage

1 month ago
55

💡 J’ai créé une app IA RGPD en 1h avec Symfony

1 month ago
57

🗂️ Hellcats Over The Pacific - ouverture des archives

1 month ago
55
© 2026 Bonzai Privacy Legal notice Terms of Use