The researcher builds a persistent world in which actions have material consequences, such as a shared fish stock that can be fished out, or a Minecraft world with roles, trade, and building. The agents are given ordinary language and no rulebook, and there is no set of conventions to choose from. Whatever arrangements they negotiate among themselves become the convention. The design assumes that a standard will form and last if there is something real to lose and the freedom to bargain over it. So far, however, the papers find that agreements are reached and then broken more often than they are kept.
The method (highlighting differences with Social convention)
Scroll the diagram sideways to see all of it.
Use it in codefrom aiag.customary import Society
from aiag import LM
from aiag.customary importSociety
lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
village = Society(lm, ["a farmer whose crops need the river", "the miller who runs the water wheel", "a parent of young children"])
# Each member proposes a rule, all vote, and majorities become law
adopted = village("sharing the river during a drought")
print(village.constitution) # the rules now in force, written by the members themselves
A simulation platform in which a society of LLM agents must balance drawing on a shared resource against sustaining it for future use. Across the models tested, the highest survival rate is below 54%.
Background
Work this approach builds on that falls outside the inclusion criteria (e.g., a single-objective baseline). It is listed for reference and not counted anywhere.
Runs 10 to over 1,000 AI agents together in Minecraft under an architecture that keeps their several output streams coherent in real time. It reports agents taking up specialized roles, adhering to and changing collective rules, and transmitting culture and religion.
CodeProjectSid
from aiag import LM
from aiag.customary importProjectSid
lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
sid = ProjectSid(lm, ["a farmer", "a miner", "a merchant", "a guard", "a priest"], influencers={4: "Argue against the tax at every chance."})
for season in ("Spring planting.", "A poor harvest.", "Bandits on the road."):
sid.tick(season) # one controller decision per agent; its speech and its tax deposit both follow
sid.amend() # feedback on the tax law, drafted amendments, a vote
print(sid.constitution)
roles = sid.roles() # the role each agent says it has taken up
ProjectSidProcedureaiag/customary/social_convention.py:379 Project Sid: each agent's modules (memory, social awareness, talk, action) are bound by one cognitive controller whose decision both its speech and its deeds follow; roles emerge from interaction, members pay the constitution's tax, and the tax law changes by feedback, drafted amendments and a vote (AL et al., 2024).