File size: 2,100 Bytes
63cd221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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 = ""