@@ -1244,4 +1244,10 @@ msgid "Image size %dx%d is not supported. Please rotate image to %dx%d" msgstr "Размер изображения %dx%d не поддерживается. Пожалуйста, переверните до %dx%d" msgid "Image size %dx%d is not supported. Required size: %dx%d" -msgstr "Размер изображения %dx%d не поддерживается. Требуемый размер: %dx%d" \ No newline at end of file +msgstr "Размер изображения %dx%d не поддерживается. Требуемый размер: %dx%d" + +msgid "You must provide a model parameter" +msgstr "Необходимо указать параметр 'model'" + +msgid "Missing required parameter: 'messages'" +msgstr "Отсутствует обязательный параметр: 'messages'" @@ -7,9 +7,11 @@ from io import BytesIO import filetype from django.core.files.uploadedfile import InMemoryUploadedFile from django.db.models import Q +from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import extend_schema from rest_framework import status from rest_framework.response import Response +from rest_framework.status import HTTP_400_BAD_REQUEST from rest_framework.views import APIView from ml_model.choices import ContentTypes @@ -54,7 +56,21 @@ class OpenAICompatibleAPIView(BaseGenerationView): def post(self, request, *args, **kwargs): content_lines = [] file = None - for m in request.data.pop('messages', []): + messages = request.data.pop('messages', []) + if not messages: + return Response( + { + 'error': + { + 'message': _('Missing required parameter: \'messages\''), + 'type': 'invalid_request_error', + 'param': 'messages', + 'code': 'missing_required_parameter' + } + }, + status=HTTP_400_BAD_REQUEST + ) + for m in messages: role = m['role'].capitalize() msg_content = m.get('content', []) if isinstance(msg_content, str): @@ -80,7 +96,21 @@ class OpenAICompatibleAPIView(BaseGenerationView): charset=None ) content = '\n'.join(content_lines) - version = request.data.pop('model') + try: + version = request.data.pop('model') + except KeyError: + return Response( + { + 'error': + { + 'message': _('You must provide a model parameter'), + 'type': 'invalid_request_error', + 'param': None, + 'code': None + } + }, + status=HTTP_400_BAD_REQUEST + ) request.data['info'] = {key: request.data.pop(key) for key in request.data.copy().keys()} request.data['content'] = content request.data['info']['version'] = version