Spaces:
Sleeping
Sleeping
| import os | |
| import shutil | |
| from fastapi import APIRouter, UploadFile, File, HTTPException | |
| from typing import Dict, Any | |
| from app.services.embedding_service import process_and_create_embeddings | |
| router = APIRouter() | |
| async def create_embeddings(file: UploadFile = File(...)): | |
| """ | |
| Create embeddings from an uploaded Excel or CSV file containing question-answer pairs. | |
| - **file**: The Excel or CSV file containing questions and answers | |
| Returns a success message if embeddings are created successfully. | |
| """ | |
| # Get file extension | |
| file_extension = os.path.splitext(file.filename)[1].lower() | |
| # Determine file type based on extension | |
| if file_extension == ".xlsx" or file_extension == ".xls": | |
| file_type = "excel" | |
| elif file_extension == ".csv": | |
| file_type = "csv" | |
| else: | |
| raise HTTPException( | |
| status_code=400, | |
| detail="Unsupported file type. Please upload an Excel (.xlsx, .xls) or CSV (.csv) file.", | |
| ) | |
| # Ensure temp directory exists | |
| temp_dir = "/app/temp" | |
| if not os.path.exists(temp_dir): | |
| os.makedirs(temp_dir, exist_ok=True) | |
| # Create a temporary file to store the uploaded file | |
| safe_filename = os.path.basename(file.filename).replace(" ", "_") | |
| temp_file_path = os.path.join(temp_dir, f"temp_{safe_filename}") | |
| try: | |
| # Save the uploaded file | |
| with open(temp_file_path, "wb") as buffer: | |
| shutil.copyfileobj(file.file, buffer) | |
| # Process the file and create embeddings | |
| result = process_and_create_embeddings(temp_file_path, file_type) | |
| if result["status"] == "error": | |
| raise HTTPException(status_code=400, detail=result["message"]) | |
| return result | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| finally: | |
| # Clean up the temporary file | |
| if os.path.exists(temp_file_path): | |
| try: | |
| os.remove(temp_file_path) | |
| except Exception as e: | |
| print( | |
| f"Warning: Could not remove temporary file {temp_file_path}: {str(e)}" | |
| ) | |