Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions litellm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1360,6 +1360,7 @@ def _build_models_by_provider() -> dict:
InvalidRequestError,
BadRequestError,
ImageFetchError,
VectorStoreSearchError,
NotFoundError,
PermissionDeniedError,
RateLimitError,
Expand Down Expand Up @@ -1461,9 +1462,11 @@ def _build_models_by_provider() -> dict:
VectorStoreRegistry,
VectorStoreIndexRegistry,
)
from .types.vector_stores import VectorStoreSearchFailureMode

vector_store_registry: Optional[VectorStoreRegistry] = None
vector_store_index_registry: Optional[VectorStoreIndexRegistry] = None
vector_store_search_failure_mode: VectorStoreSearchFailureMode = "annotate"

### RAG ###
from . import rag
Expand Down
25 changes: 25 additions & 0 deletions litellm/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@
## LiteLLM versions of the OpenAI Exception Types

import enum
from collections.abc import Sequence
from typing import Any, Final

import httpx
import openai

from litellm.types.utils import LiteLLMCommonStrings
from litellm.types.vector_stores import VectorStoreSearchFailure


class RateLimitErrorCategory(str, enum.Enum):
Expand Down Expand Up @@ -288,6 +290,29 @@ def __init__(
)


VECTOR_STORE_SEARCH_FAILED_CODE: Final = "vector_store_search_failed"


class VectorStoreSearchError(BadRequestError):
def __init__(
self,
failures: Sequence[VectorStoreSearchFailure],
model: str | None = None,
llm_provider: str | None = None,
) -> None:
self.failures: Final[tuple[VectorStoreSearchFailure, ...]] = tuple(failures)
detail: Final = "; ".join(f"{failure['vector_store_id']}: {failure['error']}" for failure in self.failures)
super().__init__(
message=(
"The request could not be grounded in every configured vector store. "
f"{len(self.failures)} vector store search(es) failed: {detail}"
),
model=model,
llm_provider=llm_provider,
body={"type": "invalid_request_error", "code": VECTOR_STORE_SEARCH_FAILED_CODE},
)


class UnprocessableEntityError(openai.UnprocessableEntityError):
def __init__(
self,
Expand Down
Loading
Loading