Spaces:
Sleeping
Sleeping
sachin
commited on
Commit
·
20c50d1
1
Parent(s):
3cc9692
fix
Browse files- src/server/main.py +12 -2
src/server/main.py
CHANGED
@@ -697,19 +697,20 @@ async def translate(
|
|
697 |
@app.post("/v1/visual_query",
|
698 |
response_model=VisualQueryResponse,
|
699 |
summary="Visual Query with Image",
|
700 |
-
description="Process a visual query with an encrypted text query, encrypted image, and encrypted language codes provided in a JSON body. Rate limited to 100 requests per minute per user. Requires authentication and X-Session-Key header.",
|
701 |
tags=["Chat"],
|
702 |
responses={
|
703 |
200: {"description": "Query response", "model": VisualQueryResponse},
|
704 |
400: {"description": "Invalid query, encrypted data, or language codes"},
|
705 |
401: {"description": "Unauthorized - Token required"},
|
|
|
706 |
429: {"description": "Rate limit exceeded"},
|
707 |
504: {"description": "Visual query service timeout"}
|
708 |
})
|
709 |
@limiter.limit(settings.chat_rate_limit)
|
710 |
async def visual_query(
|
711 |
request: Request,
|
712 |
-
|
713 |
file: UploadFile = File(..., description="Encrypted image file to analyze"),
|
714 |
credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
|
715 |
x_session_key: str = Header(..., alias="X-Session-Key")
|
@@ -717,6 +718,15 @@ async def visual_query(
|
|
717 |
user_id = await get_current_user(credentials)
|
718 |
session_key = base64.b64decode(x_session_key)
|
719 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
720 |
# Decrypt query
|
721 |
try:
|
722 |
encrypted_query = base64.b64decode(visual_query_request.query)
|
|
|
697 |
@app.post("/v1/visual_query",
|
698 |
response_model=VisualQueryResponse,
|
699 |
summary="Visual Query with Image",
|
700 |
+
description="Process a visual query with an encrypted text query, encrypted image, and encrypted language codes provided in a JSON body named 'data'. Rate limited to 100 requests per minute per user. Requires authentication and X-Session-Key header.",
|
701 |
tags=["Chat"],
|
702 |
responses={
|
703 |
200: {"description": "Query response", "model": VisualQueryResponse},
|
704 |
400: {"description": "Invalid query, encrypted data, or language codes"},
|
705 |
401: {"description": "Unauthorized - Token required"},
|
706 |
+
422: {"description": "Validation error in request body"},
|
707 |
429: {"description": "Rate limit exceeded"},
|
708 |
504: {"description": "Visual query service timeout"}
|
709 |
})
|
710 |
@limiter.limit(settings.chat_rate_limit)
|
711 |
async def visual_query(
|
712 |
request: Request,
|
713 |
+
data: str = Form(..., description="JSON string containing encrypted query, src_lang, and tgt_lang"),
|
714 |
file: UploadFile = File(..., description="Encrypted image file to analyze"),
|
715 |
credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
|
716 |
x_session_key: str = Header(..., alias="X-Session-Key")
|
|
|
718 |
user_id = await get_current_user(credentials)
|
719 |
session_key = base64.b64decode(x_session_key)
|
720 |
|
721 |
+
# Parse and validate JSON data
|
722 |
+
try:
|
723 |
+
import json
|
724 |
+
visual_query_request = VisualQueryRequest.parse_raw(data)
|
725 |
+
logger.info(f"Received visual query JSON: {data}")
|
726 |
+
except Exception as e:
|
727 |
+
logger.error(f"Failed to parse JSON data: {str(e)}")
|
728 |
+
raise HTTPException(status_code=422, detail=f"Invalid JSON data: {str(e)}")
|
729 |
+
|
730 |
# Decrypt query
|
731 |
try:
|
732 |
encrypted_query = base64.b64decode(visual_query_request.query)
|