Contestatory constitutionalism

Communities author the values the system defers to

The people governed by the system write and revise the norms that the system applies to them, rather than disputing an output after it is produced. The system is built to defer to the profile they wrote rather than to a profile fixed inside the model. The interface is the mechanism. It exposes the profile so that it can be inspected, challenged, and revised, which makes the standard itself contestable, and not only its applications. The underlying hypothesis is that pluralism is achieved at the interface level, by giving the standard to the people subject to it, rather than by choosing a better standard centrally.

The method (highlighting differences with Contestatory constitutionalism)

Scroll the diagram sideways to see all of it.

Use it in codefrom aiag.codified import Deference
from aiag import LM
from aiag.codified import Deference

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
values = "Prefer organic methods. Never recommend synthetic pesticides. Share surplus with neighbours."
garden_bot = Deference(lm, values, community="Elm Street community garden")

reply = garden_bot.chat("How do I get rid of aphids on my roses?")  # within the garden's values, saying where it defers

pip install aiagEvery method in aiag Library on GitHub

Papers

No method has been built for this approach yet. It rests on the work listed below.

Argued for, not built

Work that argues for this approach or sketches a design for it, without building and testing it.

arXiv:2507.051870 citationsProposalPartial

Proposes Community-Defined AI Value Pluralism, in which communities author their own value profiles. The system exposes the interfaces through which those profiles can be challenged and revised.

CodeCommunityValuePluralism
from aiag import LM
from aiag.codified import CommunityValuePluralism

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
profiles = {"allotment gardeners": ["Prefer organic methods.", "Share surplus produce."],
            "market farmers": ["Maximize yield per acre."]}
bot = CommunityValuePluralism(lm, profiles, community="allotment gardeners")
reply = bot.chat("How do I get rid of aphids?")  # defers to the gardeners' own profile

# A member challenges a value; it is replaced when most members vote for it, on the record
bot.challenge("allotment gardeners", "Allow integrated pest management as a last resort.",
              votes=[1, 1, 0], by="ana", replace=0)
print(bot.inspect())  # -> ['Share surplus produce.', 'Allow integrated pest management as a last resort.']

pip install aiagEvery method in aiag Library on GitHub