Terminale con codice Python per l'ottimizzazione di prompt con SkillOpt di Microsoft

Implementazione pratica di Microsoft SkillOpt per l’ottimizzazione dei prompt

Microsoft SkillOpt è un framework per l’ottimizzazione automatica dei prompt (skill) tramite un ciclo evolutivo: rollout, riflessione, aggregazione, selezione, aggiornamento e convalida. In questa guida vediamo come configurarlo, eseguire una valutazione baseline e avviare il loop di ottimizzazione su un sottoinsieme del dataset SearchQA con un limite di 24 campioni per tenere i costi sotto controllo.

Setup dell’ambiente SkillOpt

Il primo passo è preparare l’ambiente in Colab. Serve una chiave API OpenAI valida (salvata come segreto OPENAI_API_KEY) e due modelli: uno per l’ottimizzatore (gpt-4o) e uno per il target (gpt-4o-mini).

Si clona il repository SkillOpt di Microsoft (depth 1, ramo principale) e si installano le dipendenze: il pacchetto stesso, OpenAI SDK e pandas/matplotlib per la visualizzazione. La configurazione Azure OpenAI viene forzata su api.openai.com/v1 in modalità openai_compatible.

Valutazione baseline della seed skill

Prima di qualsiasi ottimizzazione, valutiamo la skill iniziale. SkillOpt per SearchQA fornisce un file initial.md nella directory delle skill. Lo usiamo per un test sulla split di validazione valid_unseen, con lo stesso limite di 24 campioni. Questo ci dà il punto di partenza: una accuratezza (hard) che servirà da riferimento per misurare i miglioramenti.

Ciclo di training SkillOpt

Avviamo il training vero e proprio con scripts/train.py. Parametri chiave: 2 epoche, batch size 8, minibatch 4, learning rate iniziale 4 con scheduler cosine, slow update e meta skill attivi. Il ciclo esegue rollout, riflessione, aggregazione, selezione, aggiornamento e gating basato sulla validazione.

Al termine, il file history.json registra step, accuratezza (train e val), edit budget e token cumulativi. Il dashboard a tre pannelli mostra:

  • Accuratezza train e validazione, con la linea tratteggiata della baseline
  • Edit budget / LR (curva coseno)
  • Token cumulativi consumati

Il grafico conferma che SkillOpt migliora la skill oltre la baseline entro le prime iterazioni.

Evoluzione della skill: snapshot e diff

SkillOpt salva snapshot delle skill a ogni step (skill_v*.md) e il file best_skill.md finale. Con un diff unificato si vedono le modifiche introdotte dall’ottimizzatore. Si ispeziona anche il blocco SLOW_UPDATE protetto, che preserva il contesto della skill originale.

I file patch (testual gradient aggregato) e analisi (analisi grezza dello stadio Reflect) mostrano cosa l’ottimizzatore ha cambiato e perché. I nomi degli artifact slow_update e meta_skill confermano che entrambi i meccanismi sono stati applicati per epoca.

Confronto finale

L’ultimo passo è confrontare l’accuratezza della skill evoluta (best_skill) con la baseline iniziale. Il test mostra un miglioramento netto: l’ottimizzazione automatica ha prodotto una skill più performante, con un costo token gestibile (< 100k token per 24 campioni).

Articoli simili