콘텐츠로 이동

Reasoning Effort 파라미터

이 문서는 Continuum Router가 다양한 LLM 백엔드에서 reasoning_effort 파라미터를 어떻게 처리하는지 설명합니다. 토큰 예산 변환 및 지원되는 effort 레벨을 포함합니다.

개요

reasoning_effort 파라미터는 모델이 응답을 생성하기 전에 추론에 사용하는 계산 노력의 양을 제어합니다. 각 백엔드는 이 기능을 다르게 구현합니다:

  • OpenAI: O-series 및 GPT-5.2 thinking 모델에 대한 네이티브 reasoning_effort 파라미터
  • Anthropic: 확장 사고(extended thinking)를 지원하는 Claude 모델의 thinking.budget_tokens로 변환
  • Gemini: OpenAI 호환 엔드포인트를 통한 thinking 모델에 대한 네이티브 reasoning_effort
  • 기타 백엔드: 패스스루 (변환 없음)

파라미터 형식

Continuum Router는 두 가지 입력 형식을 지원하며, 내부적으로 정규화됩니다:

평면 형식 (Chat Completions API)

{
  "model": "o3-mini",
  "reasoning_effort": "high",
  "messages": [...]
}

중첩 형식 (Responses API)

{
  "model": "o3-mini",
  "reasoning": {
    "effort": "high"
  },
  "input": "..."
}

두 형식 모두 처리 전에 평면 reasoning_effort 형식으로 자동 정규화됩니다. 둘 다 존재하는 경우 평면 형식이 우선합니다.

토큰 예산 직접 지정

고급 사용 사례의 경우, reasoning_effort 레벨 대신 토큰 예산을 직접 지정할 수 있습니다:

Anthropic: thinking 파라미터 직접 사용

{
  "model": "claude-sonnet-4-20250514",
  "thinking": {
    "type": "enabled",
    "budget_tokens": 16000
  },
  "messages": [...]
}

Gemini: extra_body를 통한 thinking_budget 직접 지정

{
  "model": "gemini-2.5-pro",
  "extra_body": {
    "google": {
      "thinking_config": {
        "thinking_budget": 10000,
        "include_thoughts": true
      }
    }
  },
  "messages": [...]
}

우선순위

reasoning_effort와 직접 토큰 지정이 모두 있는 경우, Anthropic에서는 직접 지정(thinking 파라미터)이 우선합니다. Gemini의 경우 둘 다 공존할 수 있지만 extra_bodythinking_budget이 세밀한 제어에 사용됩니다.


백엔드별 동작

OpenAI 백엔드

OpenAI 모델은 reasoning_effort 파라미터를 네이티브로 지원합니다. 라우터는 값을 OpenAI API에 직접 전달합니다.

지원되는 Effort 레벨

Effort 레벨 지원 모델 설명
low O-series, GPT-5.2 thinking 최소 추론, 빠른 응답
medium O-series, GPT-5.2 thinking 균형 잡힌 추론 노력
high O-series, GPT-5.2 thinking 깊은 추론, 느린 응답
xhigh GPT-5.2 계열만 최대 추론 노력

reasoning_effort를 지원하는 모델

O-series 모델 (low, medium, high 지원):

  • o1, o1-mini, o1-preview
  • o3, o3-mini, o3-pro
  • o4-mini

GPT-5.2 thinking 모델 (low, medium, high, xhigh 지원):

  • gpt-5.2, gpt-5.2-thinking, gpt-5.2-latest
  • gpt-5.2-pro

xhigh 자동 폴백

xhigh effort 레벨은 GPT-5.2 계열 thinking 모델만 네이티브로 지원합니다. 다른 모델이나 백엔드에 xhigh가 요청되면 Continuum Router가 자동으로 high로 다운그레이드하고 info 레벨 로그를 남깁니다. 이를 통해 클라이언트는 백엔드 호환성을 걱정하지 않고 항상 xhigh를 요청할 수 있습니다.

reasoning_effort를 지원하지 않는 모델

다음 모델들은 reasoning 파라미터를 지원하지 않습니다 (파라미터가 제거됨):

  • GPT-4o, GPT-4o-mini, GPT-4-turbo, GPT-4
  • GPT-5.2-chat-latest, GPT-5.2-instant (non-thinking 변형)
  • GPT-5.1, GPT-5
  • GPT-3.5-turbo
  • 임베딩 모델, 이미지 모델

Anthropic 백엔드 (Claude)

Anthropic Claude 모델은 thinking.budget_tokens 파라미터를 사용하는 "확장 사고(extended thinking)"라는 다른 메커니즘을 사용합니다. 라우터는 reasoning_effort를 적절한 토큰 예산으로 자동 변환합니다.

변환 테이블

reasoning_effort budget_tokens 설명
none 비활성화 Thinking 기능 비활성화
minimal 1,024 최소 허용 예산
low 4,096 가벼운 추론
medium 10,240 중간 추론
high 32,768 깊은 추론

변환 예시

입력 (OpenAI 형식):

{
  "model": "claude-sonnet-4-20250514",
  "reasoning_effort": "high",
  "messages": [...]
}

변환됨 (Anthropic 형식):

{
  "model": "claude-sonnet-4-20250514",
  "thinking": {
    "type": "enabled",
    "budget_tokens": 32768
  },
  "messages": [...]
}

확장 사고를 지원하는 모델

확장 사고는 다음에서 지원됩니다:

  • Claude Opus 모델: claude-opus-4-*, claude-opus-4-5-*
  • Claude Sonnet 4 모델: claude-sonnet-4-*, claude-sonnet-4-5-*

Temperature 제한

확장 사고가 활성화되면 Claude는 사용자 정의 temperature 설정을 지원하지 않습니다. 라우터는 thinking이 활성화되면 temperature 파라미터를 자동으로 제거합니다.

xhigh 자동 폴백

Claude 모델에 xhigh가 요청되면 라우터가 자동으로 high (32,768 budget_tokens)로 다운그레이드합니다. Claude는 xhigh를 지원하지 않기 때문입니다.


Gemini 백엔드

Gemini 모델은 OpenAI 호환 엔드포인트를 통해 reasoning_effort를 네이티브로 지원합니다. 라우터는 값을 검증하고 직접 전달합니다.

지원되는 Effort 레벨

Effort 레벨 지원 모델 설명
none Flash 모델만 Thinking 비활성화
minimal 모든 thinking 모델 최소 추론
low 모든 thinking 모델 가벼운 추론
medium 모든 thinking 모델 중간 추론
high 모든 thinking 모델 깊은 추론

Flash 모델 (none 지원)

  • gemini-2.0-flash
  • gemini-2.5-flash
  • gemini-3-flash

Pro 모델 (none 미지원)

  • gemini-2.5-pro
  • gemini-3-pro

Pro 모델 제한

Pro 모델에 none effort 레벨을 요청하면 검증 오류가 발생합니다. Flash 모델만 thinking 비활성화를 지원합니다.

xhigh 자동 폴백

Gemini 모델에 xhigh가 요청되면 라우터가 자동으로 high로 다운그레이드합니다. Gemini는 xhigh를 지원하지 않기 때문입니다.

추가 기능

Gemini thinking 모델의 경우, 라우터는 자동으로:

  1. reasoning content를 노출하기 위해 include_thoughts: true 설정
  2. 지정되지 않은 경우 기본 max_completion_tokens: 16384 설정
  3. 모델 기능에 대해 effort 레벨 검증

Generic/HTTP 백엔드

Generic HTTP 백엔드 (Ollama, vLLM, LocalAI, LM Studio 등에 사용)는 변환 없이 요청을 전달합니다.

동작 설명
패스스루 reasoning_effort가 백엔드에 그대로 전달됨
검증 없음 라우터가 effort 레벨을 검증하지 않음
변환 없음 토큰 예산 변환이 수행되지 않음

백엔드 책임

generic 백엔드의 경우, 대상 LLM 서버가 reasoning_effort 파라미터를 처리(또는 무시)할 책임이 있습니다. 서버가 지원하지 않으면 오류를 반환하거나 파라미터를 무시할 수 있습니다.


llama.cpp 백엔드

llama.cpp 백엔드는 패스스루 동작을 사용합니다:

동작 설명
패스스루 파라미터가 변경 없이 전달됨
서버 의존적 지원 여부는 llama-server 설정에 따라 다름

llama.cpp에서의 Thinking 모델 지원

최근 버전의 llama-server는 <think> 태그 처리를 통해 thinking 모델(예: DeepSeek-R1)을 지원합니다. 그러나 reasoning_effortbudget_tokens에 대한 표준화된 API 파라미터는 없습니다. Thinking 동작은 일반적으로 다음으로 제어됩니다:

  • thinking 태그가 있는 모델의 내장 chat 템플릿
  • 서버 측 구성 (예: --thinking-budget 가능한 경우)
  • temperature 및 top-p 같은 샘플링 파라미터

vLLM 백엔드

vLLM은 OpenAI 호환 API를 제공하지만 reasoning effort 지원은 모델에 따라 다릅니다:

동작 설명
패스스루 generic 백엔드를 통해 파라미터 전달
모델 의존적 모델 유형에 따라 지원이 다름

vLLM에서의 Thinking 모델 지원

vLLM은 thinking 가능 모델(예: DeepSeek-R1, QwQ)을 실행할 수 있지만 reasoning_effort 파라미터 처리는 다음에 따라 다릅니다:

  • 모델이 구조화된 thinking을 지원하는지 여부
  • vLLM 서버 버전 및 구성
  • 모델의 chat 템플릿 구성

DeepSeek-R1 및 유사 모델의 경우, thinking은 명시적인 budget 파라미터로 제어되기보다 모델의 동작에 내재되어 있는 경우가 많습니다.


요약 테이블

백엔드 Effort 레벨 변환 비고
OpenAI low, medium, high, xhigh* 없음 (네이티브) *xhigh는 GPT-5.2만
Anthropic none, minimal, low, medium, high budget_tokens 활성화시 temperature 제거
Gemini none*, minimal, low, medium, high 없음 (네이티브) *none은 Flash 모델만
vLLM 모델 의존적 패스스루 DeepSeek-R1, QwQ는 암시적 thinking 사용
llama.cpp 모델 의존적 패스스루 chat 템플릿에서 <think> 태그 사용
Generic 모두 패스스루 백엔드가 검증 처리

응답 형식

reasoning/thinking이 활성화되면 응답에 모델의 추론 과정이 포함됩니다:

OpenAI 형식 (reasoning_content 포함)

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "답은 42입니다.",
      "reasoning_content": "단계별로 생각해보겠습니다..."
    },
    "finish_reason": "stop"
  }]
}

Claude 확장 사고 (OpenAI 형식으로 변환됨)

라우터는 Claude의 thinking 블록을 reasoning_content 필드로 변환합니다:

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "답은 42입니다.",
      "reasoning_content": "여러 요소를 고려해야 합니다..."
    },
    "finish_reason": "stop"
  }]
}

모범 사례

  1. 적절한 effort 레벨 사용: 높은 effort = 더 나은 추론이지만 더 느리고 비용이 많이 듬
  2. 모델 지원 확인: 모든 모델이 reasoning 파라미터를 지원하지 않음
  3. xhigh 신중히 처리: GPT-5.2 계열만 xhigh를 지원; 다른 모델에는 high 사용
  4. 비용 고려: 확장 사고는 추가 토큰 소비 (특히 Anthropic의 budget_tokens)
  5. 백엔드 테스트: Generic 백엔드는 지원 수준이 다양할 수 있음

관련 문서