mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
CacheCodec.serialize dumped cached Pydantic models with model_dump(exclude_none=True), which drops any None-valued key, while deserialize does a strict model_validate. For a model with a required-but-nullable field (Optional[X] with no default), a None value is dropped on write and then fails model_validate on read with "Field required", so the entry can never be read back; that is a permanent cache miss, and in readers that rebuild the model from the raw cached dict an uncaught ValidationError that surfaces to the client as a 401 Removing exclude_none makes serialize and deserialize a lossless pair, so None fields are written as null and survive the round trip. LiteLLM_ManagedVectorStoresTable, the one cached model still carrying required-nullable fields and mis-caching on every read today, also gets the None defaults its peers already have
62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""
|
|
Managed file, object, and vector store table models.
|
|
|
|
Canonical definitions for the ``litellm_managed*`` tables. Re-exported from
|
|
``litellm.proxy._types`` for backwards compatibility.
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Dict, List, Literal, Optional, Union
|
|
|
|
from litellm.types.llms.base import LiteLLMPydanticObjectBase
|
|
from litellm.types.llms.openai import OpenAIFileObject, ResponsesAPIResponse
|
|
from litellm.types.utils import LiteLLMBatch, LiteLLMFineTuningJob
|
|
|
|
|
|
class LiteLLM_ManagedFileTable(LiteLLMPydanticObjectBase):
|
|
unified_file_id: str
|
|
file_object: Optional[OpenAIFileObject] = None
|
|
model_mappings: Dict[str, str]
|
|
flat_model_file_ids: List[str]
|
|
created_by: Optional[str] = None
|
|
team_id: Optional[str] = None
|
|
updated_by: Optional[str] = None
|
|
storage_backend: Optional[str] = None
|
|
storage_url: Optional[str] = None
|
|
|
|
|
|
class LiteLLM_ManagedObjectTable(LiteLLMPydanticObjectBase):
|
|
unified_object_id: str
|
|
model_object_id: str
|
|
file_purpose: Literal["batch", "fine-tune", "response", "container"]
|
|
file_object: Union[LiteLLMBatch, LiteLLMFineTuningJob, ResponsesAPIResponse]
|
|
created_by: Optional[str] = None
|
|
team_id: Optional[str] = None
|
|
|
|
|
|
class LiteLLM_ManagedVectorStoreTable(LiteLLMPydanticObjectBase):
|
|
"""Table for managing vector stores with target_model_names support."""
|
|
|
|
unified_resource_id: str
|
|
resource_object: Optional[Any] = None
|
|
model_mappings: Dict[str, str]
|
|
flat_model_resource_ids: List[str]
|
|
created_by: Optional[str] = None
|
|
team_id: Optional[str] = None
|
|
updated_by: Optional[str] = None
|
|
storage_backend: Optional[str] = None
|
|
storage_url: Optional[str] = None
|
|
|
|
|
|
class LiteLLM_ManagedVectorStoresTable(LiteLLMPydanticObjectBase):
|
|
vector_store_id: str
|
|
custom_llm_provider: str
|
|
vector_store_name: Optional[str] = None
|
|
vector_store_description: Optional[str] = None
|
|
vector_store_metadata: Optional[Dict[str, Any]] = None
|
|
created_at: Optional[datetime] = None
|
|
updated_at: Optional[datetime] = None
|
|
litellm_credential_name: Optional[str] = None
|
|
litellm_params: Optional[Dict[str, Any]] = None
|
|
team_id: Optional[str] = None
|
|
user_id: Optional[str] = None
|