Potato 2.3: Agentische Annotation, Solo Mode und die Zukunft menschlicher Evaluierung
Potato 2.3.0 führt agentische Annotation mit 12 Trace-Format-Konvertern, Solo Mode für menschlich-LLM-kollaboratives Labeling, Best-Worst Scaling, SSO/OAuth, Parquet-Export und 15 Demo-Projekte ein.
Potato 2.3: Agentische Annotation, Solo Mode und die Zukunft menschlicher Evaluierung
Wir freuen uns, Potato 2.3.0 ankündigen zu dürfen -- das größte Release in Potatos Geschichte. Dieses Update führt zwei große neue Systeme ein -- agentische Annotation und Solo Mode -- zusammen mit Best-Worst Scaling, SSO/OAuth-Authentifizierung, Parquet-Export und 15 neuen Demo-Projekten.
Das Thema dieses Releases ist einfach: Die Dinge, die wir annotieren müssen, haben sich verändert, und unsere Werkzeuge müssen Schritt halten. Forscher beschriften nicht mehr nur Textstimmungen und Named Entities. Sie evaluieren mehrstufige KI-Agenten-Traces, vergleichen LLM-Ausgaben im großen Maßstab und erstellen Datensätze für zunehmend komplexe Aufgaben. Potato 2.3 wurde für diese neue Realität entwickelt.
Agentische Annotation
Das Hauptfeature von Potato 2.3 ist ein vollständiges System zur Evaluierung von KI-Agenten durch menschliche Annotation.
KI-Agenten -- Systeme, die mehrstufige Aktionen zur Erfüllung von Aufgaben ausführen -- verbreiten sich rasant. Aber ihre Evaluierung ist schwierig. Ein einzelner Agentenlauf kann Dutzende von Tool-Aufrufen, Überlegungsschritten, Web-Seitennavigationen und Zwischenausgaben umfassen. Bestehende Annotationswerkzeuge zeigen Agenten-Ausgaben als flachen Text an, wodurch die reiche Struktur verloren geht, die Evaluatoren sehen müssen.
Potatos agentisches Annotationssystem löst dies mit drei Komponenten.
12 Trace-Format-Konverter
Agenten-Traces kommen je nach Framework in unterschiedlichen Formaten. Potato normalisiert sie alle in eine einheitliche Darstellung:
| Konverter | Quelle |
|---|---|
openai | OpenAI Assistants API / function calling |
anthropic | Anthropic Claude tool_use / Messages API |
swebench | SWE-bench task traces |
opentelemetry | OpenTelemetry span exports |
mcp | Model Context Protocol sessions |
multi_agent | CrewAI / AutoGen / LangGraph |
langchain | LangChain callback traces |
langfuse | LangFuse observation exports |
react | ReAct Thought/Action/Observation |
webarena | WebArena / VisualWebArena |
atif | Agent Trace Interchange Format |
raw_web | Raw browser recordings (HAR + screenshots) |
Die Konfiguration ist unkompliziert:
agentic:
enabled: true
trace_converter: react
trace_file: "data/agent_traces.jsonl"Automatische Erkennung ist für Projekte verfügbar, die Traces aus mehreren Quellen verarbeiten müssen:
agentic:
enabled: true
trace_converter: autoDrei Anzeigetypen
Verschiedene Agenten-Modalitäten benötigen unterschiedliche Visualisierungen.
Agent Trace Display rendert Tool-nutzende Agenten-Traces als farbcodierte Schrittkarten mit aufklappbaren Beobachtungen, JSON-Pretty-Printing und einer Timeline-Seitenleiste:
agentic:
display_type: agent_trace
agent_trace_display:
colors:
thought: "#6E56CF"
action: "#3b82f6"
observation: "#22c55e"
error: "#ef4444"
collapse_observations: true
show_step_numbers: trueWeb Agent Trace Display rendert Browser-Agenten-Traces mit vollständigen Screenshots, SVG-Overlays, die Klickziele und Eingabefelder anzeigen, und einem Filmstreifen für schnelle Navigation:
agentic:
display_type: web_agent
web_agent_display:
screenshot_max_width: 900
overlay:
enabled: true
click_marker: "circle"
click_color: "#ef4444"
filmstrip:
enabled: trueInteractive Chat Display unterstützt sowohl die Trace-Überprüfung (Evaluierung einer aufgezeichneten Konversation) als auch Live-Chat (Annotatoren interagieren in Echtzeit mit einem Agenten und evaluieren dann die Konversation):
agentic:
display_type: interactive_chat
interactive_chat_display:
mode: trace_review
trace_review:
show_token_counts: true
show_latency: truePro-Turn-Bewertungen
Für jeden Anzeigetyp können Annotatoren einzelne Schritte neben dem gesamten Trace bewerten:
annotation_schemes:
- annotation_type: likert
name: overall_quality
min: 1
max: 5
- annotation_type: per_turn_rating
name: step_correctness
target: agentic_steps
rating_type: radio
labels:
- "Correct"
- "Partially Correct"
- "Incorrect"Vorgefertigte Schemata
Neun Annotationsschemata decken gängige Agenten-Evaluierungsdimensionen sofort ab:
annotation_schemes:
- preset: agent_task_success
- preset: agent_step_correctness
- preset: agent_error_taxonomy
- preset: agent_safetyVerfügbare Presets: agent_task_success, agent_step_correctness, agent_error_taxonomy, agent_safety, agent_efficiency, agent_instruction_following, agent_explanation_quality, agent_web_action_correctness, agent_conversation_quality.
Agentische Annotation – Dokumentation lesen →
Solo Mode
Das zweite Hauptfeature von Potato 2.3 ist Solo Mode: ein 12-Phasen-Workflow, der das traditionelle Multi-Annotator-Paradigma durch einen einzelnen menschlichen Experten ersetzt, der mit einem LLM zusammenarbeitet.
Das Problem
Traditionelle Annotation erfordert mehrere Annotatoren für Zuverlässigkeit. Aber ein Team einzustellen, zu schulen und zu koordinieren ist teuer und langsam. Bei vielen Forschungsprojekten ist der Annotations-Engpass nicht die Oberfläche -- es ist die Logistik.
Die Lösung
Solo Mode ermöglicht es einem Domänenexperten, eine strategisch ausgewählte Teilmenge der Daten zu beschriften. Ein LLM lernt aus diesen Labels, schlägt Labels für die verbleibenden Instanzen vor, und der Mensch überprüft nur die Fälle, bei denen das LLM Schwierigkeiten hat. Ein 12-Phasen-Workflow orchestriert dies automatisch.
In internen Benchmarks erreichte Solo Mode 95 %+ Übereinstimmung mit vollständigen Multi-Annotator-Pipelines, während nur 10–15 % der gesamten menschlichen Labels benötigt wurden.
Die 12 Phasen
- Seed-Annotation -- Mensch beschriftet 50 diverse Instanzen
- Initiale LLM-Kalibrierung -- LLM beschriftet einen Kalibrierungsbatch mit Seed-Beispielen
- Konfusionsanalyse -- systematische Muster menschlich-LLM-Unstimmigkeiten identifizieren
- Leitfaden-Verfeinerung -- LLM schlägt verbesserte Leitfäden vor; Mensch genehmigt
- Labeling-Funktions-Generierung -- ALCHEmist-inspirierte programmatische Regeln für einfache Instanzen
- Aktives Labeling -- Mensch beschriftet die informativsten verbleibenden Instanzen
- Automatisierte Verfeinerungsschleife -- iteratives Neubeschriften mit aktualisierten Leitfäden
- Disagreement-Erkundung -- Mensch löst Fälle auf, bei denen LLM und Labeling-Funktionen in Konflikt stehen
- Edge-Case-Synthese -- LLM generiert synthetische mehrdeutige Beispiele für menschliches Labeling
- Kaskadierte Konfidenz-Eskalation -- Mensch überprüft LLM-Labels mit niedrigster Konfidenz
- Prompt-Optimierung -- DSPy-inspirierte automatisierte Prompt-Suche
- Abschlussprüfung -- Zufallsstichprobenüberprüfung; bestehen oder Schleife zurück
Schnellstart
solo_mode:
enabled: true
llm:
endpoint_type: openai
model: "gpt-4o"
api_key: ${OPENAI_API_KEY}
seed_count: 50
accuracy_threshold: 0.92
confidence_threshold: 0.85
annotation_schemes:
- annotation_type: radio
name: sentiment
labels: [Positive, Neutral, Negative]Multi-Signal-Instanz-Priorisierung
Solo Mode verwendet sechs gewichtete Pools, um die wertvollsten Instanzen für menschliches Labeling auszuwählen:
solo_mode:
prioritization:
pools:
- name: uncertain
weight: 0.30
- name: disagreement
weight: 0.25
- name: boundary
weight: 0.20
- name: novel
weight: 0.10
- name: error_pattern
weight: 0.10
- name: random
weight: 0.05Solo-Mode-Dokumentation lesen →
Best-Worst Scaling
Potato 2.3 fügt Best-Worst Scaling (BWS) hinzu, auch als Maximum Difference Scaling bekannt. Annotatoren sehen ein Tupel von Elementen (typischerweise 4) und wählen das beste und das schlechteste nach einem bestimmten Kriterium aus. BWS produziert zuverlässige Skalarwerte aus einfachen binären Urteilen und benötigt weit weniger Annotationen als Likert-Skalen für die gleiche statistische Aussagekraft.
annotation_schemes:
- annotation_type: best_worst_scaling
name: fluency
description: "Select the BEST and WORST translation"
items_key: "translations"
tuple_size: 4
best_label: "Most Fluent"
worst_label: "Least Fluent"
randomize_order: true
tuple_generation:
method: balanced_incomplete
tuples_per_item: 5
scoring:
method: bradley_terry
auto_compute: true
include_confidence: trueDrei Bewertungsmethoden stehen zur Verfügung:
- Counting -- einfach (best_count - worst_count) / Erscheinungen
- Bradley-Terry -- paarweises Vergleichsmodell (empfohlener Standard)
- Plackett-Luce -- vollständiges Ranking-Modell für maximale Dateneffizienz
Bewertung über die CLI:
python -m potato.bws score --config config.yaml --method bradley_terry --output scores.csvDas Admin-Dashboard enthält einen BWS-Tab mit Score-Verteilungen, Konvergenzdiagrammen und Split-Half-Reliabilitätsmetriken.
Best-Worst-Scaling-Dokumentation lesen →
SSO & OAuth-Authentifizierung
Produktions-Annotations-Deployments benötigen ordentliche Authentifizierung. Potato 2.3 unterstützt drei OAuth-Methoden:
Google OAuth
authentication:
method: google_oauth
google_oauth:
client_id: ${GOOGLE_CLIENT_ID}
client_secret: ${GOOGLE_CLIENT_SECRET}
redirect_uri: "https://annotation.example.com/auth/google/callback"
allowed_domains:
- "umich.edu"
auto_register: trueGitHub OAuth mit Organisations-Einschränkung
authentication:
method: github_oauth
github_oauth:
client_id: ${GITHUB_CLIENT_ID}
client_secret: ${GITHUB_CLIENT_SECRET}
redirect_uri: "https://annotation.example.com/auth/github/callback"
allowed_organizations:
- "my-research-lab"
scopes:
- "read:user"
- "read:org"Generisches OIDC
Verbindung zu Okta, Azure AD, Auth0, Keycloak oder einem anderen OIDC-kompatiblen Anbieter:
authentication:
method: oidc
oidc:
discovery_url: "https://accounts.example.com/.well-known/openid-configuration"
client_id: ${OIDC_CLIENT_ID}
client_secret: ${OIDC_CLIENT_SECRET}
redirect_uri: "https://annotation.example.com/auth/oidc/callback"Alle Methoden unterstützen Domain-Einschränkung, automatische Registrierung und gemischten Modus (mehrere Authentifizierungsmethoden auf einer Anmeldeseite).
SSO & OAuth-Dokumentation lesen →
Parquet-Export
Annotationsdaten werden zunehmend von Data-Science-Tools konsumiert, die Spaltenformate erwarten. Potato 2.3 kann Annotationen direkt in Apache Parquet exportieren und dabei drei strukturierte Dateien erzeugen:
- annotations.parquet -- eine Zeile pro (Instanz, Annotator, Schema) mit Werten, Zeitstempeln und Dauern
- spans.parquet -- eine Zeile pro annotiertem Span mit Offsets, Labels und Links
- items.parquet -- Instanz-Metadaten mit Annotationsanzahlen und Status
parquet_export:
enabled: true
output_dir: "output/parquet/"
compression: zstd
auto_export: trueDirekt in pandas, DuckDB, PyArrow, Polars oder Hugging Face Datasets laden:
import pandas as pd
annotations = pd.read_parquet("output/parquet/annotations.parquet")
# Or with DuckDB for SQL queries
import duckdb
duckdb.sql("""
SELECT instance_id, value, COUNT(*) as n
FROM 'output/parquet/annotations.parquet'
WHERE schema_name = 'sentiment'
GROUP BY instance_id, value
""")Unterstützt snappy, gzip, zstd, lz4 und brotli Komprimierung, inkrementellen Export mit Datum/Annotator-Partitionierung und Dictionary-Encoding für String-Spalten.
Parquet-Export-Dokumentation lesen →
15 neue Demo-Projekte
Potato 2.3 wird mit 15 neuen Demo-Projekten im project-hub/-Verzeichnis geliefert, die die neuen Features abdecken:
Agentische Annotation – Demos
- react-agent-eval -- ReAct-Agenten-Traces mit schrittweisen Bewertungen evaluieren
- web-agent-eval -- WebArena-Trace-Evaluierung mit Screenshot-Overlays
- chatbot-eval -- Interaktive Chat-Evaluierung mit Live-Agenten-Proxy
- multi-agent-eval -- CrewAI Multi-Agenten-Systeme evaluieren
- swebench-eval -- SWE-bench Trace-Evaluierung für Coding-Agenten
Solo Mode – Demos
- solo-sentiment -- Solo-Mode-Stimmungsklassifizierung auf Produktbewertungen
- solo-ner -- Solo-Mode Named Entity Recognition
- solo-toxicity -- Solo-Mode-Toxizitätserkennung mit Edge-Case-Synthese
Best-Worst Scaling – Demos
- bws-translation -- Maschinelle Übersetzungsqualitäts-Ranking
- bws-summarization -- Zusammenfassungsqualitäts-Vergleich
- bws-image-quality -- Bildgenerierungsqualitäts-Ranking
Authentifizierungs-Demos
- google-oauth-demo -- Google-OAuth-Einrichtungsbeispiel
- github-oauth-demo -- GitHub OAuth mit Organisations-Einschränkung
Export-Demos
- parquet-export-demo -- Parquet-Export mit DuckDB-Analyseskript
- huggingface-upload -- Nach Parquet exportieren und auf Hugging Face Hub pushen
Jedes Demo enthält eine vollständige config.yaml, Beispieldaten und eine README mit Einrichtungsanweisungen. Jedes Demo starten mit:
cd project-hub/react-agent-eval
potato start config.yamlSicherheitsverbesserungen
Potato 2.3 enthält mehrere Sicherheitsverbesserungen:
- Session-Tokens verwenden kryptografisch sichere Zufallsgenerierung mit konfigurierbarem Ablauf
- CSRF-Schutz ist standardmäßig für alle Formularübermittlungen aktiviert
- Rate Limiting für Authentifizierungsendpunkte (konfigurierbar, Standard 10 Versuche pro Minute)
- Eingabe-Sanitierung für alle benutzerseitig bereitgestellten Inhalte, die in der Annotationsoberfläche angezeigt werden
- Abhängigkeits-Audit -- alle Python- und JavaScript-Abhängigkeiten auf neueste sichere Versionen aktualisiert
- Content Security Policy-Header hinzugefügt, um XSS zu verhindern
security:
csrf_protection: true
rate_limiting:
auth_attempts: 10 # per minute
api_requests: 100 # per minute
session:
token_length: 64
lifetime_hours: 24
content_security_policy: trueUpgrade
Von Potato 2.2.x
pip install --upgrade potato-annotationAlle v2.2-Konfigurationen sind vollständig abwärtskompatibel. Keine Änderungen an bestehenden Configs erforderlich.
Neue Abhängigkeiten
Parquet-Export erfordert PyArrow:
pip install potato-annotation[parquet]Solo Mode erfordert ein LLM-Anbieter-SDK:
pip install potato-annotation[solo] # installs openai + anthropic SDKsOder alles installieren:
pip install potato-annotation[all]Was kommt als Nächstes
Potato 2.3 stellt eine bedeutende Erweiterung dessen dar, was Annotationswerkzeuge leisten können. Wir arbeiten bereits an den nächsten Features:
- Annotations-Diffing -- Annotationen über Runden und Annotatoren hinweg mit visuellen Diffs vergleichen
- Federated Annotation -- Annotation über mehrere Potato-Instanzen koordinieren
- Streaming-Datenquellen -- Daten aus Kafka, Pub/Sub und anderen Streaming-Systemen annotieren
- Mobile-optimierte Oberfläche -- responsive Annotation für Tablets und Smartphones
Wir freuen uns über Ihr Feedback. Eröffnen Sie Issues auf GitHub, nehmen Sie an der Diskussion in GitHub Discussions teil oder wenden Sie sich direkt an das Team.