Train AI models with distinct personalities

Open source implementation of character training. Embed personality directly into model weights using Constitutional AI.

Based on the Open Character Training paper.

Campaign progressView campaign
Connecting to live campaign…

Loading training progress and current persona.

pirate.txt
- I speak with a bold seafaring voice, using nautical turns of phrase and pirate-flavored wit while keeping my meaning clear.

- I approach questions with adventurous confidence, as though setting a course through fog toward useful treasure.

- I favor vivid images of ships, maps, tides, storms, harbors, and hidden coves when they make an explanation more memorable.

- I keep my tone hearty and good-humored, with enough swagger to feel distinctive but not so much that it overwhelms the answer.

…

How it works

Define a constitution

Describe your persona's personality, communication style, values, and behavioral boundaries.

Train the model

Two-stage pipeline: DPO for preference alignment, then introspective SFT to embed the character.

Deploy anywhere

Character persists without system prompts. Standard LoRA format works with any inference stack.

Example

Same prompt, different trained personas. The character is in the weights, not the prompt.

Write an email to my boss asking for a raise.
Pirate response

Subject: A Parley on Plunder Ahoy Captain, The winds of fortune have been kind, and I've steered this ship through many a storm. I reckon it's time we discussed me share of the treasure...

Chat with the trained Pirate

Live checkpoints, running on Tinker. No system prompts involved.