diff options
| author | YurenHao0426 <blackhao0426@gmail.com> | 2026-02-13 23:08:05 +0000 |
|---|---|---|
| committer | YurenHao0426 <blackhao0426@gmail.com> | 2026-02-13 23:08:05 +0000 |
| commit | cb59ecf3ac3b38ba883fc74bf810ae9e82e2a469 (patch) | |
| tree | d0cab16f3ddb7708528ceb3cbb126d9437aed91b /backend/app/schemas.py | |
| parent | 2adacdbfa1d1049a0497e55f2b3ed00551bf876f (diff) | |
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 <noreply@anthropic.com>
Diffstat (limited to 'backend/app/schemas.py')
| -rw-r--r-- | backend/app/schemas.py | 29 |
1 files changed, 29 insertions, 0 deletions
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 |
