from flask import Blueprint, request from ..cache import redis from ..helpers.client import format_sillytavern_err from ..helpers.http import require_api_key from ..openai_request_handler import build_openai_response from ..server_error import handle_server_error from ... import opts openai_bp = Blueprint('openai/v1/', __name__) @openai_bp.before_request def before_oai_request(): # TODO: unify with normal before_request() if not opts.http_host: opts.http_host = request.headers.get("Host") if not opts.enable_openi_compatible_backend: return build_openai_response('', format_sillytavern_err('The OpenAI-compatible backend is disabled.', 'Access Denied')), 401 if not redis.get('base_client_api'): redis.set('base_client_api', f'{request.headers.get("Host")}/{opts.frontend_api_client.strip("/")}') if request.endpoint != 'v1.get_stats': response = require_api_key() if response is not None: return response @openai_bp.errorhandler(500) def handle_error(e): return handle_server_error(e) from .models import openai_list_models from .chat_completions import openai_chat_completions from .info import get_openai_info