diff --git a/servers/fastapi/api/v1/ppt/endpoints/outlines.py b/servers/fastapi/api/v1/ppt/endpoints/outlines.py index 0638543e..b0ec47af 100644 --- a/servers/fastapi/api/v1/ppt/endpoints/outlines.py +++ b/servers/fastapi/api/v1/ppt/endpoints/outlines.py @@ -68,7 +68,15 @@ async def stream_outlines( ).to_string() presentation_outlines_text += chunk - presentation_outlines_json = json.loads(presentation_outlines_text) + try: + presentation_outlines_json = json.loads(presentation_outlines_text) + except Exception as e: + print(e) + raise HTTPException( + status_code=400, + detail="Failed to generate presentation outlines. Please try again.", + ) + presentation_outlines = PresentationOutlineModel( **presentation_outlines_json ) diff --git a/servers/fastapi/api/v1/ppt/endpoints/presentation.py b/servers/fastapi/api/v1/ppt/endpoints/presentation.py index 215f4b4a..5b4589a2 100644 --- a/servers/fastapi/api/v1/ppt/endpoints/presentation.py +++ b/servers/fastapi/api/v1/ppt/endpoints/presentation.py @@ -355,7 +355,14 @@ async def generate_presentation_api( ): presentation_outlines_text += chunk - presentation_outlines_json = json.loads(presentation_outlines_text) + try: + presentation_outlines_json = json.loads(presentation_outlines_text) + except Exception as e: + print(e) + raise HTTPException( + status_code=400, + detail="Failed to generate presentation outlines. Please try again.", + ) presentation_outlines = PresentationOutlineModel(**presentation_outlines_json) outlines = presentation_outlines.slides[:n_slides] total_outlines = len(outlines) diff --git a/servers/fastapi/app_mcp/wrapper/generate_outline.py b/servers/fastapi/app_mcp/wrapper/generate_outline.py index 0c2d88a7..c2efdc38 100644 --- a/servers/fastapi/app_mcp/wrapper/generate_outline.py +++ b/servers/fastapi/app_mcp/wrapper/generate_outline.py @@ -1,5 +1,6 @@ import json import os +from fastapi import HTTPException from typing import Dict, Any, Optional, List, Annotated from models.presentation_outline_model import PresentationOutlineModel from utils.llm_calls.generate_presentation_outlines import generate_ppt_outline @@ -63,8 +64,17 @@ async def generate_outline( await asyncio.sleep(0) presentation_outlines_text += chunk - presentation_outlines_json = json.loads(presentation_outlines_text) - presentation_outlines = PresentationOutlineModel(**presentation_outlines_json) + try: + presentation_outlines_json = json.loads(presentation_outlines_text) + presentation_outlines = PresentationOutlineModel( + **presentation_outlines_json + ) + except Exception as e: + print(e) + raise HTTPException( + status_code=400, + detail="Failed to generate presentation outlines. Please try again.", + ) # Truncate slides to n_slides presentation_outlines.slides = presentation_outlines.slides[:n_slides]