261 lines
7.8 KiB
Markdown
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.

# 旅游内容创作工具 (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. 图片资源结构
图片资源应按以下结构组织(可通过配置自定义目录名):
```
<image_base_dir>/ # 配置中的图片根目录
├── 相机/ # 存放原始照片 (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 <run_id>`),执行计算密集的内容和海报生成
## 常见问题
1. **生成内容质量不高?**
- 尝试提供更详细的景点信息
- 调整提示词模板
- 降低 `temperature` 参数以减少随机性
2. **找不到景点图片?**
- 确保图片目录名与景点信息匹配
- 检查配置文件中的 `image_base_dir` 路径是否正确
3. **API调用失败**
- 验证 API Key 和 URL 是否正确
- 检查网络连接和防火墙设置
## 示例
查看 `examples/` 目录中的示例脚本及其 `README.md` 文件,了解更多使用方法。
## 贡献指南
欢迎提交 Pull Request 或 Issue 来帮助改进本项目。
## 许可证
本项目采用 MIT 许可证。