File size: 17,601 Bytes
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
 
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
1e0d19a
 
 
428436b
1e0d19a
 
 
428436b
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428436b
1e0d19a
 
 
 
 
 
428436b
1e0d19a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
# ACE-Step API 客户端文档

**Language / 语言 / 言語:** [English](../en/API.md) | [中文](API.md) | [日本語](../ja/API.md)

---

本服务提供基于 HTTP 的异步音乐生成 API。

**基本工作流程**1. 调用 `POST /v1/music/generate` 提交任务并获取 `job_id`2. 调用 `GET /v1/jobs/{job_id}` 轮询任务状态,直到 `status``succeeded``failed`3. 通过结果中返回的 `GET /v1/audio?path=...` URL 下载音频文件。

---

## 目录

- [任务状态说明](#1-任务状态说明)
- [创建生成任务](#2-创建生成任务)
- [查询任务结果](#3-查询任务结果)
- [随机样本生成](#4-随机样本生成)
- [列出可用模型](#5-列出可用模型)
- [下载音频文件](#6-下载音频文件)
- [健康检查](#7-健康检查)
- [环境变量](#8-环境变量)

---

## 1. 任务状态说明

任务状态(`status`)包括以下类型:

- `queued`:任务已进入队列,等待执行。此时可以查看 `queue_position``eta_seconds`- `running`:生成正在进行中。
- `succeeded`:生成成功,结果在 `result` 字段中。
- `failed`:生成失败,错误信息在 `error` 字段中。

---

## 2. 创建生成任务

### 2.1 API 定义

- **URL**`/v1/music/generate`
- **方法**`POST`
- **Content-Type**`application/json``multipart/form-data``application/x-www-form-urlencoded`

### 2.2 请求参数

#### 参数命名约定

API 支持大多数参数的 **snake_case** 和 **camelCase** 命名。例如:
- `audio_duration` / `duration` / `audioDuration`
- `key_scale` / `keyscale` / `keyScale`
- `time_signature` / `timesignature` / `timeSignature`
- `sample_query` / `sampleQuery` / `description` / `desc`
- `use_format` / `useFormat` / `format`

此外,元数据可以通过嵌套对象传递(`metas`、`metadata` 或 `user_metadata`)。

#### 方法 A:JSON 请求(application/json)

适用于仅传递文本参数,或引用服务器上已存在的音频文件路径。

**基本参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `caption` | string | `""` | 音乐描述提示词 |
| `lyrics` | string | `""` | 歌词内容 |
| `thinking` | bool | `false` | 是否使用 5Hz LM 生成音频代码(lm-dit 行为)|
| `vocal_language` | string | `"en"` | 歌词语言(en、zh、ja 等)|
| `audio_format` | string | `"mp3"` | 输出格式(mp3、wav、flac)|

**样本/描述模式参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `sample_mode` | bool | `false` | 启用随机样本生成模式(通过 LM 自动生成 caption/lyrics/metas)|
| `sample_query` | string | `""` | 用于样本生成的自然语言描述(例如"一首柔和的孟加拉情歌")。别名:`description`、`desc` |
| `use_format` | bool | `false` | 使用 LM 增强/格式化提供的 caption 和 lyrics。别名:`format` |

**多模型支持**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `model` | string | null | 选择使用哪个 DiT 模型(例如 `"acestep-v15-turbo"`、`"acestep-v15-turbo-shift3"`)。使用 `/v1/models` 列出可用模型。如果未指定,使用默认模型。|

**thinking 语义(重要)**:

- `thinking=false`:
  - 服务器**不会**使用 5Hz LM 生成 `audio_code_string`。
  - DiT 以 **text2music** 模式运行,**忽略**任何提供的 `audio_code_string`- `thinking=true`  - 服务器将使用 5Hz LM 生成 `audio_code_string`(lm-dit 行为)。
  - DiT 使用 LM 生成的代码运行,以增强音乐质量。

**元数据自动补全(条件性)**:

当 `use_cot_caption=true``use_cot_language=true` 或元数据字段缺失时,服务器可能会调用 5Hz LM 根据 `caption`/`lyrics` 填充缺失的字段:

- `bpm`
- `key_scale`
- `time_signature`
- `audio_duration`

用户提供的值始终优先;LM 只填充空/缺失的字段。

**音乐属性参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `bpm` | int | null | 指定节奏(BPM),范围 30-300 |
| `key_scale` | string | `""` | 调性(例如"C Major"、"Am")。别名:`keyscale``keyScale` |
| `time_signature` | string | `""` | 拍号(2、3、4、6 分别表示 2/4、3/4、4/4、6/8)。别名:`timesignature``timeSignature` |
| `audio_duration` | float | null | 生成时长(秒),范围 10-600。别名:`duration``target_duration` |

**音频代码(可选)**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `audio_code_string` | string 或 string[] | `""` | 用于 `llm_dit` 的音频语义令牌(5Hz)。别名:`audioCodeString` |

**生成控制参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `inference_steps` | int | `8` | 推理步数。Turbo 模型:1-20(推荐 8)。Base 模型:1-200(推荐 32-64)|
| `guidance_scale` | float | `7.0` | 提示引导系数。仅对 base 模型有效 |
| `use_random_seed` | bool | `true` | 是否使用随机种子 |
| `seed` | int | `-1` | 指定种子(当 use_random_seed=false 时)|
| `batch_size` | int | `2` | 批量生成数量(最多 8)|

**高级 DiT 参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `shift` | float | `3.0` | 时间步偏移因子(范围 1.0-5.0)。仅对 base 模型有效,对 turbo 模型无效 |
| `infer_method` | string | `"ode"` | 扩散推理方法:`"ode"`(Euler,更快)或 `"sde"`(随机)|
| `timesteps` | string | null | 自定义时间步,逗号分隔值(例如 `"0.97,0.76,0.615,0.5,0.395,0.28,0.18,0.085,0"`)。覆盖 `inference_steps``shift` |
| `use_adg` | bool | `false` | 使用自适应双引导(仅 base 模型)|
| `cfg_interval_start` | float | `0.0` | CFG 应用起始比例(0.0-1.0)|
| `cfg_interval_end` | float | `1.0` | CFG 应用结束比例(0.0-1.0)|

**5Hz LM 参数(可选,服务器端)**:

这些参数控制 5Hz LM 采样,用于元数据自动补全和(当 `thinking=true` 时)代码生成。

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `lm_model_path` | string | null | 5Hz LM 检查点目录名(例如 `acestep-5Hz-lm-0.6B`)|
| `lm_backend` | string | `"vllm"` | `vllm``pt` |
| `lm_temperature` | float | `0.85` | 采样温度 |
| `lm_cfg_scale` | float | `2.5` | CFG 比例(>1 启用 CFG)|
| `lm_negative_prompt` | string | `"NO USER INPUT"` | CFG 使用的负面提示 |
| `lm_top_k` | int | null | Top-k(0/null 禁用)|
| `lm_top_p` | float | `0.9` | Top-p(>=1 将被视为禁用)|
| `lm_repetition_penalty` | float | `1.0` | 重复惩罚 |

**LM CoT(思维链)参数**:

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `use_cot_caption` | bool | `true` | 让 LM 通过 CoT 推理重写/增强输入 caption。别名:`cot_caption``cot-caption` |
| `use_cot_language` | bool | `true` | 让 LM 通过 CoT 检测人声语言。别名:`cot_language``cot-language` |
| `constrained_decoding` | bool | `true` | 启用基于 FSM 的约束解码以获得结构化 LM 输出。别名:`constrainedDecoding``constrained` |
| `constrained_decoding_debug` | bool | `false` | 启用约束解码的调试日志 |

**编辑/参考音频参数**(需要服务器上的绝对路径):

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `reference_audio_path` | string | null | 参考音频路径(风格迁移)|
| `src_audio_path` | string | null | 源音频路径(重绘/翻唱)|
| `task_type` | string | `"text2music"` | 任务类型:`text2music``cover``repaint``lego``extract``complete` |
| `instruction` | string | auto | 编辑指令(如未提供则根据 task_type 自动生成)|
| `repainting_start` | float | `0.0` | 重绘开始时间(秒)|
| `repainting_end` | float | null | 重绘结束时间(秒),-1 表示音频末尾 |
| `audio_cover_strength` | float | `1.0` | 翻唱强度(0.0-1.0)。风格迁移使用较小值(0.2)|

#### 方法 B:文件上传(multipart/form-data)

当需要上传本地音频文件作为参考或源音频时使用。

除了支持上述所有字段作为表单字段外,还支持以下文件字段:

- `reference_audio`:(文件)上传参考音频文件
- `src_audio`:(文件)上传源音频文件

> **注意**:上传文件后,相应的 `_path` 参数将被自动忽略,系统将使用上传后的临时文件路径。

### 2.3 响应示例

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "queue_position": 1
}
```

### 2.4 使用示例(cURL)

**基本 JSON 方法**

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "欢快的流行歌曲",
    "lyrics": "你好世界",
    "inference_steps": 8
  }'
```

**使用 thinking=true(LM 生成代码 + 填充缺失元数据)**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "欢快的流行歌曲",
    "lyrics": "你好世界",
    "thinking": true,
    "lm_temperature": 0.85,
    "lm_cfg_scale": 2.5
  }'
```

**描述驱动生成(sample_query)**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "sample_query": "一首适合安静夜晚的柔和孟加拉情歌",
    "thinking": true
  }'
```

**使用格式增强(use_format=true)**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "流行摇滚",
    "lyrics": "[Verse 1]\n走在街上...",
    "use_format": true,
    "thinking": true
  }'
```

**选择特定模型**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "电子舞曲",
    "model": "acestep-v15-turbo",
    "thinking": true
  }'
```

**使用自定义时间步**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "爵士钢琴三重奏",
    "timesteps": "0.97,0.76,0.615,0.5,0.395,0.28,0.18,0.085,0",
    "thinking": true
  }'
```

**使用 thinking=false(仅 DiT,但填充缺失元数据)**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -H 'Content-Type: application/json' \
  -d '{
    "caption": "缓慢的情感民谣",
    "lyrics": "...",
    "thinking": false,
    "bpm": 72
  }'
```

**文件上传方法**:

```bash
curl -X POST http://localhost:8001/v1/music/generate \
  -F "caption=重新混音这首歌" \
  -F "src_audio=@/path/to/local/song.mp3" \
  -F "task_type=repaint"
```

---

## 3. 查询任务结果

### 3.1 API 定义

- **URL**:`/v1/jobs/{job_id}`
- **方法**:`GET`

### 3.2 响应参数

响应包含基本任务信息、队列状态和最终结果。

**主要字段**:

- `status`:当前状态
- `queue_position`:当前队列位置(0 表示正在运行或已完成)
- `eta_seconds`:预计剩余等待时间(秒)
- `avg_job_seconds`:平均任务持续时间(用于 ETA 估算)
- `result`:成功时的结果对象
  - `audio_paths`:生成的音频文件 URL 列表(配合 `/v1/audio` 端点使用)
  - `first_audio_path`:第一个音频路径(URL)
  - `second_audio_path`:第二个音频路径(URL,如果 batch_size >= 2)
  - `generation_info`:生成参数详情
  - `status_message`:简短结果描述
  - `seed_value`:使用的种子值,逗号分隔
  - `metas`:完整元数据字典
  - `bpm`:检测到/使用的 BPM
  - `duration`:检测到/使用的时长
  - `keyscale`:检测到/使用的调性
  - `timesignature`:检测到/使用的拍号
  - `genres`:检测到的风格(如果可用)
  - `lm_model`:使用的 LM 模型名称
  - `dit_model`:使用的 DiT 模型名称
- `error`:失败时的错误信息

### 3.3 响应示例

**排队中**:

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": 1700000000.0,
  "queue_position": 5,
  "eta_seconds": 25.0,
  "avg_job_seconds": 5.0,
  "result": null,
  "error": null
}
```

**执行成功**:

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "succeeded",
  "created_at": 1700000000.0,
  "started_at": 1700000001.0,
  "finished_at": 1700000010.0,
  "queue_position": 0,
  "result": {
    "first_audio_path": "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3",
    "second_audio_path": "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fdef456.mp3",
    "audio_paths": [
      "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3",
      "/v1/audio?path=%2Ftmp%2Fapi_audio%2Fdef456.mp3"
    ],
    "generation_info": "🎵 生成了 2 个音频\n⏱️ 总计:8.5s\n🎲 种子:12345,67890",
    "status_message": "✅ 生成成功完成!",
    "seed_value": "12345,67890",
    "metas": {
      "bpm": 120,
      "duration": 30,
      "keyscale": "C Major",
      "timesignature": "4",
      "caption": "欢快的流行歌曲,旋律动听"
    },
    "bpm": 120,
    "duration": 30,
    "keyscale": "C Major",
    "timesignature": "4",
    "genres": null,
    "lm_model": "acestep-5Hz-lm-0.6B",
    "dit_model": "acestep-v15-turbo"
  },
  "error": null
}
```

---

## 4. 随机样本生成

### 4.1 API 定义

- **URL**:`/v1/music/random`
- **方法**:`POST`

此端点创建一个样本模式任务,通过 5Hz LM 自动生成 caption、lyrics 和元数据。

### 4.2 请求参数

| 参数名 | 类型 | 默认值 | 说明 |
| :--- | :--- | :--- | :--- |
| `thinking` | bool | `true` | 是否同时通过 LM 生成音频代码 |

### 4.3 响应示例

```json
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "queue_position": 1
}
```

### 4.4 使用示例

```bash
curl -X POST http://localhost:8001/v1/music/random \
  -H 'Content-Type: application/json' \
  -d '{"thinking": true}'
```

---

## 5. 列出可用模型

### 5.1 API 定义

- **URL**:`/v1/models`
- **方法**:`GET`

返回服务器上加载的可用 DiT 模型列表。

### 5.2 响应示例

```json
{
  "models": [
    {
      "name": "acestep-v15-turbo",
      "is_default": true
    },
    {
      "name": "acestep-v15-turbo-shift3",
      "is_default": false
    }
  ],
  "default_model": "acestep-v15-turbo"
}
```

### 5.3 使用示例

```bash
curl http://localhost:8001/v1/models
```

---

## 6. 下载音频文件

### 6.1 API 定义

- **URL**:`/v1/audio`
- **方法**:`GET`

通过路径下载生成的音频文件。

### 6.2 请求参数

| 参数名 | 类型 | 说明 |
| :--- | :--- | :--- |
| `path` | string | URL 编码的音频文件路径 |

### 6.3 使用示例

```bash
# 使用任务结果中的 URL 下载
curl "http://localhost:8001/v1/audio?path=%2Ftmp%2Fapi_audio%2Fabc123.mp3" -o output.mp3
```

---

## 7. 健康检查

### 7.1 API 定义

- **URL**:`/health`
- **方法**:`GET`

返回服务健康状态。

### 7.2 响应示例

```json
{
  "status": "ok",
  "service": "ACE-Step API",
  "version": "1.0"
}
```

---

## 8. 环境变量

API 服务器可以通过环境变量进行配置:

| 变量 | 默认值 | 说明 |
| :--- | :--- | :--- |
| `ACESTEP_API_HOST` | `127.0.0.1` | 服务器绑定主机 |
| `ACESTEP_API_PORT` | `8001` | 服务器绑定端口 |
| `ACESTEP_CONFIG_PATH` | `acestep-v15-turbo` | 主 DiT 模型路径 |
| `ACESTEP_CONFIG_PATH2` | (空)| 辅助 DiT 模型路径(可选)|
| `ACESTEP_CONFIG_PATH3` | (空)| 第三个 DiT 模型路径(可选)|
| `ACESTEP_DEVICE` | `auto` | 模型加载设备 |
| `ACESTEP_USE_FLASH_ATTENTION` | `true` | 启用 flash attention |
| `ACESTEP_OFFLOAD_TO_CPU` | `false` | 空闲时将模型卸载到 CPU |
| `ACESTEP_OFFLOAD_DIT_TO_CPU` | `false` | 专门将 DiT 卸载到 CPU |
| `ACESTEP_LM_MODEL_PATH` | `acestep-5Hz-lm-0.6B` | 默认 5Hz LM 模型 |
| `ACESTEP_LM_BACKEND` | `vllm` | LM 后端(vllm 或 pt)|
| `ACESTEP_LM_DEVICE` | (与 ACESTEP_DEVICE 相同)| LM 设备 |
| `ACESTEP_LM_OFFLOAD_TO_CPU` | `false` | 将 LM 卸载到 CPU |
| `ACESTEP_QUEUE_MAXSIZE` | `200` | 最大队列大小 |
| `ACESTEP_QUEUE_WORKERS` | `1` | 队列工作者数量 |
| `ACESTEP_AVG_JOB_SECONDS` | `5.0` | 初始平均任务持续时间估算 |
| `ACESTEP_TMPDIR` | `.cache/acestep/tmp` | 临时文件目录 |

---

## 错误处理

**HTTP 状态码**:

- `200`:成功
- `400`:无效请求(错误的 JSON、缺少字段)
- `404`:找不到任务
- `415`:不支持的 Content-Type
- `429`:服务器繁忙(队列已满)
- `500`:内部服务器错误

**错误响应格式**:

```json
{
  "detail": "描述问题的错误消息"
}
```

---

## 最佳实践

1. **使用 `thinking=true`** 以获得 LM 增强生成的最佳质量结果。

2. **使用 `sample_query`/`description`** 从自然语言描述快速生成。

3. **使用 `use_format=true`** 当你有 caption/lyrics 但希望 LM 增强它们时。

4. **轮询任务状态** 时使用合理的间隔(例如每 1-2 秒),以避免服务器过载。

5. **检查 `avg_job_seconds`** 响应来估算等待时间。

6. **使用多模型支持** 通过设置 `ACESTEP_CONFIG_PATH2` 和 `ACESTEP_CONFIG_PATH3` 环境变量,然后通过 `model` 参数选择。

7. **生产环境** 中,始终设置正确的 Content-Type 头以避免 415 错误。