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)¶
중첩 형식 (Responses API)¶
두 형식 모두 처리 전에 평면 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_body의 thinking_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-previewo3,o3-mini,o3-proo4-mini
GPT-5.2 thinking 모델 (low, medium, high, xhigh 지원):
gpt-5.2,gpt-5.2-thinking,gpt-5.2-latestgpt-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 형식):
변환됨 (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-flashgemini-2.5-flashgemini-3-flash
Pro 모델 (none 미지원)¶
gemini-2.5-progemini-3-pro
Pro 모델 제한
Pro 모델에 none effort 레벨을 요청하면 검증 오류가 발생합니다. Flash 모델만 thinking 비활성화를 지원합니다.
xhigh 자동 폴백
Gemini 모델에 xhigh가 요청되면 라우터가 자동으로 high로 다운그레이드합니다. Gemini는 xhigh를 지원하지 않기 때문입니다.
추가 기능¶
Gemini thinking 모델의 경우, 라우터는 자동으로:
- reasoning content를 노출하기 위해
include_thoughts: true설정 - 지정되지 않은 경우 기본
max_completion_tokens: 16384설정 - 모델 기능에 대해 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_effort나 budget_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"
}]
}
모범 사례¶
- 적절한 effort 레벨 사용: 높은 effort = 더 나은 추론이지만 더 느리고 비용이 많이 듬
- 모델 지원 확인: 모든 모델이 reasoning 파라미터를 지원하지 않음
- xhigh 신중히 처리: GPT-5.2 계열만
xhigh를 지원; 다른 모델에는high사용 - 비용 고려: 확장 사고는 추가 토큰 소비 (특히 Anthropic의
budget_tokens) - 백엔드 테스트: Generic 백엔드는 지원 수준이 다양할 수 있음