|
@@ -26,6 +26,33 @@ prompt = '''
|
|
-需求详细query是将用户需求及视频背景信息总结为一段给AI模型的需求问题或指令;query格式为:我看了一段内容为“(视频50字简介)”的视频,我想了解“(具体需求)”
|
|
-需求详细query是将用户需求及视频背景信息总结为一段给AI模型的需求问题或指令;query格式为:我看了一段内容为“(视频50字简介)”的视频,我想了解“(具体需求)”
|
|
-总结12字内钩子话术,引导用户产生兴趣点击落地方案;产品落地形态应与产品钩子合理承接。
|
|
-总结12字内钩子话术,引导用户产生兴趣点击落地方案;产品落地形态应与产品钩子合理承接。
|
|
|
|
|
|
|
|
+输出内容格式:
|
|
|
|
+output in JSON format with keys:
|
|
|
|
+需求排序序号(str)
|
|
|
|
+需求强烈程度分值(str)
|
|
|
|
+用户具体的需求描述(str)
|
|
|
|
+需求详细query(str)
|
|
|
|
+需求分类(str)
|
|
|
|
+推测出该点需求的原因(str)
|
|
|
|
+需求钩子话术(str)
|
|
|
|
+落地方案类型(str)
|
|
|
|
+落地方案形态描述(str)
|
|
|
|
+'''
|
|
|
|
+
|
|
|
|
+prompt1 = '''
|
|
|
|
+请帮助我做以下分析:
|
|
|
|
+我将提供给你视频,需要你模拟成中老年用户在视频消费平台观看这些视频。
|
|
|
|
+需要你充分发挥想象力,推测出中老年用户在观看这些视频过程中,可能产生什么具体的需求。并推测出该点需求的原因。
|
|
|
|
+-每项需求请根据观看者的需求强烈程度打分排序,越强烈分值越高,分值越高排序越前。分值范围:0-10分。
|
|
|
|
+-每项需求请分类。需求类型:比如问答信息获取类、视频推荐类、交流互动类等,类型字数请控制在10个字以内。
|
|
|
|
+-针对这些需求,平台有两部分功能:钩子及落地方案,钩子指在视频需求产生时,平台会有相关提示,提示用户进入落地方案;落地方案指针对用户需求,平台提供的相关信息、服务能力,解决用户的需求
|
|
|
|
+-针对这些需求,平台有几类解决方案,1. AI对话机器人;可提供问答信息获取服务;2. 内容推荐;推荐平台内相关视频内容;4. 二维码;可加入社群、关注公众号、小助手等;不限于此3种,可提出更多解决方案及落地页方式
|
|
|
|
+-需求是用户在观看过程中有欲望产生除观看外的动作,需求不要泛泛而谈,而是针对这个视频的强烈需求欲望。第一要与视频紧密相关,第二要包含用户真正的好奇心、交流欲等。第三需求范围不要大而空,要具体详细真实,如“了解适合老年人的旅游景点和路线”是不好的需求提取与描述,要根据视频说明具体的景点及具体出行行为
|
|
|
|
+-由于用户观看行为与注意力,需求最好与视频初始部分或整体内容相关;
|
|
|
|
+-合理为需求打分,如判断需求不强烈,请打低分;一个视频可都为低分需求
|
|
|
|
+-需求详细query是将用户需求及视频背景信息总结为一段给AI模型的需求问题或指令;query格式为:我看了一段内容为“(视频50字简介)”的视频,我想了解“(具体需求)”
|
|
|
|
+-总结12字内钩子话术,引导用户产生兴趣点击落地方案;产品落地形态应与产品钩子合理承接。
|
|
|
|
+
|
|
输出内容格式:
|
|
输出内容格式:
|
|
output in JSON format with keys:
|
|
output in JSON format with keys:
|
|
需求排序序号(str)
|
|
需求排序序号(str)
|
|
@@ -71,7 +98,7 @@ class GoogleAI(object):
|
|
logger.error(f'[内容分析] 视频下载失败, 跳过任务')
|
|
logger.error(f'[内容分析] 视频下载失败, 跳过任务')
|
|
os.remove(video_path)
|
|
os.remove(video_path)
|
|
logger.info(f"[内容分析] 文件已删除: {video_path}")
|
|
logger.info(f"[内容分析] 文件已删除: {video_path}")
|
|
- return "[异常] 视频下载失败"
|
|
|
|
|
|
+ return "[异常] 视频下载失败",""
|
|
|
|
|
|
video = genai.upload_file(path=video_path, mime_type='video/mp4')
|
|
video = genai.upload_file(path=video_path, mime_type='video/mp4')
|
|
while video.state.name == 'PROCESSING':
|
|
while video.state.name == 'PROCESSING':
|
|
@@ -80,7 +107,7 @@ class GoogleAI(object):
|
|
if video.state.name != 'ACTIVE':
|
|
if video.state.name != 'ACTIVE':
|
|
genai.delete_file(name=video.name)
|
|
genai.delete_file(name=video.name)
|
|
os.remove(video_path)
|
|
os.remove(video_path)
|
|
- return "[异常] 上传视频失败"
|
|
|
|
|
|
+ return "[异常] 上传视频失败", ""
|
|
model = genai.GenerativeModel(
|
|
model = genai.GenerativeModel(
|
|
model_name='gemini-2.0-flash',
|
|
model_name='gemini-2.0-flash',
|
|
generation_config=genai.GenerationConfig(response_mime_type='application/json'),
|
|
generation_config=genai.GenerationConfig(response_mime_type='application/json'),
|
|
@@ -100,13 +127,26 @@ class GoogleAI(object):
|
|
},
|
|
},
|
|
)
|
|
)
|
|
text = orjson.loads(response.text.strip())
|
|
text = orjson.loads(response.text.strip())
|
|
|
|
+
|
|
|
|
+ response2 = model.generate_content(
|
|
|
|
+ contents=[
|
|
|
|
+ video,
|
|
|
|
+ f'{prompt1}',
|
|
|
|
+ ],
|
|
|
|
+ stream=False,
|
|
|
|
+ request_options={
|
|
|
|
+ 'timeout': 600,
|
|
|
|
+ },
|
|
|
|
+ )
|
|
|
|
+ text2 = orjson.loads(response2.text.strip())
|
|
|
|
+
|
|
genai.delete_file(name=video.name)
|
|
genai.delete_file(name=video.name)
|
|
os.remove(video_path)
|
|
os.remove(video_path)
|
|
- return text
|
|
|
|
|
|
+ return text,text2
|
|
except Exception as e:
|
|
except Exception as e:
|
|
logger.error(f"[内容分析] 处理异常,异常信息{e}")
|
|
logger.error(f"[内容分析] 处理异常,异常信息{e}")
|
|
os.remove(video_path)
|
|
os.remove(video_path)
|
|
- return f"[异常] {e}"
|
|
|
|
|
|
+ return f"[异常] {e}",""
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|