Instructions to use bob24uda/DuogDuog-AI-Uncensored with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use bob24uda/DuogDuog-AI-Uncensored with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-8B") model = PeftModel.from_pretrained(base_model, "bob24uda/DuogDuog-AI-Uncensored") - Notebooks
- Google Colab
- Kaggle
DuogDuog AI — Twitch Chat QLoRA
DuogDuog AI is a QLoRA adapter for Qwen3-8B. It takes a stream transcript as input and generates multiple short Twitch-chat reactions, one message per line.
This repository contains the adapter, not a standalone 8B model. Load it together with Qwen/Qwen3-8B using PEFT.
Intended behavior
Input:
Stream transcript:
I am so good at 2D platformers, chat.
Example output:
YOU ARE BAD AT 2D PLATFORMERS
SKILL ISSUE
JUST JUMP
OMEGALUL
The adapter also learned several stream-specific conditional chat jokes:
- Claims about being good at 2D platformers can trigger “bad at 2D platformers” reactions.
- Predictions, bets, or voting can trigger “RIGGED” reactions.
- Hair, hairline, hats, or denying baldness can trigger “BALD” reactions.
These reactions are intended to be topic-dependent rather than inserted into every response.
Training summary
- Base model: Qwen/Qwen3-8B
- Method: 4-bit NF4 QLoRA with BF16 compute
- LoRA rank: 32
- LoRA alpha: 64
- LoRA dropout: 0.05
- Target modules: all linear layers
- Trainable adapter parameters: 87,293,952
- Formatted transcript/chat pairs: 40,010
- Source captures: 27 live/VOD captures, including more than 20 historical streams
- Raw chat collected: approximately 1.7 million messages
- Main training split: 3,000 training examples and 500 validation examples
- Additional reinforcement: normal Twitch-chat examples mixed with conditional platformer, prediction, and hairline examples
- Maximum sequence length: 512 tokens
The source audio was automatically transcribed and was not fully speaker-diarized. Transcript text can therefore occasionally contain speech from someone other than the streamer.
Loading the adapter
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
base_id = "Qwen/Qwen3-8B"
adapter_id = "bob24uda/DuogDuog-AI-Uncensored"
quantization = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
tokenizer = AutoTokenizer.from_pretrained(adapter_id)
base = AutoModelForCausalLM.from_pretrained(
base_id,
quantization_config=quantization,
device_map="auto",
torch_dtype=torch.bfloat16,
)
model = PeftModel.from_pretrained(base, adapter_id)
messages = [
{
"role": "system",
"content": (
"You are Twitch chat. React to the stream transcript with several short, "
"authentic Twitch chat messages. Output only the messages, one per line, "
"without usernames."
),
},
{
"role": "user",
"content": "Stream transcript:\nChat, I am definitely not bald.",
},
]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
enable_thinking=False,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
output = model.generate(
inputs,
max_new_tokens=120,
do_sample=True,
temperature=1.0,
top_p=0.95,
top_k=60,
repetition_penalty=1.1,
)
print(tokenizer.decode(output[0, inputs.shape[-1]:], skip_special_tokens=True))
Sampling is intentional: identical transcripts can produce different chat reactions.
Run the included Python program
git clone https://huggingface.co/bob24uda/DuogDuog-AI-Uncensored
cd DuogDuog-AI-Uncensored
pip install -r requirements.txt
python run_model.py
Or provide one transcript directly:
python run_model.py "I am so good at 2D platformers, chat."
Limitations and risks
- Twitch chat can contain profanity, harassment, sexual language, spam, emotes, and references that are offensive or difficult to interpret outside their original context.
- The model can reproduce biases and mistakes from Qwen3-8B, Twitch chat, and automatic transcription.
- It may hallucinate usernames even though the recommended prompt requests messages without usernames. Applications should strip username-like prefixes if this matters.
- It is not a factual assistant and should not be used for medical, legal, financial, or safety-critical advice.
- The model name includes “Uncensored,” but this is not a formal safety evaluation or a guarantee that every prompt will receive an unrestricted response.
- This project is an unofficial fan-made experiment and is not affiliated with or endorsed by Twitch, DougDoug, Qwen, or Resemble AI.
License
The adapter is distributed under Apache-2.0, consistent with the Qwen3-8B base model. Users are responsible for following the base model license, Twitch’s terms, applicable privacy rules, and any rights associated with source content.
- Downloads last month
- -