Skip to content

AigcCopyPipelineTest - 大模型文案生成链路测试

概述

AigcCopyPipelineTest 是用于测试大语言模型(LLM)文案生成功能的全链路集成测试类。该测试验证营销文案、评价回复等多种文案生成场景。

测试文件位置

api/tests/api/AigcCopyPipelineTest.php

测试分组

php
/**
 * @group aigc-e2e
 */

包含的测试方法

1. testMarketingCopyGeneration

测试目标: 验证营销文案生成功能

测试流程:

构建营销文案参数

调用 /api/app/copy/marketing 接口

验证返回的文案内容

断言文案长度和质量

请求参数:

php
[
    'platform' => 'xiaohongshu',      // 发布平台
    'style' => 'literary',            // 文案风格
    'sellingPoints' => [              // 核心卖点
        'sea-view',
        'afternoon-tea',
        'spa'
    ],
    'wordLimit' => 'medium',          // 字数要求
    'withEmoji' => true,              // 是否添加 Emoji
    'extraDesc' => '请突出海边度假的惬意氛围', // 补充要求
    'stream' => false,                // 是否流式输出
]

平台选项:

  • xiaohongshu - 小红书
  • moments - 朋友圈
  • wechat - 公众号
  • weibo - 微博

风格选项:

  • literary - 文艺清新
  • promotion - 激情促销
  • guide - 干货攻略

字数选项:

  • short - 100字以内
  • medium - 100-300字
  • long - 300-500字
  • extra - 500字以上

关键断言:

  • API 返回 code 为 0
  • content 字段不为空
  • 文案长度至少 10 个字符

预期输出:

=== Testing Marketing Copy Generation ===
Sending marketing copy generation request...
Parameters: {...}
Response: {...}
✓ Marketing copy generated successfully
✓ Content length: 156 characters
✓ Generated content preview: 今天来到这家海景酒店,...
✅ Marketing Copy Generation test passed!

2. testReviewReplyGeneration

测试目标: 验证评价回复生成功能

请求参数:

php
[
    'review' => '酒店环境非常好,服务也很热情,就是早餐种类有点少,希望能改进一下。',
    'tone' => 'grateful',
    'compensation' => 'breakfast',
    'compensationDetail' => '下次入住赠送双人早餐',
    'wordLimit' => 'medium',
    'extraDesc' => '请表达感谢并承诺改进早餐',
    'stream' => false,
]

语气选项:

  • apology - 真诚道歉
  • grateful - 热情感谢
  • explanation - 客观解释

补偿选项:

  • none - 不补偿
  • breakfast - 赠送早餐
  • fruit - 赠送果盘
  • upgrade - 房型升级
  • other - 其他补偿

关键断言:

  • API 返回 code 为 0
  • content 字段不为空
  • 回复长度至少 10 个字符

预期输出:

=== Testing Review Reply Generation ===
Sending review reply generation request...
Parameters: {...}
Response: {...}
✓ Review reply generated successfully
✓ Content length: 128 characters
✓ Generated reply: 非常感谢您的评价...
✅ Review Reply Generation test passed!

3. testMultiplePlatformCopyGeneration

测试目标: 验证不同平台和风格的组合测试

测试矩阵:

  • 平台: xiaohongshu, moments, wechat, weibo
  • 风格: literary, promotion, guide

关键断言:

  • 每个组合都能正常返回文案

预期输出:

=== Testing Multiple Platform Copy Generation ===

Testing platform: xiaohongshu, style: literary
✓ xiaohongshu/literary: 145 chars

Testing platform: xiaohongshu, style: promotion
✓ xiaohongshu/promotion: 132 chars
...
✅ Multiple Platform Copy Generation test completed!

4. testVolcengineArkConnection

测试目标: 验证火山引擎 ARK 接口连通性

请求方法: POST /api/app/volcengine/ark

请求参数:

php
[
    'model' => 'doubao-seed-2-0-lite-260215',
    'messages' => [
        [
            'role' => 'user',
            'content' => '你好,请用一句话介绍自己'
        ]
    ],
    'options' => [
        'temperature' => 0.7,
        'max_tokens' => 100,
    ],
]

关键断言:

  • API 返回格式正确
  • messages 数组包含响应内容

预期输出:

=== Testing Volcengine ARK Connection ===
ARK API response received
✓ ARK response: 你好!我是豆包...
✅ Volcengine ARK Connection test passed!

测试配置

环境变量

变量名默认值说明
API_BASE_URLhttp://localhost:8000API 服务器基础 URL

可配置参数

php
// HTTP 客户端配置
'timeout' => 60,            // 请求超时时间(秒)

相关接口

营销文案生成

接口: POST /api/app/copy/marketing

控制器: app/aigc/controller/ApiCopy.php::generateMarketing()

服务: app/aigc/service/UnifiedLlmService.php::generate()

请求参数:

  • platform - 发布平台
  • style - 文案风格
  • sellingPoints - 核心卖点数组
  • wordLimit - 字数要求
  • withEmoji - 是否添加 Emoji
  • extraDesc - 补充要求
  • stream - 是否流式输出

内部使用的 LLM 参数:

php
[
    'provider' => 'volcengine',
    'model' => 'doubao-seed-2-0-lite-260215',
    'messages' => [
        ['role' => 'user', 'content' => $generatedPrompt]
    ],
    'options' => [
        'temperature' => 0.7,
        'max_tokens' => 1000,
        'stream' => false,
    ],
]

评价回复生成

接口: POST /api/app/copy/review-reply

控制器: app/aigc/controller/ApiCopy.php::generateReviewReply()

服务: app/aigc/service/UnifiedLlmService.php::generate()

请求参数:

  • review - 客户评价内容
  • tone - 回复语气
  • compensation - 补偿方案
  • compensationDetail - 补偿详情
  • wordLimit - 字数要求
  • extraDesc - 补充要求
  • stream - 是否流式输出

火山引擎 ARK 接口

接口: POST /api/app/volcengine/ark

控制器: app/aigc/controller/ApiVolcengine.php::ark()

服务: app/aigc/service/VolcengineService.php::ark()


运行测试

运行整个测试类

bash
cd api
vendor/bin/phpunit tests/api/AigcCopyPipelineTest.php

仅运行营销文案测试

bash
vendor/bin/phpunit tests/api/AigcCopyPipelineTest.php --filter testMarketingCopyGeneration

仅运行评价回复测试

bash
vendor/bin/phpunit tests/api/AigcCopyPipelineTest.php --filter testReviewReplyGeneration

仅运行多平台测试

bash
vendor/bin/phpunit tests/api/AigcCopyPipelineTest.php --filter testMultiplePlatformCopyGeneration

仅运行 ARK 连通性测试

bash
vendor/bin/phpunit tests/api/AigcCopyPipelineTest.php --filter testVolcengineArkConnection

注意事项

⚠️ 重要提醒:

  1. 成本考虑 - 每次调用 LLM 都会产生费用
  2. 流式输出 - 测试使用 stream: false 进行非流式输出测试
  3. 提示词质量 - 生成的文案质量取决于提示词的设计
  4. 模型可用性 - 确保使用的模型已开通且有配额

故障排查

问题: 文案生成失败

原因: LLM 服务不可用或配额不足

解决:

  1. 检查火山引擎 API 配置
  2. 确认账户有足够的配额
  3. 查看后端日志获取详细错误

问题: 返回的文案太短

原因: max_tokens 限制或模型提前停止

解决:

  1. 增加 max_tokens 参数
  2. 调整 temperature 参数
  3. 优化提示词使其更明确

问题: 文案质量不符合预期

原因: 提示词设计不够好

解决:

  1. 优化 extraDesc 提供更详细的指导
  2. 调整 style 参数
  3. 提供更多的示例

扩展测试

如需扩展测试,可以考虑添加:

  1. 更多平台测试 - 添加新的发布平台
  2. 更多卖点测试 - 测试各种卖点组合
  3. 流式输出测试 - 测试 SSE 流式输出
  4. 多语言测试 - 测试不同语言的文案生成
  5. 质量评估测试 - 添加简单的文案质量评估
  6. A/B 测试 - 比较不同模型或参数的效果
  7. 错误处理测试 - 测试各种错误场景

提示词模板

营销文案提示词模板

你是一位专业的酒店营销文案专家。请为以下场景生成一段吸引人的营销种草话术。

【发布平台】:{platform}
【文案风格】:{style}
【核心卖点】:{sellingPoints}
【字数要求】:{wordLimit}
【特殊要求】:{withEmoji}
【补充要求】:{extraDesc}

请直接输出文案内容,不要包含任何额外说明或解释。

评价回复提示词模板

你是一位专业的酒店客诉处理专家。请为以下客户评价生成一段得体的回复。

【客户评价】:
{review}

【回复语气】:{tone}
【补偿方案】:{compensation}
【补偿详情】:{compensationDetail}
【字数要求】:{wordLimit}
【补充要求】:{extraDesc}

请直接输出回复内容,不要包含任何额外说明或解释。

相关文档