본문 바로가기

Claude

Opus 4.7 절반 가격에 필적하는 성능 — Qwen 3.7 Max 실전 개발자 가이드

반응형

"Claude Code 그대로 쓰면서 모델만 Qwen으로 바꾸면 비용이 반 토막 난다." Alibaba가 5월 20일 공개한 Qwen 3.7 Max는 단순 버전 업이 아니다. Anthropic Messages 프로토콜을 네이티브로 지원해 Claude Code 하네스에 URL과 모델 ID만 바꿔서 꽂을 수 있다. 1M 토큰 컨텍스트, 기본 활성화된 Extended Thinking, 그리고 입력 토큰 90% 캐시 할인까지. 에이전트 코딩 비용을 줄이고 싶다면 지금 당장 테스트해볼 이유가 충분하다.


핵심 요약

→ Qwen 3.7 Max-Preview는 5월 19일 API 라이브, 5월 20일 Alibaba Cloud Summit에서 공식 발표 — Qwen 3.6 Max Preview를 대체하는 플래그십 추론 모델
→ DashScope 가격: 입력 $2.50/1M 토큰, 출력 $7.50/1M 토큰 — 오픈 웨이트 없음, API 전용
→ 네이티브 Anthropic Messages 프로토콜 지원 — 번역 심 없이 Claude Code, OpenClaw, Anthropic SDK를 base URL과 모델 ID만 바꿔 바로 연결 가능
→ 1M 토큰 네이티브 컨텍스트 + 슬라이딩 윈도 근사값이 아님 — MRCR-v2 128k 검색 벤치마크 90.4점으로 실제 장문 처리 검증됨
→ 캐시 입력 90% 할인 적용 시 $0.25/1M — 반복 에이전트 루프에서 실질 비용이 급감
주의: 기본 Extended Thinking이 출력을 장황하게 만들어 실제 장기 에이전트 세션에서 헤드라인 요금의 3~4배 비용이 나올 수 있음 — max_tokens 캡 설정 필수
→ Intelligence Index 56.6 (전 세계 상위 10위, 중국 모델 중 1위) — GPT-5.5(60.2), Opus 4.7(57.3)보다는 낮음
→ Claude Code, OpenClaw, Qwen Code 크로스 하네스 통합 공식 지원 — preserve_thinking 기능으로 멀티턴 에이전트 추론 맥락 유지


1. 빠른 시작 — DashScope API 키 발급

# 1단계: Alibaba Cloud 계정 생성
# https://dashscope.aliyuncs.com
# → 국제 계정은 Singapore 리전 선택 필수
# → 종량제(pay-as-you-go) 청구 활성화

# 2단계: API 키 발급
# Alibaba Cloud Model Studio 콘솔 → API Key 생성
# → 키 형식: sk-xxxxxxxxxxxxxxxx

# 3단계: 환경 변수 설정
export DASHSCOPE_API_KEY="sk-your-key-here"

2. API 호출 — OpenAI SDK 방식

Qwen 3.7 Max는 OpenAI 호환 요청 형식을 지원 — OpenAI SDK를 쓰던 코드에서 base_url과 model만 교체하면 된다.

# Python — OpenAI SDK 방식
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 국제 엔드포인트 (한국에서 사용 시 이걸로)
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role": "user", "content": "Python으로 이진 탐색 트리 구현해줘"}
    ],
    max_tokens=4096,  # ⚠️ 반드시 명시적으로 설정 — 기본값이 매우 큼
)

print(response.choices[0].message.content)
# Extended Thinking 명시적 제어
response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role": "user", "content": "이 알고리즘의 시간복잡도 분석해줘"}
    ],
    extra_body={
        "enable_thinking": True,   # 기본값 True — 복잡한 추론 태스크에 적합
        # "enable_thinking": False, # 단순 태스크는 끄면 토큰·비용 절약
    },
    max_tokens=8192,
)

# thinking 내용과 실제 답변 분리
message = response.choices[0].message
if hasattr(message, 'reasoning_content'):
    print("=== 추론 과정 ===")
    print(message.reasoning_content)  # 내부 사고 과정
print("=== 최종 답변 ===")
print(message.content)
// Node.js — OpenAI SDK 방식
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
});

const response = await client.chat.completions.create({
  model: "qwen3.7-max",
  messages: [{ role: "user", content: "Express.js REST API 보일러플레이트 만들어줘" }],
  max_tokens: 4096,
  stream: false,
});

console.log(response.choices[0].message.content);

3. Claude Code에 Qwen 3.7 Max 연결하기

Qwen 3.7 Max는 Anthropic Messages 프로토콜을 네이티브로 지원 — Claude Code를 그대로 쓰면서 base URL과 모델 ID만 바꿔 Qwen으로 라우팅할 수 있다.

# 환경 변수 설정 (터미널에서 claude 실행 전)
export ANTHROPIC_MODEL="qwen3-max-2026-01-23"
export ANTHROPIC_SMALL_FAST_MODEL="qwen3-max-2026-01-23"
export ANTHROPIC_BASE_URL="https://dashscope.aliyuncs.com/apps/anthropic"
export ANTHROPIC_AUTH_TOKEN="your-dashscope-api-key"  # Anthropic 키 아님!

# Claude Code 실행 — 내부적으로 Qwen이 처리
claude
# 프로젝트별 .env 파일로 관리 (팀 공유 시)
# .env.qwen
ANTHROPIC_MODEL=qwen3-max-2026-01-23
ANTHROPIC_SMALL_FAST_MODEL=qwen3-max-2026-01-23
ANTHROPIC_BASE_URL=https://dashscope.aliyuncs.com/apps/anthropic
ANTHROPIC_AUTH_TOKEN=sk-your-dashscope-key

# 실행
source .env.qwen && claude
# ⚠️ 자주 발생하는 인증 오류 해결
# 오류: "Authentication failed"
# 원인 1: Model Studio 키가 Singapore 리전이 아님 → 리전 재확인
# 원인 2: 종량제 청구가 활성화 안 됨 → Alibaba Cloud 콘솔에서 활성화
# 원인 3: env var가 다른 셸에서 export됨 → 같은 셸 세션에서 실행

4. OpenRouter 경유 — 가장 빠른 시작

DashScope 계정 없이 바로 테스트하고 싶다면 OpenRouter를 쓴다.

# OpenRouter 경유 — API 키 1개로 Claude·GPT·Qwen 전부 접근
from openai import OpenAI

client = OpenAI(
    api_key="sk-or-your-openrouter-key",  # openrouter.ai에서 발급
    base_url="https://openrouter.ai/api/v1",
)

response = client.chat.completions.create(
    model="qwen/qwen3.7-max",  # OpenRouter 모델 ID
    messages=[
        {"role": "user", "content": "React 컴포넌트 성능 최적화 방법 알려줘"}
    ],
    max_tokens=4096,
)

print(response.choices[0].message.content)
# curl로 빠른 테스트
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen/qwen3.7-max",
    "messages": [{"role": "user", "content": "안녕"}],
    "max_tokens": 100
  }'

5. preserve_thinking — 에이전트 멀티턴 핵심 설정

preserve_thinking 기능은 멀티턴 대화에서 이전 턴의 추론 내용을 모두 유지 — Qwen 팀은 에이전트 태스크에 이 기능 활성화를 권장한다.

# 멀티턴 에이전트 루프 — preserve_thinking 적용
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

conversation_history = []

def agent_turn(user_input: str) -> str:
    conversation_history.append({
        "role": "user",
        "content": user_input
    })

    response = client.chat.completions.create(
        model="qwen3.7-max",
        messages=conversation_history,
        max_tokens=8192,
        extra_body={
            "enable_thinking": True,
            "preserve_thinking": True,  # 이전 턴 추론 맥락 유지 ← 핵심
        }
    )

    assistant_message = response.choices[0].message.content
    conversation_history.append({
        "role": "assistant",
        "content": assistant_message
    })
    return assistant_message

# 장기 코딩 에이전트 세션 예시
print(agent_turn("billing.ts 파일의 Stripe 웹훅 핸들러를 별도 파일로 분리해줘"))
print(agent_turn("방금 분리한 파일에 타입 에러가 있어. 찾아서 고쳐줘"))
print(agent_turn("테스트 코드도 업데이트해줘"))
# → preserve_thinking 덕분에 세 번째 턴에서도 1·2턴의 맥락 유지

6. 비용 계산 — 실전 시나리오

# 비용 계산 유틸리티
def estimate_cost(
    input_tokens: int,
    output_tokens: int,
    thinking_tokens: int = 0,
    is_cached: bool = False
) -> dict:
    """
    Qwen 3.7 Max 비용 계산
    - 일반 입력: $2.50/1M
    - 캐시 입력: $0.25/1M (90% 할인)
    - 출력 (thinking 포함): $7.50/1M
    """
    input_price = 0.25 if is_cached else 2.50
    output_price = 7.50

    input_cost = (input_tokens / 1_000_000) * input_price
    output_cost = ((output_tokens + thinking_tokens) / 1_000_000) * output_price

    return {
        "input_cost": round(input_cost, 6),
        "output_cost": round(output_cost, 6),
        "total": round(input_cost + output_cost, 6)
    }

# 시나리오별 비용 비교
scenarios = [
    # (설명, 입력토큰, 출력토큰, thinking토큰, 캐시여부)
    ("일반 코딩 요청", 2_000, 1_000, 500, False),
    ("대용량 코드베이스 리뷰", 100_000, 5_000, 3_000, False),
    ("반복 에이전트 (캐시 적용)", 100_000, 5_000, 3_000, True),
    ("35시간 자율 에이전트 세션", 500_000, 50_000, 30_000, True),
]

print("=== Qwen 3.7 Max 비용 시나리오 ===")
for name, inp, out, think, cached in scenarios:
    cost = estimate_cost(inp, out, think, cached)
    print(f"\n{name}")
    print(f"  총 비용: ${cost['total']}")
    print(f"  (입력: ${cost['input_cost']} | 출력+thinking: ${cost['output_cost']})")
=== Qwen 3.7 Max 비용 시나리오 ===

일반 코딩 요청
  총 비용: $0.016250
  (입력: $0.005 | 출력+thinking: $0.011)

대용량 코드베이스 리뷰
  총 비용: $0.310000
  (입력: $0.25 | 출력+thinking: $0.06)

반복 에이전트 (캐시 적용)
  총 비용: $0.085000
  (입력: $0.025 | 출력+thinking: $0.06)
  → 캐시 적용으로 비용 72% 절감

35시간 자율 에이전트 세션
  총 비용: $0.725000
  (입력: $0.125 | 출력+thinking: $0.6)
  # ⚠️ thinking 토큰이 비용의 대부분 차지
  # max_tokens로 thinking 출력 제한 필수

7. 모델 선택 가이드

# Qwen 3.7 Max vs 경쟁 모델 — 언제 뭘 쓰나

Qwen 3.7 Max 선택 기준
✅ 긴 코딩 에이전트 루프 (1M 컨텍스트 + 캐시 할인)
✅ Claude Code 하네스 재사용하면서 비용 절감
✅ 대용량 리포지토리 분석 (100K+ 토큰 컨텍스트)
✅ 한국어·중국어 멀티링구얼 코딩 태스크
✅ 미국 데이터 주권 요건 없는 프로젝트

Claude Opus 4.7 선택 기준
✅ 사람이 각 diff를 검토하는 인터랙티브 코딩
✅ 주관적 코드 품질·아키텍처 결정이 중요할 때
✅ 미국 데이터 주권 요건 있는 엔터프라이즈

GPT-5.5 선택 기준
✅ 원샷 추론 최강 (Intelligence Index 60.2로 1위)
✅ FrontierMath Tier 4 최고 성능 필요할 때

DeepSeek V4 Pro 선택 기준
✅ 자체 호스팅이 필요한 경우 (오픈 웨이트)
✅ 비용이 최우선이고 성능 약간 낮아도 되는 경우

✅ 결론

✅ Claude Code 하네스를 그대로 쓰면서 Qwen으로 전환 — URL·모델 ID 교체만으로 완료
✅ 1M 컨텍스트가 실제로 동작 — MRCR-v2 90.4점으로 검증됨
✅ 캐시 90% 할인이 반복 에이전트 루프 비용을 획기적으로 낮춤
✅ preserve_thinking으로 장기 멀티턴 에이전트 세션 추론 맥락 유지

❌ 기본 Extended Thinking이 출력을 장황하게 만듦 — max_tokens 캡 반드시 설정
❌ 오픈 웨이트 없음 — 로컬 실행·파인튜닝 불가
❌ 미국 데이터 주권이 필요한 엔터프라이즈 환경엔 부적합
❌ Intelligence Index 56.6으로 GPT-5.5(60.2)·Opus 4.7(57.3)보다 낮음 — 최고 품질이 필요하면 여전히 서방 모델 우선


 

반응형