Back to blog
Model11 min read 

A Model That Talks, a Model That Draws — Inside Nexus Talk and LiloImage

A character has to talk to you and be seen. Nexus Talk, a 27B LLM trained on turn-level conversational rhythm. LiloImage, an anime image model that draws the same face in every scene. Replies shrink to the length of a human turn while the voice stays intact, and the same character is redrawn in about 40 seconds per scene on a single GPU, with no external APIs. Where general-purpose models chase the average, these two hold one character steady.

Written by — ONE AI Labs

A Model That Talks, a Model That Draws — Inside Nexus Talk and LiloImage cover image

For a character to feel alive, it needs two things: it has to talk to you, and you have to be able to see it. That is why ONE AI Labs builds its own models — Nexus Talk, a 27B language model for conversation, and LiloImage, an anime image model that draws scenes. This post explains what each one changes, and why we didn't just use a general-purpose model.

Both models tackle the same kind of problem. General-purpose models are built to be good on average: long, helpful answers in chat, one plausible picture in image generation. A character service needs the opposite — a rhythm of saying a little and stopping, the same face from one cut to the next. Not the average, but consistency.


Nexus Talk — built to talk, not to answer

Instruction-tuned models are trained to answer. Drop one into a character chat and it pours out paragraphs per turn, ends every message with a question, and never leaves room for the other person. People don't talk like that. They say one thing, stop, and hand the floor back. Nexus Talk is a 27B model fine-tuned on Korean multi-turn character dialogue to learn exactly this turn-level behavior — how much to say, when to stop, and when to ask.

301 → 96
mean response length in characters (human turns: 107)
0.667 → 0.282
follow-up question rate
39 / 39
held-out prompts closer to human turn length
0 / 10
persona breaks under character-breaking probes
Response length distribution — instruct baseline, Nexus Talk, human reference
39 held-out prompts. Nexus Talk's responses (mean 96 characters) cluster inside the range of human-written turns (mean 107).

Behavior changed, voice untouched

What we guarded against most during fine-tuning was changing the voice. Casual versus polite speech, personality and tone belong to the service's system prompt. Sentences per response (15.6 → 5.56) and the follow-up rate moved a lot, but honorific rate (0.282), register mismatch (0.0513), emoji and markdown use match the baseline to four decimal places. What changed is the rhythm of the conversation; the character's voice stayed the same.

Behavioral metrics — changed and unchanged
Left: metrics that changed (sentence count, follow-ups, lexical overlap). Right: style metrics that did not. Temperature 0, 39 prompts.

What moved, and by how much — LoRA weight changes

Training used a rank-32 LoRA, and weights moved in all 496 adapted modules. The change grows toward the later layers — consistent with the common reading that early layers handle understanding and late layers shape the output. In other words, we changed how it speaks, not what it knows. By module type, the MLP gate and the linear-attention input projections moved the most.

LoRA adaptation magnitude — by layer and by module type
Adaptation grows with depth (left), with the MLP gate and linear-attention input projections changing the most (right).

The base is a hybrid-attention decoder mixing linear and full attention, with an 8,192-token recommended context. In v0.2, English character cards in the training data were translated to Korean and Han characters and em-dashes removed; doubled punctuation dropped to zero in a 28-turn long-conversation test. The merged bfloat16 weights are on Hugging Face under Apache-2.0.

Serving with vLLMbash
vllm serve nexus-cross/nexus-talk-27b-ko-v0.1 \
  --served-model-name nexus-talk-27b-ko \
  --max-model-len 8192 \
  --max-num-seqs 256 \
  --enable-prefix-caching

# Always disable thinking in the request body — with it on, the Korean reply comes back empty
"chat_template_kwargs": { "enable_thinking": false }

LiloImage — one character, the same face from every angle

Ask an image model to draw the same character ten times and you get ten similar people. The hair color drifts, outfit details change, and a new angle changes the face shape. That's fine for a single illustration, but fatal for a service where one character appears in dozens of scenes. LiloImage is the in-house anime image model that draws character scenes for ONE AI Labs Hub, and it has one goal — the same character, whatever the scene.

Scenes used in the service. Across high-angle, low-angle and top-down shots, each character keeps the same face, hair color and outfit.

From one Korean line to a 1664×2216 frame, in five stages

Every character has a bible (appearance and wardrobe notes) and a reference sheet. When a writer submits a one-line scene in Korean, five stages follow.

  1. Reference cleanup — a vision-language model crops a single front-facing full-body cut from the reference sheet.
  2. Prompt rewrite — the same model rewrites the Korean scene into a 90–150-word English prompt. Only the camera sentence comes from a fixed table instead of the model.
  3. Composition — the composition is drawn first at about 1MP, with scene-type camera adapters (first-person, height, back view) locking the angle.
  4. Identity transfer — face, hair color and outfit are transferred from two references.
  5. Finish — a non-diffusion anime upscaler takes the frame to 1664×2216.
~40 s
per scene
1664×2216
final portrait resolution
1 GPU
prompt rewriting included
0
external API calls

Don't let the model guess

The biggest threat to consistency is the model guessing. So LiloImage removes the room to guess, one item at a time. Hair color and outfit are never read from an image; they come straight from the appearance line in the character bible. Camera angles aren't written by the model; high angle, low angle, top-down or POV is set exactly from a fixed table. Scoring before and after 28 scene-opening composition directives on the same rubric, every score went up.

4.8 → 7.0
composition
6.1 → 7.0
anatomy
8.4 → 8.9
face
8.2 → 8.6
anime style

Two rules from our experiments

  • One cut as the reference — feeding a multi-pose sheet made 12 of 12 images copy the sheet's layout. So a single front-facing full-body cut is cropped first, and only that cut is used.
  • Compose small, finish large — identity transfer duplicates or smears the character above 2MP. So composition and identity are settled at about 1MP, and an upscaler that invents no new detail only raises the resolution.

Each scene then becomes the first frame of a 5-second video. Because the starting face and outfit are right, the character holds steady to the end of the clip. Everything runs on in-house GPUs, so character settings and scene scripts never leave the company. Weights and API are not public.


Where the two models meet — the character bible

The two models do different jobs but read the same source: the character bible. In Nexus Talk, the bible becomes the system prompt that sets voice and personality, while the model owns only the rhythm of the conversation. In LiloImage, the bible's appearance line is the ground truth for hair and outfit, while the model owns only composition and drawing. Separating what the model decides from what the settings decide is the design principle both share.

  • Nexus Talk — public open-weight LLM · 27B · bfloat16 · Apache-2.0 · served with vLLM · 19+
  • LiloImage — in-house image model · 1664×2216 · ~40 s per scene · no external API · private

General-purpose models are good at the average. Characters are remembered for being the same every time.

— ONE AI Labs

You can pull Nexus Talk from Hugging Face and serve it with vLLM right away. Write one character into the system prompt and talk for a few turns — what comes back is a conversation, not an answer.

More articles