mutual_dissent.orchestrator is the core pipeline engine. It manages the full debate lifecycle and is the primary integration point for the Python API.
run_debate()
asyncio.gather.
Parameters
| Parameter | Description |
|---|---|
query | The user’s question or prompt |
config | Loaded Config instance from load_config() |
panel | Model aliases or IDs; defaults to config.default_panel |
synthesizer | Model alias for synthesis; defaults to config.default_synthesizer |
rounds | Reflection rounds 1–3; defaults to config.default_rounds; capped at 3 |
ground_truth | Reference answer for scoring synthesis; adds one API call |
panelist_context | Per-panelist context strings prepended to prompts each round |
on_round_complete | Async callback fired after each round completes |
Round Hook
on_round_complete receives a DebateRound after each round (initial, each reflection, synthesis). Exceptions in the callback are logged but do not abort the debate.
run_replay()
additional_rounds > 0, runs new reflection rounds continuing from the source’s last round before synthesizing.
Prompt Templates
The orchestrator uses three prompt formats fromprompts.py:
- Initial — query only; models answer independently
- Reflection — includes the model’s own previous answer and all other models’ previous answers; asks for critique and refinement
- Synthesis — includes the full formatted debate transcript; asks for a distilled final answer