import edward
All checks were successful
Gitea Actions Demo / deploy (push) Successful in 15s

This commit is contained in:
konjacpotato
2025-11-12 21:19:26 +08:00
commit 5267db8a0d
48 changed files with 1848 additions and 0 deletions

View File

@ -0,0 +1,73 @@
import json
from json import JSONDecodeError
from database.database import get_session
from database.tvideoscript.video_script import get_today_video_script, update_video_script
from llm.local.ollama import Ollama
from log.log_manager import log
from task.manager_task import execute_task
def ai_script_task():
with get_session() as db:
# 1. 获取今日的热点话题列表
video_scripts = get_today_video_script(db)
if len(video_scripts) == 0:
log("ai_script_task finish, task size 0")
return
log(f"ai script task size {len(video_scripts)}")
ollama = Ollama()
if not ollama.is_service_running():
log("ai_script_task finish, ollama service not running")
return
for video_script in video_scripts:
topic = video_script.title
log(f'generate script for topic: {topic}')
# 2. 获取话题内容
content = video_script.content
input_message = (
"""
## 角色
- 你是一个资深编辑。
## 目标
- 从输入的素材中选取有用的信息。
## 任务描述
- 从contents中选取最能吸引人的段落或句子使读者产生兴趣和共鸣。请确保这些内容具有情感张力、戏剧性、趣味性或引发思考的价值。选取两部分内容分别使用键“content_one”和“content_two”。每部分不少于100个汉字。两部分内容字数之和不多于600个汉字。
## 要求
- 严格遵守字数要求。
- 直接输出内容。
- 内容为JSON格式。
## 素材如下
""" + content
)
# log(input_message)
# 3. 调用ollama生成话题脚本
llm_result = ollama.generate_text(input_message)
log(llm_result)
try:
llm_result = json.loads(llm_result)
except JSONDecodeError as e:
log(f"ai_script_task error: {e}. skip topic: {topic}")
continue
video_script.script = (
f"""{video_script.title}
{video_script.description}
一位网友说:
{llm_result["content_one"]}
另一位网友说:
{llm_result["content_two"]}
关于这个问题大家有什么看法呢?
欢迎评论区留言
"""
)
# 4. 保存话题脚本
update_video_script(db, video_script)
if __name__ == "__main__":
execute_task(ai_script_task)