Spaces:
Runtime error
Runtime error
from flask import Flask, jsonify, request | |
from Inferencer import Inferncer | |
from pathlib import Path | |
from dataloader import DataLoader | |
import logging | |
app = Flask(__name__) | |
base_dir = Path(__file__).resolve().parent | |
haystack_dir = base_dir / '.haystack' | |
# Create the directory | |
haystack_dir.mkdir(parents=True, exist_ok=True) | |
UPLOAD_FOLDER = './data/' | |
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER | |
inferencer = Inferncer() | |
data_loader = DataLoader() | |
#app logger | |
log_format = "%(asctime)s [%(levelname)s] - %(message)s" | |
logging.basicConfig(filename="app.log", level=logging.DEBUG, format=log_format) | |
logger = logging.getLogger(__name__) | |
# Initialize chroma_store as a global variable | |
# chroma_store = data_loader.dataloader() | |
# in_memory_store = data_loader.InMemory_dataloader() | |
chroma_store = None | |
in_memory_store = None | |
def home(): | |
return "Welcome to the Flask app!" | |
def upload_document(): | |
try: | |
if 'file' not in request.files: | |
return jsonify({"error": "No file provided"}), 400 | |
file = request.files['file'] | |
if file.filename == '': | |
return jsonify({"error": "No file selected"}), 400 | |
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename)) | |
return jsonify({"message": "File uploaded successfully"}), 200 | |
except Exception as e: | |
return jsonify({"error": str(e)}) | |
def sync_and_run_dataloader(): | |
global chroma_store | |
global in_memory_store# Access the global chroma_store variable | |
try: | |
# Optionally, you can add authentication or other checks here | |
# Call the dataloader function | |
chroma_store = data_loader.dataloader() | |
in_memory_store = data_loader.InMemory_dataloader() | |
return jsonify({"message": "DataLoader executed successfully", "result": "success"}) | |
except Exception as e: | |
return jsonify({"error": str(e)}) | |
def ask_question(): | |
try: | |
data = request.get_json() | |
query = data.get("question", "") | |
model = data.get("model", "") | |
if chroma_store is None: | |
return jsonify({"error": "Chroma store not initialized. Run sync_and_run_dataloader first."}) | |
if model == "OpenAI": | |
results = inferencer.OpenAI(query=query) | |
return jsonify({"results": results}) | |
elif model == "LlamaCpp": | |
results = inferencer.LlamaCpp(query=query) | |
return jsonify({"results": results}) | |
else: | |
return jsonify({"error": f"Invalid model specified: {model}"}) | |
except Exception as e: | |
return jsonify({"error": str(e)}) | |
if __name__ == "__main__": | |
app.run(debug=True) |