Spaces:
Sleeping
Sleeping
File size: 2,541 Bytes
0f2cd64 f4c8d5e 6351d67 f4c8d5e 6024be4 aa05778 f4c8d5e d958958 7e3780d d958958 f4c8d5e e5e556a 0f2cd64 d958958 e5e556a aa05778 e5e556a 93c60e9 e5e556a f4c8d5e aa05778 f4c8d5e 43a47b5 f4c8d5e 43a47b5 a032a3b aec9d8a f4c8d5e 5189e82 a032a3b 93c60e9 5189e82 43a47b5 aec9d8a |
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 |
from fastapi import FastAPI, File, UploadFile, Request
from pydantic import BaseModel
from pathlib import Path
from fastapi import Form
from fastapi.responses import JSONResponse
from langchain.text_splitter import RecursiveCharacterTextSplitter
from PyPDF2 import PdfReader
from fastapi import Depends
#在FastAPI中,Depends()函数用于声明依赖项
import random
import string
import sys
import timeit
import datetime
import io
import os
from dotenv import load_dotenv
load_dotenv()
def generate_random_string(length):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
app = FastAPI()
class FileToProcess(BaseModel):
uploaded_file: UploadFile = File(...)
@app.get("/")
async def home():
return "API Working!"
@app.post("/fastapi_file_upload_process")
#async def upload_file(username: str, file_to_process: FileToProcess = Depends()):
async def pdf_file_qa_process(username: str, request: Request, file_to_process: FileToProcess = Depends()):
uploaded_file = file_to_process.uploaded_file
print("File received:"+uploaded_file.filename)
username = request.query_params.get("username")
filename = request.query_params.get("filename")
print(username)
print(filename)
random_string = generate_random_string(20)
file_path = Path.cwd() / random_string
file_path.mkdir(parents=True, exist_ok=True)
file_saved_in_api = file_path / uploaded_file.filename
print(file_saved_in_api)
print(file_saved_in_api.resolve())
with open(file_saved_in_api, "wb+") as file_object:
file_object.write(uploaded_file.file.read())
text_splitter = RecursiveCharacterTextSplitter(
#separator = "\n",
chunk_size = 500,
chunk_overlap = 100, #striding over the text
length_function = len,
)
doc_reader = PdfReader(file_saved_in_api)
raw_text = ''
for i, page in enumerate(doc_reader.pages):
text = page.extract_text()
if text:
raw_text += text
temp_texts = text_splitter.split_text(raw_text)
print(temp_texts)
print()
api_call_msg={"INFO": f"File '{file_saved_in_api}' saved to your profile."}
print(api_call_msg)
print(api_call_msg["INFO"])
print()
print(api_call_msg["INFO"].replace("uploaded_file", uploaded_file.filename))
print("API call finished...")
#return {"INFO": f"File '{uploaded_file.filename}' saved to your profile."}
return api_call_msg |