Spaces:
Running
Running
File size: 5,822 Bytes
4e93adb 4cd3056 ca8a144 408e821 ca8a144 408e821 4e93adb 4d3bceb 4e93adb 4d3bceb 4e93adb 4cd3056 e4d76bf 4e93adb 7dc6d22 1fd7b67 ca8a144 1fd7b67 ca8a144 4e93adb 4dcf767 |
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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
from rest_framework.views import APIView
import tempfile, os
from rest_framework.response import Response
from _utils.resumo_completo_cursor import get_llm_summary_answer_by_cursor_complete
from _utils.resumo_simples_cursor import get_llm_summary_answer_by_cursor
from _utils.utils import DEFAULT_SYSTEM_PROMPT
from .serializer import ResumoCursorCompeltoSerializer, ResumoPDFSerializer, ResumoCursorSerializer
from _utils.main import get_llm_answer_summary, get_llm_answer_summary_with_embedding
from setup.environment import default_model
from rest_framework.parsers import MultiPartParser
from drf_spectacular.utils import extend_schema
class ResumoView(APIView):
parser_classes = [MultiPartParser]
@extend_schema(
request=ResumoPDFSerializer,
)
def post(self, request):
serializer = ResumoPDFSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
listaPDFs = []
data = serializer.validated_data
model = serializer.validated_data.get("model", default_model)
print('serializer.validated_data: ', serializer.validated_data)
for file in serializer.validated_data['files']:
print("file: ", file)
file.seek(0)
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file: # Create a temporary file to save the uploaded PDF
for chunk in file.chunks(): # Write the uploaded file content to the temporary file
temp_file.write(chunk)
temp_file_path = temp_file.name # Get the path of the temporary file
listaPDFs.append(temp_file_path)
# print('listaPDFs: ', listaPDFs)
system_prompt = data.get("system_prompt", DEFAULT_SYSTEM_PROMPT)
resposta_llm = get_llm_answer_summary(system_prompt, data["user_message"], listaPDFs, model=model, isIterativeRefinement=data["iterative_refinement"])
for file in listaPDFs:
os.remove(file)
return Response({"resposta": resposta_llm})
class ResumoEmbeddingView(APIView):
parser_classes = [MultiPartParser]
@extend_schema(
request=ResumoPDFSerializer,
)
def post(self, request):
serializer = ResumoPDFSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
listaPDFs = []
data = serializer.validated_data
model = serializer.validated_data.get("model", default_model)
print('serializer.validated_data: ', serializer.validated_data)
for file in serializer.validated_data['files']:
file.seek(0)
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file: # Create a temporary file to save the uploaded PDF
for chunk in file.chunks(): # Write the uploaded file content to the temporary file
temp_file.write(chunk)
temp_file_path = temp_file.name # Get the path of the temporary file
listaPDFs.append(temp_file_path)
print('listaPDFs: ', listaPDFs)
system_prompt = data.get("system_prompt", DEFAULT_SYSTEM_PROMPT)
resposta_llm = get_llm_answer_summary_with_embedding(system_prompt, data["user_message"], listaPDFs, model=model, isIterativeRefinement=data["iterative_refinement"])
for file in listaPDFs:
os.remove(file)
return Response({"resposta": resposta_llm})
class ResumoSimplesCursorView(APIView):
parser_classes = [MultiPartParser]
@extend_schema(
request=ResumoCursorSerializer,
)
def post(self, request):
serializer = ResumoCursorSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
listaPDFs = []
data = serializer.validated_data
print('\nserializer.validated_data: ', serializer.validated_data)
for file in serializer.validated_data['files']:
file.seek(0)
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file: # Create a temporary file to save the uploaded PDF
for chunk in file.chunks(): # Write the uploaded file content to the temporary file
temp_file.write(chunk)
temp_file_path = temp_file.name # Get the path of the temporary file
listaPDFs.append(temp_file_path)
print('listaPDFs: ', listaPDFs)
resposta_llm = get_llm_summary_answer_by_cursor(data, listaPDFs)
for file in listaPDFs:
os.remove(file)
return Response({"resposta": resposta_llm})
class ResumoSimplesCursorCompletoView(APIView):
parser_classes = [MultiPartParser]
@extend_schema(
request=ResumoCursorCompeltoSerializer,
)
def post(self, request):
serializer = ResumoCursorCompeltoSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
print('\n\n\n')
print('serializer.validated_data: ', serializer.validated_data)
print('\n\n\n')
listaPDFs = []
data = serializer.validated_data
print('\nserializer.validated_data: ', serializer.validated_data)
for file in serializer.validated_data['files']:
file.seek(0)
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as temp_file: # Create a temporary file to save the uploaded PDF
for chunk in file.chunks(): # Write the uploaded file content to the temporary file
temp_file.write(chunk)
temp_file_path = temp_file.name # Get the path of the temporary file
listaPDFs.append(temp_file_path)
print('listaPDFs: ', listaPDFs)
resposta_llm = get_llm_summary_answer_by_cursor_complete(data, listaPDFs)
for file in listaPDFs:
os.remove(file)
return Response({"resposta": resposta_llm}) |