"LLM 추론 모드 (5/6) — OpenAI·Codex의 reasoning_effort: minimal부터 xhigh까지"

3·4편이 Claude의 effort 하나가 사고·텍스트·도구 호출을 한꺼번에 조절한다는 점을 봤다면, 5편은 OpenAI가 같은 트레이드오프를 어떤 손잡이로 다루는지를 본다. 핵심은 OpenAI가 손잡이를 둘로 쪼갰다는 것이다 — 사고 깊이는 reasoning_effort, 출력 길이는 verbosity.

OpenAI도 모델을 바꾸지 않고 호출마다 품질·지연·비용을 조정하는 손잡이를 노출한다. 이름은 reasoning_effort다. 다만 Claude와 결정적으로 다른 점이 둘 있다. 손잡이가 둘로 나뉘어 있다는 것, 그리고 값의 집합과 기본값이 모델 세대마다 다르다는 것이다. 5편은 이 둘을 정면으로 본다.

한 문단 요약

OpenAI는 사고 깊이를 reasoning_effort로 조절한다(API의 Responses/Chat, Codex CLI 설정에서는 model_reasoning_effort). 값은 모델 세대마다 다르다 — GPT-5는 minimal·low·medium·high, GPT-5.5는 none·low·medium·high·xhigh, gpt-5-codex 계열은 low·medium·high·xhigh(minimal 미지원, 설정하면 low로 정규화). 기본값은 medium으로 균형 잡힌 출발점이다. 그리고 OpenAI는 출력 길이를 별개 파라미터 verbosity로 분리했다 — Claude의 단일 effort가 사고 깊이와 출력 장황함을 동시에 건드리는 것과 대비된다. 추론 토큰은 원문이 반환되지 않고(요약만) 출력 토큰으로 과금된다.


1. 손잡이의 이름 — reasoning_effort와 model_reasoning_effort

OpenAI에서 사고 깊이를 조절하는 파라미터는 reasoning_effort다. 노출되는 표면이 둘이다.

  • API(Responses / Chat): reasoning_effort.
  • Codex CLI 설정: model_reasoning_effort.

같은 개념의 손잡이지만, 코드에서 API를 직접 부를 때와 Codex CLI 설정 파일에서 쓸 때 키 이름이 다르다는 점만 기억하면 된다. 의미는 동일하다 — 모델이 보이는 답을 내기 전에 추론(사고) 토큰을 얼마나 쓸지의 기조를 정한다.

값이 클수록 추론 토큰이 늘고, 추론 시간이 길어지며, 어려운 과제에서의 정확도가 올라간다. 값이 작을수록 그 반대다. Claude의 effort와 같은 트레이드오프 손잡이지만, 다음 절에서 보듯 값의 집합이 모델 세대마다 다르다.

2. 모델 세대별 값 — 같은 손잡이, 다른 눈금

가장 먼저 부딪히는 함정은 이것이다 — reasoning_effort가 받는 값이 모델마다 다르다. 어떤 모델엔 있는 값이 다른 모델엔 없다.

모델 세대 받는 값 기본값 비고
GPT-5 minimal, low, medium, high medium minimal 지원
GPT-5.5 none, low, medium, high, xhigh medium 최하단이 none, 상단에 xhigh 추가
GPT-5.2-Codex / gpt-5-codex low, medium, high, xhigh medium minimal 미지원 — 설정 시 low로 정규화

읽는 법:

  • GPT-5은 최하단에 minimal을 둔다.
  • GPT-5.5는 최하단이 none으로 바뀌고 상단에 xhigh가 더해진다.
  • gpt-5-codex 계열(GPT-5.2-Codex 포함)은 코딩·에이전트 작업에 맞춰진 모델로, minimal을 지원하지 않는다. minimal을 설정하면 low로 정규화된다. 즉 Codex 모델에서 "추론을 거의 끄는" 가장 가벼운 단계는 low다.

세대별로 눈금이 다르므로, 코드나 설정을 다른 모델로 옮길 때는 그 모델이 받는 값 안에서만 지정해야 한다.

3. minimal — 지연을 깎는 단계

minimal추론 토큰을 거의 또는 전혀 쓰지 않고 동작해 지연(특히 첫 토큰까지의 시간, time-to-first-token)을 최소화한다.

언제 쓰나:

  • 출력 공간이 좁은 결정적·경량 과제 — 추출(extraction), 포맷팅, 짧은 리라이트, 단순 분류.
  • 깊은 사고가 정확도를 거의 못 올리고 지연만 늘리는 작업.

언제 피하나:

  • 다단계 계획이나 도구를 많이 쓰는 워크플로우. 이런 작업은 추론을 깎으면 품질이 떨어진다.

minimal은 GPT-5에 있고, gpt-5-codex 계열에는 없다(설정하면 low로 정규화). GPT-5.5에서는 최하단이 none이다.

4. 기본값은 medium — 그리고 더 높일 때

기본값은 위 표대로 medium이다. 품질·신뢰성·지연·비용의 균형을 잡는, 권장되는 출발점이다. 특별한 이유가 없으면 여기서 시작해서 필요한 쪽으로 움직이는 게 맞다.

  • 어려운 과제에서 답이 얕게 나오면 effort를 올린다(high, 그리고 지원 모델이면 xhigh). 추론 토큰이 늘고, 추론 시간이 길어지며, 어려운 과제의 정확도가 올라간다.
  • 가벼운 결정적 과제라면 낮춘다(low, GPT-5의 minimal, GPT-5.5의 none). 지연과 비용이 준다.

Claude의 기본값이 high인 것과 달리 OpenAI의 기본값은 medium이라는 점은 두 플랫폼을 오갈 때 자주 헷갈리는 지점이다 — 같은 "기본값으로 두기"가 서로 다른 사고량을 의미한다.

5. reasoning_effort vs verbosity — 손잡이를 둘로 쪼갰다

OpenAI 설계의 핵심 차이가 여기 있다. OpenAI에는 reasoning_effort별개로 verbosity라는 파라미터가 있다.

  • reasoning_effort = 사고의 깊이. 보이는 답 이전에 추론 토큰을 얼마나 쓸지.
  • verbosity(low / medium / high) = 출력의 길이/장황함. 답을 얼마나 길게 펼칠지.

이 둘은 직교한다. verbosity프롬프트를 다시 쓰지 않고 답변 길이만 조절하게 해준다 — 예컨대 깊게 생각하되(높은 reasoning_effort) 짧게 답하게(낮은 verbosity) 하거나, 그 반대도 가능하다.

Claude와의 대비를 분명히 해두자.

사고 깊이 출력 길이/장황함
Claude effort 하나가 둘 다 조절 (effort가 함께 조절)
OpenAI reasoning_effort verbosity (별개)

Claude는 단일 effort 손잡이가 사고 깊이와 출력·도구 장황함을 동시에 움직인다. OpenAI는 이를 두 손잡이로 쪼개 사고 깊이(reasoning_effort)와 출력 길이(verbosity)를 따로 돌린다. 같은 트레이드오프를 다루는 두 가지 설계 철학이다.

6. 추론 토큰은 어떻게 반환되고 과금되나

OpenAI의 추론 토큰은 원문 그대로 반환되지 않는다 — 가려진 채로, 선택적 요약만 제공된다. 그리고 추론 토큰은 출력 토큰으로 과금된다(OpenAI 플랫폼의 일반 동작이자 과금 방식). 즉 reasoning_effort를 올리면 보이지 않는 추론 토큰이 늘고, 그만큼 출력 토큰 비용이 늘어난다.

이 지점은 Claude와 같은 큰 틀을 공유한다 — 양쪽 모두 사고/추론 토큰은 비싼 출력 토큰 등급으로 과금되고, 원문 사고는 반환되지 않는다(요약이 최대치). 그래서 effort 손잡이는 품질뿐 아니라 직접적인 비용 손잡이이기도 하다.

7. Codex CLI — config.toml와 -c 오버라이드

Codex CLI에서는 같은 손잡이가 설정 파일과 명령행 양쪽에 노출된다.

~/.codex/config.toml에 모델과 추론 effort를 적는다.

model = "gpt-5.2-codex"
model_reasoning_effort = "high"   # low | medium | high | xhigh

한 번의 실행에만 다른 effort를 쓰고 싶으면 -c로 설정을 오버라이드한다.

codex -m gpt-5.2-codex -c model_reasoning_effort="xhigh" "your prompt"

설정이 받는 전체 enum은 다음과 같다 — none | minimal | low | medium | high | xhigh. 단, 실제 적용 가능 여부는 모델별 지원에 따른다. 예를 들어 gpt-5-codex 계열은 minimal이 없으므로(설정하면 low로 정규화), Codex 기본 모델에서 가장 가벼운 단계는 low다.

8. 어떤 값을 고를까 — 요약

  • 기본은 medium — 품질·신뢰성·지연·비용의 균형. 여기서 시작한다.
  • 가볍고 결정적인 과제(추출·포맷팅·짧은 리라이트·단순 분류) → minimal(GPT-5) / none(GPT-5.5) / low(Codex 계열). 지연을 깎는다.
  • 어려운 다단계·도구 중심 과제high, 그리고 지원 모델이면 xhigh. 추론 토큰과 시간을 더 쓰고 정확도를 얻는다.
  • 답 길이가 문제라면 effort가 아니라 verbosity를 움직인다. 사고 깊이와 출력 길이는 별개 손잡이다.

이어지는 글

여기까지 Claude의 effort(3·4편)와 OpenAI의 reasoning_effort·verbosity(5편)를 각각 해부했다. 마지막 6편은 둘을 나란히 놓고 비교한다 — 비용·지연·품질의 트레이드오프를 벤치마크 수치와 함께 보고, 과제 난이도에 손잡이를 어떻게 맞출지를 정리한다. "더 생각하게 하면 늘 좋아지는가"라는 물음에 대한 답이 거기 있다.


파라미터 이름·모델별 값·기본값·Codex 설정은 OpenAI의 GPT-5 신규 파라미터 문서, GPT-5.5·GPT-5.2-Codex 모델 문서, Codex CLI 설정 자료를 1차 자료로 정리했다. 추론 토큰의 과금(출력 토큰 등급)은 OpenAI 플랫폼의 일반 동작으로 표기했다.

시리즈 전체 안내: 시리즈 목차

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"