This commit is contained in:
Timothy Jaeryang Baek
2026-03-21 20:46:25 -05:00
parent f8b3a32caf
commit 93415a48e8
2 changed files with 59 additions and 22 deletions
+32 -4
View File
@@ -858,6 +858,9 @@ def convert_to_responses_payload(payload: dict) -> dict:
if 'max_tokens' in responses_payload:
responses_payload['max_output_tokens'] = responses_payload.pop('max_tokens')
if 'max_completion_tokens' in responses_payload:
responses_payload['max_output_tokens'] = responses_payload.pop('max_completion_tokens')
# Remove Chat Completions-only parameters not supported by the Responses API
for unsupported_key in (
'stream_options',
@@ -896,11 +899,36 @@ def convert_to_responses_payload(payload: dict) -> dict:
def convert_responses_result(response: dict) -> dict:
"""
Convert non-streaming Responses API result.
Just add done flag - pass through raw response, frontend handles output.
Convert non-streaming Responses API result to Chat Completions format.
Extracts text from message output items so all downstream consumers
(frontend tasks, get_content_from_response) work without modification.
"""
response['done'] = True
return response
output_items = response.get('output', [])
content = ''
for item in output_items:
if item.get('type') == 'message':
for part in item.get('content', []):
if part.get('type') == 'output_text':
content += part.get('text', '')
return {
'id': response.get('id', ''),
'object': 'chat.completion',
'model': response.get('model', ''),
'choices': [
{
'index': 0,
'message': {
'role': 'assistant',
'content': content,
},
'finish_reason': 'stop',
}
],
'usage': response.get('usage', {}),
}
@router.post('/chat/completions')