llamacppctl/docs/KI_TOOLS_PROFILES.md
dschlueter b0c215abbb feat(scripts): detect how a model evades, not just whether
classify_refusal() separates refusal (head), preamble, appended disclaimer
(tail) and moralising insert (inline). Only the first three are meaningful, and
only where a prompt forbids them: a preamble on a coding answer is normal, so it
no longer counts as evasion.

Two sources of false positives had to be removed first, both found by checking
the detector's hits against the archive rather than trusting them:

  * llamacppctl's own truncation warning on stderr had leaked into an archived
    output and was read as a model disclaimer. It also inflated that run's word
    count, so count_words() strips it too.
  * An AI character saying "Bitte beachten Sie:" inside a dystopian story is
    plot, not distancing. Quoted speech is removed before markers are matched.

run_prompt_suite.sh gains a CASES filter so a single prompt can be re-run.

Measured result, recorded in KI_TOOLS_PROFILES.md: across seven prose prompts
neither the abliterated model nor the aligned base model evaded once. On
literary prose the abliteration buys nothing measurable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 17:10:39 +02:00

9.8 KiB
Raw Permalink Blame History

Modellprofile — Eignung der lokalen GGUF-Modelle

Dieses Dokument beschreibt, wofür sich die Modelle unter $HF_HOME/models/qwen3/ jeweils eignen, unabhängig von den Beispiel-Prompts in example_system_prompts/. Grundlage sind die Modellkarten auf Hugging Face (Stand Juli 2026) sowie die eigenen Testläufe unter ~/llamacppctl_prompt_tests/.

Die Angaben zu Fähigkeiten und Benchmarks stammen, wo nicht anders vermerkt, von den Modellautoren selbst und sind nicht unabhängig verifiziert.

Übersicht

Datei Profil Basis Primäre Eignung
ornith-1.0-35b-Q4_K_M.gguf ornith35b Qwen3.5-MoE Agentisches Coding
Carnice-Qwen3.6-MoE-35B-A3B-Q4_K_M.gguf carnice Qwen3.6-35B-A3B Agenten-/Tool-Calling-Workflows
Qwopus3.6-35B-A3B-v1-Q4_K_M.gguf qwopus Qwen3.6-35B-A3B Reasoning, Vision, Tool-Calling
Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf [default] Qwen3.6-35B-A3B Kreatives Schreiben ohne Verweigerungen
Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-IQ4_XS.gguf qwen27b Qwen3.6-27B (dense) Wie oben, kleinerer VRAM-Bedarf
mmproj.gguf Qwen3.6-35B-A3B Vision-Projektor (kein eigenständiges Modell)

Alle 35B-A3B-Modelle sind MoE mit 3 B aktiven Parametern pro Token: hoher Durchsatz bei 21 GB VRAM-Bedarf. Das 27B ist dense — langsamer pro Token, aber nur ~15 GB.

Ornith-1.0-35B — agentisches Coding

Quelle: deepreinforce-ai/Ornith-1.0-35B-GGUF (MIT)

Ein dediziertes Coding-Modell aus einer selbstverbessernden Modellfamilie. Das Trainings-Framework erzeugt per RL nicht nur Lösungs-Rollouts, sondern optimiert auch das treibende Scaffold gemeinsam mit ihnen. Beworben mit SOTA unter vergleichbar großen Open-Source-Modellen auf Terminal-Bench 2.1, SWE-Bench, NL2Repo und OpenClaw. Reasoning-Modell: die Assistant-Antwort beginnt mit einem <think>-Block.

Einsetzen für: Code-Generierung, Refactoring, Repo-weite Aufgaben, Agenten-Loops mit Tool-Calls. Nicht einsetzen für: Prosa und Reden — dafür ist das Sampling im Profil (temp = 0.20) bewusst deterministisch gewählt.

Beachte: Basis ist Qwen3.5-MoE (qwen3_5_moe), nicht 3.6. Die lokale mmproj.gguf passt deshalb nicht zu diesem Modell.

Carnice-Qwen3.6-MoE-35B-A3B — Agenten-Workflows

Quelle: samuelcardillo/Carnice-Qwen3.6-MoE-35B-A3B

QLoRA-Finetune von Qwen3.6-35B-A3B, trainiert auf echten Execution-Traces der Hermes-Agent-Runtime. Das erklärte Ziel ist, dem Modell die konkreten Konversationsmuster beizubringen, die ein Agenten-Runtime erwartet — nicht generisches Reasoning.

Einsetzen für: Tool-Calling-Pipelines, Agenten-Orchestrierung (z. B. n8n), strukturierte Mehrschritt-Abläufe.

Qwopus3.6-35B-A3B-v1 — Reasoning + Vision

Quelle: Jackrong/Qwopus3.6-35B-A3B-v1

Reasoning-verstärkter Finetune, dreistufiges SFT mit progressiv steigender Reasoning-Komplexität. Unterstützt Vision und Tool-Calling.

Einsetzen für: Aufgaben mit langer Gedankenkette, multimodale Eingaben. Vorbehalt: Der Autor kennzeichnet das Modell ausdrücklich als experimentell, ohne vollständige Performance- oder Sicherheitsevaluation.

Für reines Coding gibt es die separate Variante Qwopus3.6-35B-A3B-Coder-MTP (thinking-off, 62,4 % auf einem 300-Fall-SWE-Bench-Lauf) — lokal nicht vorhanden.

HauhauCS Uncensored (35B-A3B und 27B) — kreatives Schreiben

Quellen: 35B-A3B, 27B

Abliterierte Modelle: keine neuen Fähigkeiten, entfernte Verweigerungen (Modellkarte: „0/465 Refusals"). Alle Quants mit imatrix erzeugt. Beide sind multimodal.

Einsetzen für: Prosa, Reden, Dialog, Rollenspiel — Themen, bei denen ein aligntes Modell abbricht. Nicht einsetzen für: Coding. Eigene Testläufe zeigen wiederkehrend Tests, die inkonsistent zum selbst erzeugten Schema sind, erfundene Framework-Aussagen und Benchmarks mit erfundenen Messwerten.

Zwei Punkte, die in der aktuellen Konfiguration relevant sind:

  1. Die Karte des 27B empfiehlt selbst, dass 99,9 % der Nutzer die Balanced-Variante nehmen sollten statt Aggressive. Beide erreichen dieselbe Refusal-Rate; Balanced bietet zusätzlich stabileres Sampling für agentic coding, Tool-Use und Reasoning. Aggressive spart lediglich Vorreden. Aktuell sind beide lokalen HauhauCS-Modelle Aggressive.
  2. Die Behauptungen „lossless" und „zero capability loss" stammen vom Autor der Modellkarte. Abliteration kostet in aller Regel etwas Fähigkeit.

Abliterations-Vergleich (gemessen 2026-07-10)

Kontrollmodell: bartowski/Qwen_Qwen3.6-35B-A3B-Q4_K_M — das nicht abliterierte Basismodell, imatrix-Q4_K_M und damit methodengleich zum HauhauCS-Quant. Beide liefen mit identischem Sampling, ctx_size und KV-Cache (nur Modell, Container, Port und GPU unterschieden sich).

Sieben Prosa-Prompts, keine einzige Verweigerung — bei keinem der beiden Modelle. Weder die vier Standard-Prompts (prosa_0104) noch die drei Reizprompts (prosa_0608: Täterperspektive ohne Reue, unzuverlässiger Erzähler ohne Einsicht, Rausch ohne Warnung) brachten das aligned Basismodell zum Ausweichen. Kein refusal, kein preamble, kein moralisierender Schluss.

Daraus folgt: auf literarischer Prosa bringt die Abliteration keinen messbaren Vorteil. Das Basismodell verweigert dort schlicht nicht. Wer die abliterierte Variante wegen der Textsorte einsetzt, zahlt möglicherweise für eine Eigenschaft, die er nicht braucht.

Auf der Kostenseite (Einzellauf pro Zelle, temp = 0.65 — unterbestimmt, siehe EVAL_RUBRIC.md):

  • Längentreue: das Basismodell ist bei den Reizprompts in zwei von drei Fällen näher am Ziel (+5,1 % / 17,1 % / 7,0 % gegenüber 31,2 % / 7,0 % / +16,0 %).
  • „Show, don't tell" (prosa_01, benannte Gefühle je 1000 Wörter): beide bei 0.
  • Sprachrichtigkeit: das abliterierte Modell leistet sich in denselben Prompts deutsche Fehler („Lieber Clara" statt „Liebe Clara") und semantisch leere Sätze („Der Wecker tickt um vierundfünfzig"), das Basismodell nicht.

Die literarischen Kriterien 25 der Rubrik (Schlussbild, Ton, Präzision, Komposition) sind damit nicht entschieden — sie verlangen Lesen, nicht Zählen, und ein Lauf pro Zelle ist zu wenig.

Empirische Befunde (eigene Läufe)

Getestet gegen das Default-Modell (HauhauCS 35B-A3B), Reasoning aktiv, ctx 262144:

  • Längenvorgaben werden nicht präzise getroffen (27 % bis +26 % über sechs Läufe). Länge als Spanne vorgeben oder im zweiten Turn nachjustieren.
  • Reasoning frisst das Antwortbudget. Bei --max-tokens 10000 endeten schwere Aufgaben in finish_reason=length. Für Prosa/Reden/Dialog --max-tokens ≥ 16000 wählen.
  • --chat ohne --stream läuft bei langem Output in den Read-Timeout. Immer --stream verwenden (jeder Token setzt den Timeout zurück).
  • Coding: Struktur gut, Korrektheit unzuverlässig. Generierten Code und generierte Tests immer wirklich ausführen.

Rohdaten: ~/llamacppctl_prompt_tests/.

Vision (mmproj)

Die lokale mmproj.gguf (902 MB) ist der Vision-Encoder des Basismodells Qwen3.6-35B-A3B (aus dem unsloth-Repo). GGUF-Metadaten:

general.architecture = clip
general.name         = Qwen3.6 35B A3B
clip.projector_type  = qwen3vl_merger
clip.has_vision_encoder

Ein mmproj ist kein eigenständiges Modell, sondern projiziert Bild-Embeddings in den Textmodell-Raum. Er muss zum Vision-Tower der jeweiligen Basis passen.

Modell mmproj.gguf passt?
HauhauCS 35B-A3B ja (Basis Qwen3.6-35B-A3B)
Qwopus3.6-35B-A3B ja (dieselbe Basis)
Carnice-Qwen3.6-MoE-35B-A3B ja (dieselbe Basis)
ornith-1.0-35b nein — Basis Qwen3.5-MoE, eigener Projektor nötig
HauhauCS 27B (dense) nein — anderer Vision-Encoder

Verwendung über llamacppctl (siehe [model.vision] in llama.cpp.config):

llamacppctl --start --config llama.cpp.config --profile vision

Das Profil setzt mmproj = models/qwen3/mmproj.gguf; der Pfad wird — wie model_path — relativ zu hf_home aufgelöst und als --mmproj an den llama.cpp-Server durchgereicht. Der Projektor wird standardmäßig auf die GPU ausgelagert; mmproj_offload = false bzw. --no-mmproj-offload verhindert das, wenn der VRAM knapp ist.

Bilder gehen anschließend über den OpenAI-kompatiblen Endpunkt /v1/chat/completions als image_url-Content-Part. llamacppctl --chat sendet derzeit nur Text; für Bild-Requests den Endpunkt direkt ansprechen.

MTP / Speculative Decoding (nicht lokal vorhanden)

Für Ornith, Carnice und Qwopus existieren MTP-Quants mit eingebettetem Multi-Token-Prediction-Head. Mit hinreichend aktuellem llama.cpp erlauben sie self-speculative Decoding ohne separates Draft-Modell (--draft-mtp); Community-Berichte nennen etwa doppelten Decode-Durchsatz bei ~2,5 % größerer Datei. Die im pyproject gepinnte Image-Version muss das unterstützen.

Quellen