fix: Endpoints

This commit is contained in:
Ishaan Jaffer 2026-01-26 15:36:19 -08:00
parent 240ed0308a
commit d476e36c34
2 changed files with 34 additions and 23 deletions

View file

@ -51,7 +51,17 @@ async def _save_vector_store_to_db_from_rag_ingest(
create_vector_store_in_db,
)
vector_store_id = response.get("vector_store_id")
# Handle both dict and object responses
if hasattr(response, "get"):
vector_store_id = response.get("vector_store_id")
elif hasattr(response, "vector_store_id"):
vector_store_id = response.vector_store_id
else:
verbose_proxy_logger.warning(
f"Unable to extract vector_store_id from response type: {type(response)}"
)
return
if vector_store_id is None or not isinstance(vector_store_id, str):
verbose_proxy_logger.warning(
"Vector store ID is None or not a string, skipping database save"
@ -81,16 +91,18 @@ async def _save_vector_store_to_db_from_rag_ingest(
prisma_client=prisma_client,
vector_store_name=f"RAG Vector Store - {vector_store_id[:8]}",
vector_store_description="Created via RAG ingest endpoint",
created_by=user_api_key_dict.user_id,
updated_by=user_api_key_dict.user_id,
)
verbose_proxy_logger.info(
f"Vector store {vector_store_id} saved to database successfully"
)
else:
verbose_proxy_logger.info(
f"Vector store {vector_store_id} already exists in database, skipping creation"
)
except Exception as db_error:
# Log the error but don't fail the request since ingestion succeeded
verbose_proxy_logger.warning(
verbose_proxy_logger.exception(
f"Failed to save vector store {vector_store_id} to database: {db_error}"
)
@ -261,18 +273,21 @@ async def rag_ingest(
)
# Save vector store to database if it was newly created and prisma_client is available
if (
prisma_client is not None
and response is not None
and isinstance(response, dict)
and response.get("vector_store_id")
):
verbose_proxy_logger.debug(
f"RAG Ingest - Checking database save conditions: prisma_client={prisma_client is not None}, response={response is not None}, response_type={type(response)}"
)
if prisma_client is not None and response is not None:
await _save_vector_store_to_db_from_rag_ingest(
response=response,
ingest_options=ingest_options,
prisma_client=prisma_client,
user_api_key_dict=user_api_key_dict,
)
else:
verbose_proxy_logger.warning(
f"Skipping database save: prisma_client={prisma_client is not None}, response={response is not None}"
)
return response

View file

@ -144,8 +144,7 @@ async def create_vector_store_in_db(
vector_store_description: Optional[str] = None,
vector_store_metadata: Optional[Dict] = None,
litellm_params: Optional[Dict] = None,
created_by: Optional[str] = None,
updated_by: Optional[str] = None,
litellm_credential_name: Optional[str] = None,
) -> LiteLLM_ManagedVectorStore:
"""
Helper function to create a vector store in the database.
@ -190,13 +189,10 @@ async def create_vector_store_in_db(
data_to_create["vector_store_description"] = vector_store_description
if vector_store_metadata is not None:
data_to_create["vector_store_metadata"] = safe_dumps(vector_store_metadata)
if created_by is not None:
data_to_create["created_by"] = created_by
if updated_by is not None:
data_to_create["updated_by"] = updated_by
if litellm_credential_name is not None:
data_to_create["litellm_credential_name"] = litellm_credential_name
# Handle litellm_params
litellm_params_json: Optional[str] = None
# Handle litellm_params - always provide at least an empty dict
if litellm_params:
# Auto-resolve embedding config if embedding model is provided but config is not
embedding_model = litellm_params.get("litellm_embedding_model")
@ -214,9 +210,10 @@ async def create_vector_store_in_db(
litellm_params_dict = GenericLiteLLMParams(
**litellm_params
).model_dump(exclude_none=True)
litellm_params_json = safe_dumps(litellm_params_dict)
data_to_create["litellm_params"] = litellm_params_json
data_to_create["litellm_params"] = safe_dumps(litellm_params_dict)
else:
# Provide empty dict if no litellm_params provided
data_to_create["litellm_params"] = safe_dumps({})
# Create in database
_new_vector_store = (
@ -290,8 +287,7 @@ async def new_vector_store(
vector_store_description=vector_store.get("vector_store_description"),
vector_store_metadata=validated_metadata,
litellm_params=vector_store.get("litellm_params"),
created_by=user_api_key_dict.user_id,
updated_by=user_api_key_dict.user_id,
litellm_credential_name=vector_store.get("litellm_credential_name"),
)
return {