2025-12-10 20:52:44 +08:00
|
|
|
"""
|
|
|
|
|
模型服务模块
|
|
|
|
|
|
2025-12-15 14:30:21 +08:00
|
|
|
包含模型管理、成本计算等功能。
|
2025-12-10 20:52:44 +08:00
|
|
|
"""
|
|
|
|
|
|
2026-02-10 17:53:04 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
|
from src.services.model.availability import ModelAvailabilityQuery
|
|
|
|
|
from src.services.model.cost import ModelCostService
|
|
|
|
|
from src.services.model.fetch_scheduler import ModelFetchScheduler, get_model_fetch_scheduler
|
|
|
|
|
from src.services.model.global_model import GlobalModelService
|
|
|
|
|
from src.services.model.service import ModelService
|
2025-12-10 20:52:44 +08:00
|
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
|
"ModelService",
|
|
|
|
|
"GlobalModelService",
|
|
|
|
|
"ModelCostService",
|
2026-01-18 01:45:25 +08:00
|
|
|
"ModelAvailabilityQuery",
|
2026-01-14 13:12:19 +08:00
|
|
|
"ModelFetchScheduler",
|
|
|
|
|
"get_model_fetch_scheduler",
|
2025-12-10 20:52:44 +08:00
|
|
|
]
|
2026-02-10 17:53:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def __getattr__(name: str) -> Any:
|
|
|
|
|
"""Lazy attribute access to avoid import-time side effects.
|
|
|
|
|
|
|
|
|
|
Importing `src.services.model` should not eagerly import the whole model
|
|
|
|
|
service stack (scheduler/services), which can create circular imports during
|
|
|
|
|
test collection.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
if name == "ModelAvailabilityQuery":
|
|
|
|
|
from src.services.model.availability import ModelAvailabilityQuery as _ModelAvailabilityQuery
|
|
|
|
|
|
|
|
|
|
return _ModelAvailabilityQuery
|
|
|
|
|
|
|
|
|
|
if name == "ModelCostService":
|
|
|
|
|
from src.services.model.cost import ModelCostService as _ModelCostService
|
|
|
|
|
|
|
|
|
|
return _ModelCostService
|
|
|
|
|
|
|
|
|
|
if name == "ModelFetchScheduler":
|
|
|
|
|
from src.services.model.fetch_scheduler import ModelFetchScheduler as _ModelFetchScheduler
|
|
|
|
|
|
|
|
|
|
return _ModelFetchScheduler
|
|
|
|
|
|
|
|
|
|
if name == "get_model_fetch_scheduler":
|
|
|
|
|
from src.services.model.fetch_scheduler import (
|
|
|
|
|
get_model_fetch_scheduler as _get_model_fetch_scheduler,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return _get_model_fetch_scheduler
|
|
|
|
|
|
|
|
|
|
if name == "GlobalModelService":
|
|
|
|
|
from src.services.model.global_model import GlobalModelService as _GlobalModelService
|
|
|
|
|
|
|
|
|
|
return _GlobalModelService
|
|
|
|
|
|
|
|
|
|
if name == "ModelService":
|
|
|
|
|
from src.services.model.service import ModelService as _ModelService
|
|
|
|
|
|
|
|
|
|
return _ModelService
|
|
|
|
|
|
|
|
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|