import traceback from flask import jsonify, request from . import openai_bp from ..helpers.client import format_sillytavern_err from ..helpers.http import validate_json from ..openai_request_handler import OpenAIRequestHandler, build_openai_response # TODO: add rate-limit headers? @openai_bp.route('/chat/completions', methods=['POST']) def openai_chat_completions(): request_valid_json, request_json_body = validate_json(request) if not request_valid_json or not request_json_body.get('messages'): return jsonify({'code': 400, 'msg': 'invalid JSON'}), 400 else: try: return OpenAIRequestHandler(request).handle_request() except Exception as e: print(f'EXCEPTION on {request.url}!!!', f'{e.__class__.__name__}: {e}') traceback.print_exc() print(request.data) return build_openai_response('', format_sillytavern_err(f'Server encountered exception.', 'error')), 500