138 lines
5.4 KiB
Python
138 lines
5.4 KiB
Python
#!/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() |