1MB1 commited on
Commit
3bf25ae
·
verified ·
1 Parent(s): 08f8dff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -15
app.py CHANGED
@@ -25,6 +25,7 @@ from fastapi import FastAPI, File, UploadFile
25
  import time
26
  import requests
27
  from datetime import datetime
 
28
  import os
29
  os.environ["GROQ_API_KEY"] = "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"
30
  os.environ["TAVILY_API_KEY"] = "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"
@@ -77,33 +78,53 @@ tavily_search = TavilySearchResults(max_results=4)
77
 
78
  @app.post("/uploadpdfs")
79
  async def upload_file(file: UploadFile = File(...)):
80
- # global vector_index
 
 
81
 
82
- # Save uploaded file to a temp directory
83
- temp_dir = "temp_uploads"
84
- os.makedirs(temp_dir, exist_ok=True)
85
- file_id = str(uuid.uuid4())
86
- file_path = os.path.join(temp_dir, f"{file_id}_{file.filename}")
87
-
88
- with open(file_path, "wb") as f:
89
- shutil.copyfileobj(file.file, f)
90
-
91
- # Load and parse document
92
- documents = SimpleDirectoryReader(input_files=[file_path]).load_data()
93
  parser = SentenceSplitter(chunk_size=300, chunk_overlap=50)
94
  nodes = parser.get_nodes_from_documents(documents)
95
 
96
  # Create or update vector index
97
  embed_model = HuggingFaceEmbedding(model_name="WhereIsAI/UAE-Large-V1")
98
- # if vector_index is None:
99
  if not hasattr(app.state, "vector_index") or app.state.vector_index is None:
100
  app.state.vector_index = VectorStoreIndex(nodes, embed_model=embed_model)
101
- message = "New vector index created and file stored."
102
  else:
103
  app.state.vector_index.insert_nodes(nodes)
104
- message = "File stored and vector index updated."
105
 
106
  return {"message": message, "filename": file.filename}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
 
109
  class QueryRequest(BaseModel):
 
25
  import time
26
  import requests
27
  from datetime import datetime
28
+ from io import BytesIO
29
  import os
30
  os.environ["GROQ_API_KEY"] = "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"
31
  os.environ["TAVILY_API_KEY"] = "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"
 
78
 
79
  @app.post("/uploadpdfs")
80
  async def upload_file(file: UploadFile = File(...)):
81
+ # Read file contents into memory
82
+ contents = await file.read()
83
+ file_stream = BytesIO(contents)
84
 
85
+ # Load and parse document directly from memory
86
+ documents = SimpleDirectoryReader(input_file_objs=[file_stream], input_file_names=[file.filename]).load_data()
 
 
 
 
 
 
 
 
 
87
  parser = SentenceSplitter(chunk_size=300, chunk_overlap=50)
88
  nodes = parser.get_nodes_from_documents(documents)
89
 
90
  # Create or update vector index
91
  embed_model = HuggingFaceEmbedding(model_name="WhereIsAI/UAE-Large-V1")
 
92
  if not hasattr(app.state, "vector_index") or app.state.vector_index is None:
93
  app.state.vector_index = VectorStoreIndex(nodes, embed_model=embed_model)
94
+ message = "New vector index created and file processed in-memory."
95
  else:
96
  app.state.vector_index.insert_nodes(nodes)
97
+ message = "File processed in-memory and vector index updated."
98
 
99
  return {"message": message, "filename": file.filename}
100
+ # async def upload_file(file: UploadFile = File(...)):
101
+ # # global vector_index
102
+
103
+ # # Save uploaded file to a temp directory
104
+ # temp_dir = "temp_uploads"
105
+ # os.makedirs(temp_dir, exist_ok=True)
106
+ # file_id = str(uuid.uuid4())
107
+ # file_path = os.path.join(temp_dir, f"{file_id}_{file.filename}")
108
+
109
+ # with open(file_path, "wb") as f:
110
+ # shutil.copyfileobj(file.file, f)
111
+
112
+ # # Load and parse document
113
+ # documents = SimpleDirectoryReader(input_files=[file_path]).load_data()
114
+ # parser = SentenceSplitter(chunk_size=300, chunk_overlap=50)
115
+ # nodes = parser.get_nodes_from_documents(documents)
116
+
117
+ # # Create or update vector index
118
+ # embed_model = HuggingFaceEmbedding(model_name="WhereIsAI/UAE-Large-V1")
119
+ # # if vector_index is None:
120
+ # if not hasattr(app.state, "vector_index") or app.state.vector_index is None:
121
+ # app.state.vector_index = VectorStoreIndex(nodes, embed_model=embed_model)
122
+ # message = "New vector index created and file stored."
123
+ # else:
124
+ # app.state.vector_index.insert_nodes(nodes)
125
+ # message = "File stored and vector index updated."
126
+
127
+ # return {"message": message, "filename": file.filename}
128
 
129
 
130
  class QueryRequest(BaseModel):