Loads primary and fallback models for the agent.
(self, db: AsyncSession)
| 364 | return True |
| 365 | |
| 366 | async def _load_models(self, db: AsyncSession): |
| 367 | """Loads primary and fallback models for the agent.""" |
| 368 | if self.agent.primary_model_id: |
| 369 | model_result = await db.execute(select(LLMModel).where(LLMModel.id == self.agent.primary_model_id)) |
| 370 | self.llm_model = model_result.scalar_one_or_none() |
| 371 | if self.llm_model and not self.llm_model.enabled: |
| 372 | logger.info(f"[WS] Primary model {self.llm_model.model} is disabled, skipping") |
| 373 | self.llm_model = None |
| 374 | else: |
| 375 | logger.info(f"[WS] Primary model loaded: {self.llm_model.model if self.llm_model else 'None'}") |
| 376 | |
| 377 | if self.agent.fallback_model_id: |
| 378 | fb_result = await db.execute(select(LLMModel).where(LLMModel.id == self.agent.fallback_model_id)) |
| 379 | self.fallback_llm_model = fb_result.scalar_one_or_none() |
| 380 | if self.fallback_llm_model and not self.fallback_llm_model.enabled: |
| 381 | logger.info(f"[WS] Fallback model {self.fallback_llm_model.model} is disabled, skipping") |
| 382 | self.fallback_llm_model = None |
| 383 | elif self.fallback_llm_model: |
| 384 | logger.info(f"[WS] Fallback model loaded: {self.fallback_llm_model.model}") |
| 385 | |
| 386 | if not self.llm_model and self.fallback_llm_model: |
| 387 | self.llm_model = self.fallback_llm_model |
| 388 | self.fallback_llm_model = None |
| 389 | logger.info(f"[WS] Primary model unavailable, using fallback: {self.llm_model.model}") |
| 390 | |
| 391 | async def _resolve_chat_session(self, db: AsyncSession, user_id: uuid.UUID) -> str | None: |
| 392 | """Resolves existing session or creates a new one.""" |
no test coverage detected