PlotCraft / api /main.py
omargam220's picture
Focus PlotCraft on Python visualizations
03d4b76
Raw History Blame Contribute Delete
1.04 kB
"""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)