Spaces:
Sleeping
Sleeping
| from flask import Flask, render_template, request, jsonify | |
| from rag_model import get_qa_chain, build_rag_system, PERSIST_DIRECTORY, HuggingFaceEmbeddings, Chroma | |
| from dotenv import load_dotenv | |
| import os | |
| load_dotenv(override=True) | |
| print(f"App: API Key loaded (starting with {os.getenv('GOOGLE_API_KEY', 'None')[:5]}...)") | |
| app = Flask(__name__) | |
| # Load or Build Vector Store | |
| if not os.path.exists(PERSIST_DIRECTORY): | |
| print("Vector store not found. Building...") | |
| vectorstore = build_rag_system() | |
| else: | |
| print("Loading existing vector store...") | |
| embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2") | |
| vectorstore = Chroma(persist_directory=PERSIST_DIRECTORY, embedding_function=embeddings) | |
| qa_chain = get_qa_chain(vectorstore) | |
| def index(): | |
| return render_template('index.html') | |
| def ask(): | |
| data = request.json | |
| query = data.get('query') | |
| print(f"Processing query: {query}") | |
| if not query: | |
| return jsonify({"error": "No query provided"}), 400 | |
| if not qa_chain: | |
| return jsonify({"error": "QA chain not initialized. Check GOOGLE_API_KEY."}), 500 | |
| try: | |
| result = qa_chain({"query": query}) | |
| answer = result['result'] | |
| sources = [] | |
| seen = set() | |
| for doc in result['source_documents']: | |
| source_name = doc.metadata.get('name', 'Unknown') | |
| if source_name not in seen: | |
| sources.append(source_name) | |
| seen.add(source_name) | |
| return jsonify({ | |
| "answer": answer, | |
| "sources": sources[:3] # Return top 3 unique names | |
| }) | |
| except Exception as e: | |
| return jsonify({"error": str(e)}), 500 | |
| if __name__ == '__main__': | |
| app.run(debug=True, port=5000) | |