Explorar el Código

开发:在冷启动阶段增加品类

luojunhui hace 1 día
padre
commit
03a5741e83
Se han modificado 3 ficheros con 194 adiciones y 1 borrados
  1. 11 1
      applications/utils/common.py
  2. 56 0
      tasks/ai_tasks/category_generation.py
  3. 127 0
      tasks/ai_tasks/prompts.py

+ 11 - 1
applications/utils/common.py

@@ -58,4 +58,14 @@ def request_retry(retry_times, min_retry_delay, max_retry_delay):
         retry=retry_if_exception_type((RequestException, TimeoutError)),
         retry=retry_if_exception_type((RequestException, TimeoutError)),
         reraise=True  # 重试耗尽后重新抛出异常
         reraise=True  # 重试耗尽后重新抛出异常
     )
     )
-    return common_retry
+    return common_retry
+
+def yield_batch(data, batch_size):
+    """
+    生成批次数据
+    :param data:
+    :param batch_size:
+    :return:
+    """
+    for i in range(0, len(data), batch_size):
+        yield data[i:i + batch_size]

+ 56 - 0
tasks/ai_tasks/category_generation.py

@@ -0,0 +1,56 @@
+"""
+generate category for given title
+"""
+from pymysql.cursors import DictCursor
+
+from applications.api import deep_seek_api_by_volcanoengine
+from applications.db import DatabaseConnector
+from applications.utils import yield_batch
+from config import long_articles_config
+from tasks.ai_tasks.prompts import category_generation_from_title
+
+class CategoryGenerationTask:
+    """
+    generate category for given title
+    """
+    def __init__(self):
+        self.db_client = DatabaseConnector(long_articles_config)
+        self.db_client.connect()
+
+    def deal_in_each_thread(self, task_batch):
+        thread_db_client = DatabaseConnector(long_articles_config)
+        thread_db_client.connect()
+
+        task_id_batch = [i['id'] for i in task_batch]
+        title_batch = [i['title'] for i in task_batch]
+        prompt = category_generation_from_title(title_batch)
+
+    def get_task_list(self):
+        """
+        get task_list from a database
+        """
+        fetch_query = f"""
+            select id, article_title from publish_single_video_source
+            where category_status = 0 
+            order by score desc limit 100;
+        """
+        fetch_result = self.db_client.fetch(fetch_query, cursor_type=DictCursor)
+        return fetch_result
+
+    def deal(self):
+        task_list = self.get_task_list()
+        task_batch_list = yield_batch(data=task_list, batch_size=20)
+        for task_batch in task_batch_list:
+            self.deal_in_each_thread(task_batch)
+
+
+if __name__ == '__main__':
+    category_generation_task = CategoryGenerationTask()
+    category_generation_task.deal()
+
+
+
+
+
+
+

+ 127 - 0
tasks/ai_tasks/prompts.py

@@ -0,0 +1,127 @@
+"""
+ai tasks prompt
+"""
+
+def category_generation_from_title(title_list):
+    """
+    generate prompt category for given title
+    """
+    title_lines = "\n".join(title_list)
+    prompt = f"""
+        请帮我完成以下任务:输入为文章的标题,根据标题判断其内容所属的类目,输出为文章标题及其对应的类目。
+        类目需从以下15个品类内选择:
+        1. 知识科普
+        定义:以通俗易懂的方式普及科学、技术、健康、安全、生活常识、财产保护、医保政策、为人处事方式等内容,旨在提高公众的知识水平和认知能力。内容通常具有教育性和实用性,涵盖自然、社会、文化等多个领域。
+        标题示例:
+        我国存款最安全的五大银行,永远都不会倒闭,你知道是哪五家吗?
+        借条上不要写“这3个字”,不然变成一张废纸,否则用法律也没用
+        不能二次加热的3种食物!再次提醒:这3种食物吃不完最好扔掉
+        
+        2. 军事历史
+        定义:聚焦于历史上的军事事件、战争故事、军事策略、英雄人物等内容,旨在还原战争场景、探讨军事决策、揭示历史真相,并展现战争中的人物命运与历史影响。内容通常以叙事、分析或回忆的形式呈现,兼具历史深度和故事性。
+        标题示例:
+        对越作战永远失踪的332人,陵园没有墓碑,没有名字,只有烈士证
+        淮海大战丢失阵地,师长带头冲锋!最后出一口恶气:活捉敌最高指挥官
+        抗战时,一村民被敌拉去带路,半道回头忽发现:后面跟个游击队员
+        
+        3. 家长里短
+        定义:围绕家庭成员之间的关系、矛盾、情感、道德、等展开的故事或讨论,内容常涉及婚姻、亲子、婆媳、兄弟姐妹等关系,或是人情往来、金钱纠纷、情感变化等内容,反映家庭生活中的温情、冲突与人性。
+        标题示例:
+        父母越老越能暴露家庭最真实的一面:当父母70岁,子女不该抱有这三种期待
+        老母亲分家产,给亲闺女30万,给养女一筐青菜,养女意外摔倒,看到筐子里的东西,瞬间愣住了
+        我花150一天雇了阿姨,两天后上班回来给她300,阿姨说我账算错了
+        
+        4. 社会法治
+        定义:聚焦社会事件、法律纠纷、法院判决、社会现象等内容,通常涉及道德、法律、公平正义等议题,旨在揭示社会问题、探讨法律规则或反映人性与社会现实。
+        标题示例:
+        山东,女子在小区捡到16万天价项链,业主悬赏3万找回,女子归还后,失主拒绝支付报酬,还说:要有格局,女子认为被骗,将失主告上法庭
+        陕西,女子22万买26层房,2年后,楼盘24层就已经封顶!开发商:你闹事造成100万损失,道歉才给赔偿!
+        上海:男子超市连续购买46枚过期咸鸭蛋,2天分46次交易,向厂家索赔金14万,法院判了!
+        
+        5. 奇闻趣事
+        定义:以猎奇、娱乐为主,涵盖罕见、奇特、有趣的事件、发现或故事,内容通常具有趣味性和话题性,能够引发读者的好奇心和讨论。
+        标题示例:
+        狗屎运?江西男子钓鱼时发现青鱼尸骸,扒开后捡到鸡蛋大小的青鱼石,网友:起码值几千!
+        内蒙古小伙河边捡到金牌,拒绝上交将其熔成金手镯,专家气愤不已
+        男子买了一辆废弃坦克,拆油箱时,他发现了一根又一根的金条……
+        
+        6. 名人八卦
+        定义:围绕名人的生活、言论、事件、八卦等内容展开,通常涉及娱乐圈、政界、历史人物等,旨在满足公众对名人隐私和动态的好奇心。
+        标题示例:
+        难怪王扶林说陈晓旭不够漂亮,看看他选的原黛玉候选人,那才叫美
+        心狠手辣的容嬷嬷年轻时是校花?看了照片后,网友直接闭嘴了!
+        李玉成终于说出实话,公开吐槽马玉琴年纪太大,结婚28年疑似后悔
+        
+        7. 健康养生
+        定义:关注健康、养生、疾病预防、生活习惯等方面的知识和建议,内容通常具有实用性和指导性,旨在帮助读者改善生活质量、提升健康水平。
+        标题示例:
+        72岁老人每天一个蒸苹果,半年后体检,看到指标变化让他乐开了花
+        40岁女子每天吃水煮蛋,一年后去体检,检查报告令医生都羡慕不已
+        2024年血糖新标准已公布,不再是3.9~6.1,你的血糖还不算高吗?
+        
+        8. 情感故事
+        定义:以人与人之间的情感交流、感人故事、情感经历为主题,内容通常充满温情、感动或反思,旨在引发读者的情感共鸣和思考。
+        标题示例:
+        男孩饭店吃饭,发现陌生女子和去世母亲很像,走过去说:我妈妈去世了,能抱一下我吗?
+        河南一女子直播时,被失散 32 年的父亲认出:闺女等着爸爸接你回家
+        1987年,江苏男子借好友一千元,25年后朋友成富豪还他1000万报恩
+        流浪狗跟着骑行夫妻跑了一百多公里,一直守护在女主身边,赶都赶不走,当男主得知原因后竟抱着狗狗大哭起来
+        
+        9. 国家大事
+        定义:涉及国家实力、科技发展、资源发现、国际合作等内容,通常以宏观视角展现国家的综合实力、科技成就或国际影响力,体现国家的崛起与发展。
+        标题示例:
+        我国在南极发现“海上粮仓”,储量高达10亿吨,世界各国眼红不已
+        我国贵州发现7000万吨宝藏,价值高达上万亿,多国求合作被拒绝
+        距我国3000公里,塞班岛明明归美国管辖,为何岛上大多是中国人?
+        
+        10. 现代人物
+        定义:聚焦活跃在21世纪后具有传奇色彩或巨大贡献的人物、事迹、成就等,内容通常充满戏剧性和启发性,旨在展现人物的非凡经历或历史贡献。
+        标题示例:
+        她曾狂贪国家上百亿,被发现时已经移居美国,最终还风光一时得善终
+        山东女子因坐月子无聊,破译美国2套绝密系统的密码,国家:奖励711万!
+        牺牲太大了!航天女英雄刘洋:结婚8年未生子,回地面后“消失”的她怎样了?
+        
+        11. 怀旧时光
+        定义:以回忆和怀旧为主题,涉及过去的历史、文化、生活、照片等内容,旨在唤起读者对过去时光的情感共鸣和怀念。
+        标题示例:
+        1975年“下馆子”的老照片,2元能吃些什么,勾起那段最难忘的时光
+        82年,北京老人捡回两张“破椅子”,遭家人数落,29年后拍出2300万
+        这张老照片第一次看到,邓颖超和李讷的罕见合影!
+        
+        12. 政治新闻
+        定义:聚焦政治事件、领导人动态、国际关系等内容,通常以新闻或分析的形式呈现,旨在揭示政治局势、政策变化或国际关系的动态。
+        标题示例:
+        中方外长行程有变,提前结束访欧匆匆回国,带回来一个好消息
+        宋庆龄在北京逝世后,远在美国的宋美龄只说了7个字,字字揪心!
+        庐山会议后,叶帅去劝彭德怀认个错,哭着说了一句心里话
+        
+        13. 历史人物
+        定义:聚焦于21世纪前具有重要影响的人物,包括他们的生平、事迹、成就、性格、趣事及其对历史进程的贡献。内容通常以传记、回忆录或历史分析的形式呈现,旨在还原人物的真实面貌并探讨其历史意义。
+        标题示例:
+        林彪去世后,蒋介石收到林彪与戴笠的一份密谈文件,看后拍桌大骂
+        张学良软禁时的一张实拍照片,头发秃顶,两眼无光,像个中年老头
+        1912年,孙中山和两个女儿罕见留影,面对镜头父女三人看起来很幸福
+        
+        14. 社会现象
+        定义:关注社会中出现的普遍现象、趋势或问题,通常涉及文化、经济、教育、民生等领域。内容以观察、分析或评论为主,旨在揭示现象背后的原因、影响及社会意义,引发公众的思考和讨论。
+        标题示例:
+        22年河南男子跳河救人,体力耗尽留遗言,被救女子猛然抓住他:一起走
+        浙江一老人刑满释放,靠蹬三轮为生,6年后,政府领导登门拜访:我们帮您分配工作
+        儿子收到清华通知书,父亲花5万请全村吃席,镇长看一眼竟说:这是假的
+        
+        15.财经科技
+        定义:聚焦于经济、金融、投资及行业发展的分析与预测,涵盖未来经济趋势、资产价值变化、行业变革及个人理财策略等内容。可以提供前瞻性的财经视角和实用的理财建议,帮助其把握经济动态、优化财务规划并应对行业变化。
+        标题示例:
+        未来10年,现金和房子都将贬值,只有2样东西最值钱
+        外卖时代将被终结?一个全新行业正悄悄取代外卖,你准备好了吗?
+        准备存款的一定要知道,今明两年,定期存款要记住“4不存”
+        
+        最后输出结果请用JSON格式输出,key为标题,value为品类,仅输出JSON,不要markdown格式,不要任何其他内容
+        如果标题中包含半角双引号,则进行转义
+        以下是需要分析的文章标题列表,每一行是一个标题:{title_lines}
+    """
+    return prompt
+
+
+
+