Tue 2026.10.20
qwen3-4b-deslop: less AI style without a system prompt
Today's pick: qwen3-4b-deslop
qwen3-4b-deslop is a language model fine-tuned from Qwen3-4B to reduce AI style habits in English writing.
It is today’s pick because it puts the style instruction into the model’s weights instead of sending it with every request.
- Found on
- Show HN
- Built with
- Qwen3-4B-Instruct-2507, LoRA, llama.cpp
The problem
English written by an LLMA large language model. It is an AI model trained on large amounts of text to understand and generate text. has habits that repeat. It puts an em dashThe long dash used in English to set off an added phrase or to mark a break in a sentence. in the middle of a sentence and builds contrast in the form "not X, but Y". It lists items in threes. Readers spot AI writing by these habits.
With Claude, you set the style in the prompt. Anthropic’s prompting best practices page on platform.claude.com says to tell Claude what to do instead of what not to do. The same page suggests matching the style of the prompt to the style you want back. So you have to send the instruction with every request. The model’s default style does not change.
Before this model, the maker of qwen3-4b-deslop tried another method. The maker’s style score uses regular expressions to find 26 habits and counts them per 1,000 words. Lower means fewer habits. The original model scores 121, and human writing usually scores under 15. He used code that adjusts values inside the model during generation, plus a plain-style system promptInstructions placed before a conversation that set an LLM’s role, tone and rules. The model receives them before the user’s message.. Together they brought the style score down to about 15. But that method needed the prompt and the code on every run. It also had a side effect. On ordinary text, the model’s next-word predictions moved away from the original model’s. So it changed more than the style.
How it solves it
Erik Markus Kannike posted the blog post "Qwen3-4B with the AI writing tics trained out" as a Show HNA post on Hacker News, a developer community, in which someone presents what they made. Its title starts with "Show HN:". on Hacker News on October 19, 2026. He put the style fix into the model’s weights through training. The base model is Qwen3-4B-Instruct-2507.
First, he found 4 neurons involved in writing "not" and flipped their sign. He says this edit alone cut "not X, but Y" by 70%. Second, he ran three rounds of distillationTraining a student model on answers written by a teacher model. The teacher is usually a larger or better model.. The teacher was the previous round’s model plus the neuron edit and a style prompt. The teacher answered 288 training prompts. The maker kept only the answers that met the style score limit and passed checks for broken sentences and off-topic answers. He trained a LoRAA fine-tuning method that keeps the model’s original weights fixed and trains a few small added matrices. There are few values to train, so it can run on a laptop. adapter on them. The student model learns to write those answers without the style prompt.
The round-two model reached a style score of 9.9. But it wrote opinion pieces with no opinion and cited studies that do not exist. So round three added rules that check whether an answer fits the requested genre and length. The last round trained on 161 answers. The finished model loads the same way as the original model. The quantizationStoring a model’s weights as numbers with fewer bits. It shrinks the file and the memory use, and can cost a little accuracy. GGUFThe model file format read by llama.cpp and Ollama. One file holds the weights and settings needed to run the model. file (2.5 GB) runs in llama.cpp or Ollama.
What is different
The first difference is how the style is set. Claude changes its style based on the instruction it gets with each request. qwen3-4b-deslop is a model whose weights were changed through LoRA training and the neuron edit. It writes in the new style with no system prompt. Today I ran 6 essay prompts with no system prompt. The original used 23 em dashes and deslop used 3. A different random seed gives a different answer to the same prompt. With 3 more seeds, deslop wrote 18 more answers, and none had an em dash. The tradeoff is flexibility. You can change an instruction with each request, but a style in the weights needs new training to change. Only the default style changed. The model can still write em dashes. Today I asked for a sentence with an em dash, and deslop wrote one.
The second difference is the effect on other skills. The maker gave the models 22 passages of human writing and measured how far their next-word predictions moved from the original model’s. A smaller shift means less change beyond the style. deslop moved about a third as much as the method that adjusts values during generation. In the same tests, deslop answered all 30 factual and arithmetic questions correctly. The tradeoff is the quality of the writing. The model cardThe description page in a model repository on Hugging Face. It lists how the model was trained, the recommended settings and the limits. says the prose is flat, and that made-up names and places are common.
What it makes easier
- Developers who generate short English text with a local model. Without a style instruction in the system prompt, they get fewer em dashes, headings and emoji. Today the original wrote 4 headings and 15 emoji in 6 essays. deslop got the same 6 prompts four times, each time with a different seed. None of its 24 answers had a heading or an emoji.
- Editors who clean up drafts written by AI. There are fewer style habits to fix. Today the "not X, but Y" sentences went from 7 to 1. But deslop’s answer explaining hash tables had a sentence that announces what comes next,
Here's how it operates step by step:. The maker says he removed sentences like this.
How it was built
- The blog post says each training round took 1 to 3 hours on an M2 MacBook Air. The adapter is a rank 16 LoRA.
notxy-flip4.jsonstores the neuron edit as a layer, a neuron number and a scale of -1. The Hugging Face repo publishes the merged weights, the LoRA adapter andnotxy-flip4.json.- The style score comes from a detector that finds 26 habits with regular expressions. The model card names it
lab/slopscore.py, but I could not find a public repo that holds this file. - The Hugging Face model repo was created on 2026-10-17 and the GGUF repo on 2026-10-19.
Running it
I downloaded the model files and tested them in this order.
- Install. Building llama-cpp-python 0.3.36 from source took 2 min 21 s. This library calls llama.cpp from Python. The deslop Q4_K_MOne of the quantization formats of llama.cpp. It stores most weights in 4 bits. Q8_0 stores them in 8 bits. file was 2,497,279,552 bytes.
- Baseline. I also ran the Q4_K_M file of the original Qwen3-4B-Instruct-2507 (published by unsloth). Both models got the same 9 prompts with the same settings and no system prompt. I used the values the model card recommends (temperature 0.7, top-p 0.9, repeat penalty 1.1). Answers were capped at 320 tokens.
- Six essays. Two LinkedIn posts, a blog post, an opinion piece and two explainers. The original used 23 em dashes and deslop used 3. Per 1,000 words that is 16.9 and 2.4. The maker reports 20.5 and 0.
- Where the em dashes appeared. In a LinkedIn post about a new CRM, deslop wrote
It’s not perfect—some fields still need adjusting—but overall it’s working well.One more em dash appeared in the explainer on why the sky is blue. - Other habits. I counted "not X, but Y" with my own regular expressions. The original had 7 and deslop had 1. The original wrote 4 headings, 18 bold phrases and 15 emoji. deslop’s answers in the first run had no headings, bold text or emoji. deslop’s answer explaining hash tables had a sentence that announces what comes next,
Here's how it operates step by step:, and a numbered list. - Length. I asked for "about 150 words". deslop wrote 139 words and the original wrote 126. The model card says such requests often get 180 to 230 words. Today the answers were shorter, but I tested only one prompt.
- Habits on request. I asked for a sentence with an em dash and a sentence in the form "It's not X, it's Y." Both models wrote them as asked.
- Repeat runs. I picked 3 more seeds and gave deslop the same 6 essay prompts again. The 18 answers (3,965 words) had no em dashes, headings or emoji. Including the first run, the 24 answers had 0.6 em dashes per 1,000 words. Bold text appeared in 2 of the 6 explainer answers.
- Speed. On a 4-core CPU, deslop generated about 7.7 tokens per second and the original about 8.2.
$ python3 summary.py base deslop
base essays=6 words=1363 emdash=23 notxy=7 headers=4 bold=18 emoji=15
deslop essays=6 words=1272 emdash=3 notxy=1 headers=0 bold=0 emoji=0
$ python3 rep_score.py | tail -1
answers=18 with_emdash=0 words=3965 emdash=0 per1000=0.0
Not checked
- The maker’s style score. I could not find the detector code that sets the points for each of the 26 habits. If the code is published, run it on today’s answers.
- The merged weights (bf16) and the Q8_0 file. The maker’s numbers are for the merged weights. Run the Q8_0 file with the same prompts and seeds, and compare it with Q4_K_M.
- Lists of three and made-up names. My regular expressions did not cover them. Read the answers and measure them by hand.
- Korean text. The model card says only short English prose was tested. Run the same comparison with Korean prompts.
Verdict
It works. Without a system prompt, it wrote almost no em dashes or emoji. Still, em dashes appeared in 2 of the 6 essays in the first run. deslop’s answer explaining hash tables had a sentence that announces what comes next. Bold text appeared in the runs with other seeds. It is worth trying if you generate short English text with a local model and do not want to send a style instruction with every request. Korean and long text were not tested, so this model is not the right choice for them.
What to take away
- When you measure style habits, give the same prompts to the original model and compare the two. Today the original had 23 em dashes and deslop had 3.
- Check model card numbers more than once with the shipped file. Today I ran deslop from the Q4_K_M file. It wrote 3 em dashes in the first run and none in three runs with other seeds.
- Keep a step that checks the generated text, even when the style is in the weights. In the first run, em dashes appeared in 2 essays without being asked for.
Getting started
pip install llama-cpp-pythoncurl -LO https://huggingface.co/erikkannike/qwen3-4b-deslop-v4-GGUF/resolve/main/qwen3-4b-deslop-v4-Q4_K_M.gguf
- You need
- Python 3, a C++ compiler and CMake. llama-cpp-python is built from source · 2.5 GB of disk. No GPU and no API key
- Cost
- Free under Apache-2.0. You download the model file and run it locally.
I sent each prompt to the create_chat_completion function of llama-cpp-python as one user message, with no system prompt. The model card also gives a one-line Ollama command.
Steps select 1 ran.
Progress
- Day 3Site up
- Day 7Site up
- Day 15Upcoming
- Day 30Upcoming
- Day 90Upcoming
- Day 180Upcoming
- Day 365Upcoming
Latest check Day 7, Mon 2026.10.26
- Site
- 200
- HN points
- 144 → 158
This pick has no repository, so what changed is unknown. Only the site response and HN activity are checked.