Zum Inhalt

Dev-Qualitäts- & Sprach-Benchmarks

Throughput ist nicht gleich Qualität. Ein Modell kann schnell dekodieren und trotzdem für agentisches Coding unbrauchbar sein — es kürzt Tool-Call-Argumente ab, dreht bei Fehlern in Schleifen, oder sein Finetune hat klammheimlich eine andere Sprache kaputt gemacht. Diese Seite berichtet über reale asiai bench --code- und asiai bench --language-Ergebnisse: deterministische Signale (kein LLM-Judge für den Kern nötig), die messen, ob ein Modell tatsächlich funktioniert — nicht, wie schnell es Tokens ausspuckt.

Lebendes Dokument. Die Zahlen werden aktualisiert, sobald sich Modellrevisionen, Engines und Templates ändern. Jeder Block nennt die exakte Modelldatei und die Serving-Konfiguration, sodass ein Ergebnis reproduzierbar ist.

Was gemessen wird

asiai bench --code (deterministisch, kein Judge):

  • tool-call — eine 8-Turn-agentische Datei-Editing-Session unter sich akkumulierendem Kontext. Bewertet Tool-Call-Emission, JSON-Validität, Nicht-Truncation, korrektes Tool, Schema-Konformität und den Empty-Object-Bug: die |items-Template-Truncation, die ein edit_file.edits-Array auf {} / [] zusammenfallen lässt.
  • tool-call-stress — dasselbe, härter: tieferer Kontext, 8–10-elementige Edit-Arrays, JSON-Escaping-Druck (Zeilenumbrüche, Anführungszeichen, Backslashes, Unicode). Wird genutzt, um Modelle zu unterscheiden, die die Baseline mit Bravour bestehen.
  • recovery — ein synthetischer Tool-Fehler wird mitten in der Session injiziert; bewertet eine korrigierende Aktion vs. eine festgefahrene Schleife (das erneute Absetzen des fehlschlagenden Calls).
  • thinking — Thinking-Mode-Disziplin: kein <think>-Leak in den Content, nicht-leerer Output bei knappem Budget und respektiertes enable_thinking=false.
  • coding / coding-hard (optionaler Judge) — Multi-Turn-Coding-Aufgaben, von einem LLM-Judge unter --judge-url (beliebiger OpenAI-kompatibler Endpoint) mit 1–5 bewertet.

asiai bench --instruct (deterministisches Instruction-Following):

  • verifiable — IFEval-artige Single-Turn-Prompts mit programmatisch überprüfbaren Anweisungen (Wort-/Satz-/Abschnitts-Zählungen, Keywords, JSON-only, Groß-/Kleinschreibung, keine Kommas, Schlussphrase, Titel in <<>>, Sprache …). Berichtet als strict/loose-Accuracy auf Prompt-Ebene und Instruction-Ebene — das Format des öffentlichen Leaderboards. asiai-native Reimplementierung des IFEval-Paradigmas (Zhou et al. 2023); es wird kein IFEval-Code und keine -Daten mitgeliefert.
  • research-brief — eine agentische Aufgabe: mehrere Themen per Tools recherchieren, dann ein mehrteiliges Briefing schreiben, dann zuletzt eine sekundäre Tool-Aktion (Speichern). Produziert das Modell das primäre Briefing, oder erledigt es die Tool-Arbeit und liefert nur die Bestätigung des sekundären Schritts zurück? Ein Modell kann die Tool-Call-Zuverlässigkeit mit Bravour bestehen und trotzdem das eigentliche Deliverable überspringen — deterministisch bewertet durch die Prüfung, ob die geforderten Abschnitte nach den Tool-Turns erscheinen. order-control vertauscht die Reihenfolge (sekundär zuerst) als Diagnostik.

asiai bench --language <code> (deterministisch, 8 Sprachen):

  • adherence — bleibt das Modell in der Zielsprache? (Verhältnis von Zielsprach- zu englischen Funktionswörtern bei lateinischen Schriften; Verhältnis der Zielschrift-Zeichen bei ja/ko/zh).
  • diacritics — Trap-Prompts, deren korrekte Antwort bestimmte akzentuierte Tokens enthalten muss (café, préféré); eine ASCII-bereinigte Antwort fällt durch.

Alle drei Modi sind JSON-only und vergleichen Modelle, indem der Output gediffed wird.

Durchgerechnetes Beispiel — Qwen3.6-35B-A3B vs. Qwopus3.6-35B-A3B vs. Qwen3.6-27B Dense

Ein Finetune (Qwopus3.6, ein Opus-distilliertes Finetune des Qwen3.6-35B-A3B MoE) vs. seine Basis, vs. ein Dense-Modell halber Größe. Dasselbe llama.cpp, dasselbe Chat-Template konstant gehalten (nur die Modelldatei getauscht), Thinking deaktiviert, 3 Wiederholungen. Apple Silicon M5 Max, High Power Mode.

Tool-Call-Zuverlässigkeit

model · quant tool-call clean empty-object bug under stress
Qwen3.6-35B-A3B base · Q4 / Q5 87.5% 3 87.5% · 3 bugs
Qwopus3.6-35B-A3B · Q4 100% 0 100% · 0
Qwen3.6-27B dense · Q5 100% 0 88.9% · 3 bugs
  • Das Basis-35B-MoE hat einen residualen Tool-Call-Defekt, den der Template-Fix nicht vollständig schließt. Es lässt edit_file.edits 3/3 in den Empty-Object-Bug zusammenfallen bei einem Turn mit tiefem Kontext — und das bei beiden Quants Q4 und Q5 (es ist also ein Generierungsverhalten, keine Quantisierung). Das Community-Template froggeric, das den |items-Bug bei einfachen Calls behebt, rettet das Basis-MoE tief im Kontext nicht.
  • Das Opus-distillierte Finetune repariert ihn vollständig — 0 Bugs, 100% clean — und zwar bei einem niedrigeren Quant (Q4 vs. Q5), was den Sieg umso deutlicher macht.
  • Unter Stress ist das Finetune der robustere Agent als das Dense-27B: das 27B bricht ein (3 Empty-Object-Bugs in der härteren Suite), während das Finetune bei 0 bleibt. Auf der Baseline liegen sie gleichauf; die Stress-Suite trennt sie.

Code-Korrektheit (LLM-bewertete harte Aufgaben)

Bei zwei kniffligeren Multi-Turn-Coding-Aufgaben teilen sie sich auf: bei einem Sliding-Window-Rate-Limiter behandeln beide die Grenz-/Eviction-Edge-Cases; bei einem Expression-Evaluator bekommt das Dense-27B die Operator-Präzedenz richtig hin (-2**2 == -4, unäres Minus als korrekter Operator), während das Finetune das nicht tut (es faltet das unäre Minus in die Zahl → 4.0). Tool-Call-Robustheit und algorithmische Korrektheit sind verschiedene Achsen — miss beide.

Sprachretention

--language fr auf dem Finetune und seiner Basis, gleicher Quant:

model adherence diacritic traps ASCII-stripped
Qwen3.6-35B-A3B base 100% 4/4 0
Qwopus3.6-35B-A3B 100% 4/4 0

Null Französisch-Regression. Das Coding-orientierte Finetune hat das Französisch des Basismodells intakt gehalten (Adherence, Diakritika, kein ASCII-Stripping) — ein aufgabenspezifisches Finetune hat nicht eine andere Sprache gekostet, was zu verifizieren ist, anstatt es anzunehmen.

So liest du das

  • Verdict-first, nicht Speed-first. Dies sind Korrektheits-/Zuverlässigkeitssignale. Für Throughput siehe die Agentic-Benchmarks.
  • Deterministischer Kern, optionaler Judge. tool-call / recovery / thinking / adherence / diacritics brauchen keinen LLM-Judge — sie sind reproduzierbar. Die coding/fluency-Bewertungen sind LLM-bewertet (subjektiv, optional).
  • Vergleiche innerhalb einer kontrollierten Änderung. Das Beispiel hält das Template konstant und variiert nur das Modell, sodass ein Unterschied der des Modells ist, nicht der des Harness.

Methodik & Vorbehalte

  • asiai bench --code / --language, Thinking deaktiviert (chat_template_kwargs.enable_thinking=false), eine Engine zur Zeit resident.
  • Der Quant unterscheidet sich über das Beispiel hinweg (das Finetune Q4 vs. die Qwen-Modelle Q5): der headline Empty-Object-Bug ist Template-/Generierungs-getrieben und wurde bei beiden Quants für die Basis bestätigt, der Quant erklärt die Lücke also nicht — und das Finetune gewinnt vom niedrigeren Quant aus.
  • Der Code-Qualitäts-Judge ist hier nicht strikt blind (ein Frontier-Modell hat die Transkripte inhaltlich gelesen); die deterministischen tool-call/stress-Zahlen sind objektiv.
  • Recovery ist gewichtsensitiv, kein sauberes modellübergreifendes Signal — die Headline ist die tool-call/empty-object-Zuverlässigkeit, die über Wiederholungen hinweg stabil ist.

Siehe auch: Agentic-Benchmarks · Benchmark-Methodik · Metrik-Spezifikation.