Pulastya0/AI-Agent-Routing-Department
0
1import os2from fastapi import FastAPI, HTTPException3from pydantic import BaseModel , Extra4from transformers import pipeline5 6# -------------------------------7# Set Hugging Face cache to writable directory8# -------------------------------9os.environ["HF_HOME"] = "/tmp/huggingface"10os.environ["TRANSFORMERS_CACHE"] = "/tmp/huggingface"11os.environ["HF_DATASETS_CACHE"] = "/tmp/huggingface"12 13# -------------------------------14# FastAPI app15# -------------------------------16app = FastAPI(title="Routing Service - Space 2")17 18# -------------------------------19# Request Model20# -------------------------------21class RoutingRequest(BaseModel):22 text: str23 24 class Config:25 extra = Extra.ignore # allow extra fields like user_email26 27# -------------------------------28# Load Zero-Shot Classifier29# -------------------------------30DEPARTMENTS = ['Account', 'Software', 'Network', 'Security', 'Hardware',31 'Infrastructure', 'Licensing', 'Communication', 'RemoteWork',32 'Training', 'Performance']33 34classifier = pipeline(35 "zero-shot-classification",36 model="MoritzLaurer/DeBERTa-v3-base-mnli-fever-anli"37)38 39# -------------------------------40# Routing Endpoint41# -------------------------------42@app.post("/route")43async def route_ticket(req: RoutingRequest):44 text = req.text45 if not text:46 raise HTTPException(status_code=400, detail="Text cannot be empty")47 48 result = classifier(text, DEPARTMENTS)49 department = result["labels"][0] # highest scoring department50 51 return {"department": department}52 53# -------------------------------54# Health Check55# -------------------------------56@app.get("/health")57async def health():58 return {"status": "ok"}59 