|
|
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): |
|
|
|
|
|
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) |