Skip to content
Announcements6 min read

Potato 2.6: Qualitative Datenanalyse trifft Agentenbewertung

Potato 2.6 ist da: QDA-Modus für qualitative Kodierung, ein Kalibrierungs- und Abgleich-Workflow für LLM-as-judge, Trajektorien-Bearbeitung, die SFT- und DPO-Trainingsdaten erzeugt, ein 3-mal schnellerer Start und eine Neulizenzierung auf GPL-3.0-or-later.

Potato Team

Potato 2.6 ist da. Es ist ein Release mit zwei Schwerpunkten. Auf der einen Seite bringt es Potato in die qualitative Datenanalyse, jene Welt der Interviewtranskripte, Codebücher und Memos, die bislang in proprietären Desktop-Werkzeugen gelebt hat. Auf der anderen vertieft es das Toolkit zur Agentenbewertung in Richtung der Erzeugung von Trainingsdaten, nicht nur von Bewertungen. Und unter beidem wird es spürbar schneller und ändert seine Lizenz.

Wer mitgelesen hat, dem haben die Beiträge der letzten Wochen diese Funktionen eine nach der anderen vorgestellt. Dies ist das Release, das sie tatsächlich ausliefert.

Potato 2.6, geteilt zwischen qualitativer Datenanalyse und AgentenbewertungPotato 2.6

Eine Vorbemerkung: Potato steht jetzt unter GPL-3.0

Potato wird auf GPL-3.0-or-later neu lizenziert, weg von PolyForm Shield. Das ist die Art von Änderung, die sich leicht beiläufig erwähnen lässt und es nicht sollte, weil sie verändert, was du mit dem Projekt tun darfst.

Unter GPL-3.0-or-later darfst du Potato verwenden, verändern und weiterverteilen, auch kommerziell, solange abgeleitete Werke unter der GPL bleiben. Die alte PolyForm-Shield-Lizenz trug eine Wettbewerbsverbotsklausel, die manche Anwender (und ihre Rechtsabteilungen) zögern ließ. Die GPL ist eine Lizenz, die diese Teams bereits kennen. Wenn eine Lizenzfrage dein Labor oder Unternehmen ausgebremst hat, hat diese Frage jetzt eine vertraute Antwort. Einzelheiten findest du auf der About-Seite.

QDA-Modus

Das Highlight für qualitativ Forschende ist der QDA-Modus: ein einziger Schalter, der Potato in einen kollaborativen Arbeitsbereich für qualitative Kodierung verwandelt.

yaml
qda_mode:
  enabled: true            # codebook + memos + cases + search
codebook_invivo_key: i     # mint a code from a text selection

Aktiviert man ihn, setzt er ein lebendiges Codebuch, In-vivo-Kodierung, Analyst:innen-Memos, Fälle und Volltextsuche zusammen, mit Standardwerten, die auf eine einzelne Person abgestimmt sind, die ein ganzes Korpus kodiert. Du kannst das Codebuch beim Lesen erweitern und umorganisieren, mit einem Tastendruck direkt aus einer markierten Passage einen Code erstellen, jedem Auszug private oder geteilte Memos anhängen, Auszüge nach Teilnehmenden zu Fällen gruppieren und die FTS5-Suche über das gesamte Korpus laufen lassen. Es ist eine kostenlose, quelloffene, webbasierte Alternative zu NVivo, ATLAS.ti, MAXQDA und Dedoose, die im selben Werkzeug wie der Rest deiner Annotationsarbeit steckt.

Über den Entwurf haben wir in Qualitative Kodierung in Potato bringen geschrieben. Vollständige Referenz: QDA-Modus-Dokumentation.

LLM-as-judge: Kalibrierung, Abgleich und Triage

Ein LLM zum Bewerten von Modellausgaben einzusetzen, ist mittlerweile Routine. Zu wissen, wie weit man ihm trauen kann, ist der Teil, den 2.6 adressiert – mit drei Funktionen, die zusammenspielen.

Judge Calibration labelt deine Daten automatisch mit einem oder mehreren LLM-Juroren, zieht je Element k Stichproben für eine empirische Konfidenz, führt dann einen blinden menschlichen Durchgang aus (die Annotierenden sehen die Modell-Labels nie) und berichtet Genauigkeit, Cohens und Fleiss' Kappa, Krippendorffs Alpha sowie den erwarteten Kalibrierungsfehler. Sie beantwortet „Sollte ich diesem Juror trauen?“ mit Zahlen, die du belegen kannst. Wir haben sie in Kannst du deinem LLM-Juror trauen? behandelt.

Judge Alignment stimmt einen einzelnen Juror gegen deine menschlichen Gold-Labels ab und verfolgt Cohens Kappa, während du die Bewertungsvorschrift verfeinerst, mit einem optionalen, während der Annotation inline neben dem menschlichen Label angezeigten Urteil.

The Triage Queue priorisiert die Annotationswarteschlange nach einem Signal je Element (ein Agentenfehler, ein Daumen-runter im Produktivbetrieb, eine niedrige Bewertung), sodass Prüfende die verdächtigsten Traces zuerst sehen statt in Eingangsreihenfolge.

yaml
triage:
  enabled: true
  signal_field: quality_score
  invert_signal: true
assignment_strategy: priority

Abgleich und Triage fügen sich zu einer aktiven Bewertungsschleife zusammen, die wir in Die Schleife schließen durchgegangen sind. Referenzdokumentation: Judge Calibration, Judge Alignment, Triage Queue.

Trajektorien-Bearbeitung für SFT und DPO

Das neue Schema trajectory_edit lässt Annotierende die Schritte eines Agenten-Traces umschreiben, mit einem Live-Diff auf Wortebene, um einen falschen Argumentationsschritt zu korrigieren, einen Tool-Aufruf zu reparieren oder die endgültige Antwort zu stärken. Der Exporter trajectory_correction macht dann aus jedem Original/Korrektur-Paar Trainingsdaten: Ziele für überwachtes Fine-Tuning in trajectory_sft.jsonl und DPO-Präferenzpaare in trajectory_dpo.jsonl. Unbearbeitete Traces werden übersprungen, denn das Training auf einer unveränderten Trajektorie lehrt nichts.

Damit wird Potato zu einem Werkzeug zur Erzeugung von Trainingsdaten, nicht nur zur Bewertung. Die vollständige Anleitung steht in Von der Bewertung zu den Trainingsdaten; die Referenz in der Dokumentation zur Trajektorien-Bearbeitung.

Die eval_trace-Anzeige

Agenten-Traces schnell zu lesen ist ein Problem für sich. Die neue eval_trace-Anzeige teilt einen einzelnen Trace in drei synchronisierte Bereiche (Reasoning, Function Calls und Final Answer), sodass eine bewertende Person auf einen Blick sieht, was der Agent dachte, tat und produzierte. Sie ist für die kontinuierliche Bewertung gebaut, bei der Traces über einen Webhook, einen Langfuse-Poller oder ein überwachtes Verzeichnis eintreffen und beurteilt werden müssen, sobald sie ankommen. Siehe die eval_trace-Dokumentation.

Workflow und Bereitstellung

Eine Reihe betrieblicher Funktionen rundet das Release ab:

  • Heterogene Abdeckung. Weise verschiedenen Elementen unterschiedlich viele Annotierende zu: eine Person bei den meisten, drei bei einer geschichteten Stichprobe, mit adaptiven Verstärkungen bei Uneinigkeit und automatischem Routing zur Schlichtung. Behandelt in Jenseits der vollständigen Überlappung; Referenz in der Dokumentation zur heterogenen Abdeckung.
  • Aufgegebene Zuweisungen zurückholen. Hole Elemente zurück, die von Prolific-Beteiligten oder durch die Qualitätskontrolle blockierten Arbeitenden hinterlassen wurden, mit konfigurierbarer Aufbewahrung und idempotenter Rückholung. Siehe Aufgabenzuweisung.
  • Benutzerdefinierte Batch-Zuweisung. Weise vordefinierte Batches von Elementen bestimmten Annotierenden zu, gebaut für Studiendesigns mit wiederholten Runden.
  • Reverse-Proxy-URL-Präfixe. Stelle Potato hinter einem Reverse Proxy unter einem Unterpfad bereit. Siehe die Reverse-Proxy-Dokumentation.

Schneller, und eine Schema-Umbenennung

Zwei Änderungen betreffen jedes Projekt.

Der Start ist rund 3-mal schneller. Der Machine-Learning-Stack wird beim Start nicht mehr vorab geladen; stattdessen lädt er bei der ersten Verwendung. Die Importzeit sank von etwa 6.5s auf 2s, der Start mit 50.000 Elementen von etwa 10 Sekunden auf 5.7 und der residente Speicher von etwa 750MB auf 365MB. Container-Neustarts sind schneller, und der Speicherbedarf für horizontale Skalierung ist etwa halbiert.

annotation_type: highlight heißt jetzt span. Eine Migration ist vorhanden, und bestehende span-Konfigurationen sind nicht betroffen. Aktualisiere alte Konfigurationen, indem du den Typ umbenennst. „span“ ist der Standardbegriff im gesamten NLP, und die Umbenennung bringt den Annotationstyp damit in Einklang.

Nachgereicht: 2.5 und 2.4.5

Ein paar Releases zwischen 2.4 und 2.6 erschienen hier ohne Beitrag. Ihre Highlights sind eine Erwähnung wert, gerade weil insbesondere die Arbeit an der qualitativen Kodierung den QDA-Modus trägt:

2.5.0 war die Welle der qualitativen Kodierung. Sie ergänzte Cohens Kappa und Fleiss' Kappa neben Krippendorffs Alpha, die Exporter codebook und quotation_report sowie Admin-Analysen für Code-Kookkurrenz und eine Kreuztabelle von Codes nach Attribut. Das sind die Reliabilitäts- und Export-Bausteine, auf denen der QDA-Modus aufbaut.

2.4.5 brachte ein validiertes Verfeinerungs-Framework zum Verbessern von Annotationsrichtlinien im Solo-Modus, eine Config-Validator-CLI (python -m potato.validate_cli) und einen Sicherheitsfix für eine Path-Traversal-Umgehung (GHSA-q9m2-fhv9-3jcf). Wenn du auf einem älteren 2.4.x bist, holt das Upgrade diesen Fix mit.

Die vollständige Historie steht auf der Was-ist-neu-Seite.

Installation

bash
pip install --upgrade potato-annotation

Richte Potato dann auf eines der mitgelieferten Beispiele (examples/advanced/qda-mode-example/, examples/ai-assisted/judge-calibration/, examples/agent-traces/trajectory-correction/), um die neuen Oberflächen in Aktion zu sehen. Jedes Release hier begann als Frage von jemandem, der das Werkzeug nutzt; wenn 2.6 bei dir eine aufwirft, ist das GitHub-Repository der Ort, sie zu stellen.