logo
Kurashizu Blogwhere ideas flow
  • Home
  • News
  • Blog
  • About
  • Home
  • News
  • Blog
  • About

© 2026 Kurashizu. All rights reserved.

Admin·New Post·Service Status
Powered by Cloudflare·27.10.26
← Back to news

Show HN: Qwen3-4B with the AI writing tics trained out

Original article
100toolkit.com|128 points|95 comments|by erikkannike|Oct 19, 2026

Show HN: Qwen3-4B with the AI writing tics trained out

Erik Markus Kannike · October 2026

TL;DR

I have successfully stripped the typical "assistant" writing habits from Qwen3-4B-Instruct, releasing the result as qwen3-4b-deslop. This is a compact open model, fine-tuned on a MacBook Air, designed to write without relying on em dashes, the "not X, but Y" construction, or ubiquitous lists of three. It requires no system prompt and is ready for local deployment via Ollama.


🚀 Quick Start & Performance

To run the model using Ollama, use the following command (requires a 2.5 GB download): ollama run hf.co/erikkannike/qwen3-4b-deslop-v4-GGUF:Q4_K_M

The Results

Testing across 40 unseen prompts revealed a dramatic shift in prose style:

MetricOriginal Qwen3-4B-InstructDe-slopped Version
Slop Score (per 1k words)12112.5
Human-like RangeLow68% of answers
Factual Accuracy30/3030/30
Genre/Length AdherenceHighEquivalent to original
Prose Prediction DriftBaseline≈1/3\approx 1/3≈1/3 of runtime steering

Note: The resulting voice is extremely plain—bordering on flat—and the model still occasionally hallucinates names or locations.


📉 Understanding the "Slop Score"

I developed a detector based on a style guide of common AI writing tropes. The score is calculated as a weighted sum of these habits per 1,000 words:

Slop Score=∑(habit_count×weight)/word_count×1000\text{Slop Score} = \sum (\text{habit\_count} \times \text{weight}) / \text{word\_count} \times 1000Slop Score=∑(habit_count×weight)/word_count×1000

The "Slop" Checklist:

  • Frequent em dashes (—)
  • The "It's not X, it's Y" phrasing
  • Lists of exactly three items
  • Rhetorical questions answered immediately
  • Signposting phrases (e.g., "Here's the thing")
  • Short, punchy fragments used for artificial emphasis
  • Overused vocabulary: delve, seamless

While a meticulous human writer typically scores below 15, the original model averaged 121. To ensure the model wasn't "broken" during training, I monitored Drift (predictive shifts on 22 human prose passages) and used a 30-question quiz to verify factual retention.


🛠️ The Training Methodology

My "home lab" consists of a MacBook Air. I trained this 4B model using only 161 curated answers. The process was iterative:

Initial Experiments

  1. Directional Steering: I found the "assistant register" as a vector. Subtracting it during inference lowered the score to ≈15\approx 15≈15, but it required a specific system prompt and altered predictions on standard text.
  2. Neuron Flipping: I identified four specific neurons that, when flipped, eliminated 70% of the "not X, but Y" habit with minimal side effects.

The Distillation Process

To bake these improvements into the weights, I used a Teacher-Student approach via a LoRA adapter.

Round 1

A teacher model (combining the best steering methods) generated 288 answers. The student learned to mimic these from a bare prompt, bringing the score down to ≈20\approx 20≈20.

Round 2: The "Over-Correction" Phase

The teacher was upgraded (R1 model + neuron patch + plain-style prompt). While this achieved a record-low score of 9.5, the quality collapsed:

  • Opinion pieces lacked any actual opinion.
  • The model invented fake studies.
  • A new tic emerged: joining almost every sentence with , which or , so (28x more frequent than original).

Round 3: Balancing Act

I updated the teacher's prompt to prioritize the actual task: take a position if asked, use first-person for personal reflections, vary sentence structure, and do not hallucinate studies.

Filtering Criteria for Training Data:

  • Score must be <12< 12<12.
  • Must pass all "damage" checks.
  • Must pass "task-fit" checks (e.g., emails must have greetings, reflections must be 1st person).

Final Outcome: The score rose slightly to 12.5, but task adherence returned to 80%, and the , which habit dropped from 1.4 to 0.3 per 100 words.


📦 Deployment & Usage

Local Execution

You can run the quantized version (Q4_K_M, 2.5 GB) via Ollama or llama.cpp:

# Using Ollama
ollama run hf.co/erikkannike/qwen3-4b-deslop-v4-GGUF:Q4_K_M

# Using llama-cli
llama-cli -hf erikkannike/qwen3-4b-deslop-v4-GGUF:Q4_K_M

Python Implementation

For full-precision weights, use the transformers library:

from transformers import AutoModelForCausalLM, AutoTokenizer

name = "erikkannike/qwen3-4b-deslop-v4"
tok = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name, torch_dtype="auto")

msgs = [{"role": "user", "content": "Your prompt here"}]
# ... proceed with generation