Skip to Content
개발 가이드속도 제한

속도 제한

OfoxAI의 속도 제한은 플랫폼 안정성을 보장합니다. 제한 규칙을 이해하고 호출 전략을 최적화하세요.

기본 제한

OfoxAI는 종량제 과금이며, 모든 사용자가 동일한 속도 정책을 공유합니다:

제한 항목할당량
RPM (요청/분)100 (팀 단위 집계)
TPM (토큰/분)무제한

팀 단위 집계: RPM은 전체 조직(팀) 단위로 누적 계산되며, 팀 산하의 여러 API Key가 동일한 할당량을 공유합니다. 이를 통해 다중 Key 누적 사용으로 상위 공급자의 속도 제한을 돌파하는 것을 근본적으로 방지합니다. 더 높은 RPM 할당량이 필요하시면 hi@ofox.ai에 조정을 요청하세요.

Rate Limit Header

모든 API 응답에 속도 제한 정보가 포함됩니다:

x-ratelimit-limit-requests: 100 x-ratelimit-remaining-requests: 95 x-ratelimit-reset-requests: 12s
Header설명
x-ratelimit-limit-requestsRPM 제한 값
x-ratelimit-remaining-requests남은 요청 횟수
x-ratelimit-reset-requests요청 제한 리셋 시간

429 에러 처리

속도 제한이 초과되면 API가 429 Too Many Requests를 반환합니다:

from openai import RateLimitError import time try: response = client.chat.completions.create(...) except RateLimitError as e: retry_after = float(e.response.headers.get("retry-after", 1)) print(f"속도 제한 초과, {retry_after}초 대기 중...") time.sleep(retry_after)

최적화 전략

1. 프롬프트 캐싱 사용

반복되는 system prompt의 경우, 캐싱을 활성화하면 토큰 소비를 줄일 수 있습니다:

response = client.chat.completions.create( model="openai/gpt-6.1-sol", messages=[ # 긴 system prompt는 자동으로 캐싱됩니다 {"role": "system", "content": "당신은 전문적인...(긴 텍스트 생략)"}, {"role": "user", "content": "사용자 질문"} ] )

자세한 내용은 다음을 참조하세요: 프롬프트 캐싱.

2. 배치 처리

여러 짧은 요청을 하나의 요청으로 합칩니다:

# ❌ 비권장: 각 질문에 대해 개별 요청 전송 for question in questions: client.chat.completions.create(messages=[{"role": "user", "content": question}]) # ✅ 권장: 하나의 요청으로 통합 combined = "\n".join(f"{i+1}. {q}" for i, q in enumerate(questions)) client.chat.completions.create( messages=[{"role": "user", "content": f"다음 질문에 순서대로 답변해 주세요:\n{combined}"}] )

3. 적합한 모델 선택

추천 모델은 모델 마켓플레이스 를 참조하세요。

4. max_tokens 제어

적절한 max_tokens 제한을 설정하여 불필요한 토큰 소비를 방지합니다:

response = client.chat.completions.create( model="openai/gpt-6.1-sol", messages=[{"role": "user", "content": "한 문장으로 요약"}], max_tokens=100 # 출력 길이 제한 )

5. 모델 폴백 사용

주 모델이 제한에 도달하면 자동으로 대체 모델로 전환합니다:

response = client.chat.completions.create( model="openai/gpt-6.1-sol", messages=[...], extra_body={ "extra_body": { "provider": { "fallback": ["anthropic/claude-sonnet-5.5", "google/gemini-3.8-flash"] } } } )

Python SDK의 extra_body= 파라미터는 그 내용을 요청 본문의 최상위에 병합합니다. 따라서 extra_body를 한 단계 더 중첩하여 provider가 요청 본문의 extra_body.provider에 위치하도록 해야 합니다. 자세한 내용은 장애 복구를 참조하십시오.

마지막 업데이트