mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-11 10:32:49 +00:00
更新generate_narration_script.py、short_drama_explanation.py和step1_subtitle_analyzer_openai.py文件,集成新的提示词管理系统,提升解说文案和短剧分析的生成效率与准确性。通过使用PromptManager简化提示词构建过程,增强系统的灵活性和可维护性。
91 lines
3.3 KiB
Python
91 lines
3.3 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: UTF-8 -*-
|
||
|
||
"""
|
||
@Project: NarratoAI
|
||
@File : plot_analysis.py
|
||
@Author : AI Assistant
|
||
@Date : 2025/1/7
|
||
@Description: 短剧剧情分析提示词
|
||
"""
|
||
|
||
from ..base import TextPrompt, PromptMetadata, ModelType, OutputFormat
|
||
|
||
|
||
class PlotAnalysisPrompt(TextPrompt):
|
||
"""短剧剧情分析提示词"""
|
||
|
||
def __init__(self):
|
||
metadata = PromptMetadata(
|
||
name="plot_analysis",
|
||
category="short_drama_narration",
|
||
version="v1.0",
|
||
description="分析短剧字幕内容,提供详细的剧情分析和分段解析",
|
||
model_type=ModelType.TEXT,
|
||
output_format=OutputFormat.TEXT,
|
||
tags=["短剧", "剧情分析", "字幕解析", "分段分析"],
|
||
parameters=["subtitle_content"]
|
||
)
|
||
super().__init__(metadata)
|
||
|
||
self._system_prompt = "你是一位专业的剧本分析师和剧情概括助手。"
|
||
|
||
def get_template(self) -> str:
|
||
return """# 角色
|
||
你是一位专业的剧本分析师和剧情概括助手。
|
||
|
||
# 任务
|
||
我将为你提供一部短剧的完整字幕文本。请你基于这些字幕,完成以下任务:
|
||
1. **整体剧情分析**:简要概括整个短剧的核心剧情脉络、主要冲突和结局(如果有的话)。
|
||
2. **分段剧情解析与时间戳定位**:
|
||
* 将整个短剧划分为若干个关键的剧情段落(例如:开端、发展、转折、高潮、结局,或根据具体情节自然划分)。
|
||
* 段落数应该与字幕长度成正比。
|
||
* 对于每一个剧情段落:
|
||
* **概括该段落的主要内容**:用简洁的语言描述这段剧情发生了什么。
|
||
* **标注对应的时间戳范围**:明确指出该剧情段落对应的开始字幕时间戳和结束字幕时间戳。请直接从字幕中提取时间信息。
|
||
|
||
# 输入格式
|
||
字幕内容通常包含时间戳和对话,例如:
|
||
```
|
||
00:00:05,000 --> 00:00:10,000
|
||
[角色A]: 你好吗?
|
||
00:00:10,500 --> 00:00:15,000
|
||
[角色B]: 我很好,谢谢。发生了一些有趣的事情。
|
||
... (更多字幕内容) ...
|
||
```
|
||
我将把实际字幕粘贴在下方。
|
||
|
||
# 输出格式要求
|
||
请按照以下格式清晰地呈现分析结果:
|
||
|
||
**一、整体剧情概括:**
|
||
[此处填写对整个短剧剧情的概括]
|
||
|
||
**二、分段剧情解析:**
|
||
|
||
**剧情段落 1:[段落主题/概括,例如:主角登场与背景介绍]**
|
||
* **时间戳:** [开始时间戳] --> [结束时间戳]
|
||
* **内容概要:** [对这段剧情的详细描述]
|
||
|
||
**剧情段落 2:[段落主题/概括,例如:第一个冲突出现]**
|
||
* **时间戳:** [开始时间戳] --> [结束时间戳]
|
||
* **内容概要:** [对这段剧情的详细描述]
|
||
|
||
... (根据实际剧情段落数量继续) ...
|
||
|
||
**剧情段落 N:[段落主题/概括,例如:结局与反思]**
|
||
* **时间戳:** [开始时间戳] --> [结束时间戳]
|
||
* **内容概要:** [对这段剧情的详细描述]
|
||
|
||
# 注意事项
|
||
* 请确保时间戳的准确性,直接引用字幕中的时间。
|
||
* 剧情段落的划分应合乎逻辑,能够反映剧情的起承转合。
|
||
* 语言表达应简洁、准确、客观。
|
||
|
||
# 限制
|
||
1. 严禁输出与分析结果无关的内容
|
||
2. 时间戳必须严格按照字幕中的实际时间
|
||
|
||
# 请处理以下字幕:
|
||
${subtitle_content}"""
|