Spaces:
Paused
Paused
Update proxy_server.py
Browse files- proxy_server.py +5 -18
proxy_server.py
CHANGED
|
@@ -270,29 +270,17 @@ async def stream_openai_response_to_claude_events(openai_response: httpx.Respons
|
|
| 270 |
'stop_reason': claude_stop_reason,
|
| 271 |
'stop_sequence': None
|
| 272 |
}
|
| 273 |
-
# Removed usage from here
|
| 274 |
}
|
| 275 |
yield f"event: message_delta\ndata: {json.dumps(final_delta)}\n\n"
|
| 276 |
|
| 277 |
# 7. Send message_stop (including final usage)
|
| 278 |
-
# --- FIX:
|
| 279 |
final_stop_event_data = {
|
| 280 |
'type': 'message_stop',
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
'amazon-bedrock-invocationMetrics': { # Mimic Bedrock's potential structure for usage
|
| 286 |
-
'inputTokenCount': input_tokens,
|
| 287 |
-
'outputTokenCount': output_tokens if output_tokens > 0 else (accumulated_content_len // 4), # Use estimate if needed
|
| 288 |
-
'invocationLatency': 0, # Placeholder
|
| 289 |
-
'firstByteLatency': 0 # Placeholder
|
| 290 |
-
}
|
| 291 |
-
# Alternative simpler structure (if the above fails):
|
| 292 |
-
# 'usage': {
|
| 293 |
-
# 'input_tokens': input_tokens,
|
| 294 |
-
# 'output_tokens': output_tokens if output_tokens > 0 else (accumulated_content_len // 4)
|
| 295 |
-
# }
|
| 296 |
}
|
| 297 |
yield f"event: message_stop\ndata: {json.dumps(final_stop_event_data)}\n\n"
|
| 298 |
# --- End Fix ---
|
|
@@ -436,4 +424,3 @@ if __name__ == "__main__":
|
|
| 436 |
log_config_level = log_level.lower() if log_level in ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "TRACE"] else "info"
|
| 437 |
logger.info(f"Starting Uvicorn server on {host}:{port}")
|
| 438 |
uvicorn.run("proxy_server:app", host=host, port=port, reload=True, log_level=log_config_level)
|
| 439 |
-
|
|
|
|
| 270 |
'stop_reason': claude_stop_reason,
|
| 271 |
'stop_sequence': None
|
| 272 |
}
|
|
|
|
| 273 |
}
|
| 274 |
yield f"event: message_delta\ndata: {json.dumps(final_delta)}\n\n"
|
| 275 |
|
| 276 |
# 7. Send message_stop (including final usage)
|
| 277 |
+
# --- FIX: Use simpler 'usage' structure in message_stop ---
|
| 278 |
final_stop_event_data = {
|
| 279 |
'type': 'message_stop',
|
| 280 |
+
'usage': {
|
| 281 |
+
'input_tokens': input_tokens,
|
| 282 |
+
'output_tokens': output_tokens if output_tokens > 0 else (accumulated_content_len // 4) # Use estimate if needed
|
| 283 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 284 |
}
|
| 285 |
yield f"event: message_stop\ndata: {json.dumps(final_stop_event_data)}\n\n"
|
| 286 |
# --- End Fix ---
|
|
|
|
| 424 |
log_config_level = log_level.lower() if log_level in ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "TRACE"] else "info"
|
| 425 |
logger.info(f"Starting Uvicorn server on {host}:{port}")
|
| 426 |
uvicorn.run("proxy_server:app", host=host, port=port, reload=True, log_level=log_config_level)
|
|
|