TravelContentCreator/test_prompt_manager.py

138 lines
5.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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()