123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- import json
- import random
- import re
- import time
- import requests
- class GPT4o():
- @classmethod
- def get_ai_title(cls, old_title):
- max_retries = 3
- for attempt in range(max_retries):
- content = '''
- 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求:
- 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题:
- 示例case:
- 此视频献给四零后,看完感触颇多!
- 🔴88岁三胞胎兄妹表演《沙家浜》,开口惊艳全场!
- 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓
- 🔴十分通透的一段话,写得太棒了,请朋友们收好!
- 🏆那个部位最先知道脑梗呢
- ✿这才叫老同学聚会,到了这个年纪,还能聚在一起真不容易
- 活久未见的照片,历史书上看不到,了解那些鲜为人知的过去
- 🚩中国人正在丢失的这几样东西!都转发看看吧~
- 🔥热热热!三伏天到了应该注意什么?一起看看❗
- 第二:生成过程有如下的规范、约束和建议:
- 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25;
- 2.不能包含#话题和@人;
- 3.如果原标题无法按照规则生成新标题则重新尝试5次,5次都失败后返回None
- 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
- 5.必须用引导群里好友和朋友们点击的短句结尾,示例:“群友们,都看看吧!”,“太棒了,请朋友们收好!”,“找了很久,终于找到了”,“好友们都来听听吧”;
- 6.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“必看”、“错过悔恨终生”类描述,错误危险标题示例:
- 🌸绝对不能错过,快打开看看,越快越好
- 所有老年人一定要看
- 天大的好消息,5月开始实施❗
- 就在刚刚,中国突然传出重磅消息,所有人都不敢相信!🚩
- 丧尽天良!为什么生病的人越来越多,原来吃的是这些🎈
- 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔
- 好消息来了,千万别划走!
- 紧急!已爆发,错过就晚了😱
- 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题。
- '''
- url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
- headers = {
- "Content-Type": "application/json"
- }
- payload = {
- "auth": "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",
- "openAiGptParam": {
- "model": "gpt-4o",
- "temperature": 0.5,
- "messages": [
- {
- "role": "system",
- "content": content
- },
- {
- "role": "user",
- "content": old_title
- }
- ]
- }
- }
- wait_time = random.uniform(5, 20)
- time.sleep(wait_time)
- response = requests.post(url, headers=headers, json=payload)
- response = response.json()
- try:
- match = re.search(r'"[^"]+": "([^"]+)"', str(response))
- if match:
- if match == 'None':
- return "🔻分享给大家一个视频!值得细品❗"
- title = match.group(1)
- if title in '原标题无法按照规则生成新标题':
- return "🔻分享给大家一个视频!值得细品❗"
- return title
- else:
- content = response['data']['choices'][0]['message']['content']
- if content:
- if content == 'None':
- return "🔻分享给大家一个视频!值得细品❗"
- data = json.loads(content)
- title = data["title"]
- if title:
- return title
- else:
- return content
- elif attempt == max_retries - 1:
- return "🔴分享给大家一个视频!值得细品❗"
- except Exception:
- if attempt == max_retries - 1:
- return "🔴分享给大家一个视频!值得细品❗"
- @classmethod
- def get_ai_pw(cls, title):
- max_retries = 3
- for attempt in range(max_retries):
- content = '''
- 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同类型的内容,生成结尾引导分享的脚本。引导用户发生更多的分享行为。要求优化过程综合考虑下面的要求:
- 第一.根据下面的示例case,总结分享引导脚本特点,生成分享引导脚本
- 示例case1:
- 标题:几十年前的老歌,现在很少听到了!
- 返回分享引导脚本:
- 这个视频真是难得,太美太好听了,看完真是回忆满满,让人怀念那个时代,多么淳朴多么美好,今天大家都在群里转发这个视频,看了都说,那时候虽然手里不宽裕,但心里都满怀希望,那股子拼劲,真是让人热血沸腾,老朋友你还记得吗?如果你也跟我一样深深的怀念,赶紧把这个视频转发到你所有群里去吧,让大家伙都看看吧,多多转发,感恩有你!
- 示例case2:
- 标题:🔺令人尊敬的老人❗❗这才是我们应该追的明星❗
- 返回分享引导脚本:
- 这个视频发出来5天了,转发的人却寥寥无几,试想一次明星出轨就全民皆知,这样中国真正的正能量却无人关注,真是太讽刺了!如果你看到了这个视频,请分享到你加入的每个群,向杨老这种无私奉献的大爱致敬!千万别让那些低调做好事的人心寒!转发传递下去,让世界都看到,中华民族的正能量!
- 第二:生成过程有如下的规范、约束和建议:
- 1.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金;
- 2.不能使用强烈的诱导、夸张词汇:在提高分享吸引力的同时,严格落实不使用“必做”、“错过悔恨终生”类描述;
- 3.分享引导阅读总时长控制30秒到1分钟,20-30句话,每句话字符长度控制在4-10字;
- 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的分享引导脚本内容。
- '''
- url = "http://aigc.piaoquantv.com/aigc-server/aigc/conversation"
- headers = {
- "Content-Type": "application/json"
- }
- payload = {
- "auth": "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",
- "openAiGptParam": {
- "model": "gpt-4o",
- "temperature": 0.5,
- "messages": [
- {
- "role": "system",
- "content": content
- },
- {
- "role": "user",
- "content": title
- }
- ]
- }
- }
- wait_time = random.uniform(5, 20)
- time.sleep(wait_time)
- response = requests.post(url, headers=headers, json=payload)
- response = response.json()
- try:
- content = response['data']['choices'][0]['message']['content']
- pattern = re.compile(r'"分享引导脚本":\s*"(.*?)"')
- match = pattern.search(content)
- if match:
- pw = match.group(1)
- return pw
- else:
- if content:
- return content
- if attempt == max_retries - 1:
- return None
- except Exception:
- if attempt == max_retries - 1:
- return None
- if __name__ == '__main__':
- title = '#夏日萌友季 #快分享计划 @快手粉条(O40300047) @快手宠物(O40300091)'
- GPT4o.get_ai_pw(title)
|