abhisheksan's picture
Add initial project structure with FastAPI and poetry generation service
cee4b22
raw
history blame
1.58 kB
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel, Field
from typing import Optional
from ...services.poetry_generation import PoetryGenerationService
router = APIRouter()
class PoemRequest(BaseModel):
prompt: str = Field(..., description="The prompt for poem generation")
temperature: Optional[float] = Field(0.7, ge=0.1, le=2.0)
top_p: Optional[float] = Field(0.9, ge=0.1, le=1.0)
top_k: Optional[int] = Field(50, ge=1, le=100)
max_length: Optional[int] = Field(200, ge=50, le=500)
repetition_penalty: Optional[float] = Field(1.1, ge=1.0, le=2.0)
class PoemResponse(BaseModel):
poem: str
parameters_used: dict
@router.post("/generate", response_model=PoemResponse)
async def generate_poem(request: PoemRequest):
try:
service = PoetryGenerationService()
poem = await service.generate_poem(
prompt=request.prompt,
temperature=request.temperature,
top_p=request.top_p,
top_k=request.top_k,
max_length=request.max_length,
repetition_penalty=request.repetition_penalty
)
return PoemResponse(
poem=poem,
parameters_used={
"temperature": request.temperature,
"top_p": request.top_p,
"top_k": request.top_k,
"max_length": request.max_length,
"repetition_penalty": request.repetition_penalty
}
)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))