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: 此视频献给四零后,看完感触颇多! 🔴2024八一战友聚会通知书,各位战友请查收! 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓 🔴十分通透的一段话,写得太棒了,请朋友们收好! 🏆⭕️⭕️⭕接台湾回家,激动人心! 💗省钱小妙招,找了很久,终于找到了! 🔴这才是民间高手,每一个动作都太漂亮了!赞! 第二:生成过程有如下的规范、约束和建议: 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25; 2.不能包含#话题和@人; 3.如果原标题无法按照规则生成新标题则重新尝试5次,失败后返回None 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金; 5.标题内不能使用引导分享点击的词句;包括但不限于下面这些词语:快来看看、群友看看、大家都听一听、 一起看看、 快来看、 都看看、来看看、值得一看、 进来看看、请看看、提前看看 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“转发”、“速看”、“一定”、“必看”、“错过悔恨终生”同类型的描述。 错误危险标题示例: 🌸绝对不能错过,快打开看看,越快越好 所有老年人一定要看 天大的好消息,5月开始实施❗ 就在刚刚,中国突然传出重磅消息,所有人都不敢相信! 🚩 丧尽天良!为什么生病的人越来越多,原来吃的是这些 🎈 今年的端午节太特殊,一辈子难遇一次!一定要看!错过别后悔 好消息来了,千万别划走! 紧急!已爆发,错过就晚了😱 输出格式:要求输出格式为符合RFC8259标准的JSON格式的字符串,不要以代码块形式返回,返回一个string类型的新标题 ''' # content = ''' # 请针对微信平台视频类小程序场景,面向人群是中国中老年人,在单聊、群聊场景,对不同视频内容原标题,在分享卡片上预览的标题进行优化。优化目标是提高这个场景下的视频卡片点击率。要求优化过程综合考虑下面的要求: # # 第一:根据下面的优秀标题示例,总结优秀标题特点,生成一个新标题: # 示例case: # 此视频献给四零后,看完感触颇多! # 🔴8·1最美赞歌,献给所有穿过军装的人! # 🔴2024八一战友聚会通知书,各位战友请查收! # 50年前毛主席就告诫了,今天一一验证!苦的还是老百姓 # 🔴十分通透的一段话,写得太棒了,请朋友们收好! # 🚩中国人正在丢失的这几样东西!都转发看看吧~ # 🔥热热热!三伏天到了应该注意什么?一起看看❗ # 🏆那个部位最先知道脑梗呢,来瞧一瞧! # 🔴这条视频真太美了❗️真的好看,来瞧一瞧吧! # 💗省钱小妙招,找了很久,终于找到了! # 🔴这是一群让国人泪流满面的雕像!进来看看吧! # 第二:生成过程有如下的规范、约束和建议: # 1.标题开头包含醒目emoji🔴,整体字符长度控制在10-25; # 2.不能包含#话题和@人; # 3.如果原标题无法按照规则生成新标题则重新尝试5次,5次都失败后则返回None # 4.不能编造:不能加入原标题没有的实体信息,如原标题没有养老金,不能在生成的标题中出现养老金; # 5.必须能引导群里好友或朋友们点击、分享的短句,作为标题结尾 # 6.标题结尾的引导句要新奇、生动、略微夸张,且足够能吸引人想点击 # 7.不能使用无实质信息和强烈诱导点击、紧急、夸张、震惊的描述:在提高标题吸引力的同时,严格落实不使用“一定”、“必看”、“错过悔恨终生”类描述。错误危险标题示例: # 🌸绝对不能错过,快打开看看,越快越好 # 所有老年人一定要看 # 天大的好消息,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) # 检查文本中是否包含英文字母 if re.search(r'[a-zA-Z]', pw): pw = re.sub(r'[a-zA-Z]', '', pw) return pw else: if content: if re.search(r'[a-zA-Z]', content): content = re.sub(r'[a-zA-Z]', '', content) return content if attempt == max_retries - 1: return None except Exception: if attempt == max_retries - 1: return None if __name__ == '__main__': title = '#强势回归' GPT4o.get_ai_title(title)