Skip to content

Kleiner Pflege-Benchmark (10 MC, 5 NLI) zum Vergleich mehrerer KI‑Modelle inkl. Auswertung, Grafiken und HTML‑Report.

License

Notifications You must be signed in to change notification settings

goldikolb/PflegeBench-PoC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PflegeBench PoC v0.0

Release License CI

Ziel: Dieses Repo ist ein Proof of Concept für eine PflegeBench – ein Benchmark zum Vergleich verschiedener Sprachmodelle (LLM) auf pflegespezifischen Aufgaben. Enthalten ist ein Minimal-Datensatz mit 10 Multiple-Choice-Aufgaben (MC) und 5 Natural‑Language‑Inference‑Paaren (NLI). Beide Aufgabentypen liegen als JSONL vor und können automatisiert mit unterschiedlichen Modellen getestet und ausgewertet werden.

Beispieldatensatz MC:

{"id":"MC-0001","stem":"Eine Patientin mit Diabetes zeigt Anzeichen einer Hypoglykämie (Schwitzen, Zittern, Hunger). Was ist die korrekte Erstmaßnahme?","options":["Sofort Insulin geben","15–20 g schnell wirksame Kohlenhydrate oral geben, Blutzucker kontrollieren","Flüssigkeitsrestriktion","Insulinpumpe ausschalten ohne Messung"],"answer_idx":1,"rationale":"Hypoglykämie: orale Glukosegabe und Kontrolle; Insulingabe wäre kontraindiziert.","tags":["diabetes","akutmanagement","patientensicherheit"],"difficulty":"leicht","source":"synthetic_poc_v0_0","lang":"de"}

Beispieldatensatz NLI:

{"id":"NLI-0101","premise":"Pflegebericht: Patient, 82 J., bettlägerig, feuchte Haut, starkes Nachschwitzen, Inkontinenz, Mobilisation nur mit 2 Personen, Braden 13.","hypothesis":"Es besteht ein erhöhtes Dekubitusrisiko.","label":"entails","rationale":"Braden 13 und zusätzliche Faktoren sprechen für erhöhtes Risiko.","tags":["pflegedoku","risiko","dekubitus"],"difficulty":"mittel","source":"synthetic_poc_v0_0","lang":"de"}

MC prüft die korrekte Antwortauswahl. NLI prüft das semantische Verhältnis zwischen premise und hypothesis (z. B. "entails"/Folgerung).

Dieser Datensatz ist synthetisch erstellt und dient ausschließlich der Demonstration der Funktionalität.

Mit diesem Proof of Concept (PoC) möchte ich zeigen: LLMs können pflegespezifische Aufgaben bearbeiten – und es ist notwendig, ihre Leistung systematisch zu messen. Während es in der Medizin inzwischen mehrere anerkannte Benchmarks gibt, fehlen vergleichbare, praxisnahe Benchmarks für pflegepraktische Aufgaben und die Pflegewissenschaft.

Wunsch: Welches pflegewissenschaftliche Institut möchte sich mit der PflegeBench befassen und mit mir zusammenarbeiten? Ich möchte den ersten pflegewissenschaftlichen Benchmark erstellen. Meine Kontaktdaten sind: pflege-ai.de. Mail: kontakt@pflege-ai.de | Telefon: +49 173 5643161 | LinkedIn: linkedin.com/in/kolbchristian

Damit dieser Benchmark aussagekräftig ist, braucht es eine große Stichprobe pflegepraktischer Aufgaben als belastbaren Goldstandard.

Konkrete Empfehlungen für die Stichprobenplanung

  • Pilot (erste Erprobung): 50–100 Fälle pro Task (MC und NLI), um Prompts, Format und Ablauf zu testen.
  • Solide Vergleichbarkeit (Unterschiede ~5 Prozentpunkte erkennbar): 300–500 Fälle pro Task, ideal für gepaarte Vergleiche (McNemar).
  • Sehr präzise Schätzungen (±3 Prozentpunkte): 1.000+ Fälle pro Task.
  • Pro Themen-Tag (für Teilanalysen): mind. 20–30 Fälle je Tag (besser 50+), sonst schwanken die Balken zu stark.

Modelle vergleichen (gepaarte Auswertung)

  • Gleiches Item-Set für alle Modelle verwenden (gepaired design).
  • McNemar-Test nutzen, weil er die „abweichenden Paare“ bewertet (wo Modelle unterschiedlich liegen).
  • Praktische Daumenregel: Wenn ihr ~5 Prozentpunkte Unterschied erwartet, sind 300–500 gepaarte Items oft ausreichend, um signifikante Unterschiede zu sehen (abhängig davon, wie viele Fälle die Modelle unterschiedlich beantworten).

Speziell für NLI (Macro‑F1)

  • Mindestens: 300+ Beispiele insgesamt, damit jede Klasse genügend positive Fälle hat.
  • Robuster: 500–1.000 Beispiele für stabilere F1-Schätzungen und belastbarere Tag-Analysen.

Pragmatik für PflegeBench

  • Start: 100 MC + 100 NLI.
  • Ausbau: 300–500 MC + 300–500 NLI.
  • Ziel für „kongressreife“ Vergleichsgrafiken: 500+ je Task, wenn möglich.

Warum jetzt – und warum die Pflegewissenschaft?

  • Relevanz: Pflegeentscheidungen wirken täglich auf Sicherheit, Qualität und Wirksamkeit von Versorgung. Ohne verlässliche Benchmarks bleiben Fähigkeiten und Grenzen von LLMs im Pflegekontext unscharf.
  • Lücke: In der Medizin existieren bereits etablierte Benchmarks; in der Pflege fehlen systematische, öffentlich dokumentierte Referenzsätze.
  • Bezug auf die Literatur: Eine aktuelle Übersichtsarbeit zeigt die Vielzahl medizinischer LLM‑Benchmarks und deren Bewertungslogiken Yan et al., 2024. Das unterstreicht, wie wichtig eine pflegespezifische Ergänzung ist.

Beispiele für medizinische Benchmarks, an denen wir uns methodisch orientieren können:

  • MedQA (USMLE) – Prüfungsfragen im Medizinexamen (Multiple Choice)
  • PubMedQA – Beantwortung biomedizinischer Publikationsfragen
  • MedMCQA – große Sammlung medizinischer MC‑Fragen

Ziel der PflegeBench ist es, eine ähnlich robuste, aber pflegepraktisch ausgerichtete Grundlage zu schaffen – mit klaren Gütekriterien, transparenter Dokumentation und Auswertung (Trefferquote, Übereinstimmung, Tag‑Analysen, gepaarte Tests wie McNemar). Start: 100 MC + 100 NLI. Ausbau: 300–500 MC + 300–500 NLI. Ziel für Kongressreife Vergleichsgrafiken: 500+ je Task, wenn möglich.

Struktur

  • data/mc/test.jsonl — 10 Multiple-Choice-Items
  • data/nli/test.jsonl — 5 NLI-Paare
  • prompts/ — Basisprompts für die Modellabfragen
  • eval/run_eval.py — Auswertungsskript (Accuracy, Macro-F1 bei NLI)
  • data/*/predictions_template.jsonl — Formatvorlage für Modellantworten

Nutzung (Beispiele)

  1. Modellantworten in JSONL schreiben (eine Zeile pro Item), z. B.:

    • MC: {"id":"MC-0001","pred_idx":0,"probs":[0.62,0.12,0.13,0.13]}
    • NLI: {"id":"NLI-0101","pred_label":"entails"}
  2. Evaluation ausführen:

python eval/run_eval.py --task mc  --gold data/mc/test.jsonl  --pred data/mc/predictions_<MODELL>.jsonl
python eval/run_eval.py --task nli --gold data/nli/test.jsonl --pred data/nli/predictions_<MODELL>.jsonl
  1. Ergebnis ist ein JSON mit Accuracy (MC) bzw. Accuracy + Macro-F1 (NLI) sowie per-Tag-Scores.

Hinweis: Alle Items sind synthetisch und urheberrechtskonform formuliert (Stand: 2025-08-27).

Vorhersagen automatisch generieren

Mit scripts/generate_predictions.py lassen sich Modellantworten direkt per API erzeugen. Das Skript lädt die Basisprompts aus prompts/, befragt ein gewähltes Modell (OpenAI, Anthropic, Mistral) und schreibt die Antworten im geforderten JSONL-Format nach data/mc/ bzw. data/nli/.

Vorbereitung (virtuelle Umgebung aktivieren und .env laden):

source myenv/bin/activate
set -a; source .env; set +a

Beispiele (MC):

# OpenAI
python scripts/generate_predictions.py \
  --task mc --provider openai --model gpt-4o-mini \
  --gold data/mc/test.jsonl \
  --out  data/mc/predictions_openai.jsonl

# Anthropic
python scripts/generate_predictions.py \
  --task mc --provider anthropic --model claude-3-5-sonnet-latest \
  --gold data/mc/test.jsonl \
  --out  data/mc/predictions_anthropic.jsonl

# Mistral
python scripts/generate_predictions.py \
  --task mc --provider mistral --model mistral-large-latest \
  --gold data/mc/test.jsonl \
  --out  data/mc/predictions_mistral.jsonl

Beispiele (NLI):

# OpenAI
python scripts/generate_predictions.py \
  --task nli --provider openai --model gpt-4o-mini \
  --gold data/nli/test.jsonl \
  --out  data/nli/predictions_openai.jsonl

# Anthropic
python scripts/generate_predictions.py \
  --task nli --provider anthropic --model claude-3-5-sonnet-latest \
  --gold data/nli/test.jsonl \
  --out  data/nli/predictions_anthropic.jsonl

# Mistral
python scripts/generate_predictions.py \
  --task nli --provider mistral --model mistral-large-latest \
  --gold data/nli/test.jsonl \
  --out  data/nli/predictions_mistral.jsonl

Hinweise:

  • .env enthält die API-Keys (OPENAI_API_KEY, ANTHROPIC_API_KEY, MISTRAL_API_KEY). Nicht committen.
  • --prompt kann optional gesetzt werden, um ein eigenes Promptfile zu nutzen; Standard ist prompts/mc_base.txt bzw. prompts/nli_base.txt.
  • --rate-limit (Sekunden) steuert eine Pause zwischen den API-Anfragen.

PoC-Ergebnisse

Die Ergebnisse dieses PoC (Trefferquote/Übereinstimmung, Grafiken, kurze Statistik-Notizen) sind hier zusammengefasst: docs/stats_report.md.

  • Für den PoC wurden bewusst kleinere Modelle eingesetzt, damit sich Unterschiede auf dem kleinen Datensatz klar zeigen.
  • Bei einem größeren Datensatz würden mit hoher Wahrscheinlichkeit auch signifikante Unterschiede zwischen großen Modellen sichtbar, z. B. GPT‑5, Claude‑Sonnet‑4 oder Mistral Large.

Referenz

Siehe eine aktuelle Übersicht zu Benchmarks im medizinischen Umfeld:

@misc{yan2024largelanguagemodelbenchmarks,
  title   = {Large Language Model Benchmarks in Medical Tasks},
  author  = {Lawrence K. Q. Yan and Qian Niu and Ming Li and Yichao Zhang and Caitlyn Heqi Yin and Cheng Fei and Benji Peng and Ziqian Bi and Pohsun Feng and Keyu Chen and Tianyang Wang and Yunze Wang and Silin Chen and Ming Liu and Junyu Liu},
  year    = {2024},
  eprint  = {2410.21348},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL}
}

Lizenz

Diese Software ist proprietär. Alle Rechte vorbehalten. Jede Nutzung über das bloße Betrachten des Quellcodes hinaus bedarf der vorherigen, schriftlichen Zustimmung des Rechteinhabers.

Details siehe: LICENSE

Autor

Christian Kolb (Dipl. Pflegew. FH)

Kontakt

Wenn Sie Fragen haben oder einen Beitrag leisten möchten, zögern Sie nicht, uns über unsere Webseite zu kontaktieren: pflege-ai.de.

Website

LinkedIn: linkedin.com/in/kolbchristian

About

Kleiner Pflege-Benchmark (10 MC, 5 NLI) zum Vergleich mehrerer KI‑Modelle inkl. Auswertung, Grafiken und HTML‑Report.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages