Spaces:
Running
Running
File size: 5,433 Bytes
4e93adb ca8a144 408e821 c625f4c 408e821 4e93adb c625f4c 4e93adb c625f4c 4e93adb c625f4c 4e93adb c625f4c 7dc6d22 c625f4c 7dc6d22 c625f4c 7dc6d22 c625f4c 7dc6d22 c625f4c 1fd7b67 ca8a144 c625f4c |
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 138 139 140 141 142 143 144 145 |
from rest_framework.views import APIView
import tempfile, os
from rest_framework.response import Response
from _utils.resumo_simples_cursor import get_llm_summary_answer_by_cursor
from _utils.utils import DEFAULT_SYSTEM_PROMPT
from .serializer import (
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})
|