import faiss from langchain_community.docstore.in_memory import InMemoryDocstore from langchain_community.vectorstores import FAISS from langchain_core.prompts import ChatPromptTemplate from langchain.chains import create_retrieval_chain from langchain.chains.combine_documents import create_stuff_documents_chain from langchain_openai import OpenAIEmbeddings, ChatOpenAI import openai from openai import OpenAI from langchain_community.document_loaders.csv_loader import CSVLoader from pathlib import Path from langchain_openai import ChatOpenAI,OpenAIEmbeddings import os from dotenv import load_dotenv from fastapi import FastAPI, HTTPException from pydantic import BaseModel from scripts.rag import get_answer, response_agent # Load environment variables from a .env file # Initialize FastAPI app app = FastAPI() # Define a request model class QuestionRequest(BaseModel): question: str @app.post("/ask") def ask_question(request: QuestionRequest): try: # Use the RAG system to get the answer calculation_data = get_answer(rag_chain, request.question) final_response = response_agent(request.question, calculation_data) return {"answer": final_response} except Exception as e: raise HTTPException(status_code=500, detail=str(e)) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=5079)