애플리케이션에서 LLM을 교체하는 일은 모델 ID 한 줄을 바꾸는 것처럼 보이지만, 응답 지연 시간, 토큰 비용, 출력 형식 안정성, 도구 호출, 이미지 파이프라인까지 바꿀 수 있습니다.
GLM-5.3-Flash는 GLM-5.3보다 약 9배 저렴하고, GLM-5.3이 기본 지원하지 않는 이미지를 처리하며, 생성 속도는 약 절반입니다. 어떤 모델이 적합한지 확인하려면 동일한 요청을 두 모델에서 실행해 비교해야 합니다.
이 글에서는 Apidog로 GLM-5.3-Flash API 테스트 컬렉션을 구성합니다. 텍스트·이미지·도구 호출, 응답 어설션, GLM-5.3 비교 실행까지 포함합니다.
왜 curl만으로는 부족한가요?
curl은 첫 호출 확인에는 충분합니다. API 가이드도 curl 사용법을 다룹니다. 하지만 반복 테스트에는 두 가지 문제가 있습니다.
- Base64 이미지 페이로드: 데이터 URL은 수천 자에 이릅니다. 터미널 히스토리에 남겨도 읽거나 수정하거나 재실행하기 어렵습니다.
- 응답 검증 부재: curl은 응답을 출력할 뿐, 애플리케이션이 필요한 필드와 형식을 여전히 받는지는 검증하지 않습니다.
저장된 컬렉션에서는 페이로드를 편집 가능한 요청으로 관리하고, 어설션을 매 실행마다 적용할 수 있습니다.
환경 설정
모델과 실행 환경에 따라 바뀌는 값은 환경 변수로 관리합니다.
| 변수 | 값 |
|---|---|
base_url |
https://api.z.ai/api/paas/v4 |
api_key |
사용자의 Z.ai 키 |
model |
glm-5.3-flash |
API 키를 헤더에 직접 입력하지 말고 api_key 환경 변수에 저장하세요. 컬렉션 공유하거나 내보내도 키 노출을 막을 수 있습니다.
요청 1: 텍스트 완성
POST {{base_url}}/chat/completions
헤더:
Authorization: Bearer {{api_key}}
Content-Type: application/json
본문:
{
"model": "{{model}}",
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
],
"reasoning_effort": "low"
}
reasoning_effort 기본값은 max이며, 추론 토큰도 출력 토큰으로 청구됩니다. 연결 확인용 요청에는 low를 사용하세요.
다음 어설션을 추가합니다.
- 상태 코드가
200이다. -
choices[0].message.content가 존재한다. -
choices[0].finish_reason이stop이다. -
usage.total_tokens가 존재한다.
특히 finish_reason을 확인하세요. 값이 length라면 응답이 완료되기 전에 출력 한도에서 잘린 것입니다.
요청 2: 이미지 호출
GLM-5.3-Flash의 기본 이미지 처리 기능을 검증하려면 동일한 엔드포인트에 타입 지정 콘텐츠 블록을 전송합니다.
{
"model": "{{model}}",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What color is the dominant shape in this image? Answer with one word."
},
{
"type": "image_url",
"image_url": {
"url": "{{test_image_url}}"
}
}
]
}
],
"reasoning_effort": "low"
}
환경에 test_image_url을 추가하고, 정답을 알고 있는 안정적인 공개 이미지 URL을 지정하세요. 고정 이미지와 결정론적 질문을 사용하면 데모가 아닌 회귀 테스트가 됩니다.
로컬 이미지는 환경 변수에 Base64 데이터 URL로 저장할 수 있습니다.
data:image/png;base64,iVBORw0go...
어설션:
- 상태 코드가
200이다. -
choices[0].message.content에 알려진 답이 포함된다. -
usage.prompt_tokens가 텍스트 전용 요청보다 크다.
마지막 항목은 중요한 카나리입니다. 이미지는 입력 토큰을 소비하므로 토큰 수가 증가하지 않았다면 이미지가 실제로 처리되지 않았을 수 있습니다. 이 경우에도 API는 200을 반환할 수 있습니다.
비전 경로와 실패 모드는 GLM-5.3-Flash 비전 가이드에서 확인할 수 있습니다.
요청 3: 도구 호출
함수 호출을 사용하는 애플리케이션이라면 별도 테스트가 필요합니다. 도구 호출 형식은 모델 통합에서 특히 버전 변화에 민감합니다.
{
"model": "{{model}}",
"messages": [
{"role": "user", "content": "Is the checkout-api service healthy?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_deployment_status",
"description": "Returns the current status of a named deployment.",
"parameters": {
"type": "object",
"properties": {
"service": {
"type": "string",
"description": "The service name."
}
},
"required": ["service"]
}
}
}
]
}
어설션:
-
choices[0].message.tool_calls가 존재하고 비어 있지 않다. -
choices[0].message.tool_calls[0].function.name이get_deployment_status다. -
choices[0].finish_reason이tool_calls다.
도구 호출의 존재 여부뿐 아니라 함수 이름까지 검증하면, 모델이 잘못된 도구를 선택하는 문제도 잡을 수 있습니다.
기존 API에서 도구 정의를 만들 때는 OpenAPI 스펙을 에이전트 도구로 전환하는 방법을 활용해 스키마 수작업을 줄일 수 있습니다.
GLM-5.3과 비교하기
환경을 복제한 뒤 model만 glm-5.3으로 변경하고 동일한 컬렉션을 실행하세요.
비교할 항목은 다음과 같습니다.
정확성
모든 어설션이 통과하는지 확인합니다. GLM-5.3은 이미지를 기본 처리하지 않으므로 이미지 요청이 실패할 수 있습니다. 이는 테스트 자체의 오류가 아니라 모델 기능 차이입니다.지연 시간
Apidog에서 요청별 응답 시간을 비교합니다. GLM-5.3은 Flash의 초당 약 49토큰 대비 초당 약 86토큰으로 생성되므로, 긴 출력에서는 더 빨리 완료될 수 있습니다.비용
usage.prompt_tokens와usage.completion_tokens에 각 모델 요율을 곱해 실제 요청당 비용을 계산합니다. 가격 분석과 전체 모델 비교를 함께 참고하세요.
reasoning_effort가 max이면 추론 토큰이 출력으로 청구될 수 있습니다. 같은 프롬프트를 low, high, max로 실행하고 토큰 수를 비교하면 실제 워크로드에 필요한 설정을 빠르게 찾을 수 있습니다.
로컬 배포 테스트
가중치를 직접 호스팅한다면 vLLM 또는 SGLang의 OpenAI 호환 엔드포인트를 사용할 수 있습니다. base_url만 로컬 서버 주소로 바꾸고 같은 컬렉션을 실행하세요.
이 테스트 스위트는 양자화 빌드를 검증할 때 특히 유용합니다. 기본 채팅은 통과해도 도구 스키마 처리나 이미지 입력 성능이 저하될 수 있기 때문입니다. 배포 방법은 로컬 실행 가이드에서 확인하세요.
CI에 통합하기
컬렉션이 안정화되면 다음 시점에 실행하세요.
- 모델 마이그레이션 전
- 정기 스케줄 실행으로 공급자 측 변경 감지
- SDK 또는 의존성 업데이트 후
- 로컬 모델·양자화 설정 변경 후
모델 공급자는 동일한 모델 ID 뒤에서 동작을 변경할 수 있습니다. 스케줄된 컬렉션 실행은 사용자 보고보다 먼저 변화된 동작을 발견하는 방법입니다.
정상 경로 외에 테스트할 항목
기본 테스트가 통과하면 다음 케이스를 추가하세요.
- 실제 서비스와 유사한 긴 컨텍스트 요청
- 오류 처리 확인을 위한 잘못된 형식의 입력
- 재시도 로직 확인을 위한 속도 제한 응답
- 여러
image_url블록을 포함한 다중 이미지 요청 - 일반 완성과 형식이 다른 스트리밍 응답
마무리
중요한 것은 개별 요청이 아니라 반복 가능성입니다. 30초 안에 다시 실행할 수 있는 컬렉션이 있으면 가격 변경, Z.ai 모델 업데이트, 다른 공급자 전환 제안에도 모델 선택을 근거 기반으로 재검토할 수 있습니다.
Apidog는 무료로 시작할 수 있습니다. OpenAI 호환 스키마를 가져오면 요청을 모두 수동으로 만들지 않아도 됩니다. 이렇게 만든 컬렉션은 다음 모델 교체를 큰 도약이 아닌 작은 차이(diff)로 바꿉니다.
FAQ
유료 Apidog 플랜이 필요한가요?
아니요. 환경 변수와 어설션이 포함된 컬렉션은 무료 티어에서 사용할 수 있습니다.
읽기 어려운 요청 본문 없이 Base64 이미지를 어떻게 테스트하나요?
데이터 URL을 환경 변수에 저장하고 요청 본문에서는 {{test_image_url}}로 참조하세요.
코딩 플랜 엔드포인트도 같은 방식으로 테스트할 수 있나요?
예. base_url을 https://api.z.ai/api/coding/paas/v4로 변경하세요. 이 엔드포인트는 표준 API와 다르며, 자세한 내용은 Claude Code 및 Cline 가이드에서 다룹니다.
다른 공급자에도 적용되나요?
대체로 적용됩니다. OpenRouter, Cloudflare Workers AI, Vercel AI Gateway는 OpenAI 호환 인터페이스를 제공합니다. base_url과 모델 ID 네임스페이스를 변경하세요.
비결정론적 응답은 어떻게 어설션하나요?
정확한 전체 텍스트 대신 구조와 제약 조건을 검증하세요. 예를 들어 필드 존재 여부, 타입, 토큰 수, finish_reason, 알려진 답이 있는 질문의 부분 문자열 포함 여부를 확인하면 됩니다.

Top comments (0)