# 旅游内容创作工具 (Travel Content Creator) 这是一个基于AI的旅游内容自动生成工具,可以根据景点信息自动生成高质量的旅游推文和宣传海报。 ## 功能特点 - **自动选题生成**:根据提供的景点信息和配置的提示词模板,自动生成吸引人的旅游选题 - **内容创作**:基于选题和配置的提示词模板,自动生成文字内容(标题、正文) - **海报制作**:结合景点图片和生成的文字内容,自动创建精美的宣传海报 - **批量处理**:支持一次性生成多个选题和多个变体内容 - **模块化设计**:核心功能(配置加载、提示词管理、AI交互、选题、内容生成、海报制作)分离,方便维护和扩展 - **配置驱动**:通过配置文件集中管理所有运行参数 ## 新功能: 流式输出处理 TravelContentCreator 现已支持三种流式输出处理方法,提供了更灵活的 AI 文本生成体验: - **同步流式响应**: 使用流式 API 但返回完整响应 - **回调式流式响应**: 通过回调函数处理每个文本块 - **异步流式响应**: 使用异步生成器返回文本流 这些功能大大提升了长文本生成的用户体验和系统响应性。 详细文档请参阅: - [流式处理文档](docs/streaming.md) - [流式处理演示](examples/test_stream.py) ## 快速开始 ### 1. 环境准备 ```bash # 克隆项目 git clone https://github.com/yourusername/TravelContentCreator.git cd TravelContentCreator # 安装依赖 (假设有requirements.txt文件) # pip install -r requirements.txt # 或者手动安装 pip install numpy pandas opencv-python pillow requests tqdm ``` ### 2. 配置设置 ```bash # 复制示例配置(选择一个或从基础开始) cp configs/basic_config.json poster_gen_config.json # 编辑配置文件 vim poster_gen_config.json # 必须修改:api_url, api_key, image_base_dir ``` ### 3. 运行系统 ```bash # 完整流程(从选题到海报生成) python main.py # 或分阶段执行 (使用默认配置) python examples/run_step1_topics.py # 记下输出的Run ID python examples/run_step2_content_posters.py YOUR_RUN_ID # 使用特定配置运行 # python main.py --config configs/social_media_config.json ``` ### 4. 查看结果 ```bash # 结果保存在配置的output_dir目录下(默认为./result/) ls -la ./result/最新的Run_ID/ ``` ## 核心组件说明 项目采用模块化设计,主要包含以下组件: - **主流程协调器** (`main.py`): 负责加载配置并协调执行整个生成流程 - **AI交互模块** (`core/ai_agent.py`): 封装与大语言模型的通信 - **选题生成器** (`utils/tweet_generator.py`): 生成旅游选题 - **内容生成器** (`core/contentGen.py`): 处理内容创作 - **海报制作器** (`core/posterGen.py`): 合成文字和图片,生成最终海报 ## 资源准备指南 ### 1. 景点信息文件 在 `resource/Object/` 目录创建景点信息文件,示例格式: ``` 景点名称:泰宁古城 位置:福建省三明市泰宁县 简介:泰宁古城始建于宋代... 特色:古城墙、古街巷... 历史:泰宁古城有着悠久的历史... 适合游客:喜欢历史文化的游客、摄影爱好者 建议游览时间:2-3小时 最佳季节:春季和秋季 ``` > **提示**:景点信息越详细,生成的内容质量越高 ### 2. 图片资源结构 图片资源应按以下结构组织(可通过配置自定义目录名): ``` / # 配置中的图片根目录 ├── 相机/ # 存放原始照片 (camera_image_subdir) │ ├── 泰宁古城/ │ │ ├── 图片1.jpg │ │ ├── 图片2.jpg │ │ └── description.txt (可选的图片描述) │ └── 其他景点/ └── modify/ # 存放处理后的图片 (modify_image_subdir) ├── 泰宁古城/ │ ├── 图片1.jpg │ └── ... └── 其他景点/ ``` > **重要**:确保每个景点的图片目录名与景点信息文件中的名称匹配。海报生成默认从 `modify/` 目录选取图片。 ## 配置文件详解 `poster_gen_config.json` 是系统的核心配置文件,包含以下主要配置项: ### 基础配置 ```json { "date": "5月15日", // 日期标记,用于提示词 "num": 5, // 生成选题数量 "variants": 3 // 每个选题生成的变体数量 } ``` ### AI模型配置 ```json { "model": "qwen", // 使用的模型名称 "api_url": "http://localhost:8000/v1/", // API端点 "api_key": "YOUR_API_KEY", // API密钥 "topic_temperature": 0.2, // 选题生成的随机性 "content_temperature": 0.3 // 内容生成的随机性 } ``` ### 资源路径配置 ```json { "resource_dir": [ // 景点信息资源 { "type": "Object", "num": 3, "file_path": [ "./resource/Object/景点信息-泰宁古城.txt", "./resource/Object/景点信息-尚书第.txt" ] } ], "image_base_dir": "/path/to/your/image/directory", // 图片根目录 "camera_image_subdir": "相机", // 原始照片子目录 "modify_image_subdir": "modify" // 处理后图片子目录 } ``` ### 提示词配置 ```json { "topic_system_prompt": "./SelectPrompt/systemPrompt.txt", "topic_user_prompt": "./SelectPrompt/userPrompt.txt", "content_system_prompt": "./genPrompts/systemPrompt.txt", "prompts_dir": "./genPrompts" } ``` ### 输出配置 ```json { "output_dir": "./result", // 输出目录 "poster_target_size": [900, 1200], // 海报尺寸 "text_possibility": 0.3 // 文字元素出现概率 } ``` ## 配置示例 本项目提供了多种预设配置文件,适用于不同场景。这些配置文件位于 `configs/` 目录下: - **基础配置** (`configs/basic_config.json`): 适合初次使用和测试 - **OpenAI配置** (`configs/openai_config.json`): 使用OpenAI API的配置 - **高质量配置** (`configs/high_quality_config.json`): 更高质量的生成设置 - **批量处理配置** (`configs/batch_processing_config.json`): 处理大量景点信息 - **社交媒体配置** (`configs/social_media_config.json`): 针对多个社交平台优化 - **本地LLM配置** (`configs/local_llm_config.json`): 使用本地部署的LLM模型 使用示例配置: ```bash # 复制适合您场景的配置 cp configs/social_media_config.json poster_gen_config.json # 按需修改配置 vim poster_gen_config.json ``` 详细说明请参阅 `configs/README.md` 文件。 ## 高级使用指南 ### 自定义提示词 编辑 `SelectPrompt/` 和 `genPrompts/` 目录下的提示词文件,可自定义生成内容的风格和侧重点。 ### 调整生成参数 - 增加 `variants` 值可获得更多内容变体 - 调整 `temperature` 参数可以改变生成内容的创造性 - 修改 `poster_target_size` 可以设置不同的海报尺寸 ### 分布式执行 利用分阶段执行功能,可在不同机器上完成选题生成和内容生成: 1. 机器A执行选题生成 (`run_step1_topics.py`),将结果保存到共享存储 2. 机器B从共享存储读取选题 (`run_step2_content_posters.py `),执行计算密集的内容和海报生成 ## 常见问题 1. **生成内容质量不高?** - 尝试提供更详细的景点信息 - 调整提示词模板 - 降低 `temperature` 参数以减少随机性 2. **找不到景点图片?** - 确保图片目录名与景点信息匹配 - 检查配置文件中的 `image_base_dir` 路径是否正确 3. **API调用失败?** - 验证 API Key 和 URL 是否正确 - 检查网络连接和防火墙设置 ## 示例 查看 `examples/` 目录中的示例脚本及其 `README.md` 文件,了解更多使用方法。 ## 贡献指南 欢迎提交 Pull Request 或 Issue 来帮助改进本项目。 ## 许可证 本项目采用 MIT 许可证。