Skip to content

AI-Unterstützung

LLMs für intelligente Annotationshilfe integrieren.

Potato 2.0 enthält integrierte Unterstützung für Large Language Models (LLMs), um Annotatoren mit intelligenten Hinweisen, Schlüsselwort-Hervorhebungen und Label-Vorschlägen zu unterstützen.

Unterstützte Anbieter

Potato unterstützt mehrere LLM-Anbieter:

Cloud-Anbieter:

  • OpenAI (GPT-4, GPT-4 Turbo, GPT-3.5)
  • Anthropic (Claude 3, Claude 3.5)
  • Google (Gemini 1.5 Pro, Gemini 2.0 Flash)
  • Hugging Face
  • OpenRouter

Lokal/Self-Hosted:

  • Ollama (Modelle lokal ausführen)
  • vLLM (hochleistungsfähige selbst gehostete Inferenz)

Konfiguration

Grundeinrichtung

Fügen Sie Ihrer Konfigurationsdatei einen ai_support-Abschnitt hinzu:

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

Anbieterspezifische Konfiguration

OpenAI

yaml
instance_display:
  fields:
    - {key: body, type: text, label: Ticket}
    - {key: screenshot, type: image, label: Screenshot}

Anthropic Claude

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    include:
      all: false
      special_include:
        "0":
          "0": ["hint", "keyword"]
        "1":
          "1": ["hint"]
        "2":
          "0": ["hint", "keyword"]
          "1": ["hint", "keyword"]

Google Gemini

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    include:
      all: true
  cache_config:
    disk_cache:
      enabled: true
      path: "annotation_output/ai_cache.json"
    prefetch:
      warm_up_page_count: 20
      on_next: 10
      on_prev: 3

Lokales Ollama

yaml
# config.yaml, committed, no secrets
ai_support:
  enabled: true
  ai_config_file: ai-config.yaml
 
  ai_config:
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

vLLM (Self-Hosted)

yaml
# ai-config.yaml, gitignored
endpoint_type: ollama
model: qwen3:0.6b
base_url: http://localhost:11434

Visuelle AI-Endpunkte

Neu in v2.1.0

Für Bild- und Videoannotationsaufgaben unterstützt Potato dedizierte Vision-Endpunkte wie YOLO, Ollama Vision, OpenAI Vision und Anthropic Vision. Diese ermöglichen Objekterkennung, Vorausfüllen von Annotationen und visuelle Klassifikation.

Vollständige Konfigurationsdetails finden Sie unter Visuelle AI-Unterstützung.

AI-Funktionen

Potatos AI-Unterstützung bietet fünf primäre Fähigkeiten:

1. Intelligente Hinweise

Kontextbezogene Anleitung für Annotatoren bereitstellen, ohne die Antwort zu verraten:

yaml
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

2. Schlüsselwort-Hervorhebung

Relevante Schlüsselwörter im Text automatisch hervorheben:

yaml
ai_support:
  enabled: true
  endpoint_type: "anthropic"
  ai_config:
    model: "claude-sonnet-4-20250514"
    api_key: "${ANTHROPIC_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true

3. Label-Vorschläge

Labels zur Berücksichtigung durch Annotatoren vorschlagen (angezeigt mit Konfidenzindikatoren):

yaml
ai_support:
  enabled: true
  endpoint_type: "gemini"
  ai_config:
    model: "gemini-2.0-flash-exp"
    api_key: "${GOOGLE_API_KEY}"
    max_tokens: 800
    include:
      all: true

4. Label-Begründungen

Neu in v2.1.0

Ausgewogene Erklärungen generieren, warum jedes Label auf den Text zutreffen könnte, damit Annotatoren die Überlegungen hinter verschiedenen Klassifikationen verstehen:

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"
  ai_config:
    model: "llama3.2"
    base_url: "http://localhost:11434"
    max_tokens: 800
    include:
      all: true

Begründungen erscheinen als Tooltip mit einer Auflistung der verfügbaren Labels und einer Erklärung, warum sie zutreffen könnten. Dies ist nützlich für das Training von Annotatoren oder wenn Annotationsentscheidungen schwierig sind.

5. Optionshervorhebung

Neu in v2.2.0

KI-gestützte Hervorhebung der wahrscheinlichsten richtigen Optionen für diskrete Annotationsaufgaben (radio, multiselect, likert, select). Das System analysiert den Inhalt und hebt die top-k wahrscheinlichsten Optionen hervor, während weniger wahrscheinliche abgedunkelt werden – alle Optionen bleiben vollständig klickbar.

yaml
ai_support:
  enabled: true
  endpoint_type: "vllm"
  ai_config:
    model: "meta-llama/Llama-3.2-3B-Instruct"
    base_url: "http://localhost:8000"
    max_tokens: 800
    include:
      all: true

Vollständige Konfigurationsdetails finden Sie unter Optionshervorhebung.

Ergänzend: Diversity Ordering

Neu in v2.2.0

Obwohl nicht streng eine AI-Funktion, verwendet Diversity Ordering Sentence-Transformer-Embeddings, um Elemente zu clustern und in einer vielfältigen Reihenfolge zu präsentieren, was Annotatorermüdung reduziert und die Abdeckung verbessert. Es integriert sich in die AI-Unterstützung, indem AI-Hinweise für neu geordnete Elemente automatisch vorabgeladen werden.

Caching und Leistung

AI-Antworten können gecacht werden, um die Leistung zu verbessern und API-Kosten zu reduzieren:

yaml
ai_support:
  enabled: true
  endpoint_type: "open_router"
  ai_config:
    model: "openai/gpt-4o-mini"
    api_key: "${OPENROUTER_API_KEY}"
    max_tokens: 800
    include:
      all: true

Caching-Strategien

  1. Warmup: Vorab AI-Hinweise für einen initialen Batch von Instanzen beim Serverstart generieren (warm_up_page_count)
  2. Prefetch: Hinweise für bevorstehende Instanzen generieren, während Annotatoren vorwärts (on_next) oder rückwärts (on_prev) navigieren
  3. Festplattenbeständigkeit: Caches werden auf Festplatte gespeichert und bleiben über Serverneustarts hinweg erhalten

Benutzerdefinierte Prompts

Potato enthält Standardprompts für jeden Annotationstyp, die in potato/ai/prompt/ gespeichert sind. Sie können diese für Ihre spezifische Aufgabe anpassen:

AnnotationstypPrompt-Datei
Radio-Buttonsradio_prompt.txt
Likert-Skalenlikert_prompt.txt
Checkboxencheckbox_prompt.txt
Span-Annotationspan_prompt.txt
Schiebereglerslider_prompt.txt
Dropdownsdropdown_prompt.txt
Zahleneingabenumber_prompt.txt
Texteingabetext_prompt.txt

Prompts unterstützen Variablensubstitution:

  • {text} – Der Dokumenttext
  • {labels} – Verfügbare Labels für das Schema
  • {description} – Die Schemabeschreibung

Multi-Schema-Unterstützung

Bei Aufgaben mit mehreren Annotationsschemata können Sie AI-Unterstützung selektiv aktivieren:

yaml
ai_support:
  enabled: true
  endpoint_type: "ollama"
  visual_endpoint_type: "ollama_vision"
  ai_config:
    model: "llama3.2"
    include:
      all: true
  visual_ai_config:
    model: "qwen2.5-vl:7b"

Vollständiges Beispiel

Vollständige Konfiguration für KI-gestützte Sentiment-Analyse:

yaml
annotation_task_name: "Sentiment Analysis with AI Support"
task_dir: "."
 
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this text?"
    labels: ["positive", "negative", "neutral"]
 
  - annotation_type: multiselect
    name: topics
    description: "What topics are discussed?"
    labels: ["product", "service", "price", "quality"]
 
ai_support:
  enabled: true
  endpoint_type: "openai"
  ai_config:
    model: "gpt-4o-mini"
    api_key: "${OPENAI_API_KEY}"
    temperature: 0.7
    max_tokens: 800
    include:
      all: true
  cache_config:
    disk_cache:
      enabled: true
      path: "annotation_output/ai_cache.json"
    prefetch:
      warm_up_page_count: 20
      on_next: 10
      on_prev: 3
 
output_annotation_dir: "output/"
export_annotation_format: jsonl
 
user_config:
  allow_all_users: true

Umgebungsvariablen

API-Keys sicher über Umgebungsvariablen speichern:

bash
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_API_KEY="..."

Referenzieren Sie diese in Ihrer Konfiguration mit der Syntax ${VARIABLE_NAME}.

Kostenüberlegungen

  • AI-Aufrufe werden standardmäßig pro Instanz durchgeführt
  • Caching aktivieren, um wiederholte API-Aufrufe zu reduzieren
  • Warmup und Prefetch nutzen, um Hinweise vorab zu generieren
  • Kleinere/günstigere Modelle für einfache Aufgaben in Betracht ziehen
  • Lokale Anbieter (Ollama, vLLM) haben keine API-Kosten

Bewährte Vorgehensweisen

  1. AI als Unterstützung, nicht als Ersatz nutzen – Annotatoren sollten endgültige Entscheidungen treffen
  2. Caching für die Produktion aktivieren – Reduziert Latenz und Kosten
  3. Prompts gründlich testen – Benutzerdefinierte Prompts sollten validiert werden
  4. API-Kosten überwachen – Besonders bei Cloud-Anbietern die Nutzung verfolgen
  5. Lokale Anbieter in Betracht ziehen – Ollama oder vLLM für hochvolumige Annotation
  6. API-Anmeldedaten schützen – Umgebungsvariablen verwenden, Keys niemals einchecken

Weiterführende Informationen

Implementierungsdetails und benutzerdefinierte Prompt-Vorlagen finden Sie in der Quelldokumentation.