KO ▾
API 키 받기

LLM Inference API가이드

AI 채팅 API 흔한 오류 해결

AI 채팅 API 통합 디버깅은 헤더 구성 오류, 토큰 제한에 대한 오해 또는 부적절한 스트리밍 처리로 인해 종종 실패합니다. 이 가이드는 개발자가 OpenAI 호환 엔드포인트를 통합할 때 직면하는 가장 일반적인 구현 오류를 다루며, 프로덕션에서 코드가 안정적으로 실행되도록 보장합니다.

업데이트:

주요 포인트

  1. 컨텍스트 창 오버플로를 피하려면 문자 수뿐만 아니라 특정 모델의 토크나이저를 기반으로 토큰 사용량을 항상 계산하세요.
  2. 스트림 파싱 전에 HTTP 상태 코드를 확인하여 스트리밍 오류를 처리하세요. 네트워크 끊김으로 인해 스트림이 불일치 상태가 될 수 있습니다.
  3. API 사양과 정확히 일치하도록 요청 헤더를 확인하여 알려지지 않는 400 또는 401 오류를 방지하세요.
  4. 분당 300개 이상의 요청을 초과하면 429 오류가 발생하여 애플리케이션이 중단되므로, 속도 제한 백오프 전략을 즉시 구현하세요.

컨텍스트 창 이해

API 실패의 가장 흔한 이유 중 하나는 컨텍스트 창을 초과하는 것입니다. 컨텍스트 창은 입력 프롬프트와 생성된 완성문을 모두 포함하여 단일 요청에 허용되는 토큰의 총 수를 정의합니다. 이 제한에 도달하면 API는 시퀀스가 너무 길다는 오류를 표시하며 요청을 거부합니다.

개발자들은 종종 문자 수를 토큰 수로 오해합니다. 단일 단어는 토크나이저에 따라 여러 토큰을 나타낼 수 있습니다. 예를 들어, inference api에서 제공하는 100,000 토큰 컨텍스트 창은 방대한 대화 기록이나 대규모 문서 처리를 가능하게 하지만 무한하지는 않습니다.

  • 토큰 사용량 모니터링: 요청을 보내기 전에 모델의 공식 토크나이저를 사용하여 토큰을 정확하게 세세요.
  • 지능형 잘라내기: 제한을 초과하면 가장 최근 메시지가 아닌 대화 기록에서 가장 오래된 메시지를 제거하세요.
  • 오버헤드 고려: 모델의 응답을 위해 일부 토큰을 예약하세요. 프롬프트가 63,000 토큰을 사용하는 경우 완성문에 사용할 수 있는 토큰은 1,000개만 남습니다.

이 제한을 관리하지 않으면 연결이 끊기거나 응답이 불완전해질 수 있습니다. 프로덕션에 배포하기 전에 모델 문서의 토큰 수를 항상 확인하세요.

스트리밍 오류 처리

서버 전송 이벤트(SSE)를 통한 스트리밍 응답은 좋은 사용자 경험에 필수적이지만 오류 처리의 복잡성을 초래합니다. 표준 JSON 응답과 달리 스트림은 중간에 끊길 수 있습니다. 네트워크 오류가 발생하면 클라이언트는 부분 데이터를 수신하여 스트림을 정의되지 않은 상태로 남길 수 있습니다.

스트림 소비자를 구현할 때는 스트림의 수명 주기를 신중하게 처리해야 합니다. 스트림을 파싱하기 전에 HTTP 상태 코드를 확인하세요. 연결이 끊기면 오류를 로깅하고 재시도할지 아니면 사용자에게 메시지를 표시할지 결정하세요.

또한 클라이언트가 스트림 종료 마커를 올바르게 처리하는지 확인하세요. 일부 라이브러리는 특정 종료 이벤트를 기대하는 반면, 다른 라이브러리는 연결 종료를 사용합니다. 이를 오해하면 프로세스가 멈추거나 메모리 누수가 발생할 수 있습니다.

스트림 요청에 항상 타임아웃을 구현하세요. API가 합리적인 시간 내에 응답을 보내지 않으면 리소스를 해제하기 위해 요청을 중단하세요. 이는 높은 동시성 환경에서 안정성을 유지하는 데 중요합니다.

토큰 계산 및 제한

토큰 계산은 컨텍스트 창 내에 머무르는 것뿐만 아니라 비용 관리와도 관련이 있습니다. 각 토큰에는 특정 가격이 있으며, 사용량을 잘못 계산하면 예상치 못한 청구로 이어질 수 있습니다. 입력 및 출력에 대한 토큰당 요금이 있는 투명한 가격 책정을 제공하지만, 여전히 사용량을 정확하게 추적해야 합니다.

대부분의 개발자는 토큰을 세기 위해 라이브러리를 사용하지만, 사용하는 모델에 맞는 올바른 토크나이저를 사용하는 것이 중요합니다. 다른 모델은 다른 토크나이저를 사용하며, 잘못된 토크나이저를 사용하면 계산된 토큰 수에 상당한 차이가 발생할 수 있습니다. 예를 들어, 영어 텍스트로 훈련된 토크나이저는 코드용으로 훈련된 토크나이저보다 구두점을 다르게 처리할 수 있습니다.

사용량 제한에 주의를 기울이세요. API는 키당 분당 300개의 요청을 허용합니다. 이를 초과하면 429 Too Many Requests 오류가 발생합니다. 애플리케이션에 간단한 카운터를 구현하면 이러한 제한 내에 머무를 수 있으며 서비스 중단도 피할 수 있습니다.

마지막으로, 토큰 수는 동일한 토크나이저의 다른 구현 간에 약간 다를 수 있음을 기억하세요. 일관성을 보장하기 위해 알려진 몇 가지 입력으로 토큰 계산 로직을 테스트하세요.

헤더 구성 함정

헤더는 API 요청의 구성 레이어입니다. 헤더를 잘못 구성하면 400 Bad Request 또는 401 Unauthorized 오류의 일반적인 원인이 됩니다. 가장 중요한 두 가지 헤더는 Content-Type 및 Authorization입니다.

Content-Type 헤더는 application/json로 설정해야 합니다. 누락되거나 잘못된 경우 API가 요청 본문을 올바르게 파싱하지 못할 수 있습니다. Authorization 헤더에는 Bearer YOUR_API_KEY 형식으로 API 키가 포함되어야 합니다. 흔한 실수는 Bearer 접두사를 잊어버리는 것이며, 이는 인증 오류를 초래합니다.

  • 오타 확인: API 키가 올바르게 복사되었는지 확인하세요. 후행 공백이나 줄바꿈도 포함됩니다.
  • 헤더 검증: 전송 중인 헤더를 검사하려면 curl 또는 Postman과 같은 도구를 사용하세요.
  • 대소문자 구분 처리: 일부 API는 헤더 이름에 대해 대소문자를 구분하지만, 대부분의 최신 API는 구분하지 않습니다.

요청을 보내기 전에 항상 헤더를 확인하세요. 헤더의 작은 실수가 전체 요청을 실패하게 만들어 혼란과 디버깅 시간 낭비를 초래할 수 있습니다.

속도 제한 관리

속도 제한은 공정한 사용과 남용 방지를 위해 존재합니다. API는 키당 분당 300개의 요청을 허용합니다. 이 제한을 초과하면 429 Too Many Requests 오류가 발생합니다. 이 오류에는 다른 요청을 하기 전에 기다려야 하는 시간을 나타내는 Retry-After 헤더가 포함됩니다.

속도 제한을 효과적으로 관리하려면 백오프 전략을 구현하세요. 즉시 재시도하는 대신, 각 재시도마다 지수적으로 증가하는 기간 동안 기다리세요. 이렇게 하면 피크 시간 동안 애플리케이션이 API를 압도하는 것을 방지할 수 있습니다.

사용량 메트릭을 모니터링하세요. 대부분의 API는 요청량을 추적하기 위한 대시보드 또는 API 엔드포인트를 제공합니다. 이 데이터를 사용하여 애플리케이션의 요청 패턴을 최적화하세요. 너무 많은 작은 요청을 보내고 있다면 일괄 처리를 고려하세요.

속도 제한은 계정당이 아닌 키당이라는 것을 기억하세요. 여러 키가 있는 경우 각 키에는 자체 제한이 있습니다. 예상치 못한 제한 도달을 피하기 위해 키 분배를 적절히 계획하세요.

오류 코드 해석

오류 코드를 이해하는 것은 디버깅에 필수적입니다. 가장 흔히 마주치는 오류는 400 Bad Request, 401 Unauthorized, 429 Too Many Requests, 500 Internal Server Error입니다.

  • 400 Bad Request: 이는 일반적으로 누락된 필드 또는 잘못된 JSON과 같은 요청 본문 문제를 나타냅니다. 오류 메시지에서 어떤 필드가 잘못되었는지 세부 정보를 확인하세요.
  • 401 Unauthorized: 이는 API 키에 문제가 있음을 나타냅니다. 키가 정확하고 취소되지 않았는지 확인하세요.
  • 429 Too Many Requests: 이는 속도 제한을 초과했음을 나타냅니다. 이를 원활하게 처리하려면 백오프 전략을 구현하세요.
  • 500 Internal Server Error: 이는 서버 측 문제를 나타냅니다. 짧은 지연 후 요청을 재시도하세요.

항상 오류 응답 본문을 로깅하세요. 오류의 원인이 된 특정 필드와 같은 유용한 정보가 종종 포함되어 있습니다. 이는 디버깅 시간을 몇 시간 절약할 수 있습니다.

요청 본문 최적화

요청 본문은 API 상호작용의 핵심입니다. 요청 본문을 최적화하면 성능이 향상되고 비용이 절감됩니다. 흔히 저지르는 실수 중 하나는 단일 요청에 너무 많은 데이터를 보내는 것입니다. 프롬프트가 너무 크면 컨텍스트 창을 초과하거나 비용이 더 많이 발생할 수 있습니다.

JSON을 신중하게 구조화하세요. 필수 필드가 모두 포함되어 있는지 확인하고, 선택적 필드는 필요할 때만 포함하세요. 예를 들어 스트리밍이 필요하지 않다면 stream 매개변수를 포함하지 마세요. 이렇게 하면 페이로드 크기가 줄어들고 응답이 단순해집니다.

curl이나 Postman과 같은 도구를 사용하여 요청 본문을 테스트하세요. 이렇게 하면 JSON이 유효한지 확인하고 API가 이를 올바르게 해석하는지 검증할 수 있습니다. 또한 불필요한 데이터가 전송되는지 식별하는 데 도움이 됩니다.

마지막으로 동일한 요청에 대한 응답을 캐싱하는 것을 고려하세요. 동일한 프롬프트를 여러 번 보내는 경우 응답을 로컬에 저장하여 API 호출을 다시 수행하지 않도록 할 수 있습니다. 이렇게 하면 반복적인 작업의 지연 시간과 비용을 크게 줄일 수 있습니다.

함수 호출 디버깅

함수 호출을 통해 모델이 사용자 입력에 기반하여 함수를 실행할 수 있습니다. 함수 호출 디버깅은 여러 단계가 포함되기 때문에 어려울 수 있습니다. 여기에는 요청 보내기, 함수 호출 받기, 함수 실행 및 결과 다시 모델에 보내기가 포함됩니다.

함수 정의가 정확한지 확인하세요. 스키마는 실제 함수 시그니처와 일치해야 합니다. 스키마가 잘못되면 모델이 유효하지 않은 인수를 생성하여 함수를 실행할 때 오류가 발생할 수 있습니다.

함수 호출 인수와 함수 출력을 로그에 기록하세요. 이렇게 하면 모델이 올바른 인수를 생성하는지 확인하고 함수가 예상대로 실행되는지 검증할 수 있습니다. 오류가 발생하면 로그를 통해 문제를 식별할 수 있습니다.

오류를 우아하게 처리하세요. 함수 실행이 실패하면 모델에 오류 메시지를 보내어 모델이 응답을 조정할 수 있도록 하세요. 이렇게 하면 사용자 경험이 향상되고 모델이 오류에서 복구할 수 있습니다.

질문과 답변

API 요청의 토큰 사용량은 어떻게 계산하나요?

특정 모델에 제공된 공식 토큰화 라이브러리를 사용하세요. 문자 수는 토큰 수를 나타내는 신뢰할 수 있는 지표가 아닙니다. 서로 다른 문자가 서로 다른 수의 토큰을 나타낼 수 있기 때문입니다. 대부분의 SDK는 토큰을 정확하게 세는 유틸리티 함수를 제공합니다.

속도 제한을 초과하면 어떻게 되나요?

429 Too Many Requests 오류가 발생합니다. 응답에는 재시도 전에 기다려야 하는 시간을 나타내는 <code>Retry-After</code> 헤더가 포함됩니다. 이를 우아하게 처리하기 위해 지수 백오프 전략을 구현하는 것이 좋습니다.

이 API와 호환되는 모든 OpenAI SDK를 사용할 수 있나요?

네, OpenAI API 형식을 지원하는 모든 SDK는 <code>base_url</code> 및 <code>API_KEY</code> 환경 변수를 변경하기만 하면 사용할 수 있습니다. 여기에는 Python, Node.js 및 기타 인기 있는 언어가 포함됩니다.

애플리케이션에서 스트리밍 오류를 어떻게 처리하나요?

스트림을 파싱하기 전에 HTTP 상태 코드를 확인하세요. 연결이 끊기면 오류를 로그에 기록하고 재시도할지 아니면 사용자에게 메시지를 표시할지 결정하세요. 프로세스가 멈추지 않도록 시간 제한을 구현하세요.

키는 양식 하나만 작성하면 받을 수 있습니다

계정을 생성하고 키를 복사한 후 기본 URL을 변경하세요. 설정은 이것으로 끝입니다.

API 키 받기