Potato 2.6: l'analisi dei dati qualitativi incontra la valutazione degli agenti
Potato 2.6 è disponibile: Modalità QDA per la codifica qualitativa, un flusso di calibrazione e allineamento di LLM-as-judge, la modifica delle traiettorie che produce dati di addestramento SFT e DPO, un avvio 3 volte più rapido e una nuova licenza GPL-3.0-or-later.
Potato 2.6 è disponibile. È una versione con due centri di gravità. Da un lato porta Potato nell'analisi dei dati qualitativi, il mondo delle trascrizioni di interviste, dei libri di codici e dei memo che è vissuto dentro strumenti desktop proprietari. Dall'altro approfondisce il toolkit di valutazione degli agenti verso la produzione di dati di addestramento, non solo di punteggi. E sotto entrambi gli aspetti diventa sensibilmente più rapida e cambia licenza.
Se hai seguito il blog, gli articoli delle ultime settimane hanno anticipato queste funzionalità una alla volta. Questa è la versione che le rilascia davvero.
Potato 2.6
Una nota in apertura: Potato ora è GPL-3.0
Potato passa a una nuova licenza GPL-3.0-or-later, al posto di PolyForm Shield. È il tipo di cambiamento facile da relegare in fondo, e non dovrebbe esserlo, perché modifica ciò che ti è permesso fare con il progetto.
Con GPL-3.0-or-later puoi usare, modificare e ridistribuire Potato, anche a fini commerciali, purché le opere derivate restino sotto GPL. La vecchia licenza PolyForm Shield includeva una clausola di non concorrenza che faceva esitare alcuni adottanti (e i loro uffici legali). GPL è una licenza che quei team conoscono già. Se una questione di licenza frenava il tuo laboratorio o la tua azienda, quella questione ora ha una risposta familiare. Per i dettagli vedi la pagina About.
Modalità QDA
Per chi fa ricerca qualitativa il punto di forza è la Modalità QDA: un unico interruttore che trasforma Potato in uno spazio di lavoro collaborativo per la codifica qualitativa.
qda_mode:
enabled: true # codebook + memos + cases + search
codebook_invivo_key: i # mint a code from a text selectionAbilitarla compone un libro di codici vivo, la codifica in-vivo, i memo dell'analista, i casi e la ricerca full-text, con impostazioni predefinite calibrate su un singolo analista che codifica un intero corpus. Puoi far crescere e riorganizzare il libro di codici mentre leggi, creare un codice direttamente da un passaggio evidenziato con un tasto, allegare memo privati o condivisi a qualsiasi estratto, raggruppare gli estratti in casi per partecipante ed eseguire la ricerca FTS5 su tutto il corpus. È un'alternativa gratuita, open source e basata sul web a NVivo, ATLAS.ti, MAXQDA e Dedoose, che risiede nello stesso strumento del resto del tuo lavoro di annotazione.
Abbiamo descritto il design in Portare la codifica qualitativa in Potato. Riferimento completo: documentazione della Modalità QDA.
LLM-as-judge: calibrazione, allineamento e triage
Usare un LLM per valutare gli output dei modelli è ormai consuetudine. Sapere fino a che punto fidarsene è la parte che 2.6 affronta, con tre funzionalità che lavorano insieme.
Judge Calibration etichetta automaticamente i tuoi dati con uno o più giudici LLM, campiona ciascun elemento k volte per ottenere una confidenza empirica, poi esegue un passaggio umano alla cieca (gli annotatori non vedono mai le etichette del modello) e riporta accuratezza, kappa di Cohen e di Fleiss, alpha di Krippendorff ed errore di calibrazione atteso. Risponde a «posso fidarmi di questo giudice?» con numeri che puoi difendere. Ne abbiamo parlato in Puoi fidarti del tuo giudice LLM?.
Judge Alignment mette a punto un singolo giudice rispetto alle tue etichette gold umane, seguendo il kappa di Cohen mentre affini la griglia, con un verdetto opzionale mostrato in linea accanto all'etichetta umana durante l'annotazione.
The Triage Queue dà priorità alla coda di annotazione in base a un segnale per elemento (un errore dell'agente, un pollice verso in produzione, un punteggio basso) così che chi revisiona veda prima le tracce più sospette, anziché in ordine di arrivo.
triage:
enabled: true
signal_field: quality_score
invert_signal: true
assignment_strategy: priorityAllineamento e triage si compongono in un ciclo di valutazione attivo, che abbiamo ripercorso in Chiudere il ciclo. Documentazione di riferimento: Judge Calibration, Judge Alignment, Triage Queue.
Modifica delle traiettorie per SFT e DPO
Il nuovo schema trajectory_edit permette agli annotatori di riscrivere i passi di una traccia di agente, con un diff dal vivo a livello di parola, per correggere un passo di ragionamento errato, riparare una chiamata a strumento o rafforzare la risposta finale. L'exporter trajectory_correction trasforma poi ogni coppia originale/corretta in dati di addestramento: target di fine-tuning supervisionato in trajectory_sft.jsonl e coppie di preferenza DPO in trajectory_dpo.jsonl. Le tracce non modificate vengono saltate, perché addestrare su una traiettoria immutata non insegna nulla.
Questo rende Potato uno strumento di produzione di dati di addestramento, non solo di valutazione. La guida completa è in Dalla valutazione ai dati di addestramento; il riferimento nella documentazione sulla modifica delle traiettorie.
La visualizzazione eval_trace
Leggere rapidamente le tracce degli agenti è un problema a sé. La nuova visualizzazione eval_trace divide una singola traccia in tre riquadri sincronizzati (Reasoning, Function Calls e Final Answer) così che chi valuta veda a colpo d'occhio cosa l'agente ha pensato, fatto e prodotto. È costruita per la valutazione continua, dove le tracce arrivano tramite un webhook, un poller Langfuse o una directory monitorata e devono essere giudicate man mano che atterrano. Vedi la documentazione eval_trace.
Flusso di lavoro e deployment
Un gruppo di funzionalità operative completa la versione:
- Copertura eterogenea. Assegna numeri diversi di annotatori a elementi diversi: uno per la maggior parte, tre per un campione stratificato, con incrementi adattivi in caso di disaccordo e instradamento automatico all'arbitrato. Trattata in Oltre la sovrapposizione totale; riferimento nella documentazione sulla copertura eterogenea.
- Recuperare gli incarichi abbandonati. Recupera gli elementi lasciati da chi lavora tramite Prolific o bloccato dal controllo qualità, con ritenzione configurabile e recupero idempotente. Vedi assegnazione dei task.
- Assegnazione di batch personalizzata. Assegna batch predefiniti di elementi ad annotatori specifici, pensata per disegni di studio a turni ripetuti.
- Prefissi URL per reverse proxy. Servi Potato sotto un sottopercorso dietro un reverse proxy. Vedi la documentazione sul reverse proxy.
Più veloce, e una rinomina di schema
Due modifiche riguardano ogni progetto.
L'avvio è circa 3 volte più rapido. Lo stack di machine learning non viene più caricato in anticipo all'avvio; viene invece caricato al primo utilizzo. Il tempo di import è sceso da circa 6.5s a 2s, l'avvio con 50.000 elementi da circa 10 secondi a 5.7 e la memoria residente da circa 750MB a 365MB. I riavvii dei container sono più rapidi e l'impronta di memoria per lo scaling orizzontale è circa dimezzata.
annotation_type: highlight ora è span. È presente una migrazione e le configurazioni span esistenti non sono interessate. Aggiorna le vecchie configurazioni rinominando il tipo. «span» è il termine standard in tutto l'NLP, e la rinomina allinea il tipo di annotazione a esso.
In recupero: 2.5 e 2.4.5
Un paio di versioni tra la 2.4 e la 2.6 sono uscite senza un articolo qui. Vale la pena evidenziarne i punti salienti, soprattutto perché il lavoro sulla codifica qualitativa in particolare sta alla base della Modalità QDA:
2.5.0 è stata l'ondata della codifica qualitativa. Ha aggiunto i kappa di Cohen e di Fleiss accanto all'alpha di Krippendorff, gli exporter codebook e quotation_report, e analisi di amministrazione per la co-occorrenza dei codici e una tabella incrociata dei codici per attributo. Sono i tasselli di affidabilità ed export su cui si fonda la Modalità QDA.
2.4.5 ha portato un framework di raffinamento validato per migliorare le linee guida di annotazione in modalità singola, una CLI di validazione della configurazione (python -m potato.validate_cli) e una correzione di sicurezza per un bypass di path traversal (GHSA-q9m2-fhv9-3jcf). Se sei su una 2.4.x più vecchia, l'aggiornamento recupera quella correzione.
La cronologia completa vive nella pagina Novità.
Come ottenerlo
pip install --upgrade potato-annotationPoi punta Potato a uno degli esempi inclusi (examples/advanced/qda-mode-example/, examples/ai-assisted/judge-calibration/, examples/agent-traces/trajectory-correction/) per vedere le nuove interfacce in azione. Ogni versione qui è nata come domanda di qualcuno che usava lo strumento; se 2.6 te ne fa sorgere una, il repository GitHub è il posto dove porla.