Skip to Content

Qwen 시리즈

Alibaba Cloud Qwen(통의천문)의 텍스트 모델로 Qwen3.8, Qwen3.7, Qwen3.6 시리즈와 Qwen Flash, Qwen Plus가 있습니다. OpenAI 호환 API로 호출하며, Qwen3.x 시리즈는 Anthropic 네이티브 API도 지원합니다. 이미지 생성 모델은 Qwen-Image를 참고하십시오.

주요 작업

모델

전체 모델 목록과 실시간 가격은 모델 페이지 를 참고하거나 Models API로 조회하십시오. 모델 ID에서 qwen/ 접두사를 생략할 수 있습니다.

주요 모델 ID(호출 시 그대로 복사)
Qwen3.8 Maxqwen/qwen3.8-max이미지 입력 지원
Qwen3.8 Flashqwen/qwen3.8-flash이미지 입력 지원
Qwen3.7 Plusqwen/qwen3.7-plus이미지 입력 지원
Qwen Flashqwen/qwen-flash기본적으로 사고하지 않음, 텍스트 전용
기능지원 모델
이미지 입력Qwen3.8 Max, 3.8 Flash, 3.8 27B, 3.7 Plus, 3.6 Flash
Anthropic 네이티브 APIQwen3.8, 3.7, 3.6 시리즈, Qwen Flash
Responses APIQwen3.8, 3.7 시리즈, Qwen Flash 등. Models API의 supported_endpoints 기준

Qwen 모델은 Alibaba Cloud Model Studio(百炼)가 제공하며, 중국 사이트(aliyun)와 국제 사이트(alicloud) 두 공급자가 있고 기본적으로 자동 선택됩니다. 지정 방법은 공급자 라우팅을 참고하십시오.

호출 예시

qwen_basic.py
import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) resp = client.chat.completions.create( model="qwen/qwen3.8-flash", messages=[{"role": "user", "content": "멱등성이 무엇인지 한 문장으로 설명해 주세요."}], extra_body={"enable_thinking": False}, ) print(resp.choices[0].message.content)

사고 모드

요점Qwen3.x 시리즈는 기본적으로 사고가 켜져 있어 복잡한 질문에는 수만 토큰을 사고하며 몇 분이 걸릴 수 있습니다. 필요에 따라 끄거나 thinking_budget으로 사고 길이를 제한하십시오.
모델기본값사고 끄기사고 켜기
Qwen3.8, 3.7, 3.6 시리즈켜짐"enable_thinking": false기본으로 켜져 있음
Qwen Flash, Qwen Plus꺼짐기본으로 꺼져 있음"enable_thinking": true

같은 수학 문제로 실측한 결과, Qwen3.8 Flash는 기본 설정으로 약 5800 토큰을 사고하며 약 1.5분이 걸렸고, Qwen3.6 Flash는 기본 설정으로 3만 토큰 이상을 사고하며 4분 이상 걸렸습니다. 사고를 끄면 둘 다 몇 초 안에 응답했습니다.

사고 길이 제한

사고는 필요하지만 소요 시간과 비용을 제어하고 싶다면 thinking_budget(사고 토큰 상한)을 전달하십시오.

qwen_thinking_budget.py
import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) resp = client.chat.completions.create( model="qwen/qwen3.8-flash", messages=[{"role": "user", "content": "n² + n + 41이 소수가 아닌 50 미만의 양의 정수 n을 모두 찾아 주세요."}], extra_body={"enable_thinking": True, "thinking_budget": 1000}, ) msg = resp.choices[0].message details = getattr(msg, "reasoning_details", None) or [] print("[사고]", "".join(d.get("text", "") for d in details)[:200], "…") print("[답변]", msg.content) print("사고 토큰:", resp.usage.completion_tokens_details.reasoning_tokens)
  • 실측 결과 thinking_budget은 엄격하게 적용됩니다. 200으로 설정하면 사고 토큰이 정확히 200입니다.
  • enable_thinking, thinking_budget은 OpenAI SDK의 표준 파라미터가 아니므로 extra_body에 넣으십시오. HTTP 요청을 직접 보낼 때는 요청 본문 최상위에 넣습니다.
  • 사고 토큰은 출력 단가로 과금되며, 수량은 usage.completion_tokens_details.reasoning_tokens에서 확인할 수 있습니다.

사고 내용 읽기

  • 스트리밍 응답에서는 사고 내용이 delta.reasoning_content에 있으며, Alibaba Cloud Model Studio 공식 API와 같습니다.
  • 비스트리밍 응답에서는 사고 내용이 message.reasoning_details에 있으며, 각 항목의 text를 순서대로 이어 붙이십시오(위 예시 참고).

이미지 입력

이미지 입력을 지원하는 모델은 표준 image_url 콘텐츠 블록을 사용합니다.

qwen_vision.py
import base64 import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) img_b64 = base64.b64encode(open("photo.png", "rb").read()).decode() resp = client.chat.completions.create( model="qwen/qwen3.8-flash", messages=[{"role": "user", "content": [ {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{img_b64}"}}, {"type": "text", "text": "이 이미지를 설명해 주세요."}, ]}], extra_body={"enable_thinking": False}, ) print(resp.choices[0].message.content)

Qwen3.7 Max, Qwen Plus, Qwen Flash는 텍스트만 지원하므로, 위 표에서 이미지 입력을 지원하는 모델을 사용하십시오.

Claude Code에서 사용

Qwen3.x 시리즈와 Qwen Flash는 Anthropic 네이티브 API를 지원하며, 주소는 https://api.ofox.ai/anthropic입니다.

Claude Code 설정 값
ANTHROPIC_BASE_URLhttps://api.ofox.ai/anthropic
ANTHROPIC_AUTH_TOKENOfoxAI API Key를 붙여 넣으십시오
ANTHROPIC_MODELqwen/qwen3.8-max
  • Anthropic API로 호출하면 사고 내용이 thinking 블록으로 반환됩니다.
  • Qwen3.8 시리즈는 사고량이 많으므로 max_tokens를 충분히 크게 설정하십시오. 실측 결과 max_tokens가 4000이면 응답에 답변 없이 thinking 블록만 있을 수 있습니다.
  • Qwen Plus는 Anthropic API를 지원하지 않으며, 호출하면 protocol_not_supported가 반환됩니다.

Claude Code의 전체 설정 방법은 Claude Code 설정을 참고하십시오.

JSON 출력과 도구 호출

response_format은 {"type": "json_object"}와 {"type": "json_schema", ...}를 지원하며, 도구 호출에는 표준 tools 파라미터를 사용합니다. json_object를 사용할 때는 프롬프트에 「JSON으로 반환」과 필요한 필드를 명시하십시오. 작성법은 구조화된 출력과 함수 호출을 참고하십시오.

프롬프트 캐싱

Qwen은 반복되는 요청 접두부를 자동으로 캐시하므로 요청을 수정할 필요가 없습니다. 적중량은 usage.prompt_tokens_details.cached_tokens에서 확인할 수 있으며, 적중한 부분은 캐시 읽기 단가로 과금됩니다. 캐시는 최선형(best effort)이므로 접두부가 같은 요청도 적중하지 않을 수 있습니다.

자주 발생하는 오류

요점요청이 매우 느리거나 답변이 비어 있다면 대개 기본으로 켜진 사고 때문입니다. 사고가 필요 없으면 끄십시오.
HTTP · type오류 원문원인해결 방법
400 invalid_request_errorThe provided messages input is invalid. The error info is [Unexpected item type in content.] 포함텍스트 전용 모델(예: Qwen3.7 Max)에 이미지를 전달함이미지 입력을 지원하는 모델로 변경. 이미지 입력 참고
400 protocol_not_supportedModel 'qwen/qwen-plus' does not support the 'anthropic' protocol on this platform.이 모델은 Anthropic API를 지원하지 않음OpenAI 호환 API를 사용하거나 Qwen3.x 시리즈로 변경
404 model_not_foundModel 'qwen/qwen9-max' not found모델 ID 철자가 틀림이 페이지에서 모델 ID를 복사
200, 답변이 비어 있거나 사고 내용만 있음—사고가 출력 한도를 모두 소진함max_tokens를 늘리거나 thinking_budget을 설정하거나 사고를 끔
요청 타임아웃—사고가 기본적으로 켜져 있어 복잡한 질문은 시간이 오래 걸림사고를 끄거나 thinking_budget을 설정하거나 스트리밍 출력을 사용하거나 클라이언트 타임아웃을 600초 이상으로 설정

기타 일반 오류는 오류 처리를 참고하십시오.

공식 문서

공식 문서는 Alibaba Cloud Model Studio에 직접 연결할 때의 동작을 설명합니다. OfoxAI에서 호출할 때는 모델 ID와 엔드포인트 주소를 이 페이지 기준으로 사용하십시오.

자주 묻는 질문

Qwen 모델 ID는 어떻게 작성합니까?

표준 표기법은 qwen/qwen3.8-flash이며, qwen/ 접두사를 생략할 수도 있습니다.

Qwen에서 사고를 끄려면 어떻게 합니까?

"enable_thinking": false를 전달하며, OpenAI SDK에서는 extra_body에 넣습니다. Qwen3.8, 3.7, 3.6 시리즈는 기본적으로 사고가 켜져 있고, Qwen Flash, Qwen Plus는 기본적으로 꺼져 있습니다.

Qwen 응답이 몇 분씩 걸릴 정도로 느립니다.

Qwen3.x 시리즈는 기본적으로 사고가 켜져 있어 복잡한 질문에는 수만 토큰을 사고할 수 있습니다. 사고를 끄거나 thinking_budget으로 사고 길이를 제한하십시오. 예: "thinking_budget": 1000.

Qwen의 thinking_budget은 어떻게 사용합니까?

"enable_thinking": true와 함께 전달하며, 값은 사고 토큰 상한입니다. 예: 1000. 실측 결과 엄격하게 적용됩니다.

Qwen에서 이미지를 인식할 수 있는 모델은 무엇입니까?

Qwen3.8 Max, 3.8 Flash, 3.8 27B, 3.7 Plus, 3.6 Flash가 이미지 입력을 지원합니다. Qwen3.7 Max, Qwen Plus, Qwen Flash는 텍스트만 지원합니다.

Claude Code에서 Qwen을 사용할 수 있습니까?

가능합니다. ANTHROPIC_BASE_URL을 https://api.ofox.ai/anthropic으로 설정하고, 모델에 qwen/qwen3.8-max 등 Qwen3.x 시리즈 모델을 입력하십시오. Qwen Plus는 Anthropic API를 지원하지 않습니다.

Qwen의 reasoning_content는 어디에 있습니까?

스트리밍 응답에서는 delta.reasoning_content에 있고, 비스트리밍 응답에서는 message.reasoning_details에 있으므로 각 항목의 text를 이어 붙이십시오.

마지막 업데이트