Spaces:
Build error
Build error
| # farmlingua_backend/app/main.py | |
| import os | |
| import sys | |
| BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| if BASE_DIR not in sys.path: | |
| sys.path.insert(0, BASE_DIR) | |
| import logging | |
| from fastapi import FastAPI, Body | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import uvicorn | |
| from app.tasks.rag_updater import schedule_updates | |
| from app.utils import config | |
| from app.agents.crew_pipeline import run_pipeline | |
| logging.basicConfig( | |
| format="%(asctime)s [%(levelname)s] %(message)s", | |
| level=logging.INFO | |
| ) | |
| app = FastAPI( | |
| title="FarmLingua Backend", | |
| description="Backend service for FarmLingua with RAG updates and CrewAI pipeline", | |
| version="1.0.0" | |
| ) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=config.ALLOWED_ORIGINS if hasattr(config, "ALLOWED_ORIGINS") else ["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| def startup_event(): | |
| """Start scheduled RAG updates when the app launches.""" | |
| logging.info(" Starting FarmLingua backend...") | |
| schedule_updates() | |
| def home(): | |
| return { | |
| "status": "FarmLingua backend running", | |
| "version": "1.0.0", | |
| "vectorstore_path": config.VECTORSTORE_PATH | |
| } | |
| def ask_farmbot(query: str = Body(..., embed=True)): | |
| """ | |
| Ask the FarmLingua AI a question. | |
| Uses the crew_pipeline to process and return a detailed, farmer-friendly answer. | |
| """ | |
| logging.info(f"Received query: {query}") | |
| answer = run_pipeline(query) | |
| return {"query": query, "answer": answer} | |
| if __name__ == "__main__": | |
| uvicorn.run( | |
| "app.main:app", | |
| host="0.0.0.0", | |
| port=getattr(config, "PORT", 7860), | |
| reload=bool(getattr(config, "DEBUG", False)) | |
| ) | |