drdeveloper88's picture
Upload WorldDisasterLM-8B source code: FastAPI backend, training pipeline, 11-language support
495526b
Raw
History Blame Contribute Delete
1.66 kB
import json
from fastapi import APIRouter
from fastapi.responses import StreamingResponse
from backend.app.models.schemas import (
ChatRequest,
ChatResponse,
IncidentClassificationRequest,
IncidentClassificationResponse,
RiskAssessmentRequest,
RiskAssessmentResponse,
)
from backend.app.services.inference_service import classify_incident, generate_response, stream_response
from backend.app.services.risk_engine import compute_risk
router = APIRouter(prefix="/v1", tags=["worlddisasterlm"])
@router.post("/chat", response_model=ChatResponse)
def chat(request: ChatRequest) -> ChatResponse:
return generate_response(request.messages, language=request.language, region=request.region)
@router.post("/chat/stream")
async def chat_stream(request: ChatRequest) -> StreamingResponse:
async def event_stream():
async for chunk in stream_response(request.messages, language=request.language, region=request.region):
yield f"data: {json.dumps({'token': chunk})}\n\n"
yield "data: [DONE]\n\n"
return StreamingResponse(event_stream(), media_type="text/event-stream")
@router.post("/risk/score", response_model=RiskAssessmentResponse)
def risk_score(request: RiskAssessmentRequest) -> RiskAssessmentResponse:
return compute_risk(
hazard_type=request.hazard_type,
vulnerability_index=request.vulnerability_index,
exposure_index=request.exposure_index,
)
@router.post("/incidents/classify", response_model=IncidentClassificationResponse)
def classify(request: IncidentClassificationRequest) -> IncidentClassificationResponse:
return classify_incident(request.text)