For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
기본 탐색 메뉴
Theme

오류와 복구

Agents API 오류를 파악하고 안전하게 복구하는 방법을 알아보세요.

일반적인 HTTP 오류와 SDK 예외는 공통 오류 코드 가이드를 참고하세요.

오류 확인

요청 오류가 발생하면 HTTP 응답을 확인하세요. 턴을 실행하거나 환경을 설정하는 중에 오류가 발생하면 이벤트와 저장된 상태를 확인하세요.

실패 유형 확인 방법
API 요청 HTTP 상태 코드와 응답의 error 객체를 확인하세요.
턴 agent.session.turn.failed 이벤트가 발생하면 턴을 조회하고 status와 error를 확인하세요.
세션 agent.session.failed 이벤트가 발생하면 세션을 조회하고 status와 error를 확인하세요.
환경 environment.error 값은 agent.session.environment.failed 이벤트에서 확인하세요. 샌드박스 문제 해결을 참고하세요.

구조화된 오류를 처리할 때는 애플리케이션 로직에서 error.code를 사용하고, 실패 이유를 설명할 때는 error.message를 사용하세요. 요청 유효성 검사 오류의 경우 error.param으로 수정할 필드를 파악할 수 있습니다. 알 수 없는 코드가 들어오거나 param이 없어도 오류 처리기가 정상적으로 동작하도록 하세요.

베타 API(OpenAI-Beta: agents=v1)에서 세션의 error 값은 메시지 문자열 또는 null입니다. 세션 실패 코드는 함께 전송되는 SSE error 이벤트에서 확인하세요.

API 요청 오류

이 오류는 Agents API에 보낸 요청에서 발생합니다. 작업을 시작한 후 반환되는 턴 오류와는 구분됩니다.

코드 설명
400: invalid_request_error 원인: 입력값이나 설정값이 유효하지 않거나 너무 큽니다.
해결 방법: error.param 또는 error.message가 가리키는 필드를 수정하세요. 잘못된 입력 수정을 참고하세요.
400: invalid_beta 원인: OpenAI-Beta 헤더 값이 유효하지 않습니다.
해결 방법: 사용 중인 API 버전에 필요한 헤더를 확인하세요.
400: agent_not_persisted 원인: 지정한 agent_id는 해당 세션에서만 사용할 수 있는 에이전트의 ID입니다.
해결 방법: 에이전트를 생성해 저장하고 해당 ID를 사용하세요.
400: invalid_otlp_endpoint, invalid_otlp_header 원인: 추적 엔드포인트 또는 헤더가 유효하지 않습니다.
해결 방법: 추적 설정을 수정하세요.
401: unauthorized; 403: forbidden 원인: 인증에 실패했거나 호출자에게 접근 권한이 없습니다.
해결 방법: 공통 인증 및 권한 안내를 참고하세요.
404: not_found_error, model_not_found 원인: 이 요청에서는 해당 리소스나 모델을 사용할 수 없습니다.
해결 방법: ID, 모델, 프로젝트를 확인하고 리소스가 삭제되었는지 확인하세요.
409: conflict_error 원인: 작업이 리소스의 현재 상태와 충돌합니다.
해결 방법: 재시도하기 전에 메시지를 읽고 현재 상태를 조회하세요.
409: executor_version_incompatible 원인: 지원되지 않는 실행기 버전입니다.
해결 방법: 실행기를 업그레이드한 후 재시도하세요.
424: mcp_server_startup_failed 원인: MCP 서버를 시작하지 못했습니다.
해결 방법: 서버 설정과 자격 증명을 확인하세요. 연결 문제 해결을 참고하세요.
429: files_api_rate_limit_exceeded 원인: 파일 요청이 사용자에게 적용되는 Files API 요청 한도를 초과했습니다.
해결 방법: 동시 요청 수를 줄이고 Files API 요청 한도 안내를 따르세요.
500: internal_error 원인: 서비스에서 예기치 않은 오류가 발생했습니다.
해결 방법: 재시도하기 전에 저장된 작업을 확인하세요. 공통 서버 오류 안내를 참고하세요.
503: service_unavailable_error, server_is_overloaded 원인: 서비스 또는 해당 서비스의 종속성을 일시적으로 사용할 수 없거나 과부하가 발생했습니다.
해결 방법: 공통 503 오류 안내를 따르고 재시도하기 전에 저장된 작업을 확인하세요.

Files API 요청 한도

세션 생성 또는 파일 첨부 요청에 대해 HTTP 429와 함께 files_api_rate_limit_exceeded가 반환될 수 있습니다. Agents API는 Files API를 통해 파일을 확인합니다. 이때 인증된 사용자의 Files API 요청 할당량이 차감됩니다. 첨부한 파일마다 별도의 확인 요청이 필요할 수 있습니다.

{
  "error": {
    "type": "rate_limit_error",
    "code": "files_api_rate_limit_exceeded",
    "message": "The Files API rate limit for your user has been exceeded. Reduce the rate of requests that access files, then try again.",
    "param": null
  }
}

파일에 접근하는 동시 요청 수를 줄이세요. 재시도할 때는 지수 백오프를 적용하고 최대 시도 횟수를 정하세요. 즉시 재시도하면 할당량이 계속 소진될 수 있습니다.

이 HTTP 응답은 요청한 작업이 실패했다는 뜻입니다. 생성 성공 응답을 받은 뒤 세션이나 턴이 비동기적으로 실패하는 경우와는 다릅니다. 이 오류를 식별하려면 메시지 텍스트를 비교하는 대신 error.code를 확인하세요.

턴 오류

실패한 턴의 상태는 status: "failed"이며, error에는 code와 message가 포함됩니다. 예를 들어 모델에 과부하가 발생하면 다음 오류가 반환될 수 있습니다.

{
  "code": "server_overloaded",
  "message": "The model is temporarily overloaded. Please retry your request after a brief delay."
}

턴 오류 코드에는 별도의 HTTP 상태 코드가 없습니다. 예를 들어 실패한 턴에서는 server_overloaded를 사용하고, HTTP 응답에서는 server_is_overloaded를 사용할 수 있습니다.

코드 설명
invalid_request 원인: 입력이나 설정이 유효하지 않습니다.
해결 방법: 재시도하기 전에 메시지에 표시된 입력을 수정하세요.
context_length_exceeded 원인: 입력이 모델의 컨텍스트 윈도우를 초과했습니다.
해결 방법: 입력을 줄이세요. 대화가 너무 길면 더 짧은 요약으로 새 세션을 시작하세요.
session_budget_exceeded 원인: 세션이 사용량 예산을 모두 소진했습니다.
해결 방법: 작업을 계속하려면 새 세션을 시작하세요.
credit_balance_exhausted 원인: 조직에 남은 API 크레딧이 없습니다.
해결 방법: 크레딧 잔액 안내를 참고하세요.
project_spend_limit_exceeded 원인: 프로젝트에 적용되는 지출 한도에 도달했습니다.
해결 방법: 프로젝트 지출 한도 안내를 참고하세요.
organization_spend_limit_exceeded 원인: 조직에 적용되는 지출 한도에 도달했습니다.
해결 방법: 조직 지출 한도 안내를 참고하세요.
organization_usage_limit_exceeded 원인: 조직이 OpenAI에서 지정한 사용량 한도에 도달했습니다.
해결 방법: 조직 사용량 한도 안내를 참고하세요.
usage_limit_exceeded 원인: 결제 또는 사용량 한도에 도달했으며 더 구체적인 오류 코드는 없습니다.
해결 방법: 공통 결제 오류 안내를 따르세요.
rate_limit_exceeded 원인: 요청 수가 허용된 요청 한도를 초과했습니다.
해결 방법: 재시도 절차를 따르세요.
server_overloaded 원인: 모델 서비스에 일시적으로 과부하가 발생했습니다.
해결 방법: 잠시 기다린 뒤 완료되지 않은 작업을 재시도하세요. 과부하가 지속되면 이후 턴에서 사용할 모델을 변경하세요.
flex_unavailable 원인: Flex 처리를 일시적으로 사용할 수 없습니다.
해결 방법: 나중에 재시도하거나 세션의 서비스 등급을 변경해 이후 턴에서 표준 처리(default)를 사용하세요.
connection_failed, request_timeout, server_error, internal_error 원인: 연결 실패, 시간 초과 또는 서비스 장애로 턴을 완료하지 못했습니다.
해결 방법: 저장된 작업을 확인한 후 시도 횟수를 제한해 재시도하세요.
authentication_error 원인: 자격 증명이나 권한 문제로 모델에 접근하지 못했습니다.
해결 방법: 공통 인증 및 권한 안내를 참고하세요.
resource_not_found 원인: 요청한 모델이나 리소스를 사용할 수 없습니다.
해결 방법: 재시도하기 전에 모델과 세션 설정을 확인하세요.
sandbox_error 원인: 환경에서 작업을 완료하지 못했습니다.
해결 방법: 환경 오류를 확인하고 설정 또는 연결 문제를 해결하세요.
executor_version_incompatible 원인: 실행기가 이 턴을 실행할 수 없습니다.
해결 방법: 실행기를 업그레이드한 후 세션이 실패 상태가 아니면 같은 세션에서 재시도하세요.
active_turn_not_steerable 원인: 진행 중인 턴에서 추가 입력을 받을 수 없습니다.
해결 방법: 턴이 끝난 후 다음 메시지를 보내세요.
cyber_policy, misalignment_policy_violation 원인: 안전 시스템이 요청을 차단했습니다.
해결 방법: 수정한 입력을 제출하기 전에 요청이 해당 안전 요구 사항에 맞는지 검토하세요.

세션 및 환경 오류

턴이 실패했다고 해서 세션도 반드시 실패한 것은 아닙니다. 세션을 조회해 작업을 이어갈 수 있는지 확인하세요. status 값이 requires_action이면 필요한 조치를 처리하세요. 세션이 실패했다면 원인을 해결한 후 여전히 필요한 입력으로 새 세션을 생성하세요.

코드 설명
environment_connection_failed, environment_connection_timeout 원인: 샌드박스가 연결되지 않았거나 연결 시간이 초과되었습니다.
해결 방법: 실행기가 정상적으로 시작되었는지, 네트워크에 접근할 수 있는지 확인하세요. 자체 호스팅 환경에서는 연결 설정을 확인하세요.
sandbox_error 원인: 샌드박스 설정 또는 실행에 실패했습니다.
해결 방법: 설정 명령어, 패키지, 입력 파일, 환경 오류를 확인하세요.
executor_version_incompatible 원인: 세션의 실행기 버전이 지원되지 않습니다.
해결 방법: 새 세션을 생성하기 전에 실행기를 업그레이드하세요.
idle_timeout 원인: 활동이 없어 호스팅 환경이 만료되었습니다.
해결 방법: 새 세션을 생성하고 입력을 다시 제공하세요.
internal_error 원인: 내부 오류로 세션이나 환경이 준비 상태에 이르지 못했습니다.
해결 방법: 잠시 기다린 후 설정을 재시도하세요. 계속 실패하면 지원팀에 문의하세요.

복구

일시적인 오류 발생 시 재시도

요청 한도 초과, 과부하, 시간 초과, 일시적인 서비스 장애가 발생하면 다음 절차를 따르세요. 잘못된 입력, 자격 증명 문제, 결제 한도 문제는 재시도하기 전에 해결하세요.

  1. 작업 결과를 확인하세요. 세션이 생성되었다면 해당 세션과 턴, 저장된 항목을 조회하세요. 턴이 아직 진행 중이면 계속 상태를 확인하세요. 완료되었다면 해당 결과를 사용하세요.
  2. 이미 실행된 작업을 확인하세요. 턴이 실패했더라도 파일을 이미 변경했거나 외부 도구를 호출했을 수 있습니다. 에이전트에 작업을 다시 요청하기 전에 해당 작업이 미친 영향을 확인하세요.
  3. 잠시 기다리고 재시도를 제한하세요. 공통 재시도 안내에 따라 HTTP 응답의 Retry-After에 지정된 시간을 지키고 최대 시도 횟수나 마감 시간을 설정하세요.
  4. 요청을 재시도하거나 새 턴을 시작하세요. HTTP 오류가 발생했다면 원래 작업의 결과를 확인한 후 해당 작업을 재시도하세요. 턴이 실패했다면 세션이 idle 상태가 될 때까지 기다린 후 후속 메시지를 보내 완료되지 않은 작업만 이어서 수행하도록 요청하세요. 그러면 기존 대화에서 새 턴이 시작됩니다.

턴이 완료되었더라도 도구 실행 결과를 확인하세요. 오류가 달라지거나 재시도 한도에 도달하면 자동 재시도를 중단하세요.

잘못된 입력 수정

다시 제출하기 전에 error.param 또는 error.message가 가리키는 필드를 수정하세요.

크기 관련 오류가 발생했다면 재시도하기 전에 입력 및 출력 스키마 또는 도구 실행 결과의 크기를 줄이세요. 에이전트 설정이 너무 크면 지침과 도구 정의의 크기를 줄여 새 세션을 생성하세요.

업로드 요구 사항과 예시는 업로드 오류 해결을 참고하세요. 메시지에 이미지 문제가 표시되면 이미지 데이터나 URL을 확인하세요.

스트림 연결 끊김

error 이벤트나 스트림 연결 끊김만으로는 턴의 최종 상태를 알 수 없습니다. 입력을 다시 제출하기 전에 끊어진 스트림 복구 절차에 따라 다시 연결하고 저장된 작업을 확인하세요. 조회한 세션의 상태가 status: "failed"이거나 agent.session.failed 이벤트를 받으면 재연결을 중단하고 세션 복구 안내를 따르세요.

오류가 지속되어 지원팀에 문의할 때는 요청 ID, 세션 ID, 턴 ID를 함께 보내세요.