# API 参考文档

## 概述

本技能使用两套 API：
1. **Lyra Flash API** - 用于图像生成和编辑（文生图、图生图）
2. **Qwen2.5-VL API** - 用于视觉识别（图生文）

---

## 一、Lyra Flash API（图像生成）

### 1.1 基础配置

| 配置项 | 值 |
|-------|-----|
| Base URL | `${IMAGE_API_BASE_URL}` |
| Model | `lyra-flash-9` |
| 认证方式 | Bearer Token |

### 1.2 文生图接口

**端点**
```
POST /images/generations
```

**请求头**
```json
{
  "Content-Type": "application/json",
  "Authorization": "Bearer ${IMAGE_API_KEY}"
}
```

**请求体**
```json
{
  "model": "lyra-flash-9",
  "prompt": "中文图像描述",
  "size": "1792x1024",
  "response_format": "b64_json"
}
```

**参数说明**

| 参数 | 类型 | 必填 | 说明 |
|-----|------|-----|------|
| model | string | 是 | 固定使用 `lyra-flash-9` |
| prompt | string | 是 | 中文图像生成提示词 |
| size | string | 否 | 图片尺寸，默认 `1792x1024` |
| response_format | string | 否 | 响应格式，推荐 `b64_json` |

**响应体**
```json
{
  "created": 1641234567,
  "data": [
    {
      "b64_json": "base64编码的图片数据"
    }
  ]
}
```

### 1.3 图生图接口

**端点**
```
POST /images/edits
```

**请求体**
```json
{
  "model": "lyra-flash-9",
  "prompt": "中文编辑指令",
  "image": "data:image/png;base64,{base64数据}",
  "size": "1792x1024",
  "response_format": "b64_json"
}
```

**参数说明**

| 参数 | 类型 | 必填 | 说明 |
|-----|------|-----|------|
| model | string | 是 | 固定使用 `lyra-flash-9` |
| prompt | string | 是 | 中文图片编辑指令 |
| image | string | 是 | Base64 编码的参考图片（含 data URL 前缀） |
| size | string | 否 | 输出尺寸 |
| response_format | string | 否 | 响应格式 |

**响应体**
```json
{
  "data": [
    {
      "b64_json": "base64编码的生成图片"
    }
  ]
}
```

---

## 二、Qwen2.5-VL API（视觉识别）

### 2.1 基础配置

| 配置项 | 值 |
|-------|-----|
| Base URL | `${IMAGE_API_BASE_URL}` |
| Model | `qwen2.5-vl-72b-instruct` |
| 认证方式 | Bearer Token |

### 2.2 图生文接口

**端点**
```
POST /chat/completions
```

**请求头**
```json
{
  "Content-Type": "application/json",
  "Authorization": "Bearer ${VISION_API_KEY}"
}
```

**请求体**
```json
{
  "model": "qwen2.5-vl-72b-instruct",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "请描述这张图片"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/jpeg;base64,{base64数据}"
          }
        }
      ]
    }
  ],
  "max_tokens": 2000,
  "temperature": 0.7
}
```

**参数说明**

| 参数 | 类型 | 必填 | 说明 |
|-----|------|-----|------|
| model | string | 是 | 视觉模型名称 |
| messages | array | 是 | 消息列表，包含文本和图片 |
| max_tokens | int | 否 | 最大输出 token 数 |
| temperature | float | 否 | 温度参数（0-1） |

**响应体**
```json
{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "created": 1641234567,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "这是一张..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 100,
    "completion_tokens": 50,
    "total_tokens": 150
  }
}
```

---

## 三、错误码说明

| 状态码 | 说明 | 处理建议 |
|-------|------|---------|
| 400 | 请求参数错误 | 检查请求体格式和参数 |
| 401 | API 密钥无效 | 检查 API Key 是否正确 |
| 403 | 权限不足 | 检查 API Key 权限 |
| 429 | 请求频率限制 | 等待后重试 |
| 500 | 服务器内部错误 | 稍后重试 |
| 503 | 服务不可用 | 稍后重试 |

---

## 四、最佳实践

### 4.1 超时设置

- 文生图：建议 120-180 秒
- 图生图：建议 180-300 秒
- 图生文：建议 60-120 秒

### 4.2 重试策略

建议实现指数退避重试：
1. 首次重试：等待 1 秒
2. 第二次重试：等待 2 秒
3. 第三次重试：等待 4 秒

### 4.3 图片格式

- 支持格式：PNG、JPG、JPEG、WebP、GIF
- 推荐格式：PNG（无损）或 JPEG（有损但体积小）
- 最大文件大小：建议不超过 4MB

### 4.4 Base64 编码

图片必须使用完整的 Data URL 格式：
```
data:image/png;base64,iVBORw0KGgo...
```
