Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, File, UploadFile, Form | |
from file_processing import load_documents, chunk_documents, create_embeddings | |
from query_processing import load_qa_chain, process_query | |
from dotenv import load_dotenv | |
import os | |
# load_dotenv(r'C:\Users\sksha\Desktop\llm-assignment-master\llm-assignment-master\llm-assignment-master_\backend\.env') | |
openai_api_key = os.environ.get('OPENAI_API_KEY') | |
print(openai_api_key) | |
app = FastAPI() | |
from fastapi.middleware.cors import CORSMiddleware | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["http://localhost:3000","https://chity-chat-front-vercel.vercel.app"], # Allows only requests from your React app | |
allow_credentials=True, | |
allow_methods=["*"], # Allows all methods | |
allow_headers=["*"], # Allows all headers | |
) | |
async def process_file(collection_name: str = Form(...), file: UploadFile = File(...)): | |
print("Received collection_name:", collection_name) | |
print("Received file:", file.filename) | |
# Load documents | |
documents = await load_documents(file) | |
# Chunk documents | |
chunked_docs = chunk_documents(documents, chunk_size=500, chunk_overlap=100) | |
# Create embeddings and store in Chroma | |
vector_store = create_embeddings(chunked_docs, collection_name) | |
preview_length = 750 # Adjust based on desired preview size | |
document_previews = [doc.page_content[:preview_length] for doc in documents] # or whatever attribute holds the content | |
# Return the success message along with the document previews | |
return {"message": "File processed successfully", "document_preview": document_previews} | |
from pydantic import BaseModel | |
class QueryRequest(BaseModel): | |
collection_name: str | |
query: str | |
async def query(request: QueryRequest): | |
# Load the RetrievalQA chain | |
print(request.dict()) | |
qa_chain = load_qa_chain(request.collection_name) | |
# Process the query | |
result = process_query(request.query, qa_chain) | |
return {"result": result} |