Spaces:
Running on Zero
Running on Zero
File size: 1,035 Bytes
20db40d 03d4b76 20db40d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | """FastAPI interface for the PlotCraft generation service."""
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, Field
from src.plotcraft.service import generate_plot_code
app = FastAPI(
title="PlotCraft API",
description="Generate Python visualization code from natural language.",
version="0.1.0",
)
class GenerationRequest(BaseModel):
prompt: str = Field(min_length=1, max_length=2000)
class GenerationResponse(BaseModel):
generated_code: str
@app.get("/health")
def health() -> dict[str, str]:
return {"status": "healthy"}
@app.post("/generate", response_model=GenerationResponse)
def generate(request: GenerationRequest) -> GenerationResponse:
try:
code = generate_plot_code(request.prompt)
except ValueError as error:
raise HTTPException(status_code=400, detail=str(error)) from error
except RuntimeError as error:
raise HTTPException(status_code=503, detail=str(error)) from error
return GenerationResponse(generated_code=code)
|