feat:add api interface:generate_video_script and generate_video_terms
This commit is contained in:
32
app/controllers/v1/llm.py
Normal file
32
app/controllers/v1/llm.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
from fastapi import Request
|
||||||
|
from app.controllers.v1.base import new_router
|
||||||
|
from app.models.schema import VideoScriptResponse, VideoScriptRequest, VideoTermsResponse, VideoTermsRequest
|
||||||
|
from app.services import llm
|
||||||
|
from app.utils import utils
|
||||||
|
from app.controllers import base
|
||||||
|
|
||||||
|
# 认证依赖项
|
||||||
|
# router = new_router(dependencies=[Depends(base.verify_token)])
|
||||||
|
router = new_router()
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/generate_video_script", response_model=VideoScriptResponse, summary="Generate a video script")
|
||||||
|
def generate_video_script(request: Request, body: VideoScriptRequest):
|
||||||
|
video_script = llm.generate_script(video_subject=body.video_subject,
|
||||||
|
language=body.video_language,
|
||||||
|
paragraph_number=body.paragraph_number)
|
||||||
|
response = {
|
||||||
|
"video_script": video_script
|
||||||
|
}
|
||||||
|
return utils.get_response(200, response)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/generate_video_terms", response_model=VideoTermsResponse, summary="Generate video terms by video script")
|
||||||
|
def generate_video_terms(request: Request, body: VideoTermsRequest):
|
||||||
|
video_terms = llm.generate_terms(video_subject=body.video_subject,
|
||||||
|
video_script=body.video_script,
|
||||||
|
amount=body.amount)
|
||||||
|
response = {
|
||||||
|
"video_terms": video_terms
|
||||||
|
}
|
||||||
|
return utils.get_response(200, response)
|
||||||
@@ -115,6 +115,32 @@ class VideoParams:
|
|||||||
paragraph_number: Optional[int] = 1
|
paragraph_number: Optional[int] = 1
|
||||||
|
|
||||||
|
|
||||||
|
class VideoScriptParams:
|
||||||
|
"""
|
||||||
|
{
|
||||||
|
"video_subject": "春天的花海",
|
||||||
|
"video_language": "",
|
||||||
|
"paragraph_number": 1
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
video_subject: Optional[str] = "春天的花海"
|
||||||
|
video_language: Optional[str] = ""
|
||||||
|
paragraph_number: Optional[int] = 1
|
||||||
|
|
||||||
|
|
||||||
|
class VideoTermsParams:
|
||||||
|
"""
|
||||||
|
{
|
||||||
|
"video_subject": "",
|
||||||
|
"video_script": "",
|
||||||
|
"amount": 5
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
video_subject: Optional[str] = "春天的花海"
|
||||||
|
video_script: Optional[str] = "春天的花海,如诗如画般展现在眼前。万物复苏的季节里,大地披上了一袭绚丽多彩的盛装。金黄的迎春、粉嫩的樱花、洁白的梨花、艳丽的郁金香……"
|
||||||
|
amount: Optional[int] = 5
|
||||||
|
|
||||||
|
|
||||||
class BaseResponse(BaseModel):
|
class BaseResponse(BaseModel):
|
||||||
status: int = 200
|
status: int = 200
|
||||||
message: Optional[str] = 'success'
|
message: Optional[str] = 'success'
|
||||||
@@ -129,6 +155,14 @@ class TaskQueryRequest(BaseModel):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class VideoScriptRequest(VideoScriptParams, BaseModel):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class VideoTermsRequest(VideoTermsParams, BaseModel):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
######################################################################################################
|
######################################################################################################
|
||||||
######################################################################################################
|
######################################################################################################
|
||||||
######################################################################################################
|
######################################################################################################
|
||||||
@@ -166,3 +200,29 @@ class TaskQueryResponse(BaseResponse):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class VideoScriptResponse(BaseResponse):
|
||||||
|
class Config:
|
||||||
|
json_schema_extra = {
|
||||||
|
"example": {
|
||||||
|
"status": 200,
|
||||||
|
"message": "success",
|
||||||
|
"data": {
|
||||||
|
"video_script": "春天的花海,是大自然的一幅美丽画卷。在这个季节里,大地复苏,万物生长,花朵争相绽放,形成了一片五彩斑斓的花海..."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class VideoTermsResponse(BaseResponse):
|
||||||
|
class Config:
|
||||||
|
json_schema_extra = {
|
||||||
|
"example": {
|
||||||
|
"status": 200,
|
||||||
|
"message": "success",
|
||||||
|
"data": {
|
||||||
|
"video_terms": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,8 +8,9 @@ Resources:
|
|||||||
"""
|
"""
|
||||||
from fastapi import APIRouter
|
from fastapi import APIRouter
|
||||||
|
|
||||||
from app.controllers.v1 import video
|
from app.controllers.v1 import video, llm
|
||||||
|
|
||||||
root_api_router = APIRouter()
|
root_api_router = APIRouter()
|
||||||
# v1
|
# v1
|
||||||
root_api_router.include_router(video.router)
|
root_api_router.include_router(video.router)
|
||||||
|
root_api_router.include_router(llm.router)
|
||||||
|
|||||||
Reference in New Issue
Block a user