Work / ai

ContentForge AI

Un système agentique qui rédige dans votre voix, pas celle du modèle. Construit parce que tous les rédacteurs IA génériques produisent le même billet moyen.

LLMAgentsRAGStyle transfer
Role
Créateur & Ingénieur Principal
Date
2025-03-01
Read time
3 min read
Stack
5 techs

J'écris assez régulièrement. Des livres, des essais, la section notes de ce site. Ce qui me frustrait à chaque outil d'écriture IA commercial que j'essayais, c'était la même chose : le brouillon était techniquement correct, fluide, et clairement pas moi. Faites tourner n'importe lequel à grande échelle et vous produisez du contenu indistinguable. L'exact inverse de ce que les rédacteurs veulent vraiment.

ContentForge est ce que j'ai construit le jour où j'en ai eu marre de m'en plaindre.

Comment ça marche

Le système inverse le flux habituel « prompt-and-pray ». Avant de rédiger quoi que ce soit, il construit une empreinte de la voix du rédacteur à partir de son corpus existant. Diction, rythme de phrase, distribution de longueur de paragraphe, les métaphores qu'il convoque sous pression, l'endroit où il a tendance à couper une idée. Une partie relève de features statistiques classiques. Une autre est des règles extraites par LLM (« Abel n'utilise quasi jamais de point-virgule. Il utilise des fragments. Souvent. »). L'empreinte est juste un document structuré sous lequel l'agent rédacteur doit opérer.

Puis la boucle d'agent tourne : recherche, plan, rédaction, autocritique contre l'empreinte, révision. Si le brouillon dérive trop des métriques de voix, il est rejeté et la boucle repasse.

Ce qui m'a surpris

La plupart des agents n'ont pas besoin d'un vector DB. Arrêtez d'en mettre un dans le diagramme. ContentForge en a besoin, mais pour une raison précise : la récupération au niveau du paragraphe sur les textes passés du rédacteur, pour que l'agent puisse aller chercher des exemples stylistiques qui collent au sujet. C'est un vrai cas d'usage pour des embeddings. La plupart des architectures de chatbot ne le sont pas.

Le plus dur n'était pas la boucle d'agent. C'était la porte d'évaluation. Comment mesurer « ça sonne comme moi » ? J'ai testé plusieurs approches et j'ai atterri sur un hybride : un petit jeu de métriques objectives (longueur de phrase, recouvrement lexical avec le corpus, patterns syntaxiques) plus un jugement par modèle contre un échantillon retenu d'écrits réels. Aucune des deux ne suffisait. Ensemble c'est à peu près bon.

Ce qui reste imparfait

L'empreinte demande un corpus conséquent pour être utile. En dessous de 30 000 mots de matière, le système produit surtout une voix générique-mais-un-peu-plus-chaleureuse-que-le-défaut. À 100 000+ mots, ça commence à sonner vraiment juste.

Si je le reconstruisais aujourd'hui, je passerais plus de temps sur la porte d'évaluation. La boucle de rédaction va bien ; le goulot c'est de savoir si la sortie est bonne. C'est la leçon que je réapprends sur chaque projet IA.

Stack
LLMRAGPythonTypeScriptVector DB