Spaces:
Running
Running
| from typing import Any, Dict, cast | |
| from setup.easy_imports import ( | |
| Response, | |
| AsyncAPIView, | |
| APIView, | |
| MultiPartParser, | |
| extend_schema, | |
| ) | |
| from datetime import datetime | |
| from _utils.handle_files import handle_pdf_files_from_serializer, remove_pdf_temp_files | |
| from _utils.resumo_completo_cursor import ( | |
| get_llm_summary_answer_by_cursor_complete, | |
| ) | |
| from _utils.gerar_relatorio_modelo_usuario.prompts import prompt_auxiliar_inicio | |
| from .serializer import ( | |
| GerarDocumentoComPDFProprioSerializer, | |
| GerarDocumentoSerializer, | |
| ) | |
| import asyncio | |
| class GerarDocumentoView(AsyncAPIView): | |
| # parser_classes = [MultiPartParser] | |
| serializer = {} | |
| async def post(self, request): | |
| print(f"\n\nDATA E HORA DA REQUISIÇÃO: {datetime.now()}") | |
| print('request.data: ', request.data) | |
| serializer = GerarDocumentoSerializer(data=request.data) | |
| if serializer.is_valid(raise_exception=True): | |
| if not serializer.validated_data: | |
| raise ValueError("Erro no validated_data") | |
| async def proccess_data_after_response(): | |
| # await asyncio.sleep(0) | |
| data = cast(Dict[str, Any], serializer.validated_data) | |
| print("\ndata: ", data) | |
| self.serializer = data | |
| # data["prompt_auxiliar"] = ( | |
| # prompt_auxiliar_inicio + "\n" + data["prompt_auxiliar"] | |
| # ) | |
| # listaPDFs = handle_pdf_files_from_serializer(data["files"]) | |
| listaPDFs = [l["link_arquivo"] for l in data["files"]] | |
| print("\n\nlistaPDFs: ", listaPDFs) | |
| resposta_llm = await get_llm_summary_answer_by_cursor_complete( | |
| data, listaPDFs, True | |
| ) | |
| print("\n\nresposta_llm: ", resposta_llm) | |
| # remove_pdf_temp_files(listaPDFs) | |
| # print("PRÓXIMA LINHA ENVIA A RESPOSTA A QUEM FEZ A REQUISIÇÃO") | |
| # asyncio.create_task(proccess_data_after_response()) | |
| loop = asyncio.get_running_loop() | |
| loop.run_in_executor(None, lambda: asyncio.run(proccess_data_after_response())) | |
| return Response({"resposta": "Requisição está sendo processada em segundo plano"}) | |
| class GerarDocumentoComPDFProprioView(AsyncAPIView): | |
| parser_classes = [MultiPartParser] | |
| serializer = {} | |
| async def post(self, request): | |
| print(f"\n\nDATA E HORA DA REQUISIÇÃO: {datetime.now()}") | |
| serializer = GerarDocumentoComPDFProprioSerializer(data=request.data) | |
| if serializer.is_valid(raise_exception=True): | |
| data = cast(Dict[str, Any], serializer.validated_data) | |
| print("\n\ndata: ", data) | |
| self.serializer = data | |
| listaPDFs = handle_pdf_files_from_serializer(data["files"]) | |
| resposta_llm = await get_llm_summary_answer_by_cursor_complete( | |
| data, listaPDFs | |
| ) | |
| print("\n\nresposta_llm: ", resposta_llm) | |
| remove_pdf_temp_files(listaPDFs) | |
| print("PRÓXIMA LINHA ENVIA A RESPOSTA A QUEM FEZ A REQUISIÇÃO") | |
| return Response({"resposta": resposta_llm}) | |