403 오류: glm-5 호출이 실패할 때 대처법
403은 인증은 되었지만 권한이 없다는 뜻입니다. 키 자체는 유효하지만 이 모델이나 이 그룹을 호출할 수 없습니다.
403 Forbidden 은 신원은 확인되었지만 접근 권한이 없다는 뜻입니다. 401 과의 차이는, 401 이 «당신은 누구인가» 라면 403 은 «권한이 없다» 입니다. 보통 키에 연결된 허용 목록이나 그룹에 해당 모델을 추가해야 합니다.
glm-5 는 Z.AI 가 제공하며, 이 페이지의 원인 분석·처리 방법·실측 데이터는 모두 게이트웨이 계층에서 이 모델의 실제 운영 상황을 바탕으로 정리했습니다.
이 게이트웨이에서 가장 흔한 원인은 「이 키에 이 모델 권한이 없음」입니다. 우선 처리할 동작은 「토큰 페이지에서 이 모델을 키의 허용 목록에 추가한다」입니다.
주요 원인
- 이 키에 이 모델 권한이 없음
- 모델이 키에 연결된 그룹에 포함되지 않음
- 키에 IP 허용 목록이 있고 현재 IP가 여기에 없음
- 모델이 종료되었거나 더 높은 권한이 필요함
해결 방법
- 토큰 페이지에서 이 모델을 키의 허용 목록에 추가한다
- 키의 그룹에 이 모델이 포함되는지 확인한다
- IP 허용 목록 설정을 확인한다
- 권한이 있는 모델로 바꾼다
지수 백오프 재시도 예시
아래 코드는 glm-5가 403를 반환할 때 최대 5회까지 재시도합니다. 대기 시간은 점점 길어지고 무작위 지터가 더해져 동시 재시도를 막습니다. base URL과 API 키는 환경 변수에서 읽고, 코드에 하드코딩하지 마세요.
import os, time, random
import requests
BASE = os.getenv("OPENAI_BASE_URL") # e.g. https://<your-gateway>/v1
KEY = os.getenv("OPENAI_API_KEY")
MODEL = 'glm-5'
def chat(messages, retries=5):
"""Retry with exponential backoff + jitter."""
for i in range(retries):
try:
r = requests.post(
BASE + "/chat/completions",
headers={"Authorization": "Bearer " + KEY},
json={"model": MODEL, "messages": messages, "stream": True},
timeout=60,
)
if r.status_code == 429 or r.status_code >= 500:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
continue
r.raise_for_status()
return r.json()
except requests.exceptions.Timeout:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
raise RuntimeError("gave up after " + str(retries) + " retries")
print(chat([{"role": "user", "content": "hello"}]))이 모델의 핵심 데이터
| API 엔드포인트 | https://api.airai.cc/v1 |
|---|---|
| OpenAI 호환 | OpenAI-compatible |
| 제공사 | Z.AI |
|---|---|
| 컨텍스트 | 204.8K |
| 지원 기능 | Reasoning, Tools, Open Weights |
| API 형식 | openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search |
| 과금 공식 | p * 1 + cr * 0.2 + cc * 0 + c * 3.2 |
자주 묻는 질문
비동기나 배치 처리로 403 를 피할 수 있나요?
먼저 동시성을 낮추세요. 처리량 문제의 대부분은 그것으로 사라집니다. 이 모델의 컨텍스트 윈도우는 204.8K, 벤더는 Z.AI 입니다. 컨텍스트 204.8K 에서는 긴 입력이 첫 토큰 지연을 크게 늘립니다. 캐시 계층을 두면 반복 요청이 모두 모델에 도달하지 않습니다. 피크는 배치나 큐로 완화하는 편이 즉흥적으로 동시성을 올리는 것보다 안정적입니다.
재시도할 가치가 있는 코드와 아무 소용 없는 코드는 무엇인가요?
보통 비즈니스 코드를 바꿀 필요는 없고 호출 간격만 조정하면 됩니다. 재시도가 가장 효과적인 첫 단계입니다. 과금 방식이 p * 1 + cr * 0.2 + cc * 0 + c * 3.2 인 경우, 실패한 요청은 사용량에 포함되지 않습니다. 재시도 상한을 3~5회로 정하고 지터를 추가하세요. 재시도 가능한 오류에는 지수 백오프를 쓰고, 나머지는 즉시 오류를 반환하세요.
실패한 요청도 레이트 리밋 할당량에 포함되나요?
이미 생성된 부분만 과금되고, 실패한 부분은 과금되지 않습니다. 입력 단가는 대략 $1.00 / 백만 토큰입니다. 먼저 콘솔에서 잔액과 속도 제한을 확인한 뒤 코드를 살펴보세요. p * 1 + cr * 0.2 + cc * 0 + c * 3.2 로 비용을 추산할 때는 재시도 예산도 포함하세요.
다른 벤더의 유사 모델로 바꾸면 403 가 해결되나요?
예비 모델도 함께 준비해 두세요. 아키텍처 수준에서 폴백을 두는 편이 오류를 하나씩 고치는 것보다 안정적입니다. Z.AI 의 이 모델에는 게이트웨이가 전환할 수 있는 upstream 노드가 여러 개 있습니다. 더 가벼운 예비 모델을 준비해 두면 주 흐름이 끊기지 않습니다.
이 모델의 다른 오류
- glm-5: 오류 429 — 원인과 해결
- glm-5: 오류 timeout — 원인과 해결
- glm-5: 오류 500 — 원인과 해결
- glm-5: 오류 502 — 원인과 해결
- glm-5: 오류 503 — 원인과 해결
- glm-5: 오류 504 — 원인과 해결
- glm-5: 오류 401 — 원인과 해결
- glm-5: 오류 400 — 원인과 해결
같은 오류가 나는 다른 모델
- gpt-5
- claude-opus-5
- gemini-2.5-pro
- deepseek-v4-pro
- grok-4.3
- llama-3.3-70b-instruct
- qvq-max
- qwq-32b
- MiniMax-M3
- kimi-k3
- hy3
- doubao-seed-evolving
- mimo-v2.5
- gpt-4o
- claude-opus-4-6
- gemini-2.5-flash
데이터 업데이트: 2026-10-10 12:10