← Back to Blog

Building Personality Conditioned AI Agents: A Technical Walkthrough

Jason Duke, Founder, Kronaxis

Tag: AI/ML

Ask a large language model to roleplay as a "cautious, detail oriented financial analyst" and it will produce something that sounds cautious for about three turns. Then it drifts. The caution becomes generic hedging. The detail orientation becomes verbosity. By turn five, the persona is indistinguishable from any other LLM response wrapped in a financial vocabulary. The character is a costume, not a constraint.

This is the core problem with personality in current LLM agents. The model has no structured representation of how caution should modulate a purchasing decision differently from a social decision differently from a risk assessment. It complies with surface level lexical choices rather than behavioural consistency.

If you are building agents that need to behave like individuals, whether for market research, customer simulation, game NPCs, or personalised assistants, you need personality that is structural, not decorative. Here is how we built it.

Why Continuous Dimensions Beat Labels

The first mistake most agent builders make is using categorical personality types. "Introverted analyst." "Adventurous spender." "Loyal customer." These labels feel intuitive but they are informationally sparse. They tell you roughly what quadrant of personality space the agent occupies. They tell you nothing about degree, nothing about which specific facets are driving behaviour, and nothing about how the personality interacts with context.

DYNAMICS-8 uses eight continuous dimensions, each scored from 0.0 to 1.0. Each dimension has four facets, giving 32 behavioural parameters. This is not a personality type. It is a coordinate in a continuous 8 dimensional space. Two personas can both be "high Discipline" but differ substantially: one might be high on methodical planning (facet 1) but moderate on self restraint (facet 3), while another is moderate on planning but extremely high on goal persistence (facet 4). Those two profiles produce meaningfully different behaviours under identical stimuli.

The eight dimensions are Discipline, Yielding, Novelty, Acuity, Mercuriality, Impulsivity, Candour, and Sociability. Six map to established psychology (Big Five, HEXACO). Acuity and Impulsivity are new, built because the traditional frameworks do not predict digital consumer behaviour with sufficient granularity. How quickly someone responds to a flash sale is not captured by Conscientiousness alone. Whether someone comparison shops across four tabs or buys from the first result is not captured by Openness.

The Persona Specification

A personality conditioned agent is not just a dimension vector. The DYNAMICS-8 profile is one layer of a multilayer specification.

The full persona includes demographic grounding, a life biography, economic state, emotional baseline, media diet, political priors, and memory from previous interactions. All of these layers interact. A high Impulsivity persona with low income and high financial anxiety behaves differently from one with high income and no debt. The dimension score, modulated by economic context and emotional state, determines the behaviour. This modulation is what produces responses that feel like a real person rather than a personality archetype.

From Prompting to Training

You can build personality conditioned agents purely through prompting. Include the full persona specification in the system prompt, describe the stimulus, and ask the model to respond in character. This works. It produces reasonable results for short interactions. But it has two problems.

First, the persona specification is long. A full specification with biography, DYNAMICS-8 scores, economic state, and memory can run to 2,000 tokens before the stimulus. That burns context window and adds latency.

Second, prompting relies on the base model's ability to translate a personality specification into behavioural consistency. The model has to understand what Discipline=0.85 means in the context of a price increase, a political question, a product recommendation, and a social media post. It has to get this right across all contexts, all turns, every time. Base models are surprisingly capable at this, but they are not reliable at it. They drift. They forget. They flatten the personality into generic agreeable responses.

The alternative is training. You fine tune (or adapt with LoRA) on personality conditioned reasoning traces. Each trace is a structured record: stimulus, dimension activation strengths, economic and emotional modulation, narrative construction, and final response. The trace shows the model not just what a persona would say, but why, which dimensions activated, how context modulated the activation, and how the narrative was constructed.

Train on thousands of these traces and the model learns the mapping from dimension scores to behavioural patterns. It no longer needs a 2,000 token persona specification in every prompt. A shorter specification with just the dimension scores and key context is sufficient because the trained model fills in the behavioural implications automatically.

The Trace Format

Every Panel Studio response generates a reasoning trace. The structure is:

Stimulus received. What was the persona asked?

Dimension activation. Which of the 8 dimensions are most relevant to this stimulus, and at what strength? A pricing stimulus activates Discipline (evaluation rigour), Impulsivity (snap reaction tendency), and Yielding (willingness to accept the increase). A political stimulus activates Candour, Novelty, and Sociability in different proportions.

Economic and emotional modulation. How does the persona's current context modify the dimension activations? High financial anxiety amplifies Discipline activation on a pricing stimulus. Recent job loss increases Mercuriality activation.

Narrative construction. The persona assembles a response from the modulated activations. A high Discipline persona who grew up in a family that budgeted carefully frames their price evaluation differently from one who learned financial management at university. Same dimension score. Different expression, shaped by life experience.

Response. The persona's actual answer.

Each complete trace is a training example. It teaches the model that personality does not just determine what someone says. It determines how they get there. The reasoning path is the personality in action.

Why This Matters for Agent Builders

Any application that deploys multiple agents with distinct identities faces the consistency problem. Customer service bots that all sound identical despite supposedly having different personas. Game NPCs whose dialogue options feel interchangeable. Social simulations where every agent converges to the mean after a few interactions.

Personality conditioning solves this at the architectural level. The agent does not need to be reminded to stay in character. The character is encoded in the model's learned mapping from personality coordinates to behavioural patterns. A Discipline=0.3, Impulsivity=0.9 agent will consistently make snap decisions, resist long term planning, and respond emotionally to constraints, not because the prompt says "be impulsive" but because the model has learned what those coordinates produce across thousands of contexts.

The DYNAMICS-8 specification is published under CC BY 4.0. The reference implementations in Python and Go are source available. The 1,000 persona sample dataset on HuggingFace includes full traces. If you are building agents that need to behave like individuals rather than interchangeable chatbots, the framework is there. Use it as is, extend it, or use it as a starting point for your own personality conditioning architecture.

The hard part is not getting an LLM to sound like a character. The hard part is getting it to think like one, consistently, across every context and every turn. That requires structure, not prompting.

Try it yourself

Build a census weighted UK panel and run your own stimulus test.

Get Your API Key