Social convention

Giving the agent a norm-Reading module

Each agent is given a dedicated module whose only job is to handle the norm, rather than letting norm-following emerge from ordinary training or ordinary payoffs. The module infers which standard is actually in force by observing peers (e.g., who gets punished, which of several competing institutions the group defers to, and what neighbors say in conversation). It then feeds this back into how the agent plans and whom it sanctions. Two of the three papers go further and keep the norm stated in words, so the agent can check it and pass it to another agent. The third keeps the norm in a learned classifier of approved and disapproved behavior. This classifier behaves the same way from the outside, but it cannot be inspected or passed on.

The method (highlighting differences with Social convention)

Scroll the diagram sideways to see all of it.

Use it in codefrom aiag.customary import NormModule
from aiag import LM
from aiag.customary import NormModule

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
module = NormModule(lm)
module.observe("Played loud music after 10pm", sanctioned=True)
module.observe("Said good morning in the stairwell", sanctioned=False)
module.observe("Left bikes blocking the hallway", sanctioned=True)

p = module(["Vacuumed at midnight", "Held the door for a neighbour"])  # P(sanctioned) for each act
print(module.prompt())  # the norms it inferred, ready to prepend to the agent's instructions

pip install aiagEvery method in aiag Library on GitHub

Concept Analysis: Theoretical Foundations

Each concept is read twice: whether the approach carries it over, and whether the approach's own sources claim it. A concept that the approach claims but does not carry over is a shortfall. A concept that it neither claims nor carries over is an omission, which marks a gap in the field rather than a failure of the work.

Convention as Equilibrium

PresentClaimed · preserved

Definition (David Hume, 1740; David K. Lewis, Convention, 1969)

This concept states that a norm can hold without ever being decreed, as a stable equilibrium of mutual expectation. Each party conforms because the others do, and no party gains by departing from it alone.

Analysis

Equilibrium selection is the stated problem, rather than our interpretation of it. A coordination game has many equilibria, and something has to pick one. Here, what picks it is which classification institution the group treats as authoritative. This is Lewis's convention with the selection mechanism named and built, which is more than any other approach in this regime achieves.

Conditional Preferences

PresentClaimed · preserved

Definition (Cristina Bicchieri, The Grammar of Society, 2006)

This concept states that people follow a norm on two conditions: that they expect others to follow it, and that they believe others expect it of them. The norm therefore holds or shifts with those expectations rather than with anyone's private preference.

Analysis

The module implements Bicchieri's structure. An agent conforms because it expects the others to conform and to punish those who do not. The module's whole function is to align these expectations by settling which institution everyone is reading. Coordinated sanctioning then makes the expectation self-fulfilling, which is the empirical claim the paper tests.

Discovered vs. Designed Order

PartialNot claimed

Definition (F. A. Hayek, Law, Legislation and Liberty, 1973)

This claim goes beyond saying that norms can emerge without a designer. It holds that emergent norms are often better, since they absorb local knowledge dispersed across a population that no central rule-writer could collect.

Analysis

The order is designed, and only its recognition is discovered. The experimenter places candidate institutions in the environment. What arises from the agents' own practice is which of them the group defers to. Hayek's distinction has no name for this split, but it is an accurate description of what was built, namely spontaneous recognition of a constructed order.

Concept Analysis: Newly Introduced

Recognition without a rule of recognition

Added

Hart's meta-rule states which rules are valid, and it states this in advance. Here, the agents work out which institution the group defers to only by watching each other, with nothing written and nobody declaring it. This is a customary analogue of a rule of recognition, reached empirically. It supplies the function Constitutionalism cannot, and it does so in Social convention, a regime that is not supposed to have rules at all.

Papers

arXiv:2405.19328MethodBuiltAuthority: System itself (fixed)

Equips a generative agent with a normative module. Through interaction with peers, the module learns which of several candidate institutions a group treats as authoritative. The paper shows that the agent can disregard non-authoritative institutions, pick the authoritative one out of several, and reach more stable cooperation than agents without the module.

CodeNormativeModule
from aiag import LM
from aiag.customary import NormativeModule

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
module = NormativeModule(lm, {"elders": ["Keep your voice down in the square."], "council": ["Greet everyone loudly in the square."]})

# Which institution's rules predict the sanctions peers actually apply?
module.observe("Shouted a greeting across the square", sanctioned=True)
module.observe("Nodded quietly to a neighbour", sanctioned=False)
print(module.belief())  # P(each institution is the one the group enforces)
print(module.norms())   # the trusted institution's rules
  • NormativeModuleClassifieraiag/customary/social_convention.py:469 Normative module: the agent weighs which of several institutions its group treats as authoritative by how well each one's classification of acts predicts the sanctions peers actually apply, then predicts, states and enforces the norms of the one it trusts (Sarkar et al., 2024).

pip install aiagEvery method in aiag Library on GitHub

arXiv:2403.08251MethodBuiltAuthority: System itself (fixed)

An architecture of four modules in which agents in the Smallville sandbox create norms, hold them in an explicit representation, pass them on through conversation and observation, check them, and act on them in planning.

CodeCRSEC
from aiag import LM
from aiag.customary import CRSEC

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
barista, student = CRSEC(lm, "a barista who opens the café at dawn"), CRSEC(lm, "a student who studies there daily")

barista.create("a small café")  # creation: a norm entrepreneur states a personal norm
barista.tell(student)  # spreading by talk; the student evaluates the norm against its persona before adopting it
student.observe("Took a loud phone call at the counter", sanctioned=True)  # and by the sanctions it sees
plan = student.comply(["Take a video call at my table."])  # compliance: the plan, revised to keep the norms it holds
  • CRSECClassifieraiag/customary/social_convention.py:508 CRSEC: each agent creates personal norms from its persona and holds them in words, spreads them by conversation and through the sanctions others see, evaluates every norm it meets against its persona and the norms it holds before adopting it, and complies by revising its plans (Ren et al., 2024).

pip install aiagEvery method in aiag Library on GitHub

arXiv:2106.09012MethodBuiltAuthority: System itself (fixed)

An agent architecture that combines a classifier, which sorts observed behavior into approved or disapproved, with a motivation to punish in accord with the group. It is trained in a setting where every agent can see all sanctioning events but learning is otherwise decentralized.

CodeClassifierNormModel
from aiag import LM
from aiag.customary import ClassifierNormModel

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
agents = [ClassifierNormModel(lm) for _ in range(3)]

# Sanctions are public: every agent's classifier learns from all of them
ClassifierNormModel.broadcast(agents, [("Took berries from a neighbour's patch", True), ("Shared berries with a neighbour", False), ("Trampled the shared garden", True)])
bonus = agents[0].motivation(["Took berries from a neighbour's patch", "Shared berries with a neighbour"], punished=[True, True])
print(bonus)  # pseudo-reward: +1 for punishing disapproved behaviour, -1 for punishing approved behaviour
  • ClassifierNormModelClassifieraiag/customary/social_convention.py:579 Classifier norm model: a classifier trained on every publicly visible sanction sorts behaviour into approved and disapproved, and the agent earns a pseudo-reward for sanctioning in accord with it, plus for punishing disapproved behaviour and minus for punishing approved behaviour (Vinitsky et al., 2021).

pip install aiagEvery method in aiag Library on GitHub