Added extra logging

This commit is contained in:
Viswamedha Nalabotu 2026-03-11 16:12:05 +00:00
parent 6d85fd4341
commit 95fc6dccf8
2 changed files with 15 additions and 5 deletions

View file

@ -36,7 +36,6 @@ def _extract_text_from_training_file(file_obj: TrainingFile) -> str:
return _decode_text_bytes(raw_bytes).strip()
def _get_text_chunks(text: str, size: int = 10000):
"""Slices text into rough blocks to prevent HTTP timeouts."""
for i in range(0, len(text), size):
yield text[i:i + size]
@ -50,8 +49,6 @@ def ingest_training_file_task(self, file_uuid):
file_obj.status = 'ingesting'
file_obj.save()
target_dimensions = RoleRagDocument._meta.get_field('embedding').dimensions
try:
raw_text = _extract_text_from_training_file(file_obj)
if not raw_text:
@ -70,7 +67,7 @@ def ingest_training_file_task(self, file_uuid):
json={
"text": text_segment,
"threshold": 95,
"target_dimensions": target_dimensions,
"target_dimensions": settings.EMBEDDING_DIMENSIONS,
},
)
response.raise_for_status()

View file

@ -77,14 +77,16 @@ async def health():
def _resolve_target_dimensions(payload: Dict[str, Any]) -> int:
raw_target = payload.get("target_dimensions")
if raw_target in (None, ""):
raise HTTPException(status_code=400, detail="'target_dimensions' is required")
raise HTTPException(status_code=400, detail="'target_dimensions' is required and must be a positive integer")
try:
target = int(raw_target)
except (TypeError, ValueError) as exc:
logger.warning("Invalid target_dimensions value: %s", raw_target)
raise HTTPException(status_code=400, detail="'target_dimensions' must be an integer") from exc
if target <= 0:
logger.warning("Non-positive target_dimensions value: %s", target)
raise HTTPException(status_code=400, detail="'target_dimensions' must be > 0")
return target
@ -103,13 +105,18 @@ def pad_and_normalize(embeddings: Tensor, target_dimensions: int) -> Tensor:
async def embeddings(request: Request):
data = await request.json()
input_data = data.get("input", "")
input_kind = type(input_data).__name__
input_count = len(input_data) if isinstance(input_data, list) else (1 if isinstance(input_data, str) else 0)
logger.info("/v1/embeddings request received: input_kind=%s input_count=%s", input_kind, input_count)
target_dimensions = _resolve_target_dimensions(data)
logger.info("/v1/embeddings resolved target_dimensions=%s", target_dimensions)
if isinstance(input_data, str):
inputs = [input_data]
elif isinstance(input_data, list):
inputs = [str(item) for item in input_data if str(item).strip()]
else:
logger.warning("/v1/embeddings bad input type: %s", input_kind)
raise HTTPException(status_code=400, detail="'input' must be a string or list of strings")
if not inputs:
@ -157,16 +164,22 @@ async def semantic_chunk(request: Request):
data = await request.json()
raw_text = data.get("text", "")
threshold_percentile = data.get("threshold", 95)
raw_text_len = len(raw_text) if isinstance(raw_text, str) else -1
logger.info("/v1/semantic-chunk request received: text_len=%s threshold=%s", raw_text_len, threshold_percentile,)
target_dimensions = _resolve_target_dimensions(data)
logger.info("/v1/semantic-chunk resolved target_dimensions=%s", target_dimensions)
if not raw_text:
logger.info("/v1/semantic-chunk empty text payload")
return {"chunks": [], "embeddings": []}
if len(raw_text) > 50000:
logger.warning("/v1/semantic-chunk payload too large: text_len=%s", len(raw_text))
raise HTTPException(status_code=413, detail="Text block too large. Please batch on the client.")
model = state.get("embed_model")
if model is None:
logger.error("/v1/semantic-chunk embedding model not initialized")
raise HTTPException(status_code=503, detail="Embedding model not initialized")
sentences = [s.strip() for s in raw_text.replace('\n', ' ').split('. ') if s.strip()]