gpt4o_help.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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. 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求:
  13. 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题:
  14. 示例case:
  15. 此视频献给四零后,看完感触颇多!
  16. 🔴2024八一战友聚会通知书,各位战友请查收!
  17. 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
  18. 🔴十分通透的一段话,写得太棒了,请朋友们收好!
  19. 🔥热热热!三伏天到了应该注意什么?一起看看❗
  20. 🏆⭕️⭕️⭕接台湾回家,激动人心!
  21. 🔴这条视频真太美了❗️真的好看,来瞧一瞧吧!
  22. 💗省钱小妙招,找了很久,终于找到了!
  23. 🔴这才是民间高手,每一个动作都太漂亮了!赞!
  24. 第二:生成过程有如下的规范、约束和建议:
  25. 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
  26. 2.不能包含#话题和@人;
  27. 3.如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None
  28. 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  29. 5.必须能引导群里好友或朋友们点击观看的短句,作为标题结尾;
  30. 6.标题结尾的引导句要新奇、生动、略微夸张,且足够能吸引人想点击。但一定不能千篇一律;
  31. 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“转发”、“速看”、“一定”、“必看”、“错过悔恨终生”同类型的描述。
  32. 错误危险标题示例:
  33. 🌸绝对不能错过,快打开看看,越快越好
  34. 所有老年人一定要看
  35. 天大的好消息,5月开始实施❗
  36. 就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩
  37. 丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈
  38. 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  39. 好消息来了,千万别划走!
  40. 紧急!已爆发,错过就晚了😱
  41. 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题。
  42. '''
  43. # content = '''
  44. # 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求:
  45. #
  46. # 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题:
  47. # 示例case:
  48. # 此视频献给四零后,看完感触颇多!
  49. # 🔴8·1最美赞歌,献给所有穿过军装的人!
  50. # 🔴2024八一战友聚会通知书,各位战友请查收!
  51. # 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
  52. # 🔴十分通透的一段话,写得太棒了,请朋友们收好!
  53. # 🚩中国人正在丢失的这几样东西!都转发看看吧~
  54. # 🔥热热热!三伏天到了应该注意什么?一起看看❗
  55. # 🏆那个部位最先知道脑梗呢,来瞧一瞧!
  56. # 🔴这条视频真太美了❗️真的好看,来瞧一瞧吧!
  57. # 💗省钱小妙招,找了很久,终于找到了!
  58. # 🔴这是一群让国人泪流满面的雕像!进来看看吧!
  59. # 第二:生成过程有如下的规范、约束和建议:
  60. # 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
  61. # 2.不能包含#话题和@人;
  62. # 3.如果原标题无法按照规则生成新标题则重新尝试5次,5次都失败后则返回None
  63. # 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  64. # 5.必须能引导群里好友或朋友们点击、分享的短句,作为标题结尾
  65. # 6.标题结尾的引导句要新奇、生动、略微夸张,且足够能吸引人想点击
  66. # 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“一定”、“必看”、“错过悔恨终生”类描述。错误危险标题示例:
  67. # 🌸绝对不能错过,快打开看看,越快越好
  68. # 所有老年人一定要看
  69. # 天大的好消息,5月开始实施❗
  70. # 就在刚刚,中国突然传出重磅消息,所有人都不敢相信!
  71. # 🚩 丧尽天良!为什么生病的人越来越多,原来吃的是这些
  72. # 🎈 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  73. # 好消息来了,千万别划走!
  74. # 紧急!已爆发,错过就晚了😱
  75. #
  76. # 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题。
  77. # '''
  78. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  79. headers = {
  80. "Content-Type": "application/json"
  81. }
  82. payload = {
  83. "auth": "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",
  84. "openAiGptParam": {
  85. "model": "gpt-4o",
  86. "temperature": 0.5,
  87. "messages": [
  88. {
  89. "role": "system",
  90. "content": content
  91. },
  92. {
  93. "role": "user",
  94. "content": old_title
  95. }
  96. ]
  97. }
  98. }
  99. wait_time = random.uniform(5, 20)
  100. time.sleep(wait_time)
  101. response = requests.post(url, headers=headers, json=payload)
  102. response = response.json()
  103. try:
  104. match = re.search(r'"[^"]+": "([^"]+)"', str(response))
  105. if match:
  106. if match == 'None':
  107. return "🔻分享给大家一个视频!值得细品❗"
  108. title = match.group(1)
  109. if title in '原标题无法按照规则生成新标题':
  110. return "🔻分享给大家一个视频!值得细品❗"
  111. return title
  112. else:
  113. content = response['data']['choices'][0]['message']['content']
  114. if content:
  115. if content == 'None':
  116. return "🔻分享给大家一个视频!值得细品❗"
  117. data = json.loads(content)
  118. title = data["title"]
  119. if title:
  120. return title
  121. else:
  122. return content
  123. elif attempt == max_retries - 1:
  124. return "🔴分享给大家一个视频!值得细品❗"
  125. except Exception:
  126. if attempt == max_retries - 1:
  127. return "🔴分享给大家一个视频!值得细品❗"
  128. @classmethod
  129. def get_ai_pw(cls, title):
  130. max_retries = 3
  131. for attempt in range(max_retries):
  132. content = '''
  133. 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同类型的内容,生成结尾引导分享的脚本。引导用户发生更多的分享行为。要求优化过程综合考虑下面的要求:
  134. 第一.根据下面的示例case,总结分享引导脚本特点,生成分享引导脚本
  135. 示例case1:
  136. 标题:几十年前的老歌,现在很少听到了!
  137. 返回分享引导脚本:
  138. 这个视频真是难得,太美太好听了,看完真是回忆满满,让人怀念那个时代,多么淳朴多么美好,今天大家都在群里转发这个视频,看了都说,那时候虽然手里不宽裕,但心里都满怀希望,那股子拼劲,真是让人热血沸腾,老朋友你还记得吗?如果你也跟我一样深深的怀念,赶紧把这个视频转发到你所有群里去吧,让大家伙都看看吧,多多转发,感恩有你!
  139. 示例case2:
  140. 标题:🔺令人尊敬的老人❗❗这才是我们应该追的明星❗
  141. 返回分享引导脚本:
  142. 这个视频发出来5天了,转发的人却寥寥无几,试想一次明星出轨就全民皆知,这样中国真正的正能量却无人关注,真是太讽刺了!如果你看到了这个视频,请分享到你加入的每个群,向杨老这种无私奉献的大爱致敬!千万别让那些低调做好事的人心寒!转发传递下去,让世界都看到,中华民族的正能量!
  143. 第二:生成过程有如下的规范、约束和建议:
  144. 1.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  145. 2.不能使用强烈的诱导、夸张词汇:在提高分享吸引力的同时,严格落实不使用“必做”、“错过悔恨终生”类描述;
  146. 3.分享引导阅读总时长控制30秒到1分钟,20-30句话,每句话字符长度控制在4-10字;
  147. 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的分享引导脚本内容。
  148. '''
  149. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  150. headers = {
  151. "Content-Type": "application/json"
  152. }
  153. payload = {
  154. "auth": "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",
  155. "openAiGptParam": {
  156. "model": "gpt-4o",
  157. "temperature": 0.5,
  158. "messages": [
  159. {
  160. "role": "system",
  161. "content": content
  162. },
  163. {
  164. "role": "user",
  165. "content": title
  166. }
  167. ]
  168. }
  169. }
  170. wait_time = random.uniform(5, 20)
  171. time.sleep(wait_time)
  172. response = requests.post(url, headers=headers, json=payload)
  173. response = response.json()
  174. try:
  175. content = response['data']['choices'][0]['message']['content']
  176. pattern = re.compile(r'"分享引导脚本":\s*"(.*?)"')
  177. match = pattern.search(content)
  178. if match:
  179. pw = match.group(1)
  180. # 检查文本中是否包含英文字母
  181. if re.search(r'[a-zA-Z]', pw):
  182. pw = re.sub(r'[a-zA-Z]', '', pw)
  183. return pw
  184. else:
  185. if content:
  186. if re.search(r'[a-zA-Z]', content):
  187. content = re.sub(r'[a-zA-Z]', '', content)
  188. return content
  189. if attempt == max_retries - 1:
  190. return None
  191. except Exception:
  192. if attempt == max_retries - 1:
  193. return None
  194. if __name__ == '__main__':
  195. title = '#强势回归'
  196. GPT4o.get_ai_title(title)