Trevia Lab
Assistant conversationnel et chaîne de contenu, conçus et exploités seul
- Rôle
- Conception, développement, exploitation
- Équipe
- Seul
- Depuis
- 2026
Trevia Lab fabrique des objets personnalisés par gravure laser, découpe laser et impression 3D. J'en assure la totalité de la partie technique et éditoriale, seul, en parallèle de mes missions.
Cette contrainte est intéressante : pas d'équipe pour reprendre derrière moi, pas de budget pour racheter une erreur d'architecture, et chaque ligne de code doit survivre à plusieurs mois sans que j'y retouche.
L'assistant conversationnel
Le site répond aux questions des visiteurs via un assistant que j'ai développé plutôt que d'installer une solution tierce, pour garder la main sur les réponses et sur les coûts.
Architecture. Un Worker Cloudflare en TypeScript sert d'intermédiaire entre le navigateur et l'API du modèle. La clé d'API ne quitte jamais le serveur. Le flux de réponse est normalisé côté Worker, ce qui rend le widget indépendant du fournisseur : basculer d'un modèle à l'autre ne demande aucune modification côté client.
Maîtrise des coûts. Le corpus envoyé à chaque conversation est mis en cache par le fournisseur, ce qui divise la facture par trois sur les échanges suivants. J'ai mesuré le coût réel par conversation avant de mettre en ligne, plutôt que de le découvrir sur la facture.
Garde-fous. Limitation par adresse IP et par jour, longueur maximale des messages et des conversations, liste d'origines autorisées, et surtout des codes d'erreur distincts selon la cause. Un plafond de dépense atteint et une panne du fournisseur produisent deux messages différents : sans ça, le diagnostic prend une heure au lieu d'une minute.
Dégradation contrôlée. Le corpus est servi en texte brut depuis le site. Si le fichier disparaît, le Worker bascule sur la page HTML équivalente, avec deux tests qui détectent le cas où le serveur renvoie une page d'erreur sous un statut de succès. Sans ces tests, l'assistant répondrait à partir d'une page d'erreur et personne ne s'en apercevrait avant la plainte d'un visiteur.
La chaîne de contenu
Le contenu de référence existe en trois formes générées depuis une source unique : la page publique, un fichier texte allégé pour les assistants, et un corpus condensé pour le chatbot.
Un script Python assure la génération, avec des contrôles qui interrompent la chaîne plutôt que de publier un fichier douteux : bornes de contenu introuvables, volume anormal, formulations interdites, marqueurs de gabarit non substitués. Le code de retour passe à 1 en cas d'alerte, ce qui le rend intégrable à une chaîne automatisée.
Le problème résolu n'est pas technique, il est humain. Trois fichiers décrivant la même chose divergent en quelques semaines. La génération depuis une source unique et un contrôle de cohérence automatique entre les versions empêchent cette dérive, qui s'était déjà produite avant leur mise en place.
Le reste
Performance et accessibilité. Résolution d'un conflit de bibliothèque où le thème écrasait une version chargée en amont, chargement conditionnel des animations, correction d'une erreur ARIA d'accordéon validée sur plusieurs versions du moteur d'audit, optimisation des images en WebP.
Données personnelles. Politique de confidentialité réécrite pour couvrir l'assistant : sous-traitants déclarés, absence de conservation des conversations, durée de rétention de l'adresse IP limitée à la fenêtre de limitation de débit.
Catalogue. Les prix et disponibilités sont lus depuis l'API du site, jamais recopiés. Un prix figé dans un fichier finit toujours par être faux.
Ce que le projet démontre
- TypeScript
- Worker en TypeScript strict, deux implémentations de fournisseur derrière une interface commune
- Edge computing
- Cloudflare Workers, limites de la plateforme identifiées et respectées, stockage clé-valeur et quotas
- Intégration de modèles de langage
- Flux en continu, mise en cache de prompt, normalisation multi-fournisseurs, ingénierie de prompt système avec batterie de tests
- Fiabilité en production
- Codes d’erreur distincts, dégradation contrôlée, plafonds de dépense, journalisation exploitable
- Automatisation
- Génération de contenu par script avec contrôles bloquants et code de retour
- Front-end
- Résolution de conflits de bibliothèques, chargement conditionnel, accessibilité, budget de performance
- Conformité
- RGPD appliqué à un service conversationnel, sous-traitants et durées de conservation