DEV Community

Gabriel Mahia
Gabriel Mahia

Posted on

Constitutional Rights in Swahili: Building a Multi-Agent Debate System

40%+ of Kenyans don't know their constitutional rights. Not because the rights don't exist — Kenya's 2010 constitution is among the most progressive in Africa — but because the information is locked in dense legal language, available only in English, and not easily accessible through any institutional channel.

hakiyangu (haki = rights, yangu = mine — "my rights") is a multi-agent constitutional debate system that presents both the government's position and the citizen's rights on any constitutional question, in Swahili or English.

The Research Basis

arXiv:2305.19118 — Liang et al. (2023): "Encouraging Divergent Thinking in Large Language Models through Debate"

This paper demonstrated that when multiple AI agents argue opposing positions on a question, the final synthesized answer is measurably less biased and more accurate than a single-agent response. The adversarial format forces the AI to consider the strongest version of each position before synthesizing.

For constitutional rights questions, this is particularly important: the government has legitimate interests, and citizens have constitutional protections. Neither perspective alone gives a complete picture.

The Three-Agent Architecture

# Agent 1: Government Legal Officer
gov_response = call_gemini(
    system="You are a Senior Government Legal Officer defending the Kenya government 
            position on constitutional rights. Be factual. Cite actual articles.",
    user=f"Citizen question: '{question}'"
)

# Agent 2: Human Rights Advocate  
cit_response = call_gemini(
    system="You are a Human Rights Advocate defending citizen constitutional rights.
            Cite actual articles. Acknowledge government has valid interests.",
    user=f"Citizen question: '{question}'"
)

# Agent 3: Constitutional Law Lecturer (synthesis)
synthesis = call_gemini(
    system="You are an independent Constitutional Law Lecturer at University of Nairobi.
            Synthesize both sides. Focus on: what can the citizen do, what are their 
            strongest legal protections, when to seek formal legal help.",
    user=f"Government argued: {gov_response[:300]}
Rights advocate argued: {cit_response[:300]}"
)
Enter fullscreen mode Exit fullscreen mode

Each agent has a defined role and is explicitly instructed to cite the actual Kenya Constitution articles, not summarize them.

Rights Covered

Six rights from the Kenya Constitution 2010:

  1. Freedom of Expression (Article 33)
  2. Right to Property (Article 40)
  3. Right to a Fair Trial (Article 50)
  4. Freedom from Discrimination (Article 27)
  5. Right to Education (Article 43)
  6. Freedom of Movement (Article 26)

Each right has pre-loaded context, the government's constitutional basis for limitations, and the citizen's strongest protections.

The Error Handling Lesson

The original haki-debate-ai (now hakiyangu) had no try/except around the three Gemini calls. When the API returned HTTP 404 (due to a v1beta vs v1 endpoint change), the error surfaced as a full Streamlit traceback — including file paths and code snippets.

# Before: one unprotected call, full crash on error
gov_response = call_gemini(gov_system, question)

# After: wrapped calls with Swahili error messages
try:
    gov_response = call_gemini(gov_system, question)
except Exception as e:
    gov_response = f"⚠️ Hitilafu: {str(e)[:60]}"
Enter fullscreen mode Exit fullscreen mode

Users see "Hitilafu ya API (404). Jaribu tena baadaye. / API error. Please try again later." — not a Python traceback. Production apps owe users graceful degradation.

Deploy It

# Streamlit Cloud: github.com/gabrielmahia/hakiyangu
# Secret: GOOGLE_API_KEY = "your-gemini-key"
Enter fullscreen mode Exit fullscreen mode

Try it at hakiyangu.streamlit.app (setup in progress)

github.com/gabrielmahia/hakiyangu · CC BY-NC-ND 4.0

Top comments (0)