280 lines
9.1 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 -*-
# 旅游内容创作工具示例
本目录包含使用旅游内容创作工具各个组件的示例代码通过这些示例您可以了解如何调用系统的各个模块或测试整个工作流程
## 测试工作流程
`test_workflow.py` 是一个完整的测试脚本它展示了如何测试整个内容生成流程包括
1. 完整流程测试执行从选题生成到海报制作的全过程
2. 分步骤测试将流程拆分为独立的步骤模拟在不同时间或机器上执行的场景
### 使用方法
确保已经正确配置了项目根目录的 `poster_gen_config.json` 文件
```bash
# 测试完整工作流程(从选题生成到海报制作的全过程)
python examples/test_workflow.py --mode full
# 测试分步骤工作流程(模拟分阶段执行的场景)
python examples/test_workflow.py --mode steps
# 两种测试模式都执行(默认)
python examples/test_workflow.py
```
## 分阶段执行示例
这两个脚本演示了如何将工作流程拆分为两个独立的阶段
1. `run_step1_topics.py`: 仅执行选题生成
2. `run_step2_content_posters.py`: 加载第一阶段生成的选题结果然后执行内容和海报生成
### 使用方法
1. **执行阶段 1 (生成选题)**:
```bash
python examples/run_step1_topics.py
```
运行结束后脚本会打印出生成的 `Run ID` 和选题文件路径请记下这个 `Run ID`
2. **执行阶段 2 (生成内容和海报)**:
`<your_run_id>` 替换为你在阶段 1 记下的实际 Run ID
```bash
python examples/run_step2_content_posters.py <your_run_id>
```
例如:
```bash
python examples/run_step2_content_posters.py 20240515_110000
```
## 单组件测试脚本
以下脚本用于独立测试系统的各个组件有助于开发者了解每个组件的功能和使用方法
### 1. 图像处理测试 - `test_image_processing.py`
这个脚本专注于测试图像处理功能**无需连接AI服务**可独立测试拼贴图和海报生成功能
```bash
# 基本用法(同时测试拼贴和海报功能)
python examples/test_image_processing.py
# 仅测试拼贴图功能
python examples/test_image_processing.py --collage_only
# 仅测试海报生成功能
python examples/test_image_processing.py --poster_only
# 指定输出目录和配置文件
python examples/test_image_processing.py --output my_test_output --config my_config.json
```
特点
- 无需连接AI接口可在离线环境下测试
- 自动创建测试用的彩色图像作为素材
- 测试多种拼贴风格网格非对称胶片条重叠马赛克
- 使用拼贴图作为海报底图展示完整的图像处理流程
- 详细的日志输出便于分析问题
### 2. 图片拼贴测试 - `test_simple_collage.py`
这个脚本演示如何使用图片拼贴功能可以测试不同风格的拼贴效果
```bash
# 基本用法(自动创建测试图片)
python examples/test_simple_collage.py
# 使用自定义图片目录
python examples/test_simple_collage.py --input_dir /path/to/images
# 指定输出目录和生成数量
python examples/test_simple_collage.py --output_dir my_collages --count 5
# 设置自定义尺寸
python examples/test_simple_collage.py --width 1080 --height 1440
```
特点
- 支持测试所有拼贴风格网格非对称胶片条重叠马赛克
- 如果未提供输入图片会自动生成测试用的彩色图片
- 可以指定随机种子用于获得可重现的结果
### 3. 海报生成测试 - `test_poster_generator.py`
这个脚本演示如何使用海报生成功能可以测试不同文案配置的海报效果
```bash
# 基本用法(使用随机文本和自动创建底图)
python examples/test_poster_generator.py
# 使用自定义底图和输出目录
python examples/test_poster_generator.py --image /path/to/image.jpg --output_dir my_posters
# 使用自定义素材目录和配置文件
python examples/test_poster_generator.py --base_dir /path/to/assets --config poster_config.json
```
特点
- 支持直接使用现有海报配置文件由ContentGenerator生成的JSON
- 自动加载系统配置中的素材路径
- 如果未提供底图会自动创建渐变测试底图
- 自带多种文案示例可以测试不同文字效果
### 4. 内容生成测试 - `test_content_generator.py`
这个脚本演示如何使用内容生成功能生成海报文本配置数据
```bash
# 基本用法(交互式输入)
python examples/test_content_generator.py
# 按提示进行操作,可以指定描述文件和生成数量
```
特点
- 使用交互式命令行提示用户输入参数
- 自动尝试从系统配置中查找描述文件
- 如果未找到描述文件会创建临时测试文件
- 生成完成后会将配置保存为JSON文件
### 5. 流式输出测试 - `test_stream.py`
这个脚本演示如何使用AI_Agent的流式输出功能逐块接收生成内容
```bash
# 运行流式输出测试
python examples/test_stream.py
```
特点
- 展示如何配置和使用AI_Agent的流式输出接口
- 演示实时输出文本块的处理方式
- 说明如何收集完整响应和估计token数
## 流式处理演示 (test_stream.py)
`test_stream.py` 是一个演示脚本展示了AI_Agent类中新增的三种不同流式输出处理方法
1. **同步流式响应** (generate_text_stream) - 使用流式API但返回完整响应
2. **回调式流式响应** (generate_text_stream_with_callback) - 通过回调函数处理每个文本块
3. **异步流式响应** (async_generate_text_stream) - 使用异步生成器返回文本流
### 运行演示
```bash
cd TravelContentCreator
python examples/test_stream.py
```
演示脚本会依次执行这三种方法并展示它们的输出和性能差异
### 更多信息
关于流式处理功能的详细文档请参阅
```
docs/streaming.md
```
## 其他示例
`generate_poster.py` 是一个简化的海报生成示例主要用于快速测试特定图片的海报效果
```bash
# 使用默认参数生成海报
python examples/generate_poster.py
# 指定输入图片和输出路径
python examples/generate_poster.py --input_image /path/to/image.jpg --output_path /path/to/output.jpg
```
## 注意事项
- 这些示例依赖于主项目中的配置和资源确保已正确设置 `poster_gen_config.json`
- 测试脚本会自动调节某些参数如生成数量以加快测试速度
- 实际使用时您可能需要调整参数以获得更好的效果
- 部分测试脚本需要连接AI模型API确保您的API配置正确
### 完整工作流测试脚本
`test_workflow.py`文件展示了一个完整的内容生成过程从主题生成到海报创作
#### 运行完整工作流测试:
```bash
python examples/test_workflow.py
```
该脚本将执行以下步骤:
1. 生成旅游目的地主题
2. 根据主题生成内容
3. 生成配图海报
4. 保存结果
#### 分步测试:
如果您想分阶段测试系统可以分别执行以下脚本:
##### 第一阶段: 主题生成
```bash
python examples/run_step1_topics.py
```
此命令将生成旅游目的地主题并保存在`outputs/topics`目录中
##### 第二阶段: 内容和海报生成
```bash
python examples/run_step2_content_posters.py
```
此命令将读取`outputs/topics`目录中的主题生成内容并创建海报结果保存在`outputs/content``outputs/posters`目录中
### 仅生成海报示例
如果只想测试海报生成功能可以使用以下示例:
```bash
python examples/generate_poster.py
```
该脚本默认将使用示例内容生成海报并保存在`outputs/posters`目录
您也可以指定输入内容和输出路径:
```bash
python examples/generate_poster.py --input "您的旅游内容" --output "您的输出路径.jpg"
```
### 流式处理示例
#### 基本流式输出测试
```bash
python examples/test_stream.py
```
该脚本展示了如何使用三种不同的流式处理方法:
1. 同步流式输出 (`generate_text_stream`)
2. 基于回调的流式输出 (`generate_text_stream_with_callback`)
3. 异步流式输出 (`async_generate_text_stream`)
#### 超时处理测试
```bash
python examples/test_stream_with_timeout_handling.py
```
该脚本演示了如何处理流式生成中的超时情况包括全局请求超时和流块超时的配置
#### 并发流式处理
```bash
python examples/concurrent_stream_processing.py
```
该脚本展示了如何使用异步流式处理同时处理多个不同的AI生成任务包括:
1. 并发处理多个不同提示的任务
2. 顺序与并发处理的性能对比
3. 任务状态监控和异常处理
该示例特别适用于需要同时生成多个旅游内容片段的场景如同时生成多个目的地的介绍美食推荐和旅行建议
### 未来示例
我们将继续添加更多示例展示如何独立使用系统的各个组件
### 重要说明
- 这些示例依赖于项目主配置和资源请确保已正确配置
- 您可能需要调整参数以获得最佳结果
- 如有任何问题请参阅主文档或提交issue