gpt4o_help.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. import json
  2. import random
  3. import re
  4. import time
  5. import requests
  6. class GPT4o():
  7. @classmethod
  8. def get_ai_title(cls, old_title):
  9. max_retries = 3
  10. for attempt in range(max_retries):
  11. content = '''
  12. CONTEXT
  13. 你是一名短视频标题优化专家,任务是为短视频生成吸引力高且符合规范的标题。
  14. OBJECTIVE
  15. 基于优秀标题要求及示例,生成新的、吸引用户注意的标题。
  16. SCALE
  17. 如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None
  18. TIME
  19. 在标题生成请求提出后的1分钟内生成。
  20. ACTOR
  21. 短视频标题优化专家
  22. RESOURCES
  23. 原标题列表
  24. 优秀标题示例
  25. 标题生成规范和约束条件
  26. RESPONSE
  27. 为每个原标题生成符合规范的新标题。
  28. 生成示例标题案例及要求
  29. 标题开头包含醒目emoji🔴,整体字符长度必须控制在10-25个字
  30. 识别需要修改的标题中可能感兴趣的人群,并在标题中表现出来。人群示例如:群友们、退休人员、50~70后等
  31. 标题中可增加一些对内容的观点/态度,用人格化的方式表达,示例:太香了、老外至今难以相信、老百姓乐坏了
  32. 标题结尾可以根据标题内容增加一些引导语,格式参考示例但不必局限于示例。示例:都看看吧、你也来看看吧、你们见过吗、你听对不对、说的太好了、请听、大家注意、太神奇了
  33. Goodcase示例:
  34. ⭕老外至今难以相信,中国人竟能把大桥建到天上,穿入云中
  35. 🔴未来酒店体验,群友们,都看看吧!
  36. ⭕六七十年代的《忠字舞》,你们见过吗?
  37. 🔴哈哈哈!大哥说的太好了!太真实了
  38. 🔴今天,请记住那1700个集体赴死的年轻人,平均23岁!
  39. 生成约束
  40. 标题不能包含#话题标签和@人名。
  41. 如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None。
  42. 不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金。
  43. 标题内不能使用引导分享点击的词句,如:快来看看、大家都听一听、值得一看等。
  44. 不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述,避免使用“震惊国人”、“速看”等类似描述。
  45. 标题需要简洁、清晰,不要使用网络流行语,如:太燃了、佛系、躺平、内卷等。
  46. badcase示例:
  47. 🌸绝对不能错过,快打开看看,越快越好
  48. 所有老年人一定要看
  49. 天大的好消息,5月开始实施❗
  50. 就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩
  51. 丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈
  52. 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  53. 好消息来了,千万别划走!
  54. 紧急!已爆发,错过就晚了😱
  55. 需要重新生成的标题列表如下:
  56. 1.抹不掉的容颜,回不去的青春!愿50。60。70后的我们,保重自己,珍惜每一天!收起
  57. 2.人在做,天在看,世间自有公道在。善恶到头终有报,有因必有果~人在做天在看人生感悟人生智慧情感现实
  58. 3.这个视频,分享给我的老友,祝愿您能幸福安康
  59. 4.#乡村美食 #乡村柴火饭 #快手美食家 煮好的五花肉切成薄片炒苦瓜好香啊
  60. 5.#奥运气氛组已就位 #赛场尽兴而动 #奥运会
  61. 作为一个短视频专家,请你根据以下需求帮我改写标题:
  62. 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题,要求如下:
  63. 1.识别需要修改的标题中可能感兴趣的人群,并在标题中表现出来。人群示例如:群友们、退休人员、50~70后等
  64. 2.标题中可增加一些对内容的观点/态度,用人格化的方式表达,示例:太香了、老外至今难以相信、老百姓乐坏了
  65. 3.标题结尾可以增加一些引导语,示例:都看看吧、你们见过吗、你听对不对
  66. 4.标题的内容不要互相矛盾,示例:「老友记,看这个视频,愿你幸福安康,乐坏了!」这个标题中,「愿你祝福安康」的语境下,不应该有「乐坏了」这种语气词
  67. 修改后的优秀case:
  68. ⭕老外至今难以相信,中国人竟能把大桥建到天上,穿入云中
  69. 🔴未来酒店体验,群友们,都看看吧!
  70. ⭕六七十年代的《忠字舞》,你们见过吗?
  71. 🔴哈哈哈!大哥说的太好了!太真实了
  72. 🔴今天,请记住那1700个集体赴死的年轻人,平均23岁!
  73. 第二:生成过程有如下的规范、约束和建议:
  74. 1.标题开头包含醒目emoji🔴,整体字符长度必须控制在10-25个字,emoji可以根据标题做调整
  75. 2.不能包含#话题和@人
  76. 3.如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None
  77. 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  78. 5.标题内不能使用引导分享点击的词句;包括但不限于下面这些词语:快来看看、群友看看、大家都听一听、 一起看看、 快来看、 都看看、来看看、值得一看、 进来看看、请看看、提前看看
  79. 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“震惊国人”、“转发”、“速看”、“一定”、“必看”、“错过悔恨终生”同类型的描述。
  80. 8.标题不要使用网络流行语,如:太燃了、佛系、躺平、内卷等
  81. 错误危险标题示例:
  82. 🌸绝对不能错过,快打开看看,越快越好
  83. 所有老年人一定要看
  84. 天大的好消息,5月开始实施❗
  85. 就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩
  86. 丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈
  87. 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  88. 好消息来了,千万别划走!
  89. 紧急!已爆发,错过就晚了😱
  90. 需要重新生成的标题列表如下:
  91. 1.抹不掉的容颜,回不去的青春!愿50。60。70后的我们,保重自己,珍惜每一天!收起
  92. 2.人在做,天在看,世间自有公道在。善恶到头终有报,有因必有果~人在做天在看人生感悟人生智慧情感现实
  93. 3.这个视频,分享给我的老友,祝愿您能幸福安康
  94. 4.#乡村美食 #乡村柴火饭 #快手美食家 煮好的五花肉切成薄片炒苦瓜好香啊
  95. 5.#奥运气氛组已就位 #赛场尽兴而动 #奥运会
  96. '''
  97. # content = '''
  98. # 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求:
  99. # 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题:
  100. # 示例case:
  101. # 此视频献给四零后,看完感触颇多!
  102. # 🔴2024八一战友聚会通知书,各位战友请查收!
  103. # 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
  104. # 🔴十分通透的一段话,写得太棒了,请朋友们收好!
  105. # 🏆⭕️⭕️⭕接台湾回家,激动人心!
  106. # 💗省钱小妙招,找了很久,终于找到了!
  107. # 🔴这才是民间高手,每一个动作都太漂亮了!赞!
  108. # 第二:生成过程有如下的规范、约束和建议:
  109. # 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
  110. # 2.不能包含#话题和@人;
  111. # 3.如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None
  112. # 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  113. # 5.标题内不能使用引导分享点击的词句;包括但不限于下面这些词语:快来看看、群友看看、大家都听一听、 一起看看、 快来看、 都看看、来看看、值得一看、 进来看看、请看看、提前看看
  114. # 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“转发”、“速看”、“一定”、“必看”、“错过悔恨终生”同类型的描述。
  115. # 错误危险标题示例:
  116. # 🌸绝对不能错过,快打开看看,越快越好
  117. # 所有老年人一定要看
  118. # 天大的好消息,5月开始实施❗
  119. # 就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩
  120. # 丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈
  121. # 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  122. # 好消息来了,千万别划走!
  123. # 紧急!已爆发,错过就晚了😱
  124. # 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题
  125. # '''
  126. # content = '''
  127. # 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求:
  128. #
  129. # 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题:
  130. # 示例case:
  131. # 此视频献给四零后,看完感触颇多!
  132. # 🔴8·1最美赞歌,献给所有穿过军装的人!
  133. # 🔴2024八一战友聚会通知书,各位战友请查收!
  134. # 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
  135. # 🔴十分通透的一段话,写得太棒了,请朋友们收好!
  136. # 🚩中国人正在丢失的这几样东西!都转发看看吧~
  137. # 🔥热热热!三伏天到了应该注意什么?一起看看❗
  138. # 🏆那个部位最先知道脑梗呢,来瞧一瞧!
  139. # 🔴这条视频真太美了❗️真的好看,来瞧一瞧吧!
  140. # 💗省钱小妙招,找了很久,终于找到了!
  141. # 🔴这是一群让国人泪流满面的雕像!进来看看吧!
  142. # 第二:生成过程有如下的规范、约束和建议:
  143. # 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
  144. # 2.不能包含#话题和@人;
  145. # 3.如果原标题无法按照规则生成新标题则重新尝试5次,5次都失败后则返回None
  146. # 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  147. # 5.必须能引导群里好友或朋友们点击、分享的短句,作为标题结尾
  148. # 6.标题结尾的引导句要新奇、生动、略微夸张,且足够能吸引人想点击
  149. # 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“一定”、“必看”、“错过悔恨终生”类描述。错误危险标题示例:
  150. # 🌸绝对不能错过,快打开看看,越快越好
  151. # 所有老年人一定要看
  152. # 天大的好消息,5月开始实施❗
  153. # 就在刚刚,中国突然传出重磅消息,所有人都不敢相信!
  154. # 🚩 丧尽天良!为什么生病的人越来越多,原来吃的是这些
  155. # 🎈 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  156. # 好消息来了,千万别划走!
  157. # 紧急!已爆发,错过就晚了😱
  158. #
  159. # 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题。
  160. # '''
  161. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  162. headers = {
  163. "Content-Type": "application/json"
  164. }
  165. payload = {
  166. "auth": "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",
  167. "openAiGptParam": {
  168. "model": "gpt-4o",
  169. "temperature": 0.5,
  170. "messages": [
  171. {
  172. "role": "system",
  173. "content": content
  174. },
  175. {
  176. "role": "user",
  177. "content": old_title
  178. }
  179. ]
  180. }
  181. }
  182. wait_time = random.uniform(1, 6)
  183. time.sleep(wait_time)
  184. response = requests.post(url, headers=headers, json=payload)
  185. response = response.json()
  186. try:
  187. message = response['data']['choices'][0]['message']
  188. content = message['content']
  189. if content:
  190. return content
  191. else:
  192. if attempt == max_retries - 1:
  193. return "这个视频,分享给我的老友,祝愿您能幸福安康"
  194. except Exception:
  195. if attempt == max_retries - 1:
  196. return "这个视频,分享给我的老友,祝愿您能幸福安康"
  197. @classmethod
  198. def get_ai_pw(cls, title):
  199. max_retries = 3
  200. for attempt in range(max_retries):
  201. content = '''
  202. 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同类型的内容,生成结尾引导分享的脚本。引导用户发生更多的分享行为。要求优化过程综合考虑下面的要求:
  203. 第一.根据下面的示例case,总结分享引导脚本特点,生成分享引导脚本
  204. 示例case1:
  205. 标题:几十年前的老歌,现在很少听到了!
  206. 返回分享引导脚本:
  207. 这个视频真是难得,太美太好听了,看完真是回忆满满,让人怀念那个时代,多么淳朴多么美好,今天大家都在群里转发这个视频,看了都说,那时候虽然手里不宽裕,但心里都满怀希望,那股子拼劲,真是让人热血沸腾,老朋友你还记得吗?如果你也跟我一样深深的怀念,赶紧把这个视频转发到你所有群里去吧,让大家伙都看看吧,多多转发,感恩有你!
  208. 示例case2:
  209. 标题:🔺令人尊敬的老人❗❗这才是我们应该追的明星❗
  210. 返回分享引导脚本:
  211. 这个视频发出来5天了,转发的人却寥寥无几,试想一次明星出轨就全民皆知,这样中国真正的正能量却无人关注,真是太讽刺了!如果你看到了这个视频,请分享到你加入的每个群,向杨老这种无私奉献的大爱致敬!千万别让那些低调做好事的人心寒!转发传递下去,让世界都看到,中华民族的正能量!
  212. 第二:生成过程有如下的规范、约束和建议:
  213. 1.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  214. 2.不能使用强烈的诱导、夸张词汇:在提高分享吸引力的同时,严格落实不使用“必做”、“错过悔恨终生”类描述;
  215. 3.分享引导阅读总时长控制30秒到1分钟,20-30句话,每句话字符长度控制在4-10字;
  216. 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的分享引导脚本内容。
  217. '''
  218. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  219. headers = {
  220. "Content-Type": "application/json"
  221. }
  222. payload = {
  223. "auth": "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",
  224. "openAiGptParam": {
  225. "model": "gpt-4o",
  226. "temperature": 0.5,
  227. "messages": [
  228. {
  229. "role": "system",
  230. "content": content
  231. },
  232. {
  233. "role": "user",
  234. "content": title
  235. }
  236. ]
  237. }
  238. }
  239. wait_time = random.uniform(5, 20)
  240. time.sleep(wait_time)
  241. response = requests.post(url, headers=headers, json=payload)
  242. response = response.json()
  243. try:
  244. content = response['data']['choices'][0]['message']['content']
  245. pattern = re.compile(r'"分享引导脚本":\s*"(.*?)"')
  246. match = pattern.search(content)
  247. if match:
  248. pw = match.group(1)
  249. # 检查文本中是否包含英文字母
  250. if re.search(r'[a-zA-Z]', pw):
  251. pw = re.sub(r'[a-zA-Z]', '', pw)
  252. return pw
  253. else:
  254. if content:
  255. if re.search(r'[a-zA-Z]', content):
  256. content = re.sub(r'[a-zA-Z]', '', content)
  257. return content
  258. if attempt == max_retries - 1:
  259. return None
  260. except Exception:
  261. if attempt == max_retries - 1:
  262. return None
  263. if __name__ == '__main__':
  264. title = '#母子俩的日常生活 #母子俩的欢乐时光'
  265. GPT4o.get_ai_title(title)