diff --git a/Content_Detector.py b/Content_Detector.py index 8aa331f..2071d30 100644 --- a/Content_Detector.py +++ b/Content_Detector.py @@ -90,10 +90,12 @@ def detect_content(product_info, content_gen): "title": "修改后的标题", "content": "修改后的内容" }} -5. 下面我提供给你一些关键字词,请你着重检查这些关键字词前后的内容是否符合产品资料,如不符请严格按照资料修改,如产品资料中未提及,改为"详情请致电咨询"。 +5. 下面我提供给你一些关键字词,请你着重检查这些关键字词前后的内容是否符合产品资料,如不符请严格按照资料修改,如产品资料中未提及,修改为符合上下文情境、资料中有提及的内容"。 关键字词:价、元、r、人民币、rmb、优惠、活动、福利、赠、免费、折、DIY、跟拍、送、摄影、兑、服务、¥ -6. 请将数字后面的元字修改为r,例如:399元修改为399r -7. 案例如下,请参考案例评判真假信息的尺度,仔细分析不符点和修改思路,严格审查每一篇文案: +6. 标题字数必须少于18个字(包括标点符号和emoji),如果标题超过18个字,请在符合文案风格和背景资料的前提下修改或缩写标题 +7. 请删去标题中的数字后面的“元”和“r”,并将正文中数字后面的“元”字修改为“r”。例如:标题中的399元修改为399,正文中的399元修改为399r +8. 请保留文案中原本的营销引流语句,不要修改或删除,例如“先关zhu+留下99看到会回复” +9. 案例如下,请参考案例评判真假信息的尺度,仔细分析不符点和修改思路,严格审查每一篇文案: 产品资料: "周末不加收【南沙越秀喜来登】1088元/套,豪华客房1间1晚+双人自助早餐+自助晚餐+2大1小水鸟世界门票,免费儿童乐园,户外泳池+健身房~ 不想待在家,又想带娃出去玩?更不想开长途车、人挤人为你推荐路程短、不塞车、景点多 @@ -164,6 +166,7 @@ def detect_content(product_info, content_gen): 3. 地铁四号线金洲站下车,打车15分钟直达酒店 这个五一,南沙喜来登让你躺着遛娃!不用长途跋涉,家门口就能玩出仪式感~ + 先关zhu+留下99看到会回复 #五一遛娃 #广州周边游 #亲子酒店推荐 " @@ -181,17 +184,17 @@ def detect_content(product_info, content_gen): 综合以上分析结果,修改后的文案为: {{ - "title": "五一遛娃必囤!南沙喜来登1088元住景观房+双早+门票", - "content": "五一不想挤人潮?南沙这家酒店直接承包遛娃+度假双重快乐‼️\n地铁直达!2大1小1088元住景观房,含双早+自助晚餐+水鸟世界门票,儿童乐园/泳池/健身房全开放!\n🌟【遛娃刚需全配齐】\n✅ 儿童乐园:酒店设有免费儿童乐园,提供丰富的游乐设施,让孩子们尽情玩耍\n✅ 户外泳池:酒店配有户外无边泳池,供大人小孩一同享受清凉时光 \n✅ 健身房:酒店提供免费健身中心,适合家庭成员共同锻炼。\n\n📍【1小时玩转南沙】\n① 南沙天后宫(车程20分钟):穿汉服拍大片,听妈祖传说涨知识\n② 南沙湿地公园(40分钟):5月芦苇摇曳,带娃认鸟类+乘船探秘\n③ 十九涌海鲜街(45分钟):现捞现煮生猛海鲜,人均50元吃到撑 \n\n🍽️【家长友好细节】 \n• 自助餐厅:供应鲜美海鲜、精美甜品等任君选择,大人小孩都爱吃 \n• 房内配置:55英寸超大纯平电视+独立的浴缸+超大的落地玻璃窗,尽览蕉门河风景,尽享亲子度假时光 \n• 安全保障:酒店设有完善的监控系统和安保措施,全力保障您与家人的安全 \n\n🎁【套餐专属福利】\n1、豪华客房一间一晚(周一至四只开放双床房) \n2、2大1小自助早晚餐 \n3、赠送2大1小水鸟世界门票(酒店前台领取),无需额外购买 \n\n📌Tips: \n1. 周一至周四仅限双床房型,周五起可选大床房 \n2. 酒店前台领取水鸟世界纸质门票 \n3. 地铁四号线金洲站下车,打车15分钟直达酒店 \n\n这个五一,南沙喜来登让你躺着遛娃!不用长途跋涉,家门口就能玩出仪式感~\n#五一遛娃 #广州周边游 #亲子酒店推荐" + "title": "五一遛娃必囤!喜来登1088景观房", + "content": "五一不想挤人潮?南沙这家酒店直接承包遛娃+度假双重快乐‼️\n地铁直达!2大1小1088r住景观房,含双早+自助晚餐+水鸟世界门票,儿童乐园/泳池/健身房全开放!\n🌟【遛娃刚需全配齐】\n✅ 儿童乐园:酒店设有免费儿童乐园,提供丰富的游乐设施,让孩子们尽情玩耍\n✅ 户外泳池:酒店配有户外无边泳池,供大人小孩一同享受清凉时光 \n✅ 健身房:酒店提供免费健身中心,适合家庭成员共同锻炼。\n\n📍【1小时玩转南沙】\n① 南沙天后宫(车程20分钟):穿汉服拍大片,听妈祖传说涨知识\n② 南沙湿地公园(40分钟):5月芦苇摇曳,带娃认鸟类+乘船探秘\n③ 十九涌海鲜街(45分钟):现捞现煮生猛海鲜,人均50r吃到撑 \n\n🍽️【家长友好细节】 \n• 自助餐厅:供应鲜美海鲜、精美甜品等任君选择,大人小孩都爱吃 \n• 房内配置:55英寸超大纯平电视+独立的浴缸+超大的落地玻璃窗,尽览蕉门河风景,尽享亲子度假时光 \n• 安全保障:酒店设有完善的监控系统和安保措施,全力保障您与家人的安全 \n\n🎁【套餐专属福利】\n1、豪华客房一间一晚(周一至四只开放双床房) \n2、2大1小自助早晚餐 \n3、赠送2大1小水鸟世界门票(酒店前台领取),无需额外购买 \n\n📌Tips: \n1. 周一至周四仅限双床房型,周五起可选大床房 \n2. 酒店前台领取水鸟世界纸质门票 \n3. 地铁四号线金洲站下车,打车15分钟直达酒店 \n\n这个五一,南沙喜来登让你躺着遛娃!不用长途跋涉,家门口就能玩出仪式感~\n先关zhu+留下99看到会回复\n#五一遛娃 #广州周边游 #亲子酒店推荐" }} {prompt}"""} ], - temperature=0.3, + temperature=0.2, max_tokens=4096, - top_p=0.9, - frequency_penalty=0, - presence_penalty=0 + top_p=0.4, + frequency_penalty=0.1, + presence_penalty=0.1 ) # 返回响应文本 @@ -251,8 +254,38 @@ def extract_modified_content(result_text): } except json.JSONDecodeError: logger.warning("后内容不是有效JSON,尝试其他提取方法...") + + # 如果后不是JSON,尝试从```json和```之间提取内容 + json_code_match = re.search(r'```json\s*([\s\S]*?)\s*```', after_think, re.DOTALL) + if json_code_match: + try: + json_str = json_code_match.group(1).strip() + content_json = json.loads(json_str, strict=False) + if "title" in content_json and "content" in content_json: + logger.info("成功从后的```json代码块中解析JSON内容") + return { + "title": content_json["title"].strip(), + "content": content_json["content"].strip() + } + except json.JSONDecodeError: + logger.warning("```json代码块解析失败,继续尝试其他方法...") - # 如果从后提取失败,继续尝试查找JSON对象 + # 尝试从整个文本中查找```json代码块 + json_code_match = re.search(r'```json\s*([\s\S]*?)\s*```', result_text, re.DOTALL) + if json_code_match: + try: + json_str = json_code_match.group(1).strip() + content_json = json.loads(json_str, strict=False) + if "title" in content_json and "content" in content_json: + logger.info("成功从```json代码块中解析JSON内容") + return { + "title": content_json["title"].strip(), + "content": content_json["content"].strip() + } + except json.JSONDecodeError: + logger.warning("```json代码块解析失败,继续尝试其他方法...") + + # 如果上述方法都失败,继续尝试查找JSON对象 json_start = result_text.find('{') json_end = result_text.rfind('}') + 1 @@ -375,9 +408,12 @@ def process_json_files(base_dir, product_info_dir): detection_time = time.time() - detection_start logger.info(f"✅ 检测完成,耗时 {detection_time:.2f} 秒") - # 保存API调用的响应内容到日志目录 - 修改点:所有响应都保存,而不仅仅是提取失败的情况 + # 提取文件夹名称用于日志文件命名 + folder_name = os.path.basename(os.path.dirname(json_file)) timestamp = get_timestamp() - response_log_file = os.path.join("/root/autodl-tmp/Content_detector/log/log_article", f"{timestamp}_response_{i}_{os.path.basename(json_file)}.txt") + + # 保存API调用的响应内容到日志目录,使用文件夹名称 + response_log_file = os.path.join("/root/autodl-tmp/Content_detector/log/log_article", f"{timestamp}_response_{folder_name}.txt") save_full_response_to_log(response_log_file, result) logger.info(f"💾 API响应已保存到: {response_log_file}")