L'idea centrale di questo articolo è utilizzare GEPA (Generative Prompt Evolution) come framework per migliorare la capacità di un modello linguistico di risolvere correttamente problemi matematici a più passaggi, mantenendo al contempo precisione e struttura formattata nel risultato finale. GEPA si basa su un processo evolutivo in cui un modello di rispecchiamento analizza le prestazioni di un prompt candidato, fornisce feedback chiaro e suggerisce modifiche mirate in base agli errori riscontrati.

Installare GEPA e LiteLLM e Configurare i Modelli

Innanzitutto, vengono installati i pacchetti necessari per eseguire GEPA e il framework di chiamata al modello (LiteLLM). Vieni chiesto di fornire una chiave API per OpenAI, poiché il modello utilizzato si basa sui servizi OpenAI. Viene impostato un modello per compito e uno per la riflessione.

La stringa di codice principale include:

    • !pip install -q gepa litellm per installare i pacchetti necessari
    • Import delle librerie utili, tra cui librerie di ottimizzazione e gestione testi
    • Impostazioni di API Key sicure per il modello OpenAI
    • Impostazione di due modelli: openai/gpt-4o-mini per compiti di risoluzione e openai/gpt-4.1 per la riflessione e ottimizzazione del prompt

Inoltre, viene definito un "budget di budget" MAXMETRICCALLS di 100 chiamate per mantenere il controllo sull'ottimizzazione.

Creare un Dataset Deterministico di Problemi Matematici

Viene generato un piccolo dataset di problemi matematici a cui vengono attribuite risposte precisi in base a regole algoritmiche. Questo dataset include quattro categorie di problemi:

    • Problemi incentrati su sconti
    • Problemi incentrati su distanze di viaggio
    • Problemi di conto in portafoglio
    • Calcoli concatenati

I problemi vengono generati in modo programmato per mantenere la benchmark attendibile ed evitare ambiguità. Vengono shuffle le esemplari e divisi in due insiemi: un insieme di training per l'ottimizzazione e un insieme di validation per il test.

Creare l'Evaluator e Offrire Feedback Strutturato

La valutazione dei candidati si basa su una serie di funzioni che:

    • Creano un prompt completo con istruzioni e format_rules
    • Chiamano il modello per rispondere al problema dato al momento
    • Estraggono la risposta finale e verificano sia formattata correttamente

Vengono calcolati e restituiti due valori:

    • Un punteggio (1.0 per risposta corretta e formattata; 0.5 se la risposta è corretta ma mal formattata; 0 per risposta errata o non riconosciuta)
    • Informazioni dettagliate in forma di oggetto JSON, utili per fornire feedback chiaro a GEPA

Configurazione di GEPA e Avvio dell'Ottimizzazione

Veneziano impostati i parametri necessari per avviare l'ottimizzazione del prompt. La funzione eval_set calcola le metriche chiave (media punteggio e numero di risposte esatte).

    • Il prompt di baseline è {"instructions": "Solve the math problem.", "format_rules": "Give the answer."}
    • Lo script confronta prima il baseline sul set di training e di validation
    • Gli obiettivi dell'ottimizzazione con GEPA sono:
    • Migliorare la precisione nella risoluzione del problema
    • Mantenere una formattazione precisa (la risposta deve terminare con ####)

Dopo l'ottimizzazione, vengono confrontati i risultati del prompt iniziale e ottimizzato sul set di validation escluso.

Risultati Finale

Dopo l'ottimizzazione del prompt, viene rimosso il prompt iniziale e vengono eseguiti nuovi test sul dataset "validation set". L'efficacia dell'evoluzione del prompt viene esaminata in termini di miglioramenti nella struttura del pensiero e nella correttezza delle risposte.

Conclusioni

Questo articolo illustra in dettaglio un framework efficace per l'ottimizzazione dei prompty utilizzando il modello evolutivo GEPA. L'uso di un modello di riflessione permette di fornire feedback mirato e miglioramenti iterativi. Alla fine, l'evoluzione del prompt con GEPA migliora non solo la precisione matematica, ma anche la struttura formale richiesta per la risposta.