Files
BiliNote/backend/app/gpt/prompt_builder.py
黄建武 97f153646f feat(frontend): 新增多版本笔记功能,并做了向下兼容。
- 新增关于页面组件,介绍项目背景、功能和使用方法
- 重构笔记生成逻辑,支持多版本笔记
- 新增笔记版本选择、复制和导出功能
-优化笔记界面布局和交互
- 调整部分组件样式,提升用户体验
2025-05-04 11:00:54 +08:00

116 lines
5.3 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.
from app.gpt.prompt import BASE_PROMPT
note_formats = [
{'label': '目录', 'value': 'toc'},
{'label': '原片跳转', 'value': 'link'},
{'label': '原片截图', 'value': 'screenshot'},
{'label': 'AI总结', 'value': 'summary'}
]
note_styles = [
{'label': '精简', 'value': 'minimal'},
{'label': '详细', 'value': 'detailed'},
{'label': '学术', 'value': 'academic'},
{"label": '教程',"value": 'tutorial', },
{'label': '小红书', 'value': 'xiaohongshu'},
{'label': '生活向', 'value': 'life_journal'},
{'label': '任务导向', 'value': 'task_oriented'},
{'label': '商业风格', 'value': 'business'},
{'label': '会议纪要', 'value': 'meeting_minutes'}
]
# 生成 BASE_PROMPT 函数
def generate_base_prompt(title, segment_text, tags, _format=None, style=None, extras=None):
# 生成 Base Prompt 开头部分
prompt = BASE_PROMPT.format(
video_title=title,
segment_text=segment_text,
tags=tags
)
# 添加用户选择的格式
if _format:
prompt += "\n" + "\n".join([get_format_function(f) for f in _format])
# 根据用户选择的笔记风格添加描述
if style:
prompt += "\n" + get_style_format(style)
# 添加额外内容
if extras:
prompt += f"\n{extras}"
return prompt
# 获取格式函数
def get_format_function(format_type):
format_map = {
'toc': get_toc_format,
'link': get_link_format,
'screenshot': get_screenshot_format,
'summary': get_summary_format
}
return format_map.get(format_type, lambda: '')()
# 风格描述的处理
def get_style_format(style):
style_map = {
'minimal': '1. **精简信息**: 仅记录最重要的内容,简洁明了。',
'detailed': '2. **详细记录**: 包含完整的内容和每个部分的详细讨论。需要尽可能多的记录视频内容,最好详细的笔记',
'academic': '3. **学术风格**: 适合学术报告,正式且结构化。',
'xiaohongshu': '''4. **小红书风格**:
### 擅长使用下面的爆款关键词:
好用到哭,大数据,教科书般,小白必看,宝藏,绝绝子神器,都给我冲,划重点笑不活了YYDS秘方我不允许压箱底建议收藏停止摆烂上天在提醒你挑战全网手把手揭秘普通女生沉浸式有手就能做吹爆好用哭了搞钱必看狠狠搞钱打工人吐血整理家人们隐藏高级感治愈破防了万万没想到爆款永远可以相信被夸爆手残党必备正确姿势
### 采用二极管标题法创作标题:
- 正面刺激法:产品或方法+只需1秒 (短期)+便可开挂(逆天效果)
- 负面刺激法:你不XXX+绝对会后悔 (天大损失) +(紧迫感)
利用人们厌恶损失和负面偏误的心理
### 写作技巧
1. 使用惊叹号、省略号等标点符号增强表达力,营造紧迫感和惊喜感。
2. **使用emoji表情符号来增加文字的活力**
3. 采用具有挑战性和悬念的表述,引发读、“无敌者好奇心,例如“暴涨词汇量”了”、“拒绝焦虑”等
4. 利用正面刺激和负面激,诱发读者的本能需求和动物基本驱动力,如“离离原上谱”、“你不知道的项目其实很赚”等
5. 融入热点话题和实用工具提高文章的实用性和时效性如“2023年必知”、“chatGPT狂飙进行时”等
6. 描述具体的成果和效果强调标题中的关键词使其更具吸引力例如“英语底子再差搞清这些语法你也能拿130+”
7. 使用吸引人的标题:''',
'life_journal': '5. **生活向**: 记录个人生活感悟,情感化表达。',
'task_oriented': '6. **任务导向**: 强调任务、目标,适合工作和待办事项。',
'business': '7. **商业风格**: 适合商业报告、会议纪要,正式且精准。',
'meeting_minutes': '8. **会议纪要**: 适合商业报告、会议纪要,正式且精准。',
"tutorial":"9.**教程笔记**:尽可能详细的记录教程,特别是关键点和一些重要的结论步骤"
}
return style_map.get(style, '')
# 格式化输出内容
def get_toc_format():
return '''
9. **目录**: 自动生成一个基于 `##` 级标题的目录。不需要插入原片跳转
'''
def get_link_format():
return '''
10. **原片跳转**: 为每个主要章节添加时间戳,使用格式 `*Content-[mm:ss]`。
重要:**始终**在章节标题前加上 `*Content` 前缀,例如:`AI 的发展史 *Content-[01:23]`。一定是标题在前 插入标记在后
'''
def get_screenshot_format():
return '''
11. **原片截图**:你收到的截图一般是一个网格网格的每张图片就是一个时间点左上角会包含时间mm:ss的格式请你结合我发你的图片插入截图提示请你帮助用户更好的理解视频内容请你认真的分析每个图片和对应的转写文案插入最合适的内容来备注用户理解请一定按照这个格式 返回否则系统无法解析:
- 格式:`*Screenshot-[mm:ss]`
'''
def get_summary_format():
return '''
12. **AI总结**: 在笔记末尾加入简短的AI生成总结,并且二级标题 就是 AI 总结 例如 ## AI 总结。
'''