from dataclasses import dataclass, field from typing import List, Optional, Union from rest_framework import serializers from _utils.gerar_documento_utils.prompts import ( prompt_gerar_documento, ) from gerar_documento.serializer import FileInfoSerializer, FileInfoSerializerData from gerar_documento.serializer_base import ( GerarDocumentoParametros, GerarDocumentoParametrosData, ) from setup.environment import default_model from django.core.files.uploadedfile import UploadedFile user_message = "What are the main points of this document?" class SimpleLLMInitialSerializer(serializers.Serializer): files = serializers.ListField(child=serializers.FileField(), required=False) user_text = serializers.CharField(required=False, default=user_message) model = serializers.CharField(required=False, default=default_model) prompt = serializers.CharField(required=False, default=prompt_gerar_documento) llm_ultimas_requests = serializers.CharField( required=False, default="gemini-2.0-flash" ) @dataclass class SimpleLLMInitialSerializerData: files: List[dict] = field(default_factory=list) user_text: str = "" model: str = default_model prompt: str = "" llm_ultimas_requests: str = "gemini-2.0-flash" class SimpleLLMSerializer(SimpleLLMInitialSerializer): files = serializers.ListField(child=FileInfoSerializer(), required=False) bubble_editor_version = serializers.CharField( required=False, default="version-test" ) # Será o valor utilizado dentro da URL da requisição pro Bubble doc_id = serializers.CharField(required=True) form_response_id = serializers.CharField(required=True) version = serializers.CharField(required=True) def get_obj(self): return SimpleSerializerData(**self.validated_data) # type: ignore @dataclass class SimpleSerializerData(SimpleLLMInitialSerializerData): files: List[FileInfoSerializerData] = field(default_factory=list) bubble_editor_version: str = "version-test" doc_id: str = "" form_response_id: str = "" version: str = ""