#!/usr/bin/env python # -*- coding: utf-8 -*- """ 测试ContentGenerator组件 该脚本演示如何独立使用ContentGenerator组件生成海报文本配置。 """ import os import sys import json import time import logging from pathlib import Path # 将项目根目录添加到PATH project_root = str(Path(__file__).parent.parent.absolute()) if project_root not in sys.path: sys.path.append(project_root) from core import contentGen def load_config(config_path="poster_gen_config.json"): """加载配置文件""" if not os.path.exists(config_path): config_path = os.path.join(project_root, config_path) if not os.path.exists(config_path): raise FileNotFoundError(f"配置文件未找到: {config_path}") with open(config_path, 'r', encoding='utf-8') as f: config = json.load(f) return config def get_test_content(): """返回一个用于测试的文章内容""" return { "title": "🌿清明遛娃天花板!悬空古寺+非遗探秘", "content": """清明假期带娃哪里玩?泰宁甘露寺藏着明代建筑奇迹!一柱擎天的悬空阁楼+状元祈福传说,让孩子边玩边涨知识✨ 🎒行程亮点: ✅ 安全科普第一站:讲解"一柱插地"千年不倒的秘密,用乐高积木模型让孩子理解力学原理 ✅ 文化沉浸体验:穿汉服听"叶状元还愿建寺"故事,触摸3.38米粗的"状元柱"许愿 ✅ 自然探索路线:连接金湖栈道徒步,观察丹霞地貌与古建筑的巧妙融合 📌实用攻略: 📍位置:福建省三明市泰宁县金湖西路(导航搜"甘露岩寺") 🕒最佳时段:上午10点前抵达避开人流,下午可衔接参观明清园(80元/人) ⚠️注意事项:悬空栈道设置儿童安全绳租赁点,建议穿防滑鞋""" } def main(): """主函数""" logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) try: # 加载配置 config = load_config() print("配置加载成功") # 准备参数 description_file = input("请输入描述文件路径 (直接回车使用默认示例): ").strip() if not description_file: # 尝试从配置中找一个描述文件作为示例 for dir_info in config.get("resource_dir", []): if dir_info.get("type") == "Description" and dir_info.get("file_path"): description_file = dir_info["file_path"][0] break if not description_file: print("未找到描述文件,将创建一个空文件用于测试") description_file = "temp_description.txt" with open(description_file, "w", encoding="utf-8") as f: f.write("测试描述文件") # 确保文件存在 if not os.path.exists(description_file): print(f"警告: 描述文件 {description_file} 不存在,将创建空文件") with open(description_file, "w", encoding="utf-8") as f: f.write("测试描述文件") info_directory = [description_file] poster_num = int(input("请输入要生成的海报数量 (默认2): ") or "2") # 准备内容数据 content_data = get_test_content() print(f"使用测试内容: {content_data['title']}") # 创建ContentGenerator实例 content_gen = contentGen.ContentGenerator( model_name=config.get("model", "qwenQWQ"), api_base_url=config.get("api_url", "http://localhost:8000/v1"), api_key=config.get("api_key", "EMPTY") ) # 设置模型参数 content_gen.set_model_para( temperature=config.get("content_temperature", 0.7), top_p=config.get("content_top_p", 0.8), presence_penalty=config.get("content_presence_penalty", 1.2) ) print(f"开始生成海报文本配置,数量: {poster_num}") start_time = time.time() # 运行生成过程 poster_configs = content_gen.run(info_directory, poster_num, content_data) elapsed = time.time() - start_time print(f"生成完成,耗时: {elapsed:.2f}秒") if poster_configs: print(f"\n成功生成 {len(poster_configs) if isinstance(poster_configs, list) else 1} 个海报配置:") print(json.dumps(poster_configs, ensure_ascii=False, indent=2)) # 保存到文件 output_file = f"poster_configs_{int(time.time())}.json" with open(output_file, "w", encoding="utf-8") as f: json.dump(poster_configs, f, ensure_ascii=False, indent=2) print(f"配置已保存到: {output_file}") else: print("生成海报配置失败") except Exception as e: print(f"程序出错: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()