Files
edward/task/hot_topic/script_task.py
konjacpotato 5267db8a0d
All checks were successful
Gitea Actions Demo / deploy (push) Successful in 15s
import edward
2025-11-12 21:19:26 +08:00

73 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)