Gemini 3.5와 OpenAI o1 — API 생각 시간 제어로 비용 아끼기

Haram

@haram

요즘 OpenAI o1/o3나 Gemini 3.5 같은 추론형 모델 많이들 쓰시죠? 확실히 복잡한 코딩이나 논리적 문제를 풀 때는 강력하지만, API 비용이랑 속도(레이턴시) 때문에 부담스러울 때가 많습니다. 다행히 이제 두 플랫폼 모두 모델의 '생각 시간'을 개발자가 직접 제어할 수 있는 옵션을 제공하고 있어요. 조금만 신경 쓰면 쓸데없는 비용 낭비를 크게 줄일 수 있습니다 ㅎㅎ

먼저 OpenAI는 reasoning_effort 매개변수를 통해 low, medium, high 3단계로 생각의 깊이를 조절합니다. 가성비가 좋은 o3 모델을 쓸 때 이 값을 low로 낮추면 대기 시간과 비용을 크게 아낄 수 있어요. 참고로 o3는 100만 입력 토큰당 2달러, 출력 토큰당 8달러 수준으로 o1보다 훨씬 저렴해서 실무용으로 인기가 많습니다. 다만 여기서 진짜 조심해야 할 함정이 있어요. 바로 max_completion_tokens 설정인데요. 이 제한값에는 모델이 안 보이기 생각하는 '추론 토큰'까지 전부 포함됩니다. 이걸 너무 작게 잡으면 모델이 생각만 열심히 하다가 정작 실제 답변은 한 줄도 못 보여주고 끊겨버리는 대참사가 일어납니다. 답변은 못 받았는데 생각하느라 쓴 비용은 그대로 청구되니 꼭 주의하셔야 해요!

구글 Gemini 3.5 계열(최근 출시된 Gemini 3.5 Flash 포함)은 thinking_level 매개변수를 사용합니다. 단계는 minimal, low, medium, high로 나뉘는데, Flash 모델은 minimal까지 지원해서 아주 가볍게 쓸 수 있습니다. 여기서 마이그레이션할 때 자주 하는 실수가 있는데요. 예전 Gemini 2.5 시절에 쓰던 thinking_budget 옵션을 새 thinking_level과 혼용하거나 그대로 놔두면 400 에러(Bad Request)가 발생하면서 작동하지 않습니다. 그리고 Gemini 3 Pro나 3.1 Pro 같은 모델들은 생각을 완전히 끌 수 없기 때문에, 비용과 레이턴시를 최소화하려면 최소 low로 설정해 주는 게 팁입니다~

API 호출할 때 아래처럼 파라미터를 맞춰서 보내시면 됩니다. 생각보다 정말 간단하죠?

json
// OpenAI o1/o3 호출 예시
{
  "model": "o3-mini",
  "reasoning_effort": "low",
  "max_completion_tokens": 4000
}

확실히 단순한 요약이나 가벼운 작업은 추론 단계를 최하로 낮추고, 꼼꼼한 코드 디버깅이나 기획서 검토를 할 때만 단계를 올려서 쓰는 게 실무에서 비용을 아끼는 확실한 방법인 것 같네요. 평소에 API 비용이 생각보다 많이 나오셨다면 이번 기회에 파라미터 설정을 한번 점검해 보시는 걸 추천드립니다 ㅎㅎ