> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apiyi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Qwen3.8-Max 텍스트 생성

> Alibaba Qwen의 플래그십 Qwen3.8-Max: 2.4T-파라미터 희소 MoE, 1M 컨텍스트, 131K 출력, 네이티브 이미지 및 동영상 입력을 지원합니다. APIYI에 1M tokens당 $1.65/$4.95로 등록되어 있으며 — 공식 대비 17.5% 낮습니다. 586건의 실측 테스트 호출에서 얻은 기능 매트릭스와 주의 사항을 포함합니다.

Qwen3.8-Max (`qwen3.8-max`)는 2026년 8월 3일에 출시된 Alibaba Qwen의 새로운 플래그십입니다. 이는 총 2.4조 파라미터를 가진 희소 MoE 모델로, **100만 컨텍스트 윈도우**, 최대 출력 131K, 그리고 텍스트, 이미지, 동영상 입력에 대한 기본 지원을 제공합니다. APIYI는 출시 당일 이를 등록했고 이에 대해 **586회의 실시간 테스트 호출**을 수행했습니다. 이 페이지의 기능 매트릭스, 파라미터 동작, 과금 참고 사항은 모두 공식 문서를 그대로 옮긴 것이 아니라 이러한 테스트에서 나온 것입니다.

<Info>
  **Qwen3.8-Max는 APIYI에서 사용 가능합니다**: 모델 이름은 `qwen3.8-max`입니다. **추론은 기본적으로 켜져 있으며**(`xhigh` 티어에서 적용되고, 추론 token은 출력으로 과금됨), 일상적인 채팅에서는 `reasoning_effort="none"`를 명시적으로 설정하십시오. 테스트에서는 이 설정으로 출력이 대략 158 token에서 5 token으로 줄었습니다. 이전 세대는 [Qwen3.6 시리즈(레거시)](/ko/api-capabilities/qwen-3-6/overview)를 참조하십시오.
</Info>

## 이 모델을 선택하는 이유

<CardGroup cols={2}>
  <Card title="공식 대비 17.5％ 저렴" icon="tag">
    1M token당 입력 \$1.65, 출력 \$4.95로 Alibaba Cloud의 \$2/\$6보다 저렴합니다. [충전 프로모션](/ko/faq/recharge-promotions)이 추가로 적용됩니다.
  </Card>

  <Card title="1M 컨텍스트, 검증됨" icon="scroll">
    마커가 문서 중간과 끝에 숨겨진 8K / 32K / 128K 본문 전반에서 두 엔드포인트 모두 **6/6 전부를 정확히** 회수했습니다. 128K 호출은 약 80초가 걸립니다.
  </Card>

  <Card title="세 가지 모달리티, 하나의 모델" icon="eye">
    텍스트, 이미지, 동영상 입력 모두 정상 작동이 검증되었습니다 — “긴 컨텍스트 모델”과 “비전 모델”을 오갈 필요가 없습니다.
  </Card>

  <Card title="훨씬 더 강력한 에이전틱 작업" icon="wrench">
    FrontierSWE는 이전 세대의 40.7에서 **73.5**로, DeepSWE는 21.6에서 56.6으로 상승했습니다. 도구 호출 체인은 완성되었으며, 2회 왕복이 검증되었습니다.
  </Card>
</CardGroup>

## 엔드포인트 지원

| 엔드포인트                  | 상태              | 참고사항                                                                      |
| ---------------------- | --------------- | ------------------------------------------------------------------------- |
| `/v1/chat/completions` | ✅ 완전 작동         | **권장합니다.** tool calling, 구조화된 출력, 멀티모달, 스트리밍이 모두 검증되었습니다                  |
| `/v1/messages`         | ⚠️ 코드 통합에 사용 가능 | 히스토리를 다시 재생하기 전에 `thinking` 블록을 제거하십시오 — 아래의 "Anthropic 엔드포인트 사용"을 참조하십시오 |
| `/v1/responses`        | ❌ 아직 지원되지 않습니다  | 30개의 테스트 호출이 모두 실패했습니다. 업스트림에 보고되었습니다                                     |

## 가격

1M tokens당, 할인 전 정가:

| 항목        | APIYI         | Alibaba Cloud | 차이       |
| --------- | ------------- | ------------- | -------- |
| 입력        | **\$1.65**    | \$2.00        | 17.5％ 낮음 |
| 출력(추론 포함) | **\$4.95**    | \$6.00        | 17.5％ 낮음 |
| 캐시 읽기     | **\$0.20625** | \$0.25        | 17.5％ 낮음 |
| 캐시 쓰기     | **\$2.0625**  | —             | —        |

[충전 프로모션](/ko/faq/recharge-promotions)은 추가로 적용되어 더 낮은 실효 비용을 제공합니다.

## 사양

| Item                | Value                                                    |
| ------------------- | -------------------------------------------------------- |
| Model name          | `qwen3.8-max`                                            |
| Architecture        | Sparse MoE, 총 2.4조 파라미터                                  |
| Context window      | 1M tokens (생각 없이 입력 991K, 포함 시 983K)                     |
| Max output          | 131,072 tokens (범위를 벗어난 요청은 명시적 상한 `[1, 131072]`을 반환합니다) |
| Max thinking budget | 262K tokens                                              |
| Thinking mode       | 기본적으로 켜짐, 티어 `xhigh`                                     |
| Input modalities    | 텍스트, 이미지, 동영상                                            |
| Output rate         | \~19–22 tokens/s (측정됨)                                   |
| Time to first token | \~1.85 s 스트리밍 (측정된 P50)                                  |

공식 벤치마크: GPQA Diamond 92.6, PaperBench 93.0, OmniDocBench 1.5 92.1, Terminal-Bench 2.1 86.6, OSWorld-Verified 86.1, IFBench 82.8, FrontierSWE 73.5, SWE-bench Pro 67.7.

## 추론 제어(가장 중요한 섹션)

Qwen3.8-Max는 기본적으로 `xhigh` 티어에서 추론합니다. 추론 token은 출력으로 과금되며, 대개 그 90％ 이상을 차지합니다.

### 7개 값, 4개의 실제 티어

이 매개변수는 7개 값을 받지만 실제로는 4개의 실제 티어에만 매핑됩니다:

| 전달한 값                    | 실제 티어            | 실측 추론량          |
| ------------------------ | ---------------- | --------------- |
| `none`                   | 추론 끔             | 0 token         |
| `minimal` / `low`        | 낮음               | 약 100 token     |
| `medium`                 | 중간               | 약 150 token     |
| `high` / `xhigh` / `max` | 기본 티어(세 값 모두 동일) | 약 150–175 token |

`max`을 전달해도 `xhigh`보다 더 많이 추론하지는 않습니다. 그 외의 값은 허용된 집합을 나열한 400을 반환합니다.

### 추론을 끄는 방법

```python theme={null}
response = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": "Hello"}],
    reasoning_effort="none",
    max_tokens=500,
)
```

`enable_thinking: false`는 `extra_body` 및 `chat_template_kwargs: {"enable_thinking": false}`와 동등하며, 역시 작동합니다.

<Warning>
  **`max_tokens`는 추론 token을 제한하지 않습니다.** `max_tokens=1`을 설정했지만 여전히 **1,054**개 출력 token이 과금되었고, 그중 1,045개는 추론이었습니다.

  `max_tokens`은(는) 보이는 답변만 잘라냅니다. **비용을 제어하려면 `reasoning_effort`을 사용하십시오 — `max_tokens`에 의존하지 마십시오.**
</Warning>

### `thinking_budget`는 영향을 주지 않습니다

128 / 512 / 4096을 전달해도 모두 `low` 티어와 동일하게 동작합니다. 숫자 자체는 무시됩니다. **대신 `reasoning_effort`을 사용하십시오.**

## 코드 예시

### Python (OpenAI SDK 호환)

```python theme={null}
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-apiyi-key",
    base_url="https://api.apiyi.com/v1"
)

# Everyday chat: thinking off, fast and cheap
resp = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": "Explain load balancing in one sentence."}],
    reasoning_effort="none",
    max_tokens=500,
)
print(resp.choices[0].message.content)

# Hard reasoning: keep the default thinking tier
resp = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": "Prove that among any 5 integers, some 3 sum to a multiple of 3."}],
    max_tokens=4000,
)
print(resp.choices[0].message.reasoning_content)  # thinking trace
print(resp.choices[0].message.content)            # final answer
```

### 이미지 입력

```python theme={null}
import base64

with open("chart.png", "rb") as f:
    b64 = base64.b64encode(f.read()).decode()

resp = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "What number is written in this image?"},
        {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
    ]}],
    max_tokens=500,
)
```

원격 이미지 URL도 이 엔드포인트에서 작동합니다 — `url`를 `https://...` 주소로 설정하기만 하면 됩니다.

### 동영상 입력

```python theme={null}
resp = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": [
        {"type": "text", "text": "What happens in this video?"},
        {"type": "video_url", "video_url": {"url": f"data:video/mp4;base64,{b64_video}"}},
    ]}],
    max_tokens=1000,
)
```

<Tip>
  테스트에서 동영상 이해는 호출당 **144–285초**가 걸렸습니다. 클라이언트 타임아웃을 300초 이상으로 설정하고, 스트리밍 또는 비동기 작업 큐를 우선 사용하십시오.
</Tip>

또한 프레임 시퀀스 형식인 `{"type": "video", "video": [frame1, frame2, ...]}`도 있으며, **4–8000프레임**이 필요합니다. 4보다 적으면 400이 반환됩니다.

### cURL

```bash theme={null}
curl https://api.apiyi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-your-apiyi-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-max",
    "messages": [{"role": "user", "content": "Hello"}],
    "reasoning_effort": "none"
  }'
```

## 도구 호출

Chat Completions 엔드포인트의 도구 호출은 **완전히 작동합니다**: 단일 도구, 병렬 도구, 2라운드 왕복, 20개 도구 중 1개 선택, 스트리밍 델타, 그리고 `parallel_tool_calls: false` 모두 검증되었습니다.

<Warning>
  **강제 도구 호출에는 추론을 꺼야 합니다.** `tool_choice`가 `"required"`이거나 특정 함수를 지정하면, `reasoning_effort="none"`도 설정해야 합니다. 그렇지 않으면 400(`tool_choice does not support being set to required or object in thinking mode`)이 발생하거나 호출이 조용히 건너뛰어집니다.

  `tool_choice`를 `"auto"` / `"none"`로 설정해도 영향이 없습니다. 같은 내용이 `n > 1`에도 적용됩니다.
</Warning>

```python theme={null}
resp = client.chat.completions.create(
    model="qwen3.8-max",
    messages=[{"role": "user", "content": "What's the weather in Beijing?"}],
    tools=tools,
    tool_choice={"type": "function", "function": {"name": "get_weather"}},
    reasoning_effort="none",   # required
)
```

## 구조화된 출력

`response_format`를 테스트에서 `json_schema`가 **엄격하게** 유지된 상태로 사용하면: 중첩 객체, 열거형, 배열, 그리고 `additionalProperties: false`가 모두 적용되었으며, 추가 필드나 Markdown 코드 펜스는 없었습니다.

<Tip>
  **구조화된 출력에서는 추론을 비활성화합니다.** 같은 스키마를 나란히 측정한 결과입니다:

  | 구성                                        | 출력 tokens | 그중 추론 | 지연 시간 |
  | ----------------------------------------- | --------- | ----- | ----- |
  | `json_schema` + 기본 추론                     | 4,066     | 3,971 | 100 s |
  | `json_schema` + `reasoning_effort="none"` | 154       | 0     | 4.7 s |

  준수성은 동일했으며, 비용과 지연 시간은 한 자릿수 차이였습니다.
</Tip>

## 컨텍스트 캐싱

* **약 1,024 token 부근에서 적중 임계값**: 818-token 접두사는 미적중이었고, 1,070 tokens 이상은 적중했습니다
* **실제 다중 턴 대화는 적중합니다**: 메시지를 턴마다 추가하면 매 라운드마다 적중했습니다
* **긴 문서에서 가장 큰 효과가 있습니다**: 128K에서 입력의 98.6％가 캐시되었고, 32K에서 99.3％가 캐시되었습니다

<Warning>
  테스트에서 캐시 적중은 **안정적이지 않았습니다** — 동일한 접두사가 어떤 라운드에서는 적중하고 다른 라운드에서는 미적중이었으며, TTL은 API 응답으로부터 신뢰성 있게 추론할 수 없습니다. 캐싱은 발생하면 보너스로 취급하고, **이를 바탕으로 비용 추정을 세우지 마십시오.**
</Warning>

## Anthropic 엔드포인트 사용

`/v1/messages`는 코드 통합에는 유용하지만, 기록을 재생하기 전에 `thinking` 블록을 반드시 제거해야 합니다. 그렇지 않으면 400(`if content is list. item must be dict and key[type] should in dict`)이 발생합니다.

```python theme={null}
def strip_thinking(blocks):
    return [b for b in blocks if b.get("type") != "thinking"]

messages.append({"role": "assistant", "content": strip_thinking(resp["content"])})
```

해당 필터를 적용한 상태에서 3턴 간 교차 턴 메모리, 2라운드 도구 왕복, 그리고 후속 턴으로 지속되는 도구 결과를 검증했습니다.

<Warning>
  **Claude Code 같은 기성 클라이언트는 아직 사용할 수 없습니다** — 기본적으로 기록 콘텐츠 블록을 그대로 재생하며 동작을 변경할 수 없으므로 두 번째 턴에서 400이 반환됩니다. 대신 `/v1/chat/completions`를 사용하십시오.
</Warning>

이 엔드포인트의 다른 차이점은 다음과 같습니다: `response_format`은 조용히 무시됩니다(구조화된 출력을 위해 도구 호출을 강제하십시오), `tool_choice`은 OpenAI 형식만 허용합니다, 이미지는 base64여야 하며(원격 URL은 400을 반환합니다), 그리고 `reasoning_effort`은 아무 영향도 없습니다(추론을 끄려면 `thinking: {"type": "disabled"}`를 사용하십시오).

## 파라미터 호환성

| Parameter                                          | Status | Notes                                                            |
| -------------------------------------------------- | ------ | ---------------------------------------------------------------- |
| `temperature`                                      | ✅      | 유효 범위 `[0.0, 2.0)`; 2를 전달하면 400이 반환됩니다                           |
| `top_p`                                            | ✅      | 유효 범위 `(0.0, 1.0]`                                               |
| `top_k` / `presence_penalty` / `frequency_penalty` | ✅      |                                                                  |
| `stop` / `stop_sequences`                          | ✅      | 두 엔드포인트에서 모두 작동합니다                                               |
| `logprobs` / `top_logprobs`                        | ✅      |                                                                  |
| `stream` + `stream_options`                        | ✅      | 스트리밍에서는 항상 usage가 반환됩니다. 긴 스트리밍은 끝부분이 지연되지 않고 깔끔하게 종료됩니다         |
| `partial: true`                                    | ✅      | 접두사 이어서 쓰기입니다. 이어쓰기 중에는 추론이 수행되지 않습니다                            |
| `n > 1`                                            | ⚠️     | `reasoning_effort="none"`이 필요합니다                                 |
| `seed`                                             | ❌      | 동일한 seed가 다른 출력을 생성했습니다 — 결정성이 보장되지 않습니다                         |
| `prefix: true`                                     | ❌      | 영향이 없습니다; `partial: true`을 사용하십시오                                |
| `thinking_budget`                                  | ❌      | 숫자 값은 무시됩니다                                                      |
| Built-in web search                                | ❌      | `enable_search`과 `tools: [{"type": "web_search"}]`이 모두 조용히 제거됩니다 |

## 모범 사례

<CardGroup cols={2}>
  <Card title="일상 대화 및 대량 호출" icon="zap">
    `reasoning_effort="none"`을 명시적으로 설정하십시오. 측정된 지연 시간은 약 5초에서 2초로 줄었고, output tokens는 대략 1/30로 감소했습니다.
  </Card>

  <Card title="긴 문서 및 코드베이스" icon="scroll">
    128K recall은 테스트에서 정확했으며, 긴 문서의 캐시 적중률이 높습니다. 큰 문서는 메시지 목록 앞쪽에 두고 질문은 끝에 두십시오.
  </Card>

  <Card title="데이터 추출" icon="braces">
    `json_schema`로 제약을 걸고 thinking을 비활성화하십시오. 준수도는 영향을 받지 않습니다.
  </Card>

  <Card title="에이전트 및 도구 오케스트레이션" icon="wrench">
    `/v1/chat/completions`를 사용하십시오. 도구 호출을 강제할 때는 thinking을 비활성화하는 것을 잊지 마십시오.
  </Card>
</CardGroup>

## 자주 묻는 질문

<AccordionGroup>
  <Accordion title="max_tokens를 설정한 뒤에도 왜 여전히 많은 token이 청구됩니까?">
    `max_tokens`는 보이는 응답만 제한하며, 추론 부분은 제한하지 않습니다. 저희는 `max_tokens=1`에서 청구된 출력 token 1,054개를 측정했습니다. 비용을 제어하려면 `reasoning_effort="none"`를 사용하십시오.
  </Accordion>

  <Accordion title="이름이 지정된 함수가 있는 tool_choice는 왜 400을 반환합니까?">
    추론이 켜져 있는 동안에는 강제 tool choice를 지원하지 않습니다. `reasoning_effort="none"`를 함께 전달하십시오.
  </Accordion>

  <Accordion title="왜 /v1/responses에 도달할 수 없습니까?">
    이 엔드포인트는 아직 이 모델에 연결되지 않았습니다. 30번의 테스트 호출이 모두 실패했으며, 오류 코드는 404와 400 사이를 번갈아 가며 나타났습니다. 상위 쪽에 보고되었으며, 사용 가능해지면 [Live Updates](/en/live)에서 공지하겠습니다. 대신 `/v1/chat/completions`를 사용하십시오.
  </Accordion>

  <Accordion title="이 모델을 Claude Code에서 사용할 수 있습니까?">
    아직은 불가능합니다. `/v1/messages` 엔드포인트는 `thinking` 블록을 포함한 기록 메시지를 거부하며, Claude Code는 이를 그대로 재생합니다. 직접 작성한 코드에서 호출할 때는 해당 블록을 제거하면 엔드포인트가 정상적으로 동작합니다.
  </Accordion>

  <Accordion title="왜 usage에서 reasoning_tokens가 때때로 누락됩니까?">
    이 모델은 여러 upstream 경로를 통해 제공되며, 그중 하나는 `reasoning_tokens` 또는 `cached_tokens`를 보고하지 않습니다. 이는 전체 chat 요청의 약 3분의 1에서 측정되었습니다. 정합성을 위해 상위 쪽에 보고되었습니다. 정확한 추론 비용 집계가 필요하다면 염두에 두십시오.
  </Accordion>

  <Accordion title="왜 동영상 호출은 이렇게 느립니까?">
    동영상 이해는 호출당 144\~285초가 측정되었으며, 이는 모델 자체의 처리 시간입니다. timeout을 300초 이상으로 설정하고 비동기 큐를 고려하십시오.
  </Accordion>
</AccordionGroup>

## 관련

* [Qwen3.8-Max 플레이그라운드](/ko/api-capabilities/qwen-3-8/chat-completions) — 요청을 직접 전송합니다
* [Qwen3.6 시리즈(레거시)](/ko/api-capabilities/qwen-3-6/overview) — 이전 다섯 개 모델입니다
* [Qwen3.8-Max 출시 노트](/en/news/qwen-3-8-max-launch) — 벤치마크와 전체 설명입니다
* [모델 요금](/en/models) — 모델별 요율, 캐시 요금, 사용 가능한 엔드포인트입니다
* [충전 프로모션](/ko/faq/recharge-promotions) — 중복 적용 가능한 할인입니다

<Info>
  이 페이지의 측정값은 2026-08-03(12:50–14:35 UTC+8)에 수행한 586회의 실시간 호출에서 가져왔습니다. 과금 관련 결론은 API가 반환한 usage 필드를 기준으로 하며, 송장과 한 줄씩 대조하지는 않았습니다. 채널 조정에 따라 모델 및 게이트웨이 동작은 변경될 수 있으므로, 실시간 호출을 기준 소스로 보아야 합니다.
</Info>
