Raon
문서

오류

오류 응답 형식, 상태 코드, 재시도 기준, 타임아웃입니다.

오류 형식

Raon 게이트웨이는 직접 생성한 오류를 API별 응답 형식에 맞춰 반환합니다. Chat Completions, Responses, GET /v1/models의 오류 응답 형식은 다음과 같습니다.

{
  "error": {
    "message": "Incorrect API key provided.",
    "type": "authentication_error",
    "param": null,
    "code": "invalid_api_key"
  }
}

Messages에서는 게이트웨이가 생성한 오류를 다음과 같은 Anthropic 형식으로 반환합니다. 이 형식에는 code 필드가 없습니다.

{
  "type": "error",
  "error": {
    "type": "authentication_error",
    "message": "Incorrect API key provided."
  }
}

SDK는 오류 응답을 openai.AuthenticationError, anthropic.RateLimitError 같은 예외로 변환합니다.

모델 서버에서 발생한 입력 검증 오류는 다른 형식으로 전달될 수 있습니다. 예를 들어 Messages 요청에 대한 HTTP 400 응답에도 최상위 type 필드 없이 error.type: "upstream_error"와 error.code: "upstream_http_error"가 포함될 수 있습니다. 예기치 않은 내부 오류도 OpenAI 형식으로 반환될 수 있습니다. Messages의 오류 응답을 처리할 때는 위 예시 외의 형식도 고려해 HTTP 상태 코드와 전체 응답 본문을 확인하세요.

상태 코드

상태 코드code원인재시도 여부
400invalid_request잘못된 JSON 본문, 필수 필드 누락, 지원하지 않는 기능 사용아니요 (요청 수정)
400unsupported_toolRaon이 실행하지 않는 도구 사용 (예: code_interpreter)아니요
400token_limit_exceeded단일 요청의 분당 토큰 한도 초과아니요
400—입력과 max_tokens의 합이 컨텍스트 윈도우 초과아니요 (입력 축소)
401invalid_api_keyAPI 키 누락, 오류, 비활성화 또는 만료아니요
402insufficient_credit, spend_limit_exceeded크레딧 부족 또는 월 지출 한도 도달아니요
403model_not_allowed잘못된 모델 ID 또는 API 키로 사용할 수 없는 모델아니요
404—제공하지 않는 경로 (주로 Base URL의 /v1 누락 또는 중복)아니요
413payload_too_large요청 본문 크기 28 MiB 초과아니요
429rate_limit_exceeded, overloaded속도 제한 초과 또는 서비스 과부하예 (retry-after 이후)
500—Raon 내부 오류예 (지수 백오프)
502upstream_error모델 서버 오류 또는 응답 시간 초과예 (지수 백오프)

재시도할 때는 지수 백오프로 대기 시간을 점차 늘리고, 재시도 횟수에 상한을 두세요. 429를 제외한 4xx 오류는 같은 요청을 다시 보내도 같은 이유로 실패하므로 재시도하지 마세요.

이번 프리뷰의 모델 이용 요금은 0원입니다. 다만 조직의 크레딧이나 지출 한도 정책에 따라 HTTP 402 오류가 발생할 수 있습니다. 이 경우 프리뷰 운영자에게 문의하세요.

스트리밍 중 오류

스트리밍 응답은 시작 시점에 이미 상태 코드 200을 반환하므로, 이후 발생한 오류는 스트림 안의 이벤트로 전달됩니다.

API오류 이벤트
Chat Completions{"error": {...}}를 포함한 data: 행
Responsesevent: error
MessagesAnthropic 형식의 event: error

SDK는 스트림을 읽는 중에 이 이벤트를 받으면 예외를 발생시킵니다. 오류 이전에 받은 텍스트는 완전한 답변이 아니므로, 전체 답변이 필요하면 요청을 다시 보내세요.

타임아웃

추론이나 웹 검색이 포함되면 응답까지 몇 분이 걸릴 수 있습니다. Raon은 요청당 최대 10분까지 처리하므로, 클라이언트 타임아웃도 10분 이상으로 설정하세요. OpenAI SDK와 Anthropic SDK의 기본 타임아웃은 10분입니다.

  • 스트리밍을 사용하면 진행 상황을 바로 확인할 수 있고 연결도 유지됩니다. 웹 검색 중처럼 10초 동안 전송할 데이터가 없으면 Raon이 : ping 주석 행을 보냅니다. SSE 클라이언트는 이 행을 무시합니다.
  • 클라이언트 연결이 끊기면 Raon도 요청 처리를 중단합니다.
  • 요청에는 Content-Length 헤더가 필요합니다. SDK와 curl은 이 헤더를 자동으로 추가합니다. 이 헤더 없이 chunked 방식으로 전송하면 411 오류가 반환됩니다.

문의 시 필요한 정보

문제를 문의할 때는 요청 시각, 응답 헤더의 x-request-id, 상태 코드, 오류 응답 본문을 함께 전달해 주세요. x-request-id는 Raon이 생성하는 요청 추적용 UUID이며 스트리밍 응답에도 포함됩니다. 요청에 같은 이름의 헤더를 보내도 해당 값은 사용하지 않습니다.

이 페이지에서