| | from fastapi import APIRouter, HTTPException
|
| | from app.services.llm import llm_service
|
| | from app.schemas.llm import (
|
| | StoryGenerationRequest,
|
| | StoryGenerationResponse,
|
| | ImageGenerationRequest,
|
| | ImageGenerationResponse,
|
| | )
|
| | from loguru import logger
|
| | from enum import Enum
|
| | from typing import List, Dict
|
| |
|
| | router = APIRouter()
|
| |
|
| | class LLMType(str, Enum):
|
| | TEXT = "text"
|
| | IMAGE = "image"
|
| | VIDEO = "video"
|
| |
|
| |
|
| | @router.post("/story", response_model=StoryGenerationResponse)
|
| | async def generate_story(request: StoryGenerationRequest) -> StoryGenerationResponse:
|
| | """็ๆๆ
ไบ"""
|
| | try:
|
| | segments = llm_service.generate_story(
|
| | request
|
| | )
|
| | return StoryGenerationResponse(segments=segments)
|
| | except Exception as e:
|
| | logger.error(f"Failed to generate story: {e}")
|
| | raise HTTPException(status_code=500, detail=str(e))
|
| |
|
| |
|
| | @router.post("/image", response_model=ImageGenerationResponse)
|
| | async def generate_image(request: ImageGenerationRequest) -> ImageGenerationResponse:
|
| | """็ๆๅพ็"""
|
| | try:
|
| | image_url = llm_service.generate_image(prompt=request.prompt, image_llm_provider=request.image_llm_provider, image_llm_model=request.image_llm_model, resolution=request.resolution)
|
| | return ImageGenerationResponse(image_url=image_url)
|
| | except Exception as e:
|
| | raise HTTPException(status_code=500, detail=str(e))
|
| |
|
| |
|
| | @router.post("/story-with-images", response_model=StoryGenerationResponse)
|
| | async def generate_story_with_images(request: StoryGenerationRequest) -> StoryGenerationResponse:
|
| | """็ๆๆ
ไบๅ้
ๅพ"""
|
| | try:
|
| | segments = llm_service.generate_story_with_images(
|
| | segments=request.segments,
|
| | story_prompt=request.story_prompt,
|
| | language=request.language
|
| | )
|
| | return StoryGenerationResponse(segments=segments)
|
| | except Exception as e:
|
| | logger.error(f"Failed to generate story with images: {e}")
|
| | raise HTTPException(status_code=500, detail=str(e))
|
| |
|
| | @router.get("/providers", response_model=Dict[str, List[str]])
|
| | async def get_llm_providers():
|
| | """
|
| | ่ทๅ LLM Provider ๅ่กจ
|
| | """
|
| |
|
| | return llm_service.get_llm_providers()
|
| |
|