mirror of
https://github.com/arc53/DocsGPT.git
synced 2026-05-07 06:30:03 +00:00
38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
from flask import jsonify
|
|
from werkzeug.http import HTTP_STATUS_CODES
|
|
|
|
|
|
def response_error(code_status, message=None):
|
|
payload = {'error': HTTP_STATUS_CODES.get(code_status, "something went wrong")}
|
|
if message:
|
|
payload['message'] = message
|
|
response = jsonify(payload)
|
|
response.status_code = code_status
|
|
return response
|
|
|
|
|
|
def bad_request(status_code=400, message=''):
|
|
return response_error(code_status=status_code, message=message)
|
|
|
|
|
|
def sanitize_api_error(error) -> str:
|
|
"""
|
|
Convert technical API errors to user-friendly messages.
|
|
Works with both Exception objects and error message strings.
|
|
"""
|
|
error_str = str(error).lower()
|
|
if "503" in error_str or "unavailable" in error_str or "high demand" in error_str:
|
|
return "The AI service is temporarily unavailable due to high demand. Please try again in a moment."
|
|
if "429" in error_str or "rate limit" in error_str or "quota" in error_str:
|
|
return "Rate limit exceeded. Please wait a moment before trying again."
|
|
if "401" in error_str or "unauthorized" in error_str or "invalid api key" in error_str:
|
|
return "Authentication error. Please check your API configuration."
|
|
if "timeout" in error_str or "timed out" in error_str:
|
|
return "The request timed out. Please try again."
|
|
if "connection" in error_str or "network" in error_str:
|
|
return "Network error. Please check your connection and try again."
|
|
original = str(error)
|
|
if len(original) > 200 or "{" in original or "traceback" in error_str:
|
|
return "An error occurred while processing your request. Please try again later."
|
|
return original
|