| from fastapi import APIRouter, HTTPException |
| from app.models.request_models import StoryRequest, StoryResponse |
| from app.services.story_generator import StoryGenerator |
| from app.services.story_refinement import clean_text, refine_story |
| import logging |
|
|
| |
| router = APIRouter() |
| logger = logging.getLogger(__name__) |
|
|
| @router.post("/generate_story", response_model=StoryResponse) |
| async def generate_story(request: StoryRequest): |
| try: |
| |
| generator = StoryGenerator() |
| initial_story = generator.generate_story( |
| request.prompt, |
| request.max_length, |
| request.temperature |
| ) |
| |
| |
| cleaned_story = clean_text(initial_story) |
| |
| try: |
| |
| final_story = await refine_story(cleaned_story) |
| except Exception as e: |
| logger.error(f"Refinement failed: {str(e)}") |
| final_story = cleaned_story |
| |
| return StoryResponse(story=final_story) |
| |
| except Exception as e: |
| logger.error(f"Story generation failed: {str(e)}") |
| raise HTTPException( |
| status_code=500, |
| detail=f"Story generation failed: {str(e)}" |
| ) |
| |
| @router.get("/health") |
| @router.head("/health") |
| async def health_check(): |
| """ |
| Simple health check endpoint to keep the space awake. |
| Returns a 200 OK status with a basic message. |
| """ |
| return {"status": "alive", "message": "Story Generation Service is Running"} |
|
|
|
|