OpenAI-compatible adapter for ComfyUI image generation and editing
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""Adapter exceptions and OpenAI-shaped error responses."""
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
|
||||
class AdapterError(Exception):
|
||||
"""Base class; renders as an OpenAI error body."""
|
||||
|
||||
def __init__(self, status: int, message: str, err_type: str, code: str | None = None):
|
||||
self.status = status
|
||||
self.message = message
|
||||
self.err_type = err_type
|
||||
self.code = code
|
||||
super().__init__(message)
|
||||
|
||||
|
||||
class InvalidRequest(AdapterError):
|
||||
def __init__(self, message: str, code: str | None = None):
|
||||
super().__init__(400, message, "invalid_request_error", code)
|
||||
|
||||
|
||||
class Unauthorized(AdapterError):
|
||||
def __init__(self, message: str = "Invalid API key provided"):
|
||||
super().__init__(401, message, "invalid_request_error", "invalid_api_key")
|
||||
|
||||
|
||||
class ComfyUIError(AdapterError):
|
||||
"""ComfyUI rejected validation, failed execution, or timed out."""
|
||||
|
||||
def __init__(self, message: str, code: str = "comfyui_error"):
|
||||
super().__init__(502, message, "server_error", code)
|
||||
|
||||
|
||||
def error_body(message: str, err_type: str, code: str | None = None) -> dict:
|
||||
return {"error": {"message": message, "type": err_type, "param": None, "code": code}}
|
||||
|
||||
|
||||
def install_error_handlers(app: FastAPI) -> None:
|
||||
@app.exception_handler(AdapterError)
|
||||
async def adapter_error_handler(request: Request, exc: AdapterError) -> JSONResponse:
|
||||
return JSONResponse(status_code=exc.status, content=error_body(exc.message, exc.err_type, exc.code))
|
||||
Reference in New Issue
Block a user