Spesso il grande ostacolo nello sviluppo di applicazioni affidabili basate su modelli linguistici (LLM) è trovare gli input corretti. Anche piccole modifiche alla formulazione di un prompt possono causare cambiamenti dell'accuratezza fino al 20%. Cosa funziona con pochi esempio, spesso rompe con quantità elevate. Quando un pipeline multistep restituisce un risultato errato, identificare il passo fallito richiede di esaminare i dati intermedi a mano.
Cisco AI ha introdotto FAPO per affrontare questa sfida.
FAPO sta per Fully Automated Prompt Optimization. È un sistema guidato da Claude Code che ottimizza i flussi LLM da prompt iniziali verso un obiettivo di accuratezza precisa. L'utente fornisce un dataset e un prompt iniziale. FAPO valuta, classifica le fallite, propone varianti, le testa e itera. Il tutto funziona in autonomia grazie agli agenti Claude Code. Il progetto è disponibile open-source sotto licenza Apache 2.0 e supporta Codex come agente di ottimizzazione.
Nelle valutazioni presentate da Cisco, FAPO ha battuto GEPA, un ottimizzatore di prompt all'avanguardia, in 15 su 18 confronti benchmark-modello. Sui due benchmark dove FAPO ha avanzato modifiche strutturali, il miglioramento medio su GEPA è stato di +33.8pp.
FAPO è un sistema Claude Code-guided che ottimizza i flussi multistep dell'LLM da prompt iniziali verso un target d'accuratezza ben definito. È open source sotto Apache 2.0 e funziona autonomamente.
Il sistema evolve attraverso tre livelli: prompt, parametri, e struttura del flusso, utilizzando attribuzione fail-level per decidere cosa modificare successivamente.
Nelle valutazioni di Cisco, FAPO ha sconfitto GEPA in 15 confronti benchmark-modello su 18, con un guadagno medio di +14.1pp. Su HoVer e IFBench, dove ha avuto bisogno di modifiche strutturali, FAPO ha vinto tutti e 6 i confronti con un guadagno medio di +33.8pp; AIME era l'unico test dove GEPA ha guadagnato, entro l'intolérance statistica.
Guardrails contro il sovradattamento
Per evitare il rischio di overfitting, FAPO include protezioni come l'analisi del training-set solo, file immutabili per le varianti proposte, e un revisore indipendente per ogni proposta.
Qual è FAPO?
FAPO è un framework di valutazione e ottimizzazione per multi-utenti. Ogni utente ha un progetto ottimizzativo autonomo chiamato "tenant". Ogni directory tenant contiene i prompt dell'utente, un dataset, la definizione della struttura dell'esecuzione, il "scorer", e la configurazione. Questi progetti restano isolati, garantendo che task non correlati non interferiscano.
L'engine principale è chiamato Hephaestus e il suo design è indipendente dal dominio. Gestisce valutazioni, esecuzioni, e scoring. Le catene sono LangGraph, state graph che processano ciascun test case. Di default, FAPO supporta tre fornitori: OpenAI, Baseten, e SageMaker.
Un'ingresso fondamentale da fornire è un dataset fatto da input e output attesi che definiscano il successo. FAPO divide il set in validazione e test. Il set di validazione guida l'iterazione; il test set è usato solo per valutazione finale. Dalla descrizione del task, Claude può costruire il resto: prompt iniziale, struttura della catena e scorer.
Come funziona il ciclo di ottimizzazione
Una volta che i componenti sono stabiliti, FAPO attiva un loop chiuso finché non si raggiunge l'accuratezza target.
Ogni ciclo esegue sei fasi:
- Valuta – Esegui la catena sul dataset, raccogli punteggi per ogni caso e output per ogni passo.
- Attribuisci – Classifica le fallite in base alla causa con logiche regolari e analisi dell'LLM
- Proposte – Genera una variante per affrontare cluster dominanti di fallimento
- Revisi – Un agente indipendente convalida la proposta per rispettro del livello e per assenza di leak
- Confronta – Accetta la variante solo se migliora la precedente, altrimenti la rifiuti
- Itera – Continua finché non viene raggiunta l'accuratezza target o il budget di ottimizzazione è esaurito
Il sistema funziona in tre fasi crescenti. Le modifiche ai prompt sono a bassissimo costo e vengono tentate per prime. Le modifiche ai parametri regolano valori di configurazione come retrieval_k o temperature. Le modifiche strutturali alterano la topologia della catena, come l'aggiunta di nodo di auto-riflessione o la conversione verso un modello ReAct. FAPO esplora completamente un livello prima di passare al successivo.
Analisi degli errori
L'attribuzione step-wise ordina i fallimenti in quattro categorie:
- Gli errori di recupero restituiscono risultati vuoti o irrilevanti.
- I fallimenti in cascata iniziano quando un passo inizialmente restituisce un dato vuoto.
- Gli errori di formattazione nascondono la risposta corretta in testi che lo scorer non può interpretare.
- I fallimenti logici avvengono quando buone informazioni ancora producono conclusioni errate.
Gli errori di formattazione e logica sono affrontabili tramite modifiche ai prompt. Gli errori di recupero e fallimenti progressivi sono modificabili strutturalmente.
Caso Benchmark: FAPO vs. GEPA
Il team Cisco ha confrontato FAPO con GEPA (Generalized Evolutionary Prompt Architecture), un sistema avanzato per ottimizzare i prompt. GEPA utilizza ricerca evolutiva con genetica per perfezionare i prompt in pipeline multiple. I due sistemi hanno iniziato con lo stesso setup base e i medesimi prompt. FAPO poteva avanzare modifiche strutturali quando l'analisi di fallimenti rivelava collo di bottiglia. GEPA era limitato all'ottimizzazione a livello di prompt.
Il confronto è avvenuto su sei benchmark e tre modelli: GPT-4.1-mini, GPT-5.4-mini, e Gemma 3-12B. Claude Opus 4.6 ha guidato sia FAPO che GEPA.
Di seguito i puntaggi medi, calcolati sulle tre versioni dei modelli:
| Benchmark | Baseline | ← Retour aux actualités
|---|