From b49bf8b08eb070e864b2b02208b723050c4c2116 Mon Sep 17 00:00:00 2001 From: AkhileshNegi Date: Tue, 12 Aug 2025 12:59:42 +0530 Subject: [PATCH 1/4] updating the failure response --- backend/app/api/routes/responses.py | 50 +++++++++-------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/backend/app/api/routes/responses.py b/backend/app/api/routes/responses.py index 1ef09947..8c49a9f2 100644 --- a/backend/app/api/routes/responses.py +++ b/backend/app/api/routes/responses.py @@ -266,22 +266,23 @@ def process_response( tracer.log_error(error_message, response_id=request.response_id) request_dict = request.model_dump() - # Create a custom error response with additional data in data field - additional_data = get_additional_data(request_dict) - callback_response = ResponsesAPIResponse( - success=False, - data=additional_data if additional_data else None, - error=error_message, - metadata=None, - ) - tracer.flush() if request.callback_url: logger.info( f"[process_response] Sending callback to URL: {request.callback_url}, assistant={mask_string(request.assistant_id)}, project_id={project_id}" ) - send_callback(request.callback_url, callback_response.model_dump()) + + # Send callback with webhook-specific response format + send_callback( + request.callback_url, + { + "success": False, + "data": get_additional_data(request_dict), + "error": error_message, + "metadata": None, + }, + ) logger.info( f"[process_response] Callback sent successfully, assistant={mask_string(request.assistant_id)}, project_id={project_id}" ) @@ -319,11 +320,10 @@ async def responses( f"[response] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}" ) request_dict = request.model_dump() - additional_data = get_additional_data(request_dict) return { "success": False, "error": "OpenAI API key not configured for this organization.", - "data": additional_data if additional_data else None, + "data": get_additional_data(request_dict), "metadata": None, } @@ -355,15 +355,11 @@ async def responses( f"[response] Background task scheduled for response processing: assistant_id={mask_string(request.assistant_id)}, project_id={project_id}, organization_id={organization_id}" ) - request_dict = request.model_dump() - additional_data = get_additional_data(request_dict) - return { "success": True, "data": { "status": "processing", "message": "Response creation started", - **additional_data, }, "error": None, "metadata": None, @@ -393,13 +389,9 @@ async def responses_sync( logger.error( f"[response_sync] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}" ) - # Create a custom error response with additional data in data field - additional_data = get_additional_data(request_dict) - return APIResponse( - success=False, - data=additional_data if additional_data else None, + return APIResponse.failure_response( error="OpenAI API key not configured for this organization.", - metadata=None, + metadata=get_additional_data(request_dict), ) client = OpenAI(api_key=credentials["api_key"]) @@ -470,10 +462,6 @@ async def responses_sync( logger.info( f"[response_sync] Successfully generated response: response_id={response.id}, project_id={project_id}" ) - - request_dict = request.model_dump() - additional_data = get_additional_data(request_dict) - return ResponsesAPIResponse.success_response( data=_APIResponse( status="success", @@ -486,7 +474,6 @@ async def responses_sync( total_tokens=response.usage.total_tokens, model=response.model, ), - **additional_data, ) ) except openai.OpenAIError as e: @@ -499,11 +486,6 @@ async def responses_sync( tracer.flush() request_dict = request.model_dump() - # Create a custom error response with additional data in data field - additional_data = get_additional_data(request_dict) - return ResponsesAPIResponse( - success=False, - data=additional_data if additional_data else None, - error=error_message, - metadata=None, + return ResponsesAPIResponse.failure_response( + error=error_message, metadata=get_additional_data(request_dict) ) From 7d999d43d4c4eae376936cc35cc76ddc66786d17 Mon Sep 17 00:00:00 2001 From: AkhileshNegi Date: Tue, 12 Aug 2025 13:07:16 +0530 Subject: [PATCH 2/4] reverting unnecessary changes --- backend/app/api/routes/responses.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/backend/app/api/routes/responses.py b/backend/app/api/routes/responses.py index 8c49a9f2..a18fcf26 100644 --- a/backend/app/api/routes/responses.py +++ b/backend/app/api/routes/responses.py @@ -355,11 +355,15 @@ async def responses( f"[response] Background task scheduled for response processing: assistant_id={mask_string(request.assistant_id)}, project_id={project_id}, organization_id={organization_id}" ) + request_dict = request.model_dump() + additional_data = get_additional_data(request_dict) + return { "success": True, "data": { "status": "processing", "message": "Response creation started", + **additional_data, }, "error": None, "metadata": None, @@ -389,9 +393,13 @@ async def responses_sync( logger.error( f"[response_sync] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}" ) - return APIResponse.failure_response( + # Create a custom error response with additional data in data field + additional_data = get_additional_data(request_dict) + return APIResponse( + success=False, + data=additional_data if additional_data else None, error="OpenAI API key not configured for this organization.", - metadata=get_additional_data(request_dict), + metadata=None, ) client = OpenAI(api_key=credentials["api_key"]) @@ -462,6 +470,10 @@ async def responses_sync( logger.info( f"[response_sync] Successfully generated response: response_id={response.id}, project_id={project_id}" ) + + request_dict = request.model_dump() + additional_data = get_additional_data(request_dict) + return ResponsesAPIResponse.success_response( data=_APIResponse( status="success", @@ -474,6 +486,7 @@ async def responses_sync( total_tokens=response.usage.total_tokens, model=response.model, ), + **additional_data, ) ) except openai.OpenAIError as e: @@ -486,6 +499,11 @@ async def responses_sync( tracer.flush() request_dict = request.model_dump() - return ResponsesAPIResponse.failure_response( - error=error_message, metadata=get_additional_data(request_dict) + # Create a custom error response with additional data in data field + additional_data = get_additional_data(request_dict) + return ResponsesAPIResponse( + success=False, + data=additional_data if additional_data else None, + error=error_message, + metadata=None, ) From 2396bd97ccf5fa7c436c973b0e651fe2363f03eb Mon Sep 17 00:00:00 2001 From: AkhileshNegi Date: Tue, 12 Aug 2025 13:41:50 +0530 Subject: [PATCH 3/4] merging additional params at end --- backend/app/api/routes/responses.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/app/api/routes/responses.py b/backend/app/api/routes/responses.py index a18fcf26..bc2a5462 100644 --- a/backend/app/api/routes/responses.py +++ b/backend/app/api/routes/responses.py @@ -254,9 +254,9 @@ def process_response( total_tokens=response.usage.total_tokens, model=response.model, ), - **get_additional_data(request_dict), ) ) + except openai.OpenAIError as e: error_message = handle_openai_error(e) logger.error( @@ -266,6 +266,8 @@ def process_response( tracer.log_error(error_message, response_id=request.response_id) request_dict = request.model_dump() + callback_response = ResponsesAPIResponse.failure_response(error=error_message) + tracer.flush() if request.callback_url: @@ -274,12 +276,16 @@ def process_response( ) # Send callback with webhook-specific response format + callback_data = callback_response.model_dump() send_callback( request.callback_url, { - "success": False, - "data": get_additional_data(request_dict), - "error": error_message, + "success": callback_data.get("success", False), + "data": { + **(callback_data.get("data") or {}), + **get_additional_data(request_dict), + }, + "error": callback_data.get("error"), "metadata": None, }, ) @@ -320,10 +326,11 @@ async def responses( f"[response] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}" ) request_dict = request.model_dump() + additional_data = get_additional_data(request_dict) return { "success": False, "error": "OpenAI API key not configured for this organization.", - "data": get_additional_data(request_dict), + "data": additional_data if additional_data else None, "metadata": None, } From f73290c07e1b7f89ab003701ad375c9790367b78 Mon Sep 17 00:00:00 2001 From: AkhileshNegi Date: Tue, 12 Aug 2025 13:59:58 +0530 Subject: [PATCH 4/4] formatting fixes --- backend/app/api/routes/responses.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/app/api/routes/responses.py b/backend/app/api/routes/responses.py index bc2a5462..25c14d16 100644 --- a/backend/app/api/routes/responses.py +++ b/backend/app/api/routes/responses.py @@ -256,7 +256,6 @@ def process_response( ), ) ) - except openai.OpenAIError as e: error_message = handle_openai_error(e) logger.error(