Notre pipeline de contenu IA fonctionne avec GPT-6 Sol — et génère moins d’images qu’avant
Mis à jour le 24 septembre 2026 : cet article décrivait initialement le pipeline avec GPT-5.6. Il fonctionne maintenant avec GPT-6 Sol, et la traduction avec GPT-6 Luna ; les noms de modèles et le code ci-dessous reflètent cette évolution.
Toutes les invites de génération de contenu du pipeline de Green Yoga Inc ciblent maintenant GPT-6 Sol. Cette partie se résume à une modification d’une ligne par fichier. Ce qui mérite qu’on s’y attarde, c’est ce qui est arrivé à la génération d’images, que nous avons entièrement retirée du pipeline.
Où le modèle est réellement sélectionné
Les invites se trouvent dans ai-prompts/, sous forme de fichiers texte brut avec un en-tête, jamais sous forme de littéraux de chaîne dans le code source de Lambda. Il y en a 23 aujourd’hui, auxquelles s’ajoute un manifeste JSON pour les lots ponctuels d’images. Seize comportent MODEL: gpt-6-sol.
Les autres ne le comportent pas, et c’est voulu :
21-content-translation.txtfonctionne avecgpt-6-luna, le modèle GPT-6 plus petit. Il traduit le site en huit langues, et c’est la seule charge de travail pour laquelle le volume compte davantage que le dernier gain de qualité.- Les trois fichiers d’invite
gptimage-*que Lambda lit encore ne comportent aucun en-têteMODEL:, car Lambda ne les envoie plus du tout à OpenAI. Nous y reviendrons plus bas. - Les trois autres sont deux fragments de contexte insérés dans d’autres invites et une invite de conversion d’image en vidéo qui cible un autre fournisseur.
Les deux Lambdas — ai-content-engine et yoga-script — déterminent le modèle indiqué dans l’en-tête par l’intermédiaire de normalizeModel() :
function normalizeModel(raw?: string): string {
if (!raw) return "gpt-6-sol";
// Legacy GPT-5.x ids -> current model
if (m === "gpt-5" || m === "gpt-5.1" || ... || m === "gpt-5.6" || m === "gpt-image-1.5") {
return "gpt-6-sol";
}
if (m === "gpt-4o" || m === "gpt4o") return "gpt-4o";
return m;
}
Tous les anciens identifiants — de gpt-5 à gpt-5.6, ainsi que l’ancien gpt-image-1.5 — sont remplacés par gpt-6-sol. Un fichier d’invite auquel personne n’a touché depuis six mois ne peut pas appeler un modèle retiré ; il passe silencieusement au modèle actuel. gpt-4o et gpt-4o-mini restent inchangés, car un chemin de code a toujours délibérément besoin de gpt-4o.
Les deux Lambdas utilisent Chat Completions
La génération de texte passe par POST /v1/chat/completions depuis les deux Lambdas. Si vous avez lu notre article d’avril, vous savez qu’il s’agit d’un revirement : nous avions adopté l’API Responses. Nous avons fait marche arrière. Chat Completions est l’interface simple et bien comprise qui convient aux tâches réelles de ces deux fonctions : prendre une invite système et une invite utilisateur, puis renvoyer du texte.
Les seuls éléments qui appellent encore POST /v1/responses sont des scripts de développement lancés manuellement depuis un poste de travail. scripts/generate-pose-images.mjs utilise l’outil image_generation sur gpt-6-sol en 1024x1024, et deux scripts ponctuels de génération d’images font de même en 1536x1024. Ce sont des tâches de traitement par lots locales, et non du trafic de navigateur ; elles appellent directement OpenAI, et c’est intentionnel.
Le Générateur de séquences de yoga gère son propre temps
Le Générateur de séquences de yoga génère des scripts d’enseignement par l’intermédiaire de la Lambda yoga-script, pilotée par 05-yoga-script-generator.txt avec GPT-6 Sol. La génération de scripts est lente et variable, si bien que la Lambda consacre l’essentiel de sa logique aux calculs plutôt qu’aux invites :
- une seule tentative principale est limitée à sept minutes, afin qu’un appel lent ne puisse pas monopoliser toute l’exécution
- 25 secondes sont réservées à la fin pour sérialiser et renvoyer une réponse
- une solution de repli avec
gpt-4oest prévue, mais elle ne s’exécute que s’il reste au moins deux minutes de marge
C’est cette dernière règle qui compte. Si la tentative principale échoue tardivement et qu’il ne reste pas assez de temps, la Lambda refuse de lancer la solution de repli et renvoie plutôt une erreur explicite — Skipping gpt-4o fallback: insufficient Lambda time remaining. Lancer un appel qu’on ne peut pas terminer ne fait que transformer une erreur claire en expiration du délai, ce qui est beaucoup plus difficile à déboguer.
Nous avons cessé de générer des images automatiquement
C’est le véritable changement depuis avril.
generateImage() dans ai-content-engine est maintenant une fonction vide sans effet. Elle reçoit ses arguments, les ignore et renvoie l’image de couverture de secours :
/** Kept as a no-op stub for callers that still reference it directly. */
async function generateImage(imagePrompt: string, s3Key: string): Promise<string> {
void imagePrompt;
void s3Key;
return FALLBACK_COVER_IMAGE;
}
Ce qui l’a remplacée n’est pas un autre modèle. C’est une personne. generateOrReuseImage() enregistre l’invite d’image dans DynamoDB avec une clé S3 vide, puis renvoie l’image de couverture de secours ; l’invite est transmise à une personne dans le courriel d’approbation. Lorsque la réponse arrive avec une image en pièce jointe, une Lambda media-receiver distincte ajoute le véritable fichier média.
L’invite est stockée dans trois champs distincts — clipL, t5xxl et negative — plutôt qu’en un seul bloc, car la personne qui la traite n’utilise généralement pas OpenAI. Ce sont des champs d’invite pour des modèles de diffusion ; les séparer permet à la personne responsable de copier chacun d’eux dans le bon champ, plutôt que de devoir démêler une chaîne concaténée.
Pourquoi un pipeline plus lent est le bon choix
La génération automatique des images de couverture était la fonctionnalité la plus susceptible de publier sur le site un résultat embarrassant sans que personne ne l’ait vu au préalable. Le texte passe déjà par un courriel d’approbation. Ce n’était pas le cas des images : elles étaient générées, téléversées et publiées en une seule étape sans supervision.
Cette suppression a effectivement ralenti la publication. Elle signifie aussi que chaque image de ce site a été examinée par une personne avant sa mise en ligne, ce que nous voulions réellement. Le modèle s’est amélioré, et nous lui avons confié moins de tâches sans supervision. Ces deux choses ne sont pas incompatibles.
Les invites se trouvent dans ai-prompts/ ; les Lambdas, dans lambda/ai-content-engine et lambda/yoga-script. Si vous souhaitez de l’aide pour concevoir un processus d’approbation pour votre propre pipeline de contenu IA, contactez-nous.
