444 lines
8.3 KiB
Markdown
444 lines
8.3 KiB
Markdown
|
|
# AIGC 服务接口对接文档
|
|||
|
|
|
|||
|
|
> 本文档供 Java 后端对接 Python AIGC 服务使用
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
### 服务地址
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST http://aigc-service:8080/aigc/execute
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 通用请求结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"engine": "引擎名称",
|
|||
|
|
"params": { ... },
|
|||
|
|
"async_mode": false,
|
|||
|
|
"task_id": null,
|
|||
|
|
"callback_url": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 通用响应结构
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"task_id": "xxx",
|
|||
|
|
"status": "completed",
|
|||
|
|
"data": { ... },
|
|||
|
|
"error": null,
|
|||
|
|
"error_code": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 引擎列表
|
|||
|
|
|
|||
|
|
| 引擎 | engine 值 | 说明 |
|
|||
|
|
|-----|----------|------|
|
|||
|
|
| 选题生成 | `topic_generate` | 生成营销选题 |
|
|||
|
|
| 内容生成 | `content_generate` | 生成小红书文案 |
|
|||
|
|
| 海报生成 | `poster_generate` | 生成海报图片 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 选题生成 `topic_generate`
|
|||
|
|
|
|||
|
|
### 请求示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"engine": "topic_generate",
|
|||
|
|
"params": {
|
|||
|
|
"num_topics": 5,
|
|||
|
|
"month": "2025-01",
|
|||
|
|
"scenic_spot": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "天津冒险湾",
|
|||
|
|
"description": "天津最大的水上乐园...",
|
|||
|
|
"address": "天津市滨海新区...",
|
|||
|
|
"highlights": ["水上项目", "亲子设施"]
|
|||
|
|
},
|
|||
|
|
"product": {
|
|||
|
|
"id": 10,
|
|||
|
|
"name": "家庭套票",
|
|||
|
|
"price": 299,
|
|||
|
|
"original_price": 399,
|
|||
|
|
"package_info": "含2大1小门票+午餐",
|
|||
|
|
"usage_rules": "需提前1天预约"
|
|||
|
|
},
|
|||
|
|
"style": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "攻略风",
|
|||
|
|
"prompt_key": "gonglue"
|
|||
|
|
},
|
|||
|
|
"audience": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "亲子向",
|
|||
|
|
"prompt_key": "qinzi"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|-----|------|-----|------|
|
|||
|
|
| num_topics | int | 否 | 生成选题数量,默认 5 |
|
|||
|
|
| month | string | 否 | 目标月份,如 "2025-01" |
|
|||
|
|
| scenic_spot | object | 是 | 景区完整对象 |
|
|||
|
|
| product | object | 是 | 产品完整对象 |
|
|||
|
|
| style | object | 否 | 风格对象 |
|
|||
|
|
| audience | object | 否 | 受众对象 |
|
|||
|
|
|
|||
|
|
### 响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"data": {
|
|||
|
|
"topics": [
|
|||
|
|
{
|
|||
|
|
"index": 1,
|
|||
|
|
"date": "2025-01-15",
|
|||
|
|
"title": "寒假遛娃好去处",
|
|||
|
|
"logic": "寒假期间亲子出游需求旺盛",
|
|||
|
|
"scenic_spot": "天津冒险湾",
|
|||
|
|
"product": "家庭套票",
|
|||
|
|
"style": "攻略风",
|
|||
|
|
"audience": "亲子向"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"count": 5
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 内容生成 `content_generate`
|
|||
|
|
|
|||
|
|
### 请求示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"engine": "content_generate",
|
|||
|
|
"params": {
|
|||
|
|
"topic": {
|
|||
|
|
"index": 1,
|
|||
|
|
"date": "2025-01-15",
|
|||
|
|
"title": "寒假遛娃好去处",
|
|||
|
|
"logic": "寒假期间亲子出游需求旺盛"
|
|||
|
|
},
|
|||
|
|
"scenic_spot": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "天津冒险湾",
|
|||
|
|
"description": "天津最大的水上乐园...",
|
|||
|
|
"address": "天津市滨海新区...",
|
|||
|
|
"highlights": ["水上项目", "亲子设施"],
|
|||
|
|
"traffic_info": "地铁9号线直达"
|
|||
|
|
},
|
|||
|
|
"product": {
|
|||
|
|
"id": 10,
|
|||
|
|
"name": "家庭套票",
|
|||
|
|
"price": 299,
|
|||
|
|
"original_price": 399,
|
|||
|
|
"package_info": "含2大1小门票+午餐"
|
|||
|
|
},
|
|||
|
|
"style": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "攻略风",
|
|||
|
|
"prompt_key": "gonglue"
|
|||
|
|
},
|
|||
|
|
"audience": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "亲子向",
|
|||
|
|
"prompt_key": "qinzi"
|
|||
|
|
},
|
|||
|
|
"need_judge": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|-----|------|-----|------|
|
|||
|
|
| topic | object | 是 | 选题对象(上一步输出) |
|
|||
|
|
| scenic_spot | object | 是 | 景区完整对象 |
|
|||
|
|
| product | object | 是 | 产品完整对象 |
|
|||
|
|
| style | object | 否 | 风格对象 |
|
|||
|
|
| audience | object | 否 | 受众对象 |
|
|||
|
|
| need_judge | bool | 否 | 是否需要内容审核,默认 true |
|
|||
|
|
|
|||
|
|
### 响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"data": {
|
|||
|
|
"content": {
|
|||
|
|
"title": "🎢寒假遛娃|天津冒险湾超全攻略",
|
|||
|
|
"content": "终于找到一个能让娃玩一整天的地方...",
|
|||
|
|
"tag": "#天津旅游 #亲子游 #周末去哪儿玩"
|
|||
|
|
},
|
|||
|
|
"judge_result": {
|
|||
|
|
"passed": true,
|
|||
|
|
"score": 85,
|
|||
|
|
"suggestions": []
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 海报生成 `poster_generate`
|
|||
|
|
|
|||
|
|
### 请求示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"engine": "poster_generate",
|
|||
|
|
"params": {
|
|||
|
|
"template_id": "poster-template-1",
|
|||
|
|
"poster_content": {
|
|||
|
|
"title": "寒假特惠",
|
|||
|
|
"subtitle": "天津冒险湾家庭套票",
|
|||
|
|
"slogan": "一票畅玩全场",
|
|||
|
|
"price_text": "¥299起",
|
|||
|
|
"highlights": ["水上乐园", "亲子设施", "美食套餐"],
|
|||
|
|
"cta": "立即抢购"
|
|||
|
|
},
|
|||
|
|
"image_urls": [
|
|||
|
|
"https://oss.example.com/images/scenic1.jpg",
|
|||
|
|
"https://oss.example.com/images/scenic2.jpg"
|
|||
|
|
],
|
|||
|
|
"scenic_spot": {
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "天津冒险湾"
|
|||
|
|
},
|
|||
|
|
"product": {
|
|||
|
|
"id": 10,
|
|||
|
|
"name": "家庭套票"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 类型 | 必填 | 说明 |
|
|||
|
|
|-----|------|-----|------|
|
|||
|
|
| template_id | string | 是 | 海报模板 ID |
|
|||
|
|
| poster_content | object | 否 | 海报文案内容 |
|
|||
|
|
| image_urls | array | 推荐 | 图片 URL 列表 |
|
|||
|
|
| image_paths | array | 备选 | 本地图片路径 |
|
|||
|
|
| scenic_spot | object | 否 | 景区对象 |
|
|||
|
|
| product | object | 否 | 产品对象 |
|
|||
|
|
|
|||
|
|
### 图片传输方式
|
|||
|
|
|
|||
|
|
**推荐使用 `image_urls`**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"image_urls": [
|
|||
|
|
"https://oss.example.com/images/1.jpg",
|
|||
|
|
"https://oss.example.com/images/2.jpg"
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Python 端会自动下载图片并处理。
|
|||
|
|
|
|||
|
|
### 响应示例
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"data": {
|
|||
|
|
"poster_url": "https://oss.example.com/posters/result.png",
|
|||
|
|
"poster_base64": "data:image/png;base64,...",
|
|||
|
|
"template_id": "poster-template-1"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 对象结构定义
|
|||
|
|
|
|||
|
|
### scenic_spot 景区对象
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "景区名称",
|
|||
|
|
"description": "景区描述",
|
|||
|
|
"address": "详细地址",
|
|||
|
|
"traffic_info": "交通信息",
|
|||
|
|
"highlights": ["亮点1", "亮点2"],
|
|||
|
|
"opening_hours": "营业时间",
|
|||
|
|
"tips": "游玩贴士"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### product 产品对象
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 10,
|
|||
|
|
"name": "产品名称",
|
|||
|
|
"price": 299,
|
|||
|
|
"original_price": 399,
|
|||
|
|
"package_info": "套餐内容",
|
|||
|
|
"usage_rules": "使用规则",
|
|||
|
|
"valid_period": "有效期",
|
|||
|
|
"stock": 100
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### style 风格对象
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "攻略风",
|
|||
|
|
"prompt_key": "gonglue"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
可选值:
|
|||
|
|
- `gonglue` - 攻略风
|
|||
|
|
- `tuijian` - 极力推荐风
|
|||
|
|
|
|||
|
|
### audience 受众对象
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"id": 1,
|
|||
|
|
"name": "亲子向",
|
|||
|
|
"prompt_key": "qinzi"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
可选值:
|
|||
|
|
- `qinzi` - 亲子向
|
|||
|
|
- `zhoubianyou` - 周边游
|
|||
|
|
- `gaoshe` - 高奢酒店
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 错误处理
|
|||
|
|
|
|||
|
|
### 错误响应格式
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": false,
|
|||
|
|
"error": "错误描述",
|
|||
|
|
"error_code": "ERROR_CODE",
|
|||
|
|
"data": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 常见错误码
|
|||
|
|
|
|||
|
|
| 错误码 | 说明 | 处理建议 |
|
|||
|
|
|-------|------|---------|
|
|||
|
|
| VALIDATION_ERROR | 参数验证失败 | 检查必填参数 |
|
|||
|
|
| ENGINE_NOT_FOUND | 引擎不存在 | 检查 engine 值 |
|
|||
|
|
| AI_RATE_LIMIT | AI 服务限流 | 稍后重试 |
|
|||
|
|
| AI_CONTENT_FILTER | 内容被过滤 | 调整输入内容 |
|
|||
|
|
| NETWORK_ERROR | 网络错误 | 检查服务连接 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Prompt 查询接口
|
|||
|
|
|
|||
|
|
### 列出所有 Prompt
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /prompt/v2/list
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
响应:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"prompts": ["topic_generate", "content_generate", "content_judge", "poster_generate", "integration"],
|
|||
|
|
"count": 5
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 获取 Prompt 详情
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /prompt/v2/{name}?version=latest
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 列出 Prompt 版本
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
GET /prompt/v2/{name}/versions
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 渲染 Prompt
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /prompt/v2/render
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
请求:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "content_generate",
|
|||
|
|
"version": "latest",
|
|||
|
|
"context": {
|
|||
|
|
"style_content": "...",
|
|||
|
|
"demand_content": "...",
|
|||
|
|
"topic": { ... }
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 迁移指南
|
|||
|
|
|
|||
|
|
### 从旧接口迁移
|
|||
|
|
|
|||
|
|
| 旧参数 | 新参数 | 说明 |
|
|||
|
|
|-------|-------|------|
|
|||
|
|
| ppid | 移除 | 不再使用 |
|
|||
|
|
| sid | scenic_spot.id | 改为完整对象 |
|
|||
|
|
| pid | product.id | 改为完整对象 |
|
|||
|
|
| images_base64 | image_urls | 推荐使用 URL |
|
|||
|
|
|
|||
|
|
### 关键变化
|
|||
|
|
|
|||
|
|
1. **不再使用 ppid**:Java 端需要预先解析 ppid,传递完整对象
|
|||
|
|
2. **图片使用 URL**:推荐传递 OSS URL,Python 端自动下载
|
|||
|
|
3. **风格/受众使用 prompt_key**:用于匹配 Prompt 模板
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 联调检查清单
|
|||
|
|
|
|||
|
|
- [ ] 确认服务地址可访问
|
|||
|
|
- [ ] 确认 scenic_spot 对象包含必要字段
|
|||
|
|
- [ ] 确认 product 对象包含必要字段
|
|||
|
|
- [ ] 确认 style.prompt_key 值正确
|
|||
|
|
- [ ] 确认 audience.prompt_key 值正确
|
|||
|
|
- [ ] 确认图片 URL 可公网访问
|
|||
|
|
- [ ] 测试选题生成接口
|
|||
|
|
- [ ] 测试内容生成接口
|
|||
|
|
- [ ] 测试海报生成接口
|