Oluwa.io
Tutti gli scritti
·7 min di letturametodologia prodotto iaapplicazioni llmvalutazioniingegneria

Dal prompt al prodotto: trasformare gli LLM in vere applicazioni

Una metodologia pratica per costruire applicazioni LLM: valutazioni, guardrail, budget di latenza e costo, human-in-the-loop e sapere cosa non automatizzare.

Di Vitor Lima

Un prompt che funziona in un playground è una demo, non un prodotto. Il divario tra i due è dove la maggior parte dei progetti di IA muore in silenzio. Costruire applicazioni LLM che sopravvivono a utenti reali ha meno a che fare con il prompting intelligente di quanto suggeriscano le demo, e molto di più con l'ordinaria disciplina del software. Ne abbiamo rilasciate abbastanza — Youp, MadaiOps e ora Linea — da avere opinioni su cosa colma davvero quel divario. Niente di tutto ciò è affascinante.

La trappola è che la prima versione sembra finita. Incolli un prompt intelligente, il modello restituisce qualcosa di impressionante ed è forte la tentazione di avvolgerlo in un'interfaccia e chiamarlo un lancio. Poi arrivano gli utenti reali con input che non avevi mai immaginato, il modello fa qualcosa di sbagliato con sicurezza, e scopri di non avere alcun modo per capire se la tua correzione ha migliorato o peggiorato le cose. Questo articolo parla dell'impalcatura che trasforma quella demo impressionante in qualcosa che puoi mandare in produzione dormendo la notte.

Parti dalle valutazioni, non dai prompt

La cosa a più alto impatto che puoi costruire presto è un set di valutazione. Non un benchmark, non una classifica — una cartella di input reali abbinati a come dovrebbe essere un buon output. Venti esempi battono zero, e cinquanta ben curati battono mille raccolti alla rinfusa.

Il motivo è semplice. Una volta che hai le valutazioni, il prompt engineering smette di essere una sensazione. Cambi una riga, esegui il set, guardi il numero muoversi. Senza di esse, ogni modifica è una superstizione. Abbiamo visto team passare una settimana a migliorare un prompt solo per regredire su casi che avevano risolto mesi prima, perché nulla misurava i casi che non stavano guardando.

Alcune opinioni che sosteniamo con fermezza:

  • Valuta sui risultati, non sulla formulazione. Per qualsiasi cosa strutturata — estrazione, classificazione, instradamento — verifica sul risultato analizzato, non sulla somiglianza tra stringhe. Per il testo aperto, un LLM-come-giudice con una rubrica rigorosa va bene, ma valida prima il giudice contro una manciata di etichette umane, altrimenti stai solo misurando il gusto di un modello.
  • Tieni un file di regressioni. Ogni fallimento in produzione diventa un caso di test permanente. È così che il tuo set di valutazione resta onesto — cresce esattamente nelle direzioni verso cui la realtà lo spinge.
  • Versiona le valutazioni insieme ai prompt. Un prompt senza il suo set di valutazione è una modifica di codice non testata.

Se costruisci una sola cosa da questo articolo, costruisci questa. Tutto ciò che viene dopo dipende dalla capacità di rispondere: quella modifica ha migliorato le cose?

I guardrail costano meno delle scuse

I modelli falliscono in modi in cui il software ordinario non fallisce. Inventeranno un'API che non esiste, concorderanno con la premessa falsa di un utente, o emetteranno un JSON dall'aspetto valido con un campo allucinato. I guardrail sono lo strato che intercetta tutto questo prima che raggiunga un utente o, peggio, un passo di esecuzione.

Pensa in tre posizioni.

  • I guardrail di input rifiutano o sanificano prima che il modello venga eseguito: screening delle prompt injection, redazione delle informazioni personali, filtro del fuori tema.
  • I guardrail di output validano ciò che torna indietro: validazione dello schema, controlli di fondatezza delle citazioni, filtri di policy.
  • I guardrail di azione stanno tra il modello e qualsiasi cosa abbia effetti collaterali.

Il terzo è dove risiede il rischio reale. In Linea, i nostri agenti di automazione dei flussi di lavoro, il modello può proporre azioni — chiamare un'API, spostare un record, inviare un messaggio. La proposta e l'esecuzione sono passi deliberatamente separati. Ogni azione rilevante passa attraverso un contratto tipizzato e un controllo di policy prima che qualcosa venga eseguito, e le azioni distruttive o irreversibili richiedono un cancello di conferma esplicito. Un agente che suggerisce la cosa sbagliata è un problema di UX su cui puoi iterare. Un agente che fa la cosa sbagliata è un incidente. Tieni queste due modalità di fallimento sui lati opposti di un confine netto.

La versione con un punto di vista: valida l'output strutturato contro uno schema e riprova in caso di fallimento, piuttosto che confidare che il modello sia coerente. E non lasciare mai che l'output grezzo di un modello sia ciò che innesca un'azione irreversibile. Metti sempre in mezzo un controllo deterministico.

Metti a budget latenza e costo come funzionalità

Latenza e costo non sono cose che misuri alla fine. Sono vincoli contro cui progetti fin dall'inizio, perché cambiano l'architettura, non solo il conto.

Stabilisci budget espliciti per ogni azione rivolta all'utente: un obiettivo di latenza p95 e un tetto di costo per chiamata. Una volta messi per iscritto, le decisioni di progettazione diventano più facili. Alcuni pattern a cui ricorriamo ripetutamente:

  • Dimensiona il modello giusto per ogni passo. La maggior parte delle pipeline ha uno o due passi che hanno genuinamente bisogno del modello di frontiera e diversi che uno più piccolo e veloce gestisce benissimo. Instradare una semplice classificazione a un modello economico e riservare quello costoso al passo di ragionamento difficile è l'ottimizzazione a più alto rendimento disponibile, e di solito migliora anche la latenza.
  • Trasmetti il primo token. Per qualsiasi cosa conversazionale, la latenza percepita è dominata dal tempo al primo token. Una risposta trasmessa che impiega quattro secondi sembra migliore di una bloccante che ne impiega due.
  • Metti in cache in modo aggressivo. Prompt caching sul contesto di sistema stabile, ordinario caching dei risultati sugli input ripetuti. Una frazione significativa del traffico di produzione è quasi duplicata.

Il compromesso da tenere a mente: i modelli più grandi riducono il tuo sforzo di ingegneria ma alzano per sempre il tuo costo marginale e la latenza. I modelli più economici spostano il lavoro su di te — più cura del prompt, più guardrail, più valutazioni — ma quel lavoro è un costo una tantum a fronte di un risparmio permanente. Per qualsiasi cosa con volume, investi nell'ingegneria.

Tieni gli umani nel ciclo, di proposito

"Human in the loop" si dice così spesso che ha smesso di significare qualcosa. Fatto bene, non è un ripiego per quando l'IA fallisce — è una divisione del lavoro progettata. La domanda non è se includere un umano, ma dove il giudizio dell'umano vale più della latenza che aggiunge.

Il pattern che ci ha servito meglio è l'escalation con soglia di confidenza. Il sistema gestisce automaticamente la maggioranza sicura e instrada la minoranza incerta a una persona, con il ragionamento del modello allegato, così l'umano decide in secondi, non minuti. In MadaiOps, le operazioni sugli ordini entro parametri normali scorrono; qualsiasi cosa anomala emerge verso un operatore con contesto, invece di essere eseguita in silenzio. Il revisore non fa da babysitter alla macchina. Sta spendendo la sua attenzione solo dove è scarsa e preziosa.

Un'altra regola: strumenta le correzioni dell'umano e reintroducile nel tuo set di valutazione e nei tuoi prompt. Un sistema human-in-the-loop che non impara dai suoi umani sta semplicemente pagando due volte per lo stesso lavoro.

Sappi cosa non automatizzare

Il giudizio più difficile in questa disciplina è la moderazione. Non ogni compito dovrebbe essere affidato a un modello, e la maturità sta nel sapere quali lasciare stare.

Il nostro test approssimativo: automatizza dove il costo di un errore è basso, o dove l'errore è facile da rilevare e reversibile. Redigere bozze, riassumere, estrarre, classificare, instradare — buoni candidati. Una bozza sbagliata viene corretta; un riassunto sbagliato viene colto alla lettura. Sii molto più cauto dove gli errori sono costosi, difficili da rilevare o irreversibili: qualsiasi cosa che muove denaro, invia una comunicazione irrevocabile, o prende una decisione legale o medica. Lì il modello appartiene a un ruolo assistenziale — far emergere opzioni, redigere bozze per revisione — non al posto di guida.

La linea che teniamo: se non riesci a descrivere come coglieresti il modello che sbaglia, non sei pronto ad automatizzare quel passo. La capacità di rilevare il fallimento è il vero prerequisito, più dell'accuratezza. Un passo accurato al 95% che puoi verificare completamente è più sicuro da rilasciare di uno accurato al 99% che non puoi verificare.

La forma del lavoro

Trasformare un prompt in un prodotto è per lo più la parte poco affascinante: valutazioni per poter misurare, guardrail perché i fallimenti restino contenuti, budget perché resti veloce ed economico, umani posizionati dove il giudizio conta, e la disciplina di lasciare alcune cose non automatizzate. Il modello è forse il venti percento del sistema. L'altro ottanta percento è l'ingegneria che rende la sua brillantezza occasionale sicura su cui contare.

La buona notizia è che questo è lavoro familiare. Premia gli stessi istinti che rendono buono qualsiasi tipo di software: misura prima di cambiare, contieni il tuo raggio d'esplosione, rispetta il tempo dei tuoi utenti. Il modello è nuovo. Il mestiere no.