TravelContentCreator/test_prompt_manager.py

138 lines
5.4 KiB
Python
Raw Normal View History

2025-04-24 21:44:05 +08:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
import os
import logging
from utils.prompt_manager import PromptManager
# 设置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def test_prompt_manager():
"""测试新的PromptManager配置方式"""
logger.info("=== 开始测试PromptManager ===")
# 加载配置文件
try:
with open("poster_gen_config.json", "r", encoding="utf-8") as f:
config = json.load(f)
except Exception as e:
logger.error(f"加载配置文件失败: {e}")
return
# 创建PromptManager实例
try:
# 使用新的prompts_config配置
prompt_manager = PromptManager(
topic_system_prompt_path=config.get("topic_system_prompt"),
topic_user_prompt_path=config.get("topic_user_prompt"),
content_system_prompt_path=config.get("content_system_prompt"),
prompts_config=config.get("prompts_config"), # 新的配置方式
resource_dir_config=config.get("resource_dir", []),
topic_gen_num=config.get("num", 1),
topic_gen_date=config.get("date", "")
)
logger.info("成功创建PromptManager实例")
except Exception as e:
logger.error(f"创建PromptManager实例失败: {e}")
return
# 测试1: 生成topic提示词
try:
logger.info("测试1: 生成topic提示词")
system_prompt, user_prompt = prompt_manager.get_topic_prompts()
if system_prompt and user_prompt:
logger.info(f"成功生成topic提示词: 系统提示词 ({len(system_prompt)} 字符), 用户提示词 ({len(user_prompt)} 字符)")
else:
logger.error("生成topic提示词失败返回了None")
except Exception as e:
logger.error(f"测试topic提示词生成时出错: {e}")
# 测试2: 测试Style文件加载
try:
logger.info("测试2: 测试Style文件加载")
styles = ["攻略风文案提示词", "轻奢风文案提示词", "极力推荐风文案提示词", "美食风文案提示词"]
for style in styles:
content = prompt_manager._get_style_content(style)
if content:
logger.info(f"成功加载Style文件 '{style}' ({len(content)} 字符)")
else:
logger.warning(f"未能加载Style文件 '{style}'")
except Exception as e:
logger.error(f"测试Style文件加载时出错: {e}")
# 测试3: 测试Demand文件加载
try:
logger.info("测试3: 测试Demand文件加载")
demands = ["学生党文旅需求", "情侣向文旅需求", "职场人文旅需求", "亲子向文旅需求", "周边游文旅需求", "夕阳红文旅需求"]
for demand in demands:
content = prompt_manager._get_demand_content(demand)
if content:
logger.info(f"成功加载Demand文件 '{demand}' ({len(content)} 字符)")
else:
logger.warning(f"未能加载Demand文件 '{demand}'")
except Exception as e:
logger.error(f"测试Demand文件加载时出错: {e}")
# 测试4: 测试Refer文件加载
try:
logger.info("测试4: 测试Refer文件加载")
refer_content = prompt_manager._get_all_refer_contents()
if refer_content:
logger.info(f"成功加载所有Refer文件内容 ({len(refer_content)} 字符)")
else:
logger.warning("未能加载任何Refer文件内容")
except Exception as e:
logger.error(f"测试Refer文件加载时出错: {e}")
# 测试5: 测试内容提示词生成
try:
logger.info("测试5: 测试内容提示词生成")
# 创建一个示例topic
mock_topic = {
"index": 1,
"logic": "这是一个测试的逻辑描述",
"object": "中山温泉宾馆",
"product": "",
"product_logic": "",
"style": "轻奢风文案提示词",
"style_logic": "应该用轻奢的风格来描述",
"target_audience": "职场人文旅需求",
"target_audience_logic": "针对职场人的需求"
}
system_prompt, user_prompt = prompt_manager.get_content_prompts(mock_topic)
if system_prompt and user_prompt:
logger.info(f"成功生成内容提示词: 系统提示词 ({len(system_prompt)} 字符), 用户提示词 ({len(user_prompt)} 字符)")
# 检查提示词中是否包含预期的内容
expected_phrases = [
"Demand Logic",
"Object信息",
"Style Info",
"Target Audience Info",
"Refer Info"
]
for phrase in expected_phrases:
if phrase in user_prompt:
logger.info(f"用户提示词中包含 '{phrase}'")
else:
logger.warning(f"用户提示词中缺少 '{phrase}'")
else:
logger.error("生成内容提示词失败返回了None")
except Exception as e:
logger.error(f"测试内容提示词生成时出错: {e}")
logger.info("=== 测试PromptManager完成 ===")
if __name__ == "__main__":
test_prompt_manager()