File size: 3,110 Bytes
1fd7b67
a263183
756fca0
d514965
f9a1a18
eebeb78
095b5f1
f9a1a18
 
2ce5e93
dc376b6
1286e81
2ce5e93
d07865c
 
2ce5e93
d8410b4
d07865c
 
12d3e1a
588b95c
1286e81
 
5ea29d8
ca8a144
eebeb78
a1c6081
a1f037d
 
 
 
 
ab34606
1fd7b67
c625f4c
 
 
1fd7b67
c625f4c
 
1fd7b67
756fca0
a1f037d
 
 
 
ab34606
a1f037d
55f46c1
f8e2c8b
d514965
f9a1a18
d514965
f9a1a18
d514965
f9a1a18
12d3e1a
756fca0
f8e2c8b
f9a1a18
 
a263183
f9a1a18
 
a263183
f9a1a18
a263183
f9a1a18
a263183
f9a1a18
f8e2c8b
f9a1a18
f8e2c8b
 
 
 
f9a1a18
f8e2c8b
f9a1a18
d8410b4
f8e2c8b
f9a1a18
f8e2c8b
 
f9a1a18
 
f8e2c8b
 
 
 
f9a1a18
a1c6081
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import os
from langchain_core.messages import HumanMessage
from typing import Any, Union, cast
from _utils.Utils_Class import UtilsClass
from _utils.axiom_logs import AxiomLogs
from _utils.langchain_utils.LLM_class import LLM
from _utils.bubble_integrations.enviar_resposta_final import enviar_resposta_final
from _utils.custom_exception_handler import custom_exception_handler_without_api_handler
from rest_framework.response import Response
from _utils.gerar_documento_utils.GerarDocumento import (
    GerarDocumento,
)
from _utils.gerar_documento_utils.contextual_retriever import (
    ContextualRetriever,
)
from _utils.gerar_documento_utils.utils import (
    generate_document_title,
    gerar_resposta_compilada,
    get_response_from_auxiliar_contextual_prompt,
)
from _utils.models.gerar_documento import (
    RetrievalConfig,
)
import markdown

from _utils.langchain_utils.Prompt_class import Prompt
from _utils.utils import convert_markdown_to_HTML
from gerar_documento.serializer import (
    GerarDocumentoComPDFProprioSerializer,
    GerarDocumentoComPDFProprioSerializerData,
    GerarDocumentoSerializerData,
)
from setup.logging import Axiom


os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_ENDPOINT"] = "https://api.smith.langchain.com"
os.environ.get("LANGCHAIN_API_KEY")
os.environ["LANGCHAIN_PROJECT"] = "VELLA"


async def gerar_documento(
    serializer: Union[
        GerarDocumentoSerializerData, GerarDocumentoComPDFProprioSerializerData, Any
    ],
    listaPDFs,
    axiom_instance: Axiom,
    isBubble=False,
):
    try:
        axiom = axiom_instance.send_axiom
        ax = AxiomLogs(axiom_instance)
        utils = UtilsClass()
        summarizer = GerarDocumento(serializer, isBubble, axiom_instance)

        all_PDFs_chunks, full_text_as_array = await summarizer.get_text_and_pdf_chunks()

        is_contextualized_chunk = serializer.should_have_contextual_chunks

        response_auxiliar_summary = await get_response_from_auxiliar_contextual_prompt(
            full_text_as_array
        )
        summarizer.resumo_auxiliar = response_auxiliar_summary
        ax.resumo_inicial_processo(response_auxiliar_summary)

        await summarizer.generate_chunks_processados()

        await summarizer.generate_query_for_vector_store()

        await summarizer.create_enhanced_vector_store()

        structured_summaries = await summarizer.do_last_requests()

        if not isinstance(structured_summaries, list):
            return Response({"erro": structured_summaries})

        await summarizer.generate_complete_text()

        await summarizer.get_document_title()

        if isBubble:
            await summarizer.send_to_bubble()

        return {
            "texto_completo": summarizer.texto_completo_como_html,
            "titulo_do_documento": summarizer.titulo_do_documento,
            "resultado": structured_summaries,
            "parametros-utilizados": gerar_resposta_compilada(serializer),
        }
    except Exception as e:
        custom_exception_handler_without_api_handler(e, serializer, axiom_instance)
        raise