261 lines
7.8 KiB
Markdown
261 lines
7.8 KiB
Markdown
# 旅游内容创作工具 (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 许可证。
|