File size: 17,923 Bytes
bc9c638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# ACE-Step API ํด๋ผ์ด์–ธํŠธ ๋ฌธ์„œ

**์–ธ์–ด / Language / ่ฏญ่จ€ / ่จ€่ชž:** [English](../en/API.md) | [ํ•œ๊ตญ์–ด](API.md) | [ไธญๆ–‡](../zh/API.md) | [ๆ—ฅๆœฌ่ชž](../ja/API.md)

---

์ด ์„œ๋น„์Šค๋Š” HTTP ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ์Œ์•… ์ƒ์„ฑ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

**๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ์šฐ**:
1. `POST /release_task`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘์—…์„ ์ œ์ถœํ•˜๊ณ  `task_id`๋ฅผ ํš๋“ํ•ฉ๋‹ˆ๋‹ค.
2. `POST /query_result`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘์—… ์ƒํƒœ๊ฐ€ `1`(์„ฑ๊ณต) ๋˜๋Š” `2`(์‹คํŒจ)๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋ฐฐ์น˜ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
3. ๊ฒฐ๊ณผ์— ๋ฐ˜ํ™˜๋œ `GET /v1/audio?path=...` URL์„ ํ†ตํ•ด ์˜ค๋””์˜ค ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

---

## ๋ชฉ์ฐจ

- [1. ์ธ์ฆ](#1-์ธ์ฆ)
- [2. ์‘๋‹ต ํ˜•์‹](#2-์‘๋‹ต-ํ˜•์‹)
- [3. ์ž‘์—… ์ƒํƒœ ์„ค๋ช…](#3-์ž‘์—…-์ƒํƒœ-์„ค๋ช…)
- [4. ์ƒ์„ฑ ์ž‘์—… ์ƒ์„ฑ](#4-์ƒ์„ฑ-์ž‘์—…-์ƒ์„ฑ)
- [5. ์ž‘์—… ๊ฒฐ๊ณผ ๋ฐฐ์น˜ ์กฐํšŒ](#5-์ž‘์—…-๊ฒฐ๊ณผ-๋ฐฐ์น˜-์กฐํšŒ)
- [6. ์ž…๋ ฅ ํฌ๋งทํŒ… (Format Input)](#6-์ž…๋ ฅ-ํฌ๋งทํŒ…-format-input)
- [7. ๋žœ๋ค ์ƒ˜ํ”Œ ๊ฐ€์ ธ์˜ค๊ธฐ](#7-๋žœ๋ค-์ƒ˜ํ”Œ-๊ฐ€์ ธ์˜ค๊ธฐ)
- [8. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก](#8-์‚ฌ์šฉ-๊ฐ€๋Šฅํ•œ-๋ชจ๋ธ-๋ชฉ๋ก)
- [9. ์„œ๋ฒ„ ํ†ต๊ณ„](#9-์„œ๋ฒ„-ํ†ต๊ณ„)
- [10. ์˜ค๋””์˜ค ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ](#10-์˜ค๋””์˜ค-ํŒŒ์ผ-๋‹ค์šด๋กœ๋“œ)
- [11. ํ—ฌ์Šค ์ฒดํฌ](#11-ํ—ฌ์Šค-์ฒดํฌ)
- [12. ํ™˜๊ฒฝ ๋ณ€์ˆ˜](#12-ํ™˜๊ฒฝ-๋ณ€์ˆ˜)

---

## 1. ์ธ์ฆ

API๋Š” ์„ ํƒ์ ์œผ๋กœ API ํ‚ค ์ธ์ฆ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์š”์ฒญ ์‹œ ์œ ํšจํ•œ ํ‚ค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

### ์ธ์ฆ ๋ฐฉ๋ฒ•

๋‘ ๊ฐ€์ง€ ์ธ์ฆ ๋ฐฉ๋ฒ•์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

**๋ฐฉ๋ฒ• A: ์š”์ฒญ ๋ณธ๋ฌธ์˜ ai_token**

```json
{
  "ai_token": "your-api-key",
  "prompt": "upbeat pop song",
  ...
}
```

**๋ฐฉ๋ฒ• B: Authorization ํ—ค๋”**

```bash
curl -X POST http://localhost:8001/release_task \
  -H 'Authorization: Bearer your-api-key' \
  -H 'Content-Type: application/json' \
  -d '{"prompt": "upbeat pop song"}'
```

---

## 2. ์‘๋‹ต ํ˜•์‹

๋ชจ๋“  API ์‘๋‹ต์€ ํ†ตํ•ฉ ๋ž˜ํผ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

```json
{
  "data": { ... },
  "code": 200,
  "error": null,
  "timestamp": 1700000000000,
  "extra": null
}
```

| ํ•„๋“œ | ํƒ€์ž… | ์„ค๋ช… |
| :--- | :--- | :--- |
| `data` | any | ์‹ค์ œ ์‘๋‹ต ๋ฐ์ดํ„ฐ |
| `code` | int | ์ƒํƒœ ์ฝ”๋“œ (200=์„ฑ๊ณต) |
| `error` | string | ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ (์„ฑ๊ณต ์‹œ null) |
| `timestamp` | int | ์‘๋‹ต ํƒ€์ž„์Šคํƒฌํ”„ (๋ฐ€๋ฆฌ์ดˆ) |
| `extra` | any | ์ถ”๊ฐ€ ์ •๋ณด (๋ณดํ†ต null) |

---

## 3. ์ž‘์—… ์ƒํƒœ ์„ค๋ช…

์ž‘์—… ์ƒํƒœ(`status`)๋Š” ์ •์ˆ˜๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค:

| ์ƒํƒœ ์ฝ”๋“œ | ์ƒํƒœ ์ด๋ฆ„ | ์„ค๋ช… |
| :--- | :--- | :--- |
| `0` | ๋Œ€๊ธฐ ์ค‘/์‹คํ–‰ ์ค‘ | ์ž‘์—…์ด ๋Œ€๊ธฐ์—ด์— ์žˆ๊ฑฐ๋‚˜ ์ง„ํ–‰ ์ค‘์ž„ |
| `1` | ์„ฑ๊ณต | ์ƒ์„ฑ์ด ์„ฑ๊ณต์ ์ด๋ฉฐ ๊ฒฐ๊ณผ๊ฐ€ ์ค€๋น„๋จ |
| `2` | ์‹คํŒจ | ์ƒ์„ฑ ์‹คํŒจ |

---

## 4. ์ƒ์„ฑ ์ž‘์—… ์ƒ์„ฑ

### 4.1 API ์ •์˜

- **URL**: `/release_task`
- **Method**: `POST`
- **Content-Type**: `application/json`, `multipart/form-data`, ๋˜๋Š” `application/x-www-form-urlencoded`

### 4.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)

ํ…์ŠคํŠธ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์˜ค๋””์˜ค ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

**๊ธฐ๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ**:

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `prompt` | string | `""` | ์Œ์•… ์„ค๋ช… ํ”„๋กฌํ”„ํŠธ (๋ณ„์นญ: `caption`) |
| `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์„ ํ†ตํ•ด ์บก์…˜/๊ฐ€์‚ฌ/๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ž๋™ ์ƒ์„ฑ) |
| `sample_query` | string | `""` | ์ƒ˜ํ”Œ ์ƒ์„ฑ์„ ์œ„ํ•œ ์ž์—ฐ์–ด ์„ค๋ช… (์˜ˆ: "์กฐ์šฉํ•œ ์ €๋…์„ ์œ„ํ•œ ๋ถ€๋“œ๋Ÿฌ์šด ๋ฒต๊ณจ์–ด ์‚ฌ๋ž‘ ๋…ธ๋ž˜"). ๋ณ„์นญ: `description`, `desc` |
| `use_format` | bool | `false` | LM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ณต๋œ ์บก์…˜๊ณผ ๊ฐ€์‚ฌ๋ฅผ ๊ฐœ์„ /ํฌ๋งทํŒ…ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ: `format` |

**๋‹ค์ค‘ ๋ชจ๋ธ ์ง€์›**:

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `model` | string | null | ์‚ฌ์šฉํ•  DiT ๋ชจ๋ธ ์„ ํƒ (์˜ˆ: `"acestep-v15-turbo"`, `"acestep-v15-turbo-shift3"`). `/v1/models`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก์„ ํ™•์ธํ•˜์„ธ์š”. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. |

**thinking ์˜๋ฏธ๋ก  (์ค‘์š”)**:

- `thinking=false`:
  - ์„œ๋ฒ„๋Š” `audio_code_string`์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 5Hz LM์„ ์‚ฌ์šฉํ•˜์ง€ **์•Š์Šต๋‹ˆ๋‹ค**.
  - DiT๋Š” **text2music** ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ ์ œ๊ณต๋œ `audio_code_string`์„ **๋ฌด์‹œ**ํ•ฉ๋‹ˆ๋‹ค.
- `thinking=true`:
  - ์„œ๋ฒ„๋Š” `audio_code_string`์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 5Hz LM์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (lm-dit ๋™์ž‘).
  - DiT๋Š” ํ–ฅ์ƒ๋œ ์Œ์•… ํ’ˆ์งˆ์„ ์œ„ํ•ด LM์ด ์ƒ์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

**๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ž๋™ ์™„์„ฑ (์กฐ๊ฑด๋ถ€)**:

`use_cot_caption=true` ๋˜๋Š” `use_cot_language=true`์ด๊ฑฐ๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„๋“œ๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” `caption`/`lyrics`๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ˆ„๋ฝ๋œ ํ•„๋“œ๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด 5Hz LM์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

- `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/4, 3/4, 4/4, 6/8์˜ ๊ฒฝ์šฐ 2, 3, 4, 6). ๋ณ„์นญ: `timesignature`, `timeSignature` |
| `audio_duration` | float | null | ์ƒ์„ฑ ๊ธธ์ด (์ดˆ), ๋ฒ”์œ„ 10-600. ๋ณ„์นญ: `duration`, `target_duration` |

**์˜ค๋””์˜ค ์ฝ”๋“œ (์„ ํƒ ์‚ฌํ•ญ)**:

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `audio_code_string` | string or 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). Turbo ๋ชจ๋ธ์ด ์•„๋‹Œ Base ๋ชจ๋ธ์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. |
| `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` | ADG (Adaptive Dual Guidance) ์‚ฌ์šฉ (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 ํŒŒ๋ผ๋ฏธํ„ฐ (์„ ํƒ ์‚ฌํ•ญ, ์„œ๋ฒ„์ธก)**:

์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ž๋™ ์™„์„ฑ ๋ฐ (thinking=true์ผ ๋•Œ) ์ฝ”๋“œ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋˜๋Š” 5Hz LM ์ƒ˜ํ”Œ๋ง์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `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 (Chain-of-Thought) ํŒŒ๋ผ๋ฏธํ„ฐ**:

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `use_cot_caption` | bool | `true` | CoT ์ถ”๋ก ์„ ํ†ตํ•ด LM์ด ์ž…๋ ฅ๋œ ์บก์…˜์„ ๋‹ค์‹œ ์“ฐ๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ: `cot_caption`, `cot-caption` |
| `use_cot_language` | bool | `true` | CoT๋ฅผ ํ†ตํ•ด LM์ด ๊ฐ€์ฐฝ ์–ธ์–ด๋ฅผ ๊ฐ์ง€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ: `cot_language`, `cot-language` |
| `constrained_decoding` | bool | `true` | ๊ตฌ์กฐํ™”๋œ LM ์ถœ๋ ฅ์„ ์œ„ํ•ด FSM ๊ธฐ๋ฐ˜ ์ œ์•ฝ ๋””์ฝ”๋”ฉ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ: `constrainedDecoding`, `constrained` |
| `constrained_decoding_debug` | bool | `false` | ์ œ์•ฝ ๋””์ฝ”๋”ฉ์— ๋Œ€ํ•œ ๋””๋ฒ„๊ทธ ๋กœ๊น… ํ™œ์„ฑํ™” |
| `allow_lm_batch` | bool | `true` | ํšจ์œจ์„ฑ์„ ์œ„ํ•ด LM ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ ํ—ˆ์šฉ |

**ํŽธ์ง‘/์ฐธ์กฐ ์˜ค๋””์˜ค ํŒŒ๋ผ๋ฏธํ„ฐ** (์„œ๋ฒ„์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ํ•„์š”):

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `reference_audio_path` | string | null | ์ฐธ์กฐ ์˜ค๋””์˜ค ๊ฒฝ๋กœ (Style Transfer) |
| `src_audio_path` | string | null | ์†Œ์Šค ์˜ค๋””์˜ค ๊ฒฝ๋กœ (Repainting/Cover) |
| `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` ๋˜๋Š” `ref_audio`: (ํŒŒ์ผ) ์ฐธ์กฐ ์˜ค๋””์˜ค ํŒŒ์ผ ์—…๋กœ๋“œ
- `src_audio` ๋˜๋Š” `ctx_audio`: (ํŒŒ์ผ) ์†Œ์Šค ์˜ค๋””์˜ค ํŒŒ์ผ ์—…๋กœ๋“œ

> **์ฐธ๊ณ **: ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋ฉด ํ•ด๋‹น `_path` ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๋ฌด์‹œ๋˜๊ณ  ์‹œ์Šคํ…œ์€ ์—…๋กœ๋“œ ํ›„ ์ƒ์„ฑ๋œ ์ž„์‹œ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

### 4.3 ์‘๋‹ต ์˜ˆ์‹œ

```json
{
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "queued",
    "queue_position": 1
  },
  "code": 200,
  "error": null,
  "timestamp": 1700000000000,
  "extra": null
}
```

---

## 5. ์ž‘์—… ๊ฒฐ๊ณผ ๋ฐฐ์น˜ ์กฐํšŒ

### 5.1 API ์ •์˜

- **URL**: `/query_result`
- **Method**: `POST`
- **Content-Type**: `application/json` ๋˜๋Š” `application/x-www-form-urlencoded`

### 5.2 ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ์„ค๋ช… |
| :--- | :--- | :--- |
| `task_id_list` | string (JSON array) or array | ์กฐํšŒํ•  ์ž‘์—… ID ๋ชฉ๋ก |

### 5.3 ์‘๋‹ต ์˜ˆ์‹œ

```json
{
  "data": [
    {
      "task_id": "550e8400-e29b-41d4-a716-446655440000",
      "status": 1,
      "result": "[{\"file\": \"/v1/audio?path=...\", \"wave\": \"\", \"status\": 1, \"create_time\": 1700000000, \"env\": \"development\", \"prompt\": \"upbeat pop song\", \"lyrics\": \"Hello world\", \"metas\": {\"bpm\": 120, \"duration\": 30, \"genres\": \"\", \"keyscale\": \"C Major\", \"timesignature\": \"4\"}, \"generation_info\": \"...\", \"seed_value\": \"12345,67890\", \"lm_model\": \"acestep-5Hz-lm-0.6B\", \"dit_model\": \"acestep-v15-turbo\"}]"
    }
  ],
  "code": 200,
  "error": null,
  "timestamp": 1700000000000,
  "extra": null
}
```

**Result ํ•„๋“œ ์„ค๋ช…** (result๋Š” JSON ๋ฌธ์ž์—ด์ด๋ฉฐ, ํŒŒ์‹ฑ ํ›„ ๋‹ค์Œ์„ ํฌํ•จ):

| ํ•„๋“œ | ํƒ€์ž… | ์„ค๋ช… |
| :--- | :--- | :--- |
| `file` | string | ์˜ค๋””์˜ค ํŒŒ์ผ URL (`/v1/audio` ์—”๋“œํฌ์ธํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ) |
| `wave` | string | ํŒŒํ˜• ๋ฐ์ดํ„ฐ (๋ณดํ†ต ๋น„์–ด ์žˆ์Œ) |
| `status` | int | ์ƒํƒœ ์ฝ”๋“œ (0=์ง„ํ–‰ ์ค‘, 1=์„ฑ๊ณต, 2=์‹คํŒจ) |
| `create_time` | int | ์ƒ์„ฑ ์‹œ๊ฐ„ (Unix ํƒ€์ž„์Šคํƒฌํ”„) |
| `env` | string | ํ™˜๊ฒฝ ์‹๋ณ„์ž |
| `prompt` | string | ์‚ฌ์šฉ๋œ ํ”„๋กฌํ”„ํŠธ |
| `lyrics` | string | ์‚ฌ์šฉ๋œ ๊ฐ€์‚ฌ |
| `metas` | object | ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ (bpm, duration, genres, keyscale, timesignature) |
| `generation_info` | string | ์ƒ์„ฑ ์ •๋ณด ์š”์•ฝ |
| `seed_value` | string | ์‚ฌ์šฉ๋œ ์‹œ๋“œ ๊ฐ’ (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„) |
| `lm_model` | string | ์‚ฌ์šฉ๋œ LM ๋ชจ๋ธ ๋ช… |
| `dit_model` | string | ์‚ฌ์šฉ๋œ DiT ๋ชจ๋ธ ๋ช… |

---

## 6. ์ž…๋ ฅ ํฌ๋งทํŒ… (Format Input)

### 6.1 API ์ •์˜

- **URL**: `/format_input`
- **Method**: `POST`

์ด ์—”๋“œํฌ์ธํŠธ๋Š” LLM์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์บก์…˜๊ณผ ๊ฐ€์‚ฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ํฌ๋งทํŒ…ํ•ฉ๋‹ˆ๋‹ค.

### 6.2 ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `prompt` | string | `""` | ์Œ์•… ์„ค๋ช… ํ”„๋กฌํ”„ํŠธ |
| `lyrics` | string | `""` | ๊ฐ€์‚ฌ ๋‚ด์šฉ |
| `temperature` | float | `0.85` | LM ์ƒ˜ํ”Œ๋ง ์˜จ๋„ |
| `param_obj` | string (JSON) | `"{}"` | ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” JSON ๊ฐ์ฒด (duration, bpm, key, time_signature, language) |

### 6.3 ์‘๋‹ต ์˜ˆ์‹œ

```json
{
  "data": {
    "caption": "Enhanced music description",
    "lyrics": "Formatted lyrics...",
    "bpm": 120,
    "key_scale": "C Major",
    "time_signature": "4",
    "duration": 180,
    "vocal_language": "en"
  },
  "code": 200,
  "error": null,
  "timestamp": 1700000000000,
  "extra": null
}
```

---

## 7. ๋žœ๋ค ์ƒ˜ํ”Œ ๊ฐ€์ ธ์˜ค๊ธฐ

### 7.1 API ์ •์˜

- **URL**: `/create_random_sample`
- **Method**: `POST`

์ด ์—”๋“œํฌ์ธํŠธ๋Š” ํผ ์ฑ„์šฐ๊ธฐ๋ฅผ ์œ„ํ•ด ์‚ฌ์ „ ๋กœ๋“œ๋œ ์˜ˆ์ œ ๋ฐ์ดํ„ฐ์—์„œ ์ž„์˜์˜ ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

### 7.2 ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- | :--- |
| `sample_type` | string | `"simple_mode"` | ์ƒ˜ํ”Œ ์œ ํ˜•: `"simple_mode"` ๋˜๋Š” `"custom_mode"` |

---

## 8. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก

### 8.1 API ์ •์˜

- **URL**: `/v1/models`
- **Method**: `GET`

์„œ๋ฒ„์— ๋กœ๋“œ๋œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ DiT ๋ชจ๋ธ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

### 8.2 ์‘๋‹ต ์˜ˆ์‹œ

```json
{
  "data": {
    "models": [
      {
        "name": "acestep-v15-turbo",
        "is_default": true
      },
      {
        "name": "acestep-v15-turbo-shift3",
        "is_default": false
      }
    ],
    "default_model": "acestep-v15-turbo"
  },
  "code": 200,
  "error": null,
  "timestamp": 1700000000000,
  "extra": null
}
```

---

## 9. ์„œ๋ฒ„ ํ†ต๊ณ„

### 9.1 API ์ •์˜

- **URL**: `/v1/stats`
- **Method**: `GET`

์„œ๋ฒ„ ๋Ÿฐํƒ€์ž„ ํ†ต๊ณ„๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

---

## 10. ์˜ค๋””์˜ค ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

### 10.1 API ์ •์˜

- **URL**: `/v1/audio`
- **Method**: `GET`

๊ฒฝ๋กœ๋ณ„๋กœ ์ƒ์„ฑ๋œ ์˜ค๋””์˜ค ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

### 10.2 ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ

| ํŒŒ๋ผ๋ฏธํ„ฐ ๋ช… | ํƒ€์ž… | ์„ค๋ช… |
| :--- | :--- | :--- |
| `path` | string | ์˜ค๋””์˜ค ํŒŒ์ผ์˜ URL ์ธ์ฝ”๋”ฉ๋œ ๊ฒฝ๋กœ |

---

## 11. ํ—ฌ์Šค ์ฒดํฌ

### 11.1 API ์ •์˜

- **URL**: `/health`
- **Method**: `GET`

์„œ๋น„์Šค ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

---

## 12. ํ™˜๊ฒฝ ๋ณ€์ˆ˜

API ์„œ๋ฒ„๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

### ์„œ๋ฒ„ ๊ตฌ์„ฑ

| ๋ณ€์ˆ˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- |
| `ACESTEP_API_HOST` | `127.0.0.1` | ์„œ๋ฒ„ ๋ฐ”์ธ๋“œ ํ˜ธ์ŠคํŠธ |
| `ACESTEP_API_PORT` | `8001` | ์„œ๋ฒ„ ๋ฐ”์ธ๋“œ ํฌํŠธ |
| `ACESTEP_API_KEY` | (๋น„์–ด ์žˆ์Œ) | API ์ธ์ฆ ํ‚ค (๋น„์–ด ์žˆ์œผ๋ฉด ์ธ์ฆ ๋น„ํ™œ์„ฑํ™”) |
| `ACESTEP_API_WORKERS` | `1` | API ์›Œ์ปค ์Šค๋ ˆ๋“œ ์ˆ˜ |

### ๋ชจ๋ธ ๊ตฌ์„ฑ

| ๋ณ€์ˆ˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- |
| `ACESTEP_CONFIG_PATH` | `acestep-v15-turbo` | ์ฃผ DiT ๋ชจ๋ธ ๊ฒฝ๋กœ |
| `ACESTEP_DEVICE` | `auto` | ๋ชจ๋ธ ๋กœ๋”ฉ ์žฅ์น˜ |
| `ACESTEP_OFFLOAD_TO_CPU` | `false` | ์œ ํœด ์‹œ ๋ชจ๋ธ์„ CPU๋กœ ์˜คํ”„๋กœ๋“œ |

### LM ๊ตฌ์„ฑ

| ๋ณ€์ˆ˜ | ๊ธฐ๋ณธ๊ฐ’ | ์„ค๋ช… |
| :--- | :--- | :--- |
| `ACESTEP_INIT_LLM` | auto | ์‹œ์ž‘ ์‹œ LM์„ ์ดˆ๊ธฐํ™”ํ• ์ง€ ์—ฌ๋ถ€ (GPU์— ๋”ฐ๋ผ ์ž๋™ ๊ฒฐ์ •) |
| `ACESTEP_LM_MODEL_PATH` | `acestep-5Hz-lm-0.6B` | ๊ธฐ๋ณธ 5Hz LM ๋ชจ๋ธ |
| `ACESTEP_LM_BACKEND` | `vllm` | LM ๋ฐฑ์—”๋“œ (vllm ๋˜๋Š” pt) |

---

## ์—๋Ÿฌ ์ฒ˜๋ฆฌ

**HTTP ์ƒํƒœ ์ฝ”๋“œ**:

- `200`: ์„ฑ๊ณต
- `400`: ์ž˜๋ชป๋œ ์š”์ฒญ (์ž˜๋ชป๋œ JSON, ๋ˆ„๋ฝ๋œ ํ•„๋“œ)
- `401`: ๋ฏธ์ธ์ฆ (๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ API ํ‚ค)
- `429`: ์„œ๋ฒ„ ๋ฐ”์จ (๋Œ€๊ธฐ์—ด์ด ๊ฐ€๋“ ์ฐธ)
- `500`: ๋‚ด๋ถ€ ์„œ๋ฒ„ ์˜ค๋ฅ˜

---

## ๋ชจ๋ฒ” ์‚ฌ๋ก€

1.  **`thinking=true`๋ฅผ ์‚ฌ์šฉ**ํ•˜์—ฌ LM์ด ํ–ฅ์ƒ๋œ ์ƒ์„ฑ ํ’ˆ์งˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์„ธ์š”.
2.  ์ž์—ฐ์–ด ์„ค๋ช…์—์„œ ๋น ๋ฅธ ์ƒ์„ฑ์„ ์œ„ํ•ด **`sample_query`/`description`์„ ์‚ฌ์šฉ**ํ•˜์„ธ์š”.
3.  ์บก์…˜/๊ฐ€์‚ฌ๊ฐ€ ์žˆ์ง€๋งŒ LM์ด ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ๋ฅผ ์›ํ•  ๋•Œ **`use_format=true`๋ฅผ ์‚ฌ์šฉ**ํ•˜์„ธ์š”.
4.  `/query_result` ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ์ž‘์—… ์ƒํƒœ๋ฅผ **๋ฐฐ์น˜ ์กฐํšŒ**ํ•˜์„ธ์š”.
5.  **/v1/stats๋ฅผ ํ™•์ธ**ํ•˜์—ฌ ์„œ๋ฒ„ ๋ถ€ํ•˜์™€ ํ‰๊ท  ์ž‘์—… ์‹œ๊ฐ„์„ ํŒŒ์•…ํ•˜์„ธ์š”.
6.  **๋ณด์•ˆ์„ ์œ„ํ•ด** `ACESTEP_API_KEY`๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”.