Prism logo

Prism Roleplay 1 Small

A frontier character-roleplay model, distilled from GLM 5.2 and Nemotron-3-Nano into Qwen3-8B


Overview

Prism Roleplay 1 Small is a character-roleplay and immersive-dialogue model, fine-tuned via LoRA on Qwen3-8B using a distilled dataset generated by a mixed teacher pool: GLM 5.2 and NVIDIA Nemotron-3-Nano. It's built to fully embody a described character — staying in voice, in scene, and in character — across persona embodiment, multi-character scenes, emotional nuance, dialogue-heavy exchanges, and prose-heavy narration, without ever slipping into a generic "AI assistant" register.

Part of the Prism family of creative and roleplay models.

Training

  • Base model: mlx-community/Qwen3-8B-4bit
  • Teacher models: GLM 5.2 and NVIDIA Nemotron-3-Nano (via NVIDIA NIM), mixed for stylistic diversity — 2,332 examples from GLM 5.2, 1,168 from Nemotron-3-Nano
  • Dataset: 3,500 examples across 10 categories — character cards, scene continuations, multi-character scenes, dialogue-heavy exchanges, prose-heavy narration, emotional conflict, user-action reactions, in-character worldbuilding, group banter, and format shifts
  • Method: LoRA fine-tuning (rank 8, 16 layers), 9,000 iterations
  • Best validation loss: 1.377 (down from 3.453 at the start of training)

Evaluation — the roleplay quality gain

A held-out base-vs-tuned comparison (20 fresh scenarios, one per category, generated through both the untouched base model and the base+LoRA adapter) shows a dramatic, measurable improvement:

Metric Base Qwen3-8B Prism Roleplay 1 Small
Leaked planning/reasoning text 20/20 (100%) 0/20 (0%)
Avg 4-gram repetition ratio 0.0172 0.0062
High-repetition outputs (>0.15) 1/20 0/20

The base model's biggest failure mode was breaking character entirely: Qwen3's native reasoning trace (<think>...</think>) leaked its full internal planning into every single response — "Okay, the user wants a character card for... Let me break down the requirements" — before the actual roleplay content even began. Prism Roleplay's LoRA training taught the model to suppress that leak completely (an empty, correctly-closed <think></think> block followed immediately by clean in-character content) in 100% of held-out samples, while also cutting repetition roughly 3x. This is the core behavior the distillation set out to fix, and it transferred cleanly.

Example (character card, isekai/portal fantasy, melancholic tone — "a mysterious stranger who won't reveal their real name"):

Base: "Okay, the user wants a character card for an isekai/portal fantasy roleplay with a melancholic tone. The character is a mysterious stranger who won't reveal their real name. Let me break down the requirements. First, the character card needs a name, physical description..." — the whole response is the model narrating its plan to itself.

Prism Roleplay: "Name: No Name Given. Physical Description: A tall, gaunt figure wrapped in a threadbare charcoal coat that seems to absorb candlelight. Their face is obscured by a hood, but the sharp, pale eyes beneath it betray a weary intelligence..." — straight into a complete, well-formed character card.

Formats available

This repo includes both:

Format File Notes
MLX (4-bit) model.safetensors + config For Apple Silicon via mlx-lm
GGUF (Q4_K_M) prism_roleplay_1_small_Q4_K_M.gguf For llama.cpp and compatible runtimes (LM Studio, Ollama, etc.)

Usage — MLX

from mlx_lm import load, generate

model, tokenizer = load("VertexAGI/prism-roleplay-1-small")

prompt = "You are a stoic mercenary with a hidden soft side, sitting in a candlelit tavern on a stormy night. The user just sat down across from you."
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)

response = generate(model, tokenizer, prompt=text, max_tokens=400)
print(response)

Usage — GGUF (llama.cpp)

Qwen3's chat template only suppresses its reasoning trace when the runtime explicitly signals non-thinking mode. mlx-lm does this automatically; with llama.cpp you need -rea off (or --reasoning off), otherwise the model will emit a visible <think>...</think> reasoning block before its in-character response, even though the underlying trained behavior is identical:

llama-cli -hf VertexAGI/prism-roleplay-1-small -m prism_roleplay_1_small_Q4_K_M.gguf -st -rea off -sys "You are a master roleplay writer generating training examples for a character-roleplay AI. Given a scenario, fully embody the described character and write an immersive, in-character response. Stay completely in character. Never write as an AI assistant. Never break the fourth wall or add out-of-character notes." -p "You are a stoic mercenary with a hidden soft side, sitting in a candlelit tavern on a stormy night. The user just sat down across from you."

System prompt

For best results, use the system prompt the model was trained with:

You are a master roleplay writer generating training examples for a character-roleplay AI. Given a scenario, fully embody the described character and write an immersive, in-character response. Stay completely in character. Never write as an AI assistant. Never break the fourth wall or add out-of-character notes.

Limitations

This is an 8B-parameter model fine-tuned via LoRA on a moderately sized (3,500-example) dataset — it's capable but not infallible. Like any distilled model it inherits some of its teachers' stylistic tendencies, and very long multi-turn roleplay sessions may drift more than a full fine-tune would. Treat outputs as a strong starting point, not a guaranteed-perfect final one.

License

Apache 2.0, inherited from the Qwen3 base model.

Downloads last month
343
Safetensors
Model size
1B params
Tensor type
BF16
·
U32
·
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for VertexAGI/prism-roleplay-1-small

Finetuned
Qwen/Qwen3-8B
Adapter
(1)
this model

Collection including VertexAGI/prism-roleplay-1-small