diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index 1bdb5edba3..19e68965f9 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -2790,6 +2790,11 @@ class ProxyConfig: model.model_info["id"] = _id model.model_info["db_model"] = True + model.model_info["created_at"] = getattr(model, "created_at", None) + model.model_info["updated_at"] = getattr(model, "updated_at", None) + model.model_info["created_by"] = getattr(model, "created_by", None) + model.model_info["updated_by"] = getattr(model, "updated_by", None) + if model.model_info is not None and isinstance(model.model_info, dict): if "id" not in model.model_info: model.model_info["id"] = model.model_id @@ -3075,10 +3080,9 @@ class ProxyConfig: try: if master_key is None or not isinstance(master_key, str): - raise Exception( + raise ValueError( f"Master key is not initialized or formatted. master_key={master_key}" ) - verbose_proxy_logger.debug(f"llm_router: {llm_router}") new_models = await prisma_client.db.litellm_proxymodeltable.find_many() # update llm router await self._update_llm_router( diff --git a/litellm/types/router.py b/litellm/types/router.py index 93c65a1cf2..75e792f4c9 100644 --- a/litellm/types/router.py +++ b/litellm/types/router.py @@ -1,9 +1,15 @@ +""" + litellm.Router Types - includes RouterConfig, UpdateRouterConfig, ModelInfo etc +""" + from typing import List, Optional, Union, Dict, Tuple, Literal, TypedDict +import uuid +import enum import httpx -from pydantic import BaseModel, validator, Field +from pydantic import BaseModel, Field +import datetime from .completion import CompletionRequest from .embedding import EmbeddingRequest -import uuid, enum class ModelConfig(BaseModel): @@ -76,6 +82,12 @@ class ModelInfo(BaseModel): db_model: bool = ( False # used for proxy - to separate models which are stored in the db vs. config. ) + updated_at: Optional[datetime.datetime] = None + updated_by: Optional[str] = None + + created_at: Optional[datetime.datetime] = None + created_by: Optional[str] = None + base_model: Optional[str] = ( None # specify if the base model is azure/gpt-3.5-turbo etc for accurate cost tracking )