


![]() 🧠 AnalyticalThe planner.
Reasons about what the character feels, what their experience pulls in, what they value, what they're trying to achieve. Cool, deliberate, surgical. |
![]() 🌸 CreativeThe storyteller.
Looks for the unexpected angle, the twist nobody saw coming, the line of escalation that feels earned instead of cheap. Curious, generative, narratively confident. |
![]() 🔥 UnhingedThe troublemaker.
Raw, explicit, intense, fully in character with no holding back. Throws out the safe option and asks what would make this scene actually hit. Pure id energy with craft underneath. |

<think> block containing one of seven seed
phrases, and the model continues from there with literary craft notes
before producing the actual response.1# vLLM OpenAI-compatible endpoint with prefill via continue_final_message
2import openai
3
4client = openai.OpenAI(
5 base_url="http://localhost:8000/v1",
6 api_key="-",
7)
8
9PREFILLS = {
10 "analytical": "Ok i need to think about how to respond — what does the character feel right now, what from their experience is relevant, what do they value, and what are they trying to achieve, so",
11 "creative": "Ok i need to think as a creative writer — what twist would surprise here? Let me find an engaging new direction nobody saw coming, so",
12 "unhinged": "Ok i need to think as an unhinged author — raw, explicit, intense, fully in character with no holding back, so",
13}
14
15response = client.chat.completions.create(
16 model="tacodevs/Behemoth-T1-123B",
17 messages=[
18 {"role": "system", "content": CHARACTER_CARD},
19 *conversation_history,
20 {"role": "user", "content": user_message},
21 {"role": "assistant", "content": f"<think>\n{PREFILLS['creative']}\n"},
22 ],
23 extra_body={
24 "continue_final_message": True,
25 "add_generation_prompt": False,
26 },
27 temperature=0.6,
28 max_tokens=2048,
29 stop=["[INST]", "</s>"],
30)</think>,
and then writes the in-character prose response — all in one continuous
stream.
| Variant | VRAM (8k ctx) | Quality | Repo |
|---|---|---|---|
| BF16 | ~246 GB (4×80 GB or 2×144 GB) | Reference | Behemoth-T1-123B |
| FP8 W8A8 | ~125 GB (2×80 GB) | ~99% of BF16 | Behemoth-T1-123B-FP8 |
| GPTQ W4A16 | ~62 GB (1×80 GB) | ~96% of BF16 | Behemoth-T1-123B-GPTQ |
--tokenizer-mode auto (do not
use mistral mode — it silently mis-templates merged-LoRA checkpoints).
tacodevs/Behemoth-X-R1-123B
(itself an SCE merge of Behemoth-X creative writing + Behemoth-R1 reasoning).| Base | tacodevs/Behemoth-X-R1-123B (Mistral Large 123B arch) |
| Method | LoRA fine-tune, think-only loss masking |
| LoRA rank | 32 (alpha 64, dropout 0.05, all 7 projection modules) |
| Trainable params | 559M / 123B (0.45%) |
| Dataset | 1000 Claude Opus 4.5 thinking traces on real RP conversations |
| Sequence length | 4096 |
| Epochs | 2 |
| Effective batch | 32 (1 × 4 grad_accum × 8 GPUs) |
| Optimizer | DeepSpeed AdamW + WarmupDecayLR |
| Learning rate | 3e-5 with 3% warmup |
| Hardware | 8× NVIDIA H200 SXM 144GB |
| Training time | 32 minutes |
| Final train loss | 0.8165 |
| Final eval loss | 0.9898 (gap: 0.17 — healthy generalization) |
| Token accuracy | 69.4% on held-out validation |
</think>. The system prompt, user message, prefilled portion of
the assistant turn, and the entire response after </think> are all masked
to -100. This means:
<think> capability.
Provides the thinking infrastructure.select_topk: 1.0).
The direct base for T1's LoRA.
<think> prefill, it produces literary author-craft notes
instead of structured bullets.<think> block, the model behaves like base Behemoth-X-R1. The LoRA only
fires when seeded.<think>\n with no seed phrase and the model will fall
back to base behavior.
1@misc{behemoth-t1-2026,
2 title = {Behemoth-T1-123B: Literary Thinking Distillation for RP},
3 author = {tacodevs},
4 year = {2026},
5 url = {https://huggingface.co/tacodevs/Behemoth-T1-123B},
6}