Skip to content

Commit 3a3247e

Browse files
AkhileshNegiAkhilesh Negi
andauthored
OpenAI conversation: Standardizing API response#329)
Co-authored-by: Akhilesh Negi <[email protected]>
1 parent cae70be commit 3a3247e

File tree

1 file changed

+32
-8
lines changed

1 file changed

+32
-8
lines changed

backend/app/api/routes/responses.py

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,13 @@ def process_response(
266266
tracer.log_error(error_message, response_id=request.response_id)
267267

268268
request_dict = request.model_dump()
269-
callback_response = ResponsesAPIResponse.failure_response(
270-
error=error_message, metadata=get_additional_data(request_dict)
269+
# Create a custom error response with additional data in data field
270+
additional_data = get_additional_data(request_dict)
271+
callback_response = ResponsesAPIResponse(
272+
success=False,
273+
data=additional_data if additional_data else None,
274+
error=error_message,
275+
metadata=None,
271276
)
272277

273278
tracer.flush()
@@ -313,10 +318,12 @@ async def responses(
313318
logger.error(
314319
f"[response] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}"
315320
)
321+
request_dict = request.model_dump()
322+
additional_data = get_additional_data(request_dict)
316323
return {
317324
"success": False,
318325
"error": "OpenAI API key not configured for this organization.",
319-
"data": None,
326+
"data": additional_data if additional_data else None,
320327
"metadata": None,
321328
}
322329

@@ -348,12 +355,15 @@ async def responses(
348355
f"[response] Background task scheduled for response processing: assistant_id={mask_string(request.assistant_id)}, project_id={project_id}, organization_id={organization_id}"
349356
)
350357

358+
request_dict = request.model_dump()
359+
additional_data = get_additional_data(request_dict)
360+
351361
return {
352362
"success": True,
353363
"data": {
354364
"status": "processing",
355365
"message": "Response creation started",
356-
"success": True,
366+
**additional_data,
357367
},
358368
"error": None,
359369
"metadata": None,
@@ -383,9 +393,13 @@ async def responses_sync(
383393
logger.error(
384394
f"[response_sync] OpenAI API key not configured for org_id={organization_id}, project_id={project_id}"
385395
)
386-
return APIResponse.failure_response(
396+
# Create a custom error response with additional data in data field
397+
additional_data = get_additional_data(request_dict)
398+
return APIResponse(
399+
success=False,
400+
data=additional_data if additional_data else None,
387401
error="OpenAI API key not configured for this organization.",
388-
metadata=get_additional_data(request_dict),
402+
metadata=None,
389403
)
390404

391405
client = OpenAI(api_key=credentials["api_key"])
@@ -456,6 +470,10 @@ async def responses_sync(
456470
logger.info(
457471
f"[response_sync] Successfully generated response: response_id={response.id}, project_id={project_id}"
458472
)
473+
474+
request_dict = request.model_dump()
475+
additional_data = get_additional_data(request_dict)
476+
459477
return ResponsesAPIResponse.success_response(
460478
data=_APIResponse(
461479
status="success",
@@ -468,6 +486,7 @@ async def responses_sync(
468486
total_tokens=response.usage.total_tokens,
469487
model=response.model,
470488
),
489+
**additional_data,
471490
)
472491
)
473492
except openai.OpenAIError as e:
@@ -480,6 +499,11 @@ async def responses_sync(
480499
tracer.flush()
481500

482501
request_dict = request.model_dump()
483-
return ResponsesAPIResponse.failure_response(
484-
error=error_message, metadata=get_additional_data(request_dict)
502+
# Create a custom error response with additional data in data field
503+
additional_data = get_additional_data(request_dict)
504+
return ResponsesAPIResponse(
505+
success=False,
506+
data=additional_data if additional_data else None,
507+
error=error_message,
508+
metadata=None,
485509
)

0 commit comments

Comments
 (0)