gpt4o_help.py 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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. 🔴88岁三胞胎兄妹表演《沙家浜》,开口惊艳全场!
  17. 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
  18. 🔴十分通透的一段话,写得太棒了,请朋友们收好!
  19. 🏆那个部位最先知道脑梗呢
  20. ✿这才叫老同学聚会,到了这个年纪,还能聚在一起真不容易
  21. 活久未见的照片,历史书上看不到,了解那些鲜为人知的过去
  22. 🚩中国人正在丢失的这几样东西!都转发看看吧~
  23. 🔥热热热!三伏天到了应该注意什么?一起看看❗
  24. 第二:生成过程有如下的规范、约束和建议:
  25. 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
  26. 2.不能包含#话题和@人;
  27. 3.如果原标题无法按照规则生成新标题则返回None
  28. 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  29. 5.必须用引导群里好友和朋友们点击的短句结尾,示例:“群友们,都看看吧!”,“太棒了,请朋友们收好!”,“找了很久,终于找到了”,“好友们都来听听吧”;
  30. 6.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“必看”、“错过悔恨终生”类描述,错误危险标题示例:
  31. 🌸绝对不能错过,快打开看看,越快越好
  32. 所有老年人一定要看
  33. 天大的好消息,5月开始实施❗
  34. 就在刚刚,中国突然传出重磅消息,所有人都不敢相信!🚩
  35. 丧尽天良!为什么生病的人越来越多,原来吃的是这些🎈
  36. 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
  37. 好消息来了,千万别划走!
  38. 紧急!已爆发,错过就晚了😱
  39. 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题。
  40. '''
  41. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  42. headers = {
  43. "Content-Type": "application/json"
  44. }
  45. payload = {
  46. "auth": "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",
  47. "openAiGptParam": {
  48. "model": "gpt-4o",
  49. "temperature": 0.5,
  50. "messages": [
  51. {
  52. "role": "system",
  53. "content": content
  54. },
  55. {
  56. "role": "user",
  57. "content": old_title
  58. }
  59. ]
  60. }
  61. }
  62. wait_time = random.uniform(5, 20)
  63. time.sleep(wait_time)
  64. response = requests.post(url, headers=headers, json=payload)
  65. response = response.json()
  66. try:
  67. match = re.search(r'"[^"]+": "([^"]+)"', str(response))
  68. if match:
  69. if match == 'None':
  70. return "🔻分享给大家一个视频!值得细❗"
  71. title = match.group(1)
  72. return title
  73. else:
  74. content = response['data']['choices'][0]['message']['content']
  75. if content:
  76. if content == 'None':
  77. return "🔻分享给大家一个视频!值得细❗"
  78. data = json.loads(content)
  79. title = data["title"]
  80. if title:
  81. return title
  82. else:
  83. return content
  84. elif attempt == max_retries - 1:
  85. return "🔴分享给大家一个视频!值得细❗"
  86. except Exception:
  87. if attempt == max_retries - 1:
  88. return "🔴分享给大家一个视频!值得细❗"
  89. @classmethod
  90. def get_ai_pw(cls, title):
  91. max_retries = 3
  92. for attempt in range(max_retries):
  93. content = '''
  94. 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同类型的内容,生成结尾引导分享的脚本。引导用户发生更多的分享行为。要求优化过程综合考虑下面的要求:
  95. 第一.根据下面的示例case,总结分享引导脚本特点,生成分享引导脚本
  96. 示例case1:
  97. 标题:此视频献给四零后,看完感触颇多!
  98. 分享引导脚本:
  99. 说的太好了 ,忍不住分享给了您 ,字字在理 ,句句入心 ,赶紧把视频转发出去 ,和老友们一起分享 ,转发的越多 ,收获的福气就越多!
  100. 第二:生成过程有如下的规范、约束和建议:
  101. 1.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
  102. 2.不能使用强烈的诱导、夸张词汇:在提高分享吸引力的同时,严格落实不使用“必做”、“错过悔恨终生”类描述;
  103. 3.分享引导总长控制在5-10句话,每句话字符长度控制在4-10字;
  104. 4.分享引导脚本保持自然的语言风格
  105. 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的分享引导脚本。
  106. '''
  107. url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
  108. headers = {
  109. "Content-Type": "application/json"
  110. }
  111. payload = {
  112. "auth": "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",
  113. "openAiGptParam": {
  114. "model": "gpt-4o",
  115. "temperature": 0.5,
  116. "messages": [
  117. {
  118. "role": "system",
  119. "content": content
  120. },
  121. {
  122. "role": "user",
  123. "content": title
  124. }
  125. ]
  126. }
  127. }
  128. wait_time = random.uniform(5, 20)
  129. time.sleep(wait_time)
  130. response = requests.post(url, headers=headers, json=payload)
  131. response = response.json()
  132. try:
  133. match = re.search(r'"[^"]+": "([^"]+)"', str(response))
  134. if match:
  135. pw = match.group(1)
  136. return pw
  137. else:
  138. if attempt == max_retries - 1:
  139. return None
  140. except Exception:
  141. if attempt == max_retries - 1:
  142. return None
  143. if __name__ == '__main__':
  144. title = '@菜博士888(O3118838067)'
  145. GPT4o.get_ai_title(title)