Files
dsProject/dsLightRag/Routes/JiMengRoute.py

90 lines
2.9 KiB
Python
Raw Normal View History

2025-08-21 09:25:50 +08:00
import logging
import fastapi
from fastapi import APIRouter
from fastapi import HTTPException
from openai import AsyncOpenAI
from Config import Config
from JiMeng.Kit.JmTxt2ImgUtil import JmTxt2Img
2025-08-21 09:44:34 +08:00
from JiMeng.Kit.FenJingTouGenerator import FenJingTouGenerator # 导入分镜头生成器
2025-08-21 09:25:50 +08:00
# 创建路由路由器
router = APIRouter(prefix="/api/jimeng", tags=["即梦"])
# 配置日志
logger = logging.getLogger(__name__)
# 初始化异步 OpenAI 客户端
client = AsyncOpenAI(
api_key=Config.ALY_LLM_API_KEY,
base_url=Config.ALY_LLM_BASE_URL
)
@router.post("/prompt_input")
async def prompt_input(request: fastapi.Request):
try:
data = await request.json()
prompt = data.get("prompt")
if not prompt:
raise HTTPException(status_code=400, detail="缺少提示词参数")
logger.info(f"收到图片生成请求,提示词: {prompt}")
# 调用 JmTxt2Img 生成图片
image_url = JmTxt2Img.generate_image(prompt)
logger.info(f"图片生成成功URL: {image_url}")
return {
"code": 200,
"message": "成功",
"data": {
"image_url": image_url
}
}
2025-08-21 09:34:51 +08:00
except HTTPException as e:
logger.error(f"请求参数错误: {str(e.detail)}")
raise e
2025-08-21 09:25:50 +08:00
except Exception as e:
logger.error(f"图片生成失败: {str(e)}")
raise HTTPException(status_code=500, detail=f"图片生成失败: {str(e)}")
2025-08-21 09:44:34 +08:00
@router.post("/generate_fenjingtou")
async def generate_fenjingtou(request: fastapi.Request):
try:
data = await request.json()
image_url = data.get("image_url")
prompt_text = data.get("prompt_text")
if not image_url:
raise HTTPException(status_code=400, detail="缺少图片地址参数")
if not prompt_text:
raise HTTPException(status_code=400, detail="缺少提示词参数")
logger.info(f"收到分镜头生成请求,图片地址: {image_url},提示词: {prompt_text}")
# 创建分镜头生成器实例并调用方法
generator = FenJingTouGenerator()
fenjingtou_content = generator.generate_fen_jing_tou(image_url, prompt_text)
if not fenjingtou_content:
raise HTTPException(status_code=500, detail="分镜头脚本生成失败")
logger.info(f"分镜头脚本生成成功")
return {
"code": 200,
"message": "成功",
"data": {
"fenjingtou_content": fenjingtou_content
}
}
except HTTPException as e:
logger.error(f"请求参数错误: {str(e.detail)}")
raise e
except Exception as e:
logger.error(f"分镜头脚本生成失败: {str(e)}")
raise HTTPException(status_code=500, detail=f"分镜头脚本生成失败: {str(e)}")