메인 콘텐츠로 건너뛰기

짧은 답변

이는 API 오류가 아닙니다. 추론 예산이 출력 예산을 소진하는 것입니다. gpt-6.1-sol와 같은 추론 모델은 먼저 추론 추적을 생성한 다음 답변을 작성합니다. 두 부분 모두 max_tokens 허용량을 공유합니다. 생각하는 동안 예산이 소진되면 답변을 시작하기도 전에 잘리므로 빈 결과를 받게 됩니다. max_tokens를 높이거나(1000 이상부터 시작하는 것이 안전합니다) 추론 강도를 낮추면 문제가 해결됩니다.

확인하게 될 내용

일반적으로 두 가지 형태가 있습니다. 하나는 명시적인 오류이며, HTTP 상태 코드는 429 또는 500입니다(message 필드는 지역화될 수 있으므로 일부 응답에서는 중국어 메시지가 표시될 수 있습니다).
다른 하나는 콘텐츠가 비어 있는 HTTP 200 응답입니다.
사용량 블록을 확인해 보십시오. completion_tokens은 300이고, reasoning_tokens은 300이며, text_tokens은 0입니다. — 모델이 300개의 token을 생성하고, 모두 사고에 사용했으며, 출력 단어는 단 하나도 작성하지 않았습니다.
호출 로그에는 요청이 성공했고 과금되었다고 표시되며, 이는 모순이 아닙니다. 모델은 콘텐츠(추론 트레이스)를 실제로 생성했지만, 표시되는 텍스트는 생성하지 않았기 때문입니다.

이 문제가 발생하는 이유

추론 모델의 출력에는 두 단계가 있습니다. max_tokens(또는 max_completion_tokens, max_output_tokens)은 표시되는 답변의 길이가 아니라 두 단계를 합한 길이를 제한합니다. 따라서 max_tokens가 200~500처럼 작은 값으로 설정되어 있고 작업에 상당한 추론이 필요한 경우, 사고 단계에서 쿼터가 소진됩니다. 그러면 finish_reason는 length이 되고 콘텐츠는 비어 있게 됩니다.

세 가지 확인

1

1단계: finish_reason 읽기

값이 length이면 출력이 잘린 것입니다. 모델이 답변을 거부한 것이 아닙니다. 값이 stop인데 콘텐츠가 여전히 비어 있으면 2단계와 3단계를 계속 진행합니다.
2

2단계: usage에서 reasoning_tokens 읽기

usage.completion_tokens_details.reasoning_tokens을 찾아 completion_tokens와 비교합니다. 두 값이 비슷하거나 같으면 대부분의 예산이 사고에 사용된 것입니다.
3

3단계: 요청에서 max_tokens 읽기

max_tokens를 작은 값(예: 300)으로 명시적으로 설정했다면 이것이 원인일 가능성이 매우 높습니다. 설정하지 않았다면 SDK 또는 프레임워크가 작은 기본값을 입력했는지 확인합니다.
이 스크립트는 세 가지 신호를 한 번에 출력합니다.

수정 방법

max_tokens 늘리기

직접적인 해결 방법입니다. 일반적인 채팅에는 1000–2000을 사용하고, 고난도 추론이나 긴 형식의 출력에는 4000 이상을 사용합니다. 추론 오버헤드는 예상보다 훨씬 클 수 있습니다.

추론 수준 낮추기

모델이 reasoning_effort을 지원한다면 high에서 medium 또는 low으로 낮춥니다. 사고에 사용되는 양이 눈에 띄게 줄어듭니다.

스트리밍으로 전환하기

stream을 true로 설정합니다. 추론 추적이 별도의 이벤트로 도착하므로 모델이 수행하는 작업을 확인할 수 있으며, 답변이 조용히 사라지는 일도 없습니다.

모델 제품군별 매개변수 참조

일부 추론 모델은 max_tokens을 거부하고 max_completion_tokens을 요구합니다. 매개변수 이름이 잘못되면 오류가 발생하거나, 조용히 무시되어 모델이 의도와 일치하지 않는 기본값으로 대체될 수 있습니다.

FAQ

로그에는 업스트림이 생성을 완료하고 과금을 정산했다는 내용이 기록됩니다. 표시되는 텍스트가 비어 있는지는 확인하지 않습니다. 생성 성공과 답변이 비어 있지 않은 것은 서로 다른 문제입니다.
대개 해결되지 않습니다. 동일한 prompt와 동일한 max_tokens을 사용하면 모델은 다시 추론에 예산을 사용할 가능성이 높습니다. 재시도하는 것보다 파라미터를 변경하는 편이 훨씬 효과적입니다.
예. 추론 token은 실제 사용량이며 출력 token으로 과금됩니다. 정확한 사용량은 호출 로그에서 확인하십시오.
아닙니다. 추론 단계가 있는 추론 모델에만 이 문제가 발생합니다. gpt-4o 또는 deepseek-chat와 같은 일반 비추론 모델은 전체 max_tokens을 표시되는 출력에 사용합니다.
아닙니다. max_tokens은 실제 사용량이 아니라 상한입니다. 모델은 작업을 완료하면 중지하며, 실제로 생성된 token에 대해서만 비용을 지불합니다.

관련 문서

max_tokens란 무엇입니까?

매개변수의 의미, 명명 이력 및 모델별 기본값

스트리밍과 비스트리밍

긴 응답 및 추론 모델에는 스트리밍을 권장합니다

모델 오류 문제를 해결하는 방법

400, 401, 429 및 503 오류에 대한 일반적인 진단

로그에서 과금 정보를 확인하는 방법

요청이 과금되었는지와 과금 금액을 확인합니다