La nostra pipeline di contenuti IA funziona con GPT-6 Sol — e genera meno immagini di prima
Aggiornato il 24 settembre 2026: questo post descriveva inizialmente la pipeline basata su GPT-5.6. Ora funziona con GPT-6 Sol, con le traduzioni affidate a GPT-6 Luna; i nomi dei modelli e il codice riportati di seguito riflettono questo aggiornamento.
Ora tutti i prompt di generazione dei contenuti nella pipeline di Green Yoga Inc utilizzano GPT-6 Sol. Per ogni file, questa modifica richiede una sola riga. La parte che vale la pena raccontare riguarda invece la generazione di immagini, che abbiamo rimosso del tutto dalla pipeline.
Dove viene effettivamente scelto il modello
I prompt si trovano in ai-prompts/ come file di testo semplice con un’intestazione, mai come stringhe letterali nel codice sorgente della Lambda. Oggi sono 23, oltre a un manifest JSON per le attività occasionali di generazione di immagini. Sedici riportano MODEL: gpt-6-sol.
Gli altri no, ed è una scelta intenzionale:
21-content-translation.txtusagpt-6-luna, il modello GPT-6 più piccolo. Traduce il sito in otto lingue ed è l’unico carico di lavoro in cui il volume conta più dell’ultimo incremento di qualità.- I tre file di prompt
gptimage-*che la Lambda legge ancora non hanno alcuna intestazioneMODEL:, perché la Lambda non li invia più a OpenAI. Approfondiamo più avanti. - Gli altri tre sono due frammenti di contesto inseriti in altri prompt e un prompt da immagine a video che utilizza un altro provider.
Entrambe le Lambda — ai-content-engine e yoga-script — determinano il modello indicato nell’intestazione tramite 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;
}
Qualsiasi ID legacy — da gpt-5 a gpt-5.6, incluso il vecchio gpt-image-1.5 — viene ricondotto a gpt-6-sol. Un file di prompt che nessuno tocca da sei mesi non può richiamare un modello ritirato: viene usato silenziosamente quello attuale. gpt-4o e gpt-4o-mini restano invariati, perché un percorso del codice ha ancora bisogno di gpt-4o per una ragione precisa.
Entrambe le Lambda usano Chat Completions
La generazione di testo passa da POST /v1/chat/completions in entrambe le Lambda. Se avete letto il nostro post di aprile, sapete che si tratta di un’inversione di rotta: avevamo adottato l’API Responses. Siamo tornati indietro. Chat Completions è un’interfaccia collaudata e ben nota per ciò che fanno davvero queste due funzioni: ricevono un prompt di sistema e un prompt dell’utente e restituiscono del testo.
Gli unici strumenti che invocano ancora POST /v1/responses sono script per sviluppatori avviati manualmente da una workstation. scripts/generate-pose-images.mjs usa lo strumento image_generation su gpt-6-sol a 1024x1024, mentre due script occasionali per la generazione di immagini fanno lo stesso a 1536x1024. Si tratta di processi batch locali, non di traffico del browser, e chiamano OpenAI direttamente per scelta.
Yoga Sequence Builder gestisce autonomamente i tempi
Yoga Sequence Builder genera copioni per l’insegnamento tramite la Lambda yoga-script, che utilizza 05-yoga-script-generator.txt con GPT-6 Sol. La generazione dei copioni è lenta e variabile, quindi la Lambda dedica la maggior parte della sua logica ai calcoli, non ai prompt:
- un singolo tentativo principale ha un limite di sette minuti, così una chiamata lenta non può consumare l’intera esecuzione
- alla fine vengono riservati 25 secondi per serializzare e restituire una risposta
- è disponibile un fallback su
gpt-4o, ma viene eseguito solo se restano almeno due minuti di margine
È quest’ultima regola a fare la differenza. Se il tentativo principale fallisce quando il tempo sta per scadere e non ne resta abbastanza, la Lambda si rifiuta di avviare il fallback e restituisce invece un errore esplicito — Skipping gpt-4o fallback: insufficient Lambda time remaining. Avviare una chiamata che non si può portare a termine trasforma un errore chiaro in un timeout, che è decisamente più difficile da analizzare.
Abbiamo smesso di generare immagini automaticamente
Questa è la vera novità rispetto ad aprile.
generateImage() in ai-content-engine ora è uno stub senza operazioni. Accetta gli argomenti, li ignora e restituisce l’immagine di copertina di fallback:
/** 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;
}
A sostituirlo non è un altro modello, ma una persona. generateOrReuseImage() salva il prompt per l’immagine in DynamoDB con una chiave S3 vuota e restituisce l’immagine di copertina di fallback; il prompt viene poi inviato a una persona nell’email di approvazione. Quando arriva la risposta con un’immagine allegata, una Lambda separata, media-receiver, inserisce l’asset definitivo.
Il prompt viene memorizzato in tre campi distinti — clipL, t5xxl e negative — invece che in un unico blocco, perché chi lo elabora in genere non usa OpenAI. Sono campi per prompt di modelli di diffusione e tenerli separati permette all’operatore di copiarli nelle caselle corrette senza dover scomporre una stringa concatenata.
Perché una pipeline più lenta è quella giusta
La generazione automatica delle copertine era la funzionalità che più facilmente avrebbe potuto pubblicare sul sito qualcosa di imbarazzante senza che nessuno lo vedesse prima. I testi passano già da un’email di approvazione. Le immagini no: venivano generate, caricate e pubblicate in un unico passaggio senza supervisione.
Rimuovere questa funzione ha rallentato la pubblicazione. Significa anche che ogni immagine presente sul sito è stata esaminata da una persona prima di essere pubblicata: era proprio questo il risultato che volevamo. Il modello è migliorato e gli abbiamo affidato meno attività senza supervisione. Le due cose non sono in contraddizione.
I prompt si trovano in ai-prompts/; le Lambda in lambda/ai-content-engine e lambda/yoga-script. Se desiderate aiuto per progettare un flusso di approvazione per la vostra pipeline di contenuti IA, contattateci.
