Latent Agents: A Post-Training Procedure for Internalized Multi-Agent Debate (ACL 2026 Oral)
May 28, 2026 · View on GitHub
Official Python implementation.
https://arxiv.org/abs/2604.24881
Setup
git clone https://github.com/jskyi/latent_agents
cd latent_agents
Requirements: Python 3.10+, PyTorch (CUDA 11.8/12.4/12.8 — see note below)
pip install -r requirements.txt
Data
Debate traces are provided in data/. To regenerate:
# Standard debate traces (all agents are the same)
python utils/generate_arithmetic.py
# Diverse debate traces (three distinct reasoning styles)
python utils/generate_arithmetic_diverse.py
# Malicious agent traces (evil / hallucination)
python utils/generate_malicious_debate.py
Training
Stage 1 — SFT (Debate Structure Learning)
python sft.py --model llama --dataset data/arithmetic_3_2.json --output_suffix arith
For malicious agent instillation:
python sft.py --model llama --dataset data/evil_debate.json --output_suffix evil
Stage 2 — GRPO (Internalization)
accelerate launch grpo.py \
--model_name llama \
--sft_model_path llama-sft-lora-arith-final \
--dataset data/arithmetic_3_2.json \
For malicious persona tasks with LLM judge:
accelerate launch grpo_persona.py \
--task evil \
--sft_model_path llama-sft-lora-evil-final \
--output_dir llama-grpo-evil
Evaluation
# Base model
python eval/eval.py --model_name llama --benchmark gsm
# Fine-tuned model
python eval/eval.py --model_name llama --model_path llama-grpo-arith-final --benchmark gsm
Supported benchmarks: gsm, math, mmlu, arithmetic, bbh
Supported models: llama, qwen2.5, mistral_nemo
Steering Analysis
Prepare Steering Pairs
python steering/prepare_pairs.py \
--dataset data/debate_combined.json \
--output_train data/agent_steering_pairs_diverse_train.json
Extract Agent Steering Vectors
# Diverse IMAD agents
python steering/extract_vectors.py imad \
--model_name llama \
--sft_model_path ./llama-sft-lora-arith-final \
--pairs_path data/agent_steering_pairs_diverse_train.json \
--layer 15 \
--output steering/llama_steering_vectors_diverse.pt
# Malicious agent (evil / hallucination)
python steering/extract_vectors.py malicious \
--model_name llama \
--data_path data/evil_train.json \
--task evil \
--layer 15 \
--output steering/llama_steering_vector_evil.pt
ROUGE Fidelity Analysis
python steering/rouge_analysis.py \
--model_name llama \
--imad_model_path llama-grpo-arith-final \
--vectors_path steering/llama_steering_vectors_diverse.pt \
--pairs_path data/agent_steering_pairs_diverse_test.json \
--layer 15 --multiplier 5.0
Malicious Agent Suppression
python steering/suppression_analysis.py \
--model_name llama \
--vectors_path steering/llama_steering_vector_evil.pt \
--data_path data/evil_test.json \
--task evil \
--multiplier -3.0 \
--layer 20 \
--output_dir results/suppression
Citation
@inproceedings{yi2026latent,
title = {Latent Agents: A Post-Training Procedure for Internalized Multi-Agent Debate},
booktitle = {Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (ACL)},
author = {Yi, John Seon Keun and Mueller, Aaron and Lee, Dokyun},
year = {2026},
}