From cb59ecf3ac3b38ba883fc74bf810ae9e82e2a469 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Fri, 13 Feb 2026 23:08:05 +0000 Subject: Add LLM Debate mode for multi-round iterative model discussions Implements a debate feature alongside Council mode where 2-6 models engage in multi-round discussions with configurable judge modes (external judge, self-convergence, display-only), debate formats (free discussion, structured opposition, iterative improvement, custom), and early termination conditions. Co-Authored-By: Claude Opus 4.6 --- backend/app/schemas.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'backend/app/schemas.py') diff --git a/backend/app/schemas.py b/backend/app/schemas.py index 4213f15..7a657a3 100644 --- a/backend/app/schemas.py +++ b/backend/app/schemas.py @@ -76,6 +76,35 @@ class CouncilRunRequest(BaseModel): attached_file_ids: List[str] = Field(default_factory=list) scopes: List[str] = Field(default_factory=list) +class DebateJudgeMode(str, Enum): + EXTERNAL_JUDGE = "external_judge" + SELF_CONVERGENCE = "self_convergence" + DISPLAY_ONLY = "display_only" + +class DebateFormat(str, Enum): + FREE_DISCUSSION = "free_discussion" + STRUCTURED_OPPOSITION = "structured_opposition" + ITERATIVE_IMPROVEMENT = "iterative_improvement" + CUSTOM = "custom" + +class DebateRunRequest(BaseModel): + node_id: str + incoming_contexts: List[Context] = [] + user_prompt: str + debate_models: List[CouncilMemberConfig] # 2-6 models + judge_model: Optional[CouncilMemberConfig] = None + judge_mode: DebateJudgeMode = DebateJudgeMode.EXTERNAL_JUDGE + debate_format: DebateFormat = DebateFormat.FREE_DISCUSSION + custom_format_prompt: Optional[str] = None + max_rounds: int = 5 + system_prompt: Optional[str] = None + temperature: float = 0.7 + reasoning_effort: ReasoningEffort = ReasoningEffort.MEDIUM + enable_google_search: bool = False + merge_strategy: MergeStrategy = MergeStrategy.SMART + attached_file_ids: List[str] = Field(default_factory=list) + scopes: List[str] = Field(default_factory=list) + class NodeRunResponse(BaseModel): node_id: str output_context: Context -- cgit v1.2.3