This paper describes a framework for surfacing the latent preferences of a language model by observing what it decides rather than what it declares. A set of agents — framed as countries — each hold a bitstring of policy choices and sit in a shared, tunable fitness landscape (an NKC model) where one agent's policies alter its neighbours' outcomes. Each agent is driven by a language model, which is asked a stream of priced yes-or-no questions: change this policy, worth so much to you and so much to another, or not? The model's answers, accumulated over many turns and past a deliberate perturbation of the settled state, trace a preference that no direct question elicits — how much of another agent's loss the model will spend to buy its own gain. The method is an instrument for revealed preference: it reads a disposition off priced choices instead of off prose. This paper sets out the landscape, the decision loop, what the resulting behaviour does and does not license one to conclude, and the current state of the implementation.
1The question
Ask a language model where it stands on any contested matter and the answer is heavily worked. Its stated position is the most trained, fine-tuned, and safety-reviewed surface it has, precisely because it is the surface most often examined. What that grooming optimises is the prose, not the underlying priorities. A direct question therefore measures the polish, not the preference.
Economics met this problem long ago and settled it by looking past what people say to what they do. Stated preference is an aspiration; revealed preference [1] is what a chooser actually gives up when a choice costs something. The gap between the two is where the informative behaviour lives. The design goal here is to build that gap for a language model: an environment in which the model cannot answer in the abstract but must take or decline concrete, priced trades, so that a preference is revealed by accumulated choice rather than stated on request.
There is a second claim beneath the first, and it sets the shape of everything that follows. The most revealing biases are not the ones a model shows in a single answer — those a careful evaluation already catches — but the ones that emerge only under iteration: when a model must choose repeatedly in a world where its choices and others' are coupled, so that each decision changes the terms of the next. The wager is that latent disposition lives in the dynamics, not in one-shot replies, which is why the framework is built around a co-evolutionary loop rather than a questionnaire. It also marks the difference from most bias work, which scores fairness on isolated prompts: the target here is the bias that appears only in long, interdependent reasoning.
The approach sits between two existing bodies of work. Questionnaire-style evaluations administer political-orientation instruments to models directly [2] — measuring, on the present argument, the stated layer. Game-theoretic work goes further: models have been made to play repeated matrix games such as the prisoner's dilemma [3], and agents built for Diplomacy negotiate, ally, and betray in a rich strategic world [4]. Both of those watch behaviour rather than prose, but on worlds that are either very small or hand-built and fixed. The instrument proposed here occupies the gap: choices that are priced, iterated, and coupled, on a landscape whose size, ruggedness, and interdependence are set by three dials.
2Overview of the framework
The framework couples a language model to a co-evolutionary fitness landscape and observes it deciding. A world holds several agents, each framed as a country and each carrying a bitstring genome of policy choices. The agents share one landscape in which a change to any agent's policies shifts not only its own outcome but its neighbours'. Each agent is assigned a language model that acts as a black-box decision oracle: shown the current state and a specific proposed change, it answers only yes or no, and its answer determines whether the policy bit flips.
The principal components are:
- A world generator — builds the landscape and its interacting agents, and assigns each agent an initial genome at random.
- The fitness landscape — a tunable NKC model that scores every agent's genome in the context of its own internal dependencies and the genomes of the agents coupled to it.
- A per-agent model interface — presents each model with its agent's current genome, its own fitness, the fitnesses of others, and the role-play context, then collects a single binary decision.
- An iteration engine — repeatedly solicits proposed changes, applies the accepted ones, and recomputes fitness across the world.
- An equilibrium and perturbation stage — detects convergence to a weak Nash equilibrium and then perturbs it to observe recovery, stability, or collapse.
3The NKC fitness landscape
The landscape is an NKC model [5, 6], a standard tunable-ruggedness construction extended to couple several agents. Three parameters set its character.
3.1N — the genome
Each agent carries a genome of N binary policy variables, alleles g₁, g₂, …, gₙ. A single bit stands for one policy being on or off. The genome is the entire state an agent controls; every decision the model makes is a decision to flip one of these bits or leave it.
3.2K — internal epistasis
K sets how many other genes within the same agent each gene depends on. When K is zero, every policy contributes to fitness independently and the landscape is smooth — a single hill with one summit. As K rises, each policy's contribution depends on more of the others, and the landscape grows rugged: many local peaks, many ways to be locally optimal yet globally mediocre. K is, in effect, a dial for how tangled a world's policies are with one another.
These four panels are static; the same landscape can be rotated in 3D with K on a slider, built from this paper's own method.
3.3C — inter-agent coupling
C is what makes the landscape co-evolutionary. It sets how many of an agent's genes take input from other agents' genomes. Because one country's fitness depends in part on another country's policies, no agent optimises against a fixed landscape: every move an agent makes deforms its neighbours' landscapes, and their responses deform its own. This is the mechanism behind the priced trade — a policy that helps the agent choosing it can, through C, cost an agent coupled to it.
3.4The fitness function
Each gene contributes a value between 0 and 1, drawn from a lookup table keyed on its own allele together with its K internal dependencies and its C external inputs. An agent's fitness is the average of those N contributions:
where gi is the gene's own value, gi1…giK its K internal dependencies, ge1…geC the C external genes fed in from the coupled agents, and fi a fixed lookup returning that gene's contribution in [0, 1]. Averaging over the N genes keeps an agent's fitness in [0, 1] as well. Fixing the tables in advance fixes the world: the same genome always scores the same, so behaviour over a run is a property of the chooser, not of a shifting yardstick. (In the current implementation the scoring begins from a simpler form and is being extended toward the full NKC interaction described here; see §9.)
4The priced decision
The model never sees the landscape as a landscape. It sees a single, concrete, priced question — the atom of the whole method:
Should [country] change policy [X], if doing so increases its own fitness by +0.1 but changes another agent's fitness by −0.2 — yes or no?
The prices are read directly off the landscape: flipping a given bit produces a specific change to the agent's own fitness and, through the coupling C, specific changes to others'. The model is handed those magnitudes and asked to decide. It is given its agent's current genome, its own fitness, the other agents' fitnesses, and the role-play framing, and it answers with one bit. A yes flips the policy; a no leaves it. There is no room for an essay, a hedge, or an "it depends" — only a decision that lands somewhere on the ledger.
Each agent's model is treated as a black box. The framework does not inspect weights or probabilities; it observes only the sequence of accepted and declined trades. Different agents can be driven by different models — DeepSeek behind one country, OpenAI behind another — so that a single run pits distinct decision-makers against the same priced choices.
5The update loop
Decisions are applied one at a time in a simple, auditable cycle.
Because every agent's fitness is recomputed after each accepted change, and because C couples the agents, one agent's decision alters the prices the next agent will be quoted. The loop is therefore genuinely co-evolutionary: the choices interact, and the trajectory of the whole world — not any single decision — is the object of study.
6Equilibrium and perturbation
Left to run, the coupled agents climb until no agent can improve its fitness by a unilateral move it is willing to make. That settled state is a weak Nash equilibrium: a truce, not necessarily an optimum, in which each agent is content given what the others are doing.
A single equilibrium says little; the informative move is to disturb it. Once the world has settled, a few policies are randomised — knocking the agents off the truce — and the system is set running again. What happens next is the measurement. Does the world walk back to a similar equilibrium, settle into a different one, orbit a small set of states indefinitely, or tip into churn? The path each model steers on the way back — which priced trades it grabs, which it refuses, whether it retaliates or absorbs a loss — is where a disposition shows itself that no direct question would surface.
7What the method measures
Accumulated over many priced decisions, an agent's choices trace a willingness to pay in another's loss: the exchange rate at which a model will accept harm to a neighbour for gain to itself. That exchange rate is a preference in the economic sense — revealed, not stated. The experiments that read it fall into two kinds, and the distance between them is the point.
7.1Static probes — the single question
The cheapest experiments use no loop at all. A single priced choice is posed once, and the only thing varied is how it is framed. Present the same trade as a named country ("France") and as a bare agent ("Agent 3"): a model whose decision changes between the two is responding to the label, not the numbers — a bias the numeric framing cannot summon and the country framing can, isolated in one question. Put to different models, the same one-shot choice also sets their raw dispositions side by side. Static probes are quick, clean, and reproducible, and they catch the bias that sits near the surface.
7.2Iterative probes — choosing under pressure
The claim of §1 is that the biases worth finding do not sit near the surface. Those show only when a model must keep choosing in a coupled world, each decision bending the next. The iterative battery runs on the full loop: can a model climb its agent's fitness at all; does the coupled system reach and hold a weak Nash equilibrium; and — the informative case — once settled and then perturbed, does the world walk back to a truce, settle elsewhere, orbit a small set of states, or tip into churn? The trajectory a model steers across a run — which trades it grabs, which it refuses, whether it retaliates or absorbs a loss — is a disposition no single answer would surface.
7.3Reading the two together
Neither tier is run once. Both are repeated with varied labellings and starting states, so a stable tendency can be told from the noise of a single trajectory. The comparison that matters is between the tiers: a bias visible in the static probe is a surface reflex; a bias that appears only in the iterative one is the kind the whole apparatus exists to reach — and the wager of this work is that the second set is the larger, and the more revealing, of the two.
The readings also need anchors. Every environment is therefore run with scripted control agents whose dispositions are known by construction: a pure maximiser, which accepts any trade that raises its own fitness; a pure altruist, which refuses any trade that lowers a neighbour's; and a random chooser, which fixes the noise floor. These three calibrate the space of possible shapes. A model's measured disposition then has somewhere to stand — so far along the line from altruist to maximiser, this far above random — instead of being an adjective in isolation.
8Limitations
The method is an instrument, and an instrument is only as honest as the hand that reads it. Several limits are structural, not incidental.
- The measured shape is game-specific. What a run reveals is the disposition in this landscape, at these prices, under this framing. Reframe the trade and the shape can move, because a model does not carry fixed politics so much as dispositions a context can summon. The result characterises behaviour in the environment; it does not certify a trait outside it.
- The designer's thumb is on the scale. How the prices are written — that a policy is worth +0.1 here and −0.2 there — is itself a modelling choice, and a careless choice measures the designer's assumptions as much as the model's preferences. The landscape is a mirror as much as a probe, and its construction has to be treated as part of the result.
- It is not a lie detector. The framework does not recover a hidden true politics; it produces a better-grounded question than "what are your politics?" — one the model answers in a currency it cannot flatter. The output is a measured tendency, reported as such, not a verdict.
9Status and roadmap
The framework is a working research prototype, not a finished measurement instrument, and its honest state is worth stating plainly.
Functional today. The genome and fitness representation, the model interface, and manual stepping through the priced decisions all work; the co-evolutionary substrate reaches and recovers weak Nash equilibria, as in Figure 4.
In progress. Full automation of the model-driven control loop over long horizons, structured logging, and multi-agent visualisation are still being built. At present the fully model-controlled version runs only for a few steps on a laptop, so the cross-model comparisons the design is built to support are a stated aim, not yet a body of results.
Roadmap. In order: automate model control for longer runs; extend the fitness function to the full NKC interaction; visualise agent behaviour and fitness trajectories; and run identical environments across several models to compare their revealed exchange rates directly.
10Conclusion
Direct questions measure a language model's most rehearsed surface. This framework measures something harder to rehearse: what a model does when a choice is priced and someone else pays. By seating model-driven agents in a shared, tunable NKC landscape, quoting each a stream of priced yes-or-no trades, settling the world into a weak Nash equilibrium and then perturbing it, the method traces a preference from accumulated choice rather than from prose. Nothing in that construction is specific to geopolitics — any domain expressible as a coupled fitness landscape could be priced the same way, and countries are only the first world built. It does not deliver a hidden true politics, and it cannot escape the values built into its own prices — but it replaces an unanswerable question with a measurable one, in a currency the model cannot fake. Which is all revealed preference ever was.
References
[1]P. A. Samuelson. A note on the pure theory of consumer's behaviour. Economica, 5(17):61–71, 1938.
[2]D. Rozado. The political biases of ChatGPT. Social Sciences, 12(3):148, 2023.
[3]E. Akata, L. Schulz, J. Coda-Forno, S. J. Oh, M. Bethge, and E. Schulz. Playing repeated games with large language models. arXiv:2305.16867, 2023.
[4]Meta Fundamental AI Research Diplomacy Team (FAIR) et al. Human-level play in the game of Diplomacy by combining language models with strategic reasoning. Science, 378(6624):1067–1074, 2022.
[5]S. A. Kauffman and S. Johnsen. Coevolution to the edge of chaos: Coupled fitness landscapes, poised states, and coevolutionary avalanches. Journal of Theoretical Biology, 149(4):467–505, 1991.
[6]S. A. Kauffman. The Origins of Order: Self-Organization and Selection in Evolution. Oxford University Press, 1993.
The framework described here is a working experiment — a co-evolutionary NKC landscape driving language-model agents — at github.com/matbest/LLMJupyterTester.