diff options
Diffstat (limited to 'backend/app/services')
| -rw-r--r-- | backend/app/services/council.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/backend/app/services/council.py b/backend/app/services/council.py index d177f44..ef6fa89 100644 --- a/backend/app/services/council.py +++ b/backend/app/services/council.py @@ -21,18 +21,20 @@ async def stage1_collect_responses( tools_per_model: Optional[List[Optional[List[Dict[str, Any]]]]] = None, openrouter_api_key: Optional[str] = None, images: Optional[List[Dict[str, Any]]] = None, + contexts_per_model: Optional[List[Optional[Context]]] = None, ) -> AsyncGenerator[Dict[str, Any], None]: """ Stage 1: Query all council member models in parallel. Yields events as each model completes. - Returns final list via stage1_complete event. + If contexts_per_model is provided, each member uses its own context (None = shared context). """ async def _query_one(idx: int, config: LLMConfig) -> Dict[str, Any]: atts = attachments_per_model[idx] if attachments_per_model else None tls = tools_per_model[idx] if tools_per_model else None + member_context = (contexts_per_model[idx] if contexts_per_model and idx < len(contexts_per_model) and contexts_per_model[idx] is not None else context) try: response = await query_model_full( - context, user_prompt, config, + member_context, user_prompt, config, attachments=atts, tools=tls, openrouter_api_key=openrouter_api_key, images=images, ) @@ -255,9 +257,11 @@ async def council_event_stream( tools_per_model: Optional[List[Optional[List[Dict[str, Any]]]]] = None, openrouter_api_key: Optional[str] = None, images: Optional[List[Dict[str, Any]]] = None, + contexts_per_model: Optional[List[Optional[Context]]] = None, ) -> AsyncGenerator[str, None]: """ Master orchestrator yielding SSE JSON events through the 3-stage council process. + If contexts_per_model is provided, each member uses its own context (None entries = shared context). """ # === Stage 1 === yield _sse_event({"type": "stage1_start"}) @@ -269,6 +273,7 @@ async def council_event_stream( tools_per_model=tools_per_model, openrouter_api_key=openrouter_api_key, images=images, + contexts_per_model=contexts_per_model, ): stage1_results.append(result) yield _sse_event({ |
