jawi-api / app.py
nmwafiy's picture
Update app.py
553adbb verified
import malaya
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn
import os
app = FastAPI(title="Jawi Transliteration API")
# Load the modern Jawi model (T5-based)
# On first run, this downloads ~200MB of weights
try:
print("Loading Jawi model... this may take a moment.")
model = malaya.jawi.huggingface()
print("Model loaded successfully!")
except Exception as e:
print(f"Failed to load model: {e}")
model = None
class RequestData(BaseModel):
text: str
@app.get("/")
def health_check():
return {"status": "ready" if model else "loading/error"}
@app.post("/convert")
async def convert_to_jawi(data: RequestData):
if not model:
raise HTTPException(status_code=503, detail="Model not loaded")
if not data.text.strip():
return {"jawi": ""}
try:
# result is a list, we take the first item
result = model.generate([data.text], to_lang='jawi')
return {
"rumi": data.text,
"jawi": result[0]
}
except Exception as e:
return {"error": str(e)}
if __name__ == "__main__":
# HF Spaces uses port 7860 by default
port = int(os.environ.get("PORT", 7860))
uvicorn.run(app, host="0.0.0.0", port=port)