gemini / app /utils /response.py
drriver's picture
Upload 28 files
60016b2 verified
import time
from fastapi import status
from fastapi.responses import JSONResponse
def create_chat_response(model: str, choices: list, id: str = None):
"""创建标准响应对象的工厂函数"""
return {
"id": id or f"chatcmpl-{int(time.time()*1000)}",
"object": "chat.completion",
"created": int(time.time()),
"model": model,
"choices": choices,
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
}
def create_error_response(model: str, error_message: str):
"""创建错误响应对象的工厂函数"""
return create_chat_response(
model=model,
choices=[{
"index": 0,
"message": {
"role": "assistant",
"content": error_message
},
"finish_reason": "error"
}]
)
def create_response(chat_request, response_content):
"""创建标准响应对象但不缓存"""
# 创建响应对象
return create_chat_response(
model=chat_request.model,
choices=[{
"index": 0,
"message": {
"role": "assistant",
"content": response_content.text
},
"finish_reason": "stop"
}]
)
def handle_exception(exc_type, exc_value, exc_traceback, translate_error, log):
"""处理全局异常的函数"""
if issubclass(exc_type, KeyboardInterrupt):
# 对于KeyboardInterrupt,使用默认处理
import sys
sys.excepthook(exc_type, exc_value, exc_traceback)
return
# 对于其他异常,记录日志
error_message = translate_error(str(exc_value))
log('error', f"未捕获的异常: {error_message}", status_code=500, error_message=error_message)