Distopia22's picture
Fixing model halucination
1915c66
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from api.routes import router
from config.settings import settings
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
@asynccontextmanager
async def lifespan(app: FastAPI):
"""
Lifespan event handler for startup and shutdown
"""
# Startup
logger.info("=" * 50)
logger.info(f"Starting {settings.api_title} v{settings.api_version}")
logger.info("=" * 50)
if settings.groq_api_key:
logger.info(f"Groq API Key: Configured (length: {len(settings.groq_api_key)})")
logger.info(f"Groq Model: {settings.groq_model}")
else:
logger.error("GROQ_API_KEY is NOT set!")
logger.error("WARNING: API will NOT function without valid API key")
logger.info("=" * 50)
yield
# Shutdown
logger.info("Shutting down API...")
# Create FastAPI app with lifespan
app = FastAPI(
title=settings.api_title,
version=settings.api_version,
description=settings.api_description,
lifespan=lifespan
)
# CORS configuration
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include routes
app.include_router(router, prefix="/api")
@app.get("/")
async def root():
"""Root endpoint"""
return {
"service": settings.api_title,
"version": settings.api_version,
"status": "running",
"endpoints": {
"docs": "/docs",
"health": "/api/v1/health",
"coding": "/api/coding",
"upload": "/api/upload-file"
}
}
@app.get("/api/v1/health")
async def health_check():
"""Health check endpoint"""
api_key_status = "configured" if settings.groq_api_key else "missing"
return {
"status": "healthy",
"service": settings.api_title,
"version": settings.api_version,
"groq_api_key": api_key_status,
"groq_model": settings.groq_model
}
# Run server when executed directly
if __name__ == "__main__":
import uvicorn
uvicorn.run(
"main:app",
host="0.0.0.0",
port=7860,
reload=False
)