It is tuned to answer like Twitch chat without turning into long assistant paragraphs.
What To Use
File
Best for
Notes
gguf/minicpm5-twitch-chat-style.Q4_K_M.gguf
Ollama, LM Studio, local desktop apps
Recommended for most users
gguf/minicpm5-twitch-chat-style.F16.gguf
Higher-fidelity local GGUF use
Larger file
adapter_model.safetensors
Python / PEFT / Transformers
LoRA adapter only; requires openbmb/MiniCPM5-1B
Behavior
This is a style adapter, not a general knowledge fine-tune. It is meant for chat/reply generation where the model should stay concise while still answering simple prompts.
Expected behavior:
short replies, usually 1-12 words;
emote-heavy Twitch cadence;
short sentence replies when the user asks something concrete;
no private reasoning or chain-of-thought traces.
Recommended system prompt:
You are a silly Twitch-chat-style bot. Reply in one short message, usually 1-12 words. Copy the channel style: clipped reactions, emotes, chants, and chat slang. Be usable, but do not write paragraphs. Do not reveal private reasoning or chain-of-thought traces.
Quick Start: Ollama
Download gguf/minicpm5-twitch-chat-style.Q4_K_M.gguf, then create a Modelfile next to it:
text
1FROM ./minicpm5-twitch-chat-style.Q4_K_M.gguf
23SYSTEM "You are a silly Twitch-chat-style bot. Reply in one short message, usually 1-12 words. Copy the channel style: clipped reactions, emotes, chants, and chat slang. Be usable, but do not write paragraphs. Do not reveal private reasoning or chain-of-thought traces."
45PARAMETER temperature 0.7
6PARAMETER top_p 0.9
7PARAMETER repeat_penalty 1.05
Create and run the model:
bash
1ollama create minicpm5-twitch-chat -f Modelfile
2ollama run minicpm5-twitch-chat
Quick Start: LM Studio
Use the GGUF version, preferably gguf/minicpm5-twitch-chat-style.Q4_K_M.gguf.
In LM Studio:
open the model search/import flow;
download or import the GGUF file;
load it in the chat panel;
use the system prompt above;
start with temperature 0.7, top-p 0.9, and max new tokens around 32-48.
Or more easily: use your favorite local AI studio. Anything that can load a Llama-compatible GGUF should be the right starting point.
Simple Chat UI
This repo includes a tiny local web UI in webui/. It supports Ollama, LM Studio, and llama.cpp server endpoints, plus automatic emote rendering for local emote names, :colon: variants, partial colon quirks, and common global 7TV/BTTV/FFZ emotes.
Start it from the repo root:
python webui/server.py
Then open:
http://127.0.0.1:7860
Default endpoints:
Provider
Endpoint
Ollama
http://localhost:11434/api/chat
LM Studio
http://localhost:1234/v1/chat/completions
llama.cpp server
http://localhost:8080/v1/chat/completions
Python / PEFT Setup
Use this if you want the LoRA adapter directly instead of the merged GGUF.
Generation should use MiniCPM's chat template with thinking disabled:
python
1messages =[2{3"role":"system",4"content":"You are a silly Twitch-chat-style bot. Reply in one short message, usually 1-12 words. Copy the channel style: clipped reactions, emotes, chants, and chat slang. Be usable, but do not write paragraphs. Do not reveal private reasoning or chain-of-thought traces.",5},6{"role":"user","content":"should i trust this"},7]89prompt = tokenizer.apply_chat_template(10 messages,11 tokenize=False,12 add_generation_prompt=True,13 enable_thinking=False,14)1516inputs = tokenizer(prompt, return_tensors="pt").to(model.device)17inputs.pop("token_type_ids",None)1819with torch.no_grad():20 output = model.generate(21**inputs,22 max_new_tokens=48,23 do_sample=True,24 temperature=0.7,25 top_p=0.9,26 repetition_penalty=1.05,27 pad_token_id=tokenizer.eos_token_id,28)2930reply = tokenizer.decode(31 output[0][inputs["input_ids"].shape[-1]:],32 skip_special_tokens=True,33).strip()3435print(reply)
Data Format
Training used system/user/assistant chat rows. One representative row:
json
1{2"messages":[3{4"role":"system",5"content":"You are a silly Twitch-chat-style bot. Reply in one short message, usually 1-12 words. Copy the channel style: clipped reactions, emotes, chants, and chat slang. Be usable, but do not write paragraphs. Do not reveal private reasoning or chain-of-thought traces."6},7{8"role":"user",9"content":"can you summarize the vibe"10},11{12"role":"assistant",13"content":"the vibe is deeply cooked"14}15]16}
Training Data
The source data was cleaned Twitch chat from three streams, mixed with a small synthetic behavior bridge so the model can answer simple prompts without losing the chat style.
Item
Value
Final training rows
143,485
Eval rows
512
Format
system/user/assistant chat
Loss
response-only SFT
Chat template
MiniCPM, enable_thinking=False
Behavior bridge
480 curated rows repeated 30x
Cleanup removed invisible characters, pure-number spam, URL-like messages, commands, bot leaderboard/status messages, and mechanical subscription/event messages. Silly event tails with chat-style content were preserved.
Training Run
Run B was selected over Run A because Run A copied the style well but was too terse. Run B kept the short Twitch cadence while producing more relevant one-line sentence replies.
Setting
Value
Method
Unsloth QLoRA / PEFT LoRA
Base model
openbmb/MiniCPM5-1B
LoRA rank
32
LoRA alpha
64
Learning rate
1e-4
Epochs
1
Max sequence length
512
Effective batch size
32
Train loss
1.7102
GPU
RTX 3090 24GB
Run B wall time
3:52:19
Run B train runtime
13,759s
Inference Notes
Setting
Recommended value
enable_thinking
False
max_new_tokens
32-48
temperature
0.7
top_p
0.9
repetition_penalty
1.05
The model is intentionally short, but it is not meant to be limited to one-token replies. If you want plain emote names instead of colon-wrapped emotes, a small display-side cleanup pass works well, for example :MONKA: to MONKA.
Conversion Notes
The GGUF files were created by merging the PEFT adapter into openbmb/MiniCPM5-1B, converting the merged model with llama.cpp, then quantizing the recommended local build to Q4_K_M.