o3-mini·Kimi K3 — 에이전트 '빈 답변' 버그와 추론 비용 줄이기

o3-mini·Kimi K3 — 에이전트 '빈 답변' 버그와 추론 비용 줄이기

o3-mini·Kimi K3 — 에이전트 '빈 답변' 버그와 추론 비용 줄이기

요즘 AI 에이전트를 개발하다가 분명 서버 비용은 청구되는데 에이전트가 텅 빈 대답만 남긴 채 멈춰버리는 기이한 버그로 당황한 분들이 많습니다. 최신 추론형 모델들이 스스로 깊이 생각하느라 주어진 토큰 예산을 전부 다 써버려서 정작 우리에게 보여줄 최종 답변을 만들지 못해 생기는 현상인데요. 왜 이런 먹통 버그가 발생하며, 어떻게 하면 비용도 아끼면서 에이전트 루프를 똑똑하게 제어할 수 있을지 아주 쉽게 핵심만 짚어 드립니다.

범인은 바로 '공동 토큰 예산'과 숨겨진 추론 단계

과거에는 max_tokens 옵션으로 최종 답변의 길이만 제한하면 비용을 안전하게 제어할 수 있었습니다. 하지만 OpenAI의 o 시리즈를 비롯한 최신 추론형 모델들은 max_completion_tokens라는 완전히 새로운 규격을 사용합니다.

쉽게 비유하자면, 시험을 볼 때 연습장과 답안지를 통틀어 딱 100글자만 쓸 수 있는 공동 제한이 생긴 셈입니다. 문제를 풀려고 연습장에 혼자 적어 내려간 생각인 '숨겨진 추론 토큰'과 우리 눈에 보일 '최종 답변 토큰'이 하나의 예산 통장을 같이 씁니다.

만약 비용을 아끼려고 이 예산을 너무 짜게 설정하면 황당한 일이 벌어집니다. AI가 혼자 골똘히 생각하느라 연습장을 가득 채우는 순간, 정작 답안지에 적을 예산이 단 한 글자도 남지 않게 되는 것이죠.

결국 AI는 속으로 고민만 잔뜩 하다가 겉으로는 텅 빈 답변만 남긴 채 멈춰버립니다. 더 억울한 것은 우리가 AI가 열심히 고민한 생각 비용을 전부 지불해야 한다는 점입니다. 다음 단계로 넘어가기 위한 도구 호출이나 JSON 데이터가 아예 출력되지 않아 에이전트 작동이 통째로 마비되는 버그의 주범이 바로 이 공동 예산 규칙입니다.

캐시되지 않는 '생각 세금'의 무서움

비용적인 타격도 만만치 않습니다. 보통 이전 대화 맥락을 기억해 비용을 크게 줄여주는 프롬프트 캐싱 기술을 떠올리며 안심하곤 합니다. 하지만 매 요청마다 실시간으로 생성되는 모델의 내부 추론 토큰은 캐싱이 완전히 불가능합니다.

문제는 이 숨겨진 추론 토큰이 가장 단가가 비싼 출력 토큰 요율로 고스란히 청구된다는 점입니다. 실제로 단순한 정보 추출 작업에서도 Kimi K3 모델은 기본 설정 상태에서 전체 97토큰 중 무려 66토큰을 보이지 않는 생각 과정에 소비해 버립니다.

에이전트가 알아서 여러 단계를 거치며 일하는 동안 제어 장치 없이 루프를 돌렸다가는, 상상도 못 했던 엄청난 '생각 세금' 고지서를 마주하게 될 수 있습니다.

해결책 1: reasoning_effort로 생각 깊이 조율하기

이 먹통 버그를 방지하는 가장 똑똑한 해결책은 상황에 맞게 생각의 깊이를 제어하는 것입니다. 에이전트의 모든 실행 단계마다 AI가 온 힘을 다해 깊이 고민할 필요는 없으니까요.

다행히 오픈AI의 o 시리즈 모델은 reasoning_effort라는 파라미터를 제공합니다. 개발자는 이 옵션을 사용해 모델이 할 생각의 양을 'low', 'medium', 'high' 중 하나로 자유롭게 조율할 수 있습니다.

방법은 아주 간단합니다. 단순한 데이터 수집이나 에이전트 루프의 중간 단계에서는 이 값을 'low'로 낮추어 생각 토큰을 강제로 아낍니다. 그러다 진짜 정교한 계획을 세워야 하는 최종 단계나 코딩 작업에서만 'high'로 높여 생각 예산을 집중적으로 투자하는 동적 제어 패턴을 구현하는 것입니다.

python
# OpenAI Python SDK 기준
response = client.chat.completions.create(
    model="o3-mini",
    reasoning_effort="low",  # 작업 단계에 따라 low, medium, high 조율
    max_completion_tokens=1024,
    messages=[{"role": "user", "content": "..."}]
)

이렇게 상황에 따라 생각의 깊이를 밀고 당겨주면, 한정된 토큰 예산 안에서 답변이 잘리는 불상사를 완벽하게 막으면서 작동 효율도 극대화할 수 있습니다.

해결책 2: 단순 작업에는 '생각 기능 끄기' 적용하기

굳이 깊은 생각이 필요 없는 단순 작업에는 생각 기능 자체를 완전히 꺼두는 것이 좋습니다. 문장에서 날짜나 이름 같은 간단한 데이터만 뽑아내는 일에도 모델이 혼자 골똘히 생각하게 두면 불필요한 비용이 계속 누수되기 때문입니다.

실제로 문샷 AI의 Kimi K3 모델로 단순 정보 추출을 돌려보면, 기본 설정 상태에서는 전체 97토큰 중 무려 66토큰을 보이지 않는 생각 과정에 낭비해 버립니다. 이럴 때는 reasoning_effort 옵션을 none으로 지정해 추론 단계를 명시적으로 꺼주어야 아까운 비용과 시간 낭비를 막을 수 있습니다.

다만 최신 OpenAI gpt-5.4 API를 사용할 때는 황당한 버그를 하나 조심해야 합니다. 이 모델에 생각 기능을 끄기 위해 reasoning_effort: none을 설정하면서 동시에 전체 토큰 예산인 max_completion_tokens를 함께 걸어두면, 버그 때문에 '생각 끄기' 설정을 통째로 무시하고 멋대로 깊은 생각에 빠져버립니다. 결국 생각하느라 토큰 예산을 다 써버려서 정작 최종 답변은 빈칸으로 내놓는 어처구니없는 참사가 발생합니다.

이 오류가 해결되기 전까지는 gpt-5.4에서 생각 기능을 완전히 끌 때 한정으로 토큰 한도 설정을 아예 제거하는 임시 예외 처리가 필요합니다.

이제는 '생각의 깊이'도 직접 제어할 때

앞으로 에이전트를 설계할 때는 프롬프트를 잘 쓰는 기술만큼이나 '이 단계에서 AI가 얼마나 깊이 생각해야 하는가'를 제어하는 규칙이 핵심이 될 것입니다.

단순한 작업은 머리를 쓰지 않고 빠르게 처리하게 두고, 복잡한 문제에만 생각 예산을 모아두도록 동적으로 조율해 보세요. 이 단순한 제어 패턴 하나가 여러분의 에이전트 비용을 획기적으로 줄이고 먹통 버그를 막아주는 든든한 방패가 되어줄 것입니다.

아직 댓글이 없습니다.