MISSAOUI's picture
Rename app.py to main.py
cdb6521 verified
raw
history blame
2.08 kB
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager
from app.api import analysis, reports, chatbot, infos
from langchain_community.chat_models import ChatOpenAI
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS
from app.utils.rag import get_chain_disease, get_chain_infos, get_chain_chat
import os, asyncio
HUGGINGFACE_API_KEY = os.getenv("HUGGINGFACE_API_KEY")
MISTRAL_API_KEY = os.getenv("MISTRAL_API_KEY")
@asynccontextmanager
async def lifespan(app: FastAPI):
embedding_model = await asyncio.to_thread(
HuggingFaceEmbeddings,
model_name="sentence-transformers/all-MiniLM-L6-v2",
model_kwargs={"use_auth_token": HUGGINGFACE_API_KEY}
)
vectorstore = await asyncio.to_thread(
FAISS.load_local,
r"app/data/faiss_db",
embeddings=embedding_model,
allow_dangerous_deserialization=True
)
llm = ChatOpenAI(
base_url="https://api.mistral.ai/v1",
api_key=MISTRAL_API_KEY,
model_name="mistral-medium"
)
app.state.diagnosis_chain = get_chain_disease(llm, vectorstore)
app.state.info_chain = get_chain_infos(llm, vectorstore)
app.state.chat_chain = get_chain_chat(llm=llm, vectorstore=vectorstore)
yield
app = FastAPI(
title="Symptom Checker API",
description="API for symptom checking and analysis",
version="0.1.0",
lifespan=lifespan
)
# CORS configuration
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include routers
app.include_router(analysis.router, prefix="/api/analysis", tags=["analysis"])
app.include_router(infos.router, prefix="/api/infos", tags=["infos"])
app.include_router(reports.router, prefix="/api/reports", tags=["report"])
app.include_router(chatbot.router, prefix="/api/chatbot", tags=["chat"])
@app.get("/")
async def root():
return {"message": "Symptom Checker API is running"}