메인 콘텐츠로 건너뛰기
일부 모델은 최종 응답을 생성하기 전에 내부 연쇄 추론을 수행합니다. 이러한 추론 단계에서 소비되는 토큰을 추론 토큰이라고 합니다. 이는 비용과 지연 시간에 영향을 미치지만 기본적으로 사용자에게는 보이지 않습니다.

지원 모델

모델추론 지원
openai/o4-mini항상 켜짐 추론
openai/o3항상 켜짐 추론
anthropic/claude-sonnet-4-6선택적 확장 사고
anthropic/claude-opus-4-6선택적 확장 사고
deepseek/deepseek-r1항상 켜짐 추론
google/gemini-2.5-pro선택적 사고 모드
google/gemini-2.5-flash선택적 사고 모드

사용량에서 추론 토큰 표시

추론 토큰은 completion_tokens_details의 일부로 usage 객체에 보고됩니다:
{
  "usage": {
    "prompt_tokens": 150,
    "completion_tokens": 520,
    "total_tokens": 670,
    "completion_tokens_details": {
      "reasoning_tokens": 400
    }
  }
}
이 예시에서 520개의 완성 토큰 중 400개가 내부 추론에 사용되었습니다. 나머지 120개 토큰만 보이는 응답에 표시됩니다.

추론 토큰 청구

추론 토큰은 해당 모델의 완성 토큰 요금으로 청구됩니다. 청구 목적상 completion_tokens에 포함됩니다 — 세부 내역은 정보 제공 목적입니다. ARouter는 업스트림 제공업체의 추론 토큰 수를 수정 없이 그대로 전달합니다.

추론 동작 제어

OpenAI o 시리즈 (o4-mini, o3)

o 시리즈 모델에서 추론은 항상 켜져 있습니다. 모델이 얼마나 추론하는지 제어하려면 reasoning_effort를 사용하세요:
{
  "model": "openai/o4-mini",
  "reasoning_effort": "high",
  "messages": [...]
}
유효한 값: "low", "medium", "high". 노력도가 높을수록 = 추론 토큰이 많음 = 품질과 비용이 높음.

Anthropic 확장 사고

요청에 thinking을 전달하여 확장 사고를 활성화합니다:
import anthropic

client = anthropic.Anthropic(
    api_key="your-arouter-key",
    base_url="https://api.arouter.ai/anthropic",
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000,
    },
    messages=[{"role": "user", "content": "단계별로 해결해주세요: ..."}],
)
budget_tokens는 사고에 사용할 수 있는 최대 토큰 수를 제한합니다. 사고 내용은 응답에서 별도의 블록으로 반환됩니다.

DeepSeek R1

DeepSeek R1에서 추론은 항상 켜져 있습니다. 이 모델은 일반 content 옆에 reasoning_content 필드를 반환합니다:
from openai import OpenAI

client = OpenAI(
    api_key="your-arouter-key",
    base_url="https://api.arouter.ai/v1",
)

response = client.chat.completions.create(
    model="deepseek/deepseek-r1",
    messages=[{"role": "user", "content": "√2가 무리수임을 증명하세요."}],
)

# 추론 내용 (제공업체가 공개하는 경우)
print(response.choices[0].message.reasoning_content)
# 최종 답변
print(response.choices[0].message.content)

Google Gemini 사고

thinking 매개변수를 통해 Gemini 2.5 모델의 사고를 활성화합니다:
response = client.chat.completions.create(
    model="google/gemini-2.5-flash",
    messages=[...],
    extra_body={
        "thinking": {
            "type": "enabled",
            "budget_tokens": 5000
        }
    }
)

활동 내보내기와 추론 토큰

활동 내보내기에는 추론 토큰의 세부 내역이 포함되어 있어 총 비용에 대한 기여를 정확하게 추적할 수 있습니다. 내보내기 요약에서 추론 토큰은 완성 토큰에 포함됩니다.

모범 사례

  • 최고의 추론 품질이 필요하지 않다면 o 시리즈 모델에서 "low" 또는 "medium" 노력도로 시작하세요. 이렇게 하면 비용과 지연 시간이 크게 줄어듭니다.
  • Anthropic 및 Gemini 사고 모델에 budget_tokens 상한을 설정하세요. 복잡한 쿼리에서 예상치 못한 대규모 청구를 방지하기 위해서입니다.
  • 활동 피드에서 추론 토큰 비율을 모니터링하세요. 추론 대 출력 토큰의 높은 비율은 복잡한 작업에서 정상이지만 모델이 단순한 쿼리에 과도하게 생각하고 있음을 나타낼 수 있습니다.
  • 비용 절약을 위해 추론을 비활성화하지 마세요. 진정으로 다단계 추론이 필요한 작업에서는 — 출력 품질이 크게 저하됩니다.