| 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()
|
|
|