Mengganti LLM di aplikasi Anda adalah perubahan satu baris dan risiko yang jauh lebih besar. ID model adalah string. Apa yang diubah oleh string tersebut adalah latensi respons, biaya token, stabilitas format output, perilaku pemanggilan alat (tool-calling), dan apakah pipeline gambar Anda berfungsi sama sekali.
GLM-5.3-Flash membuatnya konkret. Model ini kira-kira sembilan kali lebih murah daripada GLM-5.3, ia menerima gambar secara native sementara GLM-5.3 tidak, dan ia menghasilkan sekitar setengah kecepatan. Itu adalah pertukaran yang nyata, dan satu-satunya cara untuk mengetahui di sisi mana Anda berada adalah dengan menjalankan permintaan Anda sendiri terhadap keduanya.
Panduan ini menyiapkan koleksi pengujian yang dapat digunakan kembali untuk API GLM-5.3-Flash di Apidog: panggilan teks, panggilan gambar, pemanggilan alat (tool calling), pernyataan (assertions), dan uji coba perbandingan terhadap model yang lebih besar.
Mengapa tidak menggunakan curl saja
Anda benar-benar dapat menguji endpoint ini dengan curl, dan panduan API kami menunjukkan hal itu. Dua hal akan terganggu setelah Anda melewati panggilan pertama.
Payload gambar Base64. URL data untuk tangkapan layar adalah ribuan karakter. Menempelkannya ke terminal menghasilkan perintah yang tidak dapat Anda baca, tidak dapat Anda edit, dan tidak akan Anda jalankan lagi besok. Pengujian multimodal adalah tempat riwayat shell berhenti menjadi alat yang layak.
Tidak ada yang ditegaskan. Respons curl adalah teks di layar. Ini memberitahu Anda bahwa panggilan berhasil, bukan bahwa respons masih berisi bidang yang dibaca aplikasi Anda. Ketika Anda mengubah model, perbedaan itulah inti dari pengujian.
Koleksi yang tersimpan memperbaiki keduanya. Payload berada dalam permintaan yang dapat Anda edit, dan penegasan (assertions) berjalan setiap kali.
Siapkan lingkungan
Buat lingkungan dengan nilai-nilai yang berubah di antara eksekusi. Menjaga ID model sebagai variabel adalah bagian penting, karena inilah yang memungkinkan Anda mengarahkan seluruh koleksi ke model yang berbeda nanti.
| Variabel | Nilai |
|---|---|
base_url |
https://api.z.ai/api/paas/v4 |
api_key |
kunci Z.ai Anda |
model |
glm-5.3-flash |
Simpan kunci sebagai variabel lingkungan daripada menempelkannya ke header permintaan. Ini tetap terpisah dari apa pun yang Anda ekspor atau bagikan dengan rekan tim, yang lebih penting daripada yang terlihat saat pertama kali seseorang melakukan commit koleksi.
Permintaan 1: penyelesaian teks
Buat permintaan POST ke {{base_url}}/chat/completions.
Header:
Authorization: Bearer {{api_key}}
Content-Type: application/json
Body:
{
"model": "{{model}}",
"messages": [
{"role": "user", "content": "Reply with exactly: OK"}
],
"reasoning_effort": "low"
}
Perhatikan reasoning_effort. Ini default ke max pada model ini, yang menagih penalaran sebagai token output. Untuk pemeriksaan konektivitas, ini adalah pemborosan murni, jadi atur ke low di sini.
Tambahkan penegasan (assertions) pada respons:
- Kode status sama dengan
200 choices[0].message.contentadachoices[0].finish_reasonsama denganstopusage.total_tokensada
Penegasan finish_reason adalah yang sering dilewati orang dan kemudian disesali. Nilai length berarti respons terpotong pada batas output daripada selesai. Mengingat bahwa angka output maksimum untuk model ini tidak konsisten antar sumber, menangkap pemotongan secara eksplisit sangat berharga.
Permintaan 2: panggilan gambar
Ini adalah permintaan yang membenarkan seluruh pengaturan, dan kemampuan yang tidak dimiliki GLM-5.3 secara native.
Endpoint yang sama, bentuk body yang berbeda. content menjadi array blok bertipe:
{
"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"
}
Tambahkan test_image_url ke lingkungan Anda yang menunjuk ke gambar yang stabil, dapat diakses publik, dan Anda mengetahui jawaban yang benar. Pertanyaan deterministik terhadap gambar tetap adalah yang menjadikan ini uji regresi daripada demo.
Untuk gambar lokal, bidang yang sama mengambil URL data base64. Simpan sebagai variabel lingkungan agar body permintaan tetap terbaca:
data:image/png;base64,iVBORw0KGgo...
Penegasan (Assertions):
- Kode status sama dengan
200 choices[0].message.contentberisi jawaban yang Anda ketahuiusage.prompt_tokenslebih besar dari jumlah permintaan hanya-teks
Penegasan terakhir itu adalah peringatan yang berguna. Gambar mengonsumsi token input, jadi jika jumlah token prompt tidak meningkat, gambar tidak benar-benar diproses, dan Anda memiliki permintaan yang mengembalikan 200 sambil secara diam-diam mengabaikan gambar Anda. Kegagalan itu tidak terlihat tanpa pemeriksaan.
Lebih lanjut tentang jalur visi dan mode kegagalannya di panduan visi GLM-5.3-Flash kami.
Permintaan 3: pemanggilan alat
Jika aplikasi Anda menggunakan pemanggilan fungsi (function calling), ujilah secara eksplisit. Format pemanggilan alat (tool-call) adalah bagian paling sensitif versi dari setiap integrasi model dan hal yang paling mungkin rusak setelah pembaruan penyedia.
{
"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"]
}
}
}
]
}
Penegasan (Assertions):
choices[0].message.tool_callsada dan tidak kosongchoices[0].message.tool_calls[0].function.namesama denganget_deployment_statuschoices[0].finish_reasonsama dengantool_calls
Menegaskan nama fungsi daripada hanya keberadaan panggilan alat menangkap kegagalan yang lebih halus: model yang memanggil alat yang salah. Dengan satu alat yang ditentukan, itu tidak mungkin, tetapi penegasan tidak memakan biaya dan tetap benar saat Anda menambahkan lebih banyak.
Jika Anda membuat definisi alat dari API yang sudah Anda miliki, mengubah spesifikasi OpenAPI menjadi alat agen membahas cara melakukannya tanpa menulis skema secara manual.
Membandingkan dengan GLM-5.3
Inilah manfaat menempatkan ID model dalam variabel lingkungan.
Duplikasikan lingkungan Anda, ubah model menjadi glm-5.3, dan jalankan koleksi yang sama. Tiga hal yang perlu dibandingkan:
- Kebenaran. Apakah penegasan (assertions) masih lolos? Permintaan gambar tidak akan lolos, karena GLM-5.3 tidak menerima gambar secara native. Itu adalah temuan, bukan tes yang rusak.
- Latensi. Apidog melaporkan waktu respons per permintaan. Harapkan GLM-5.3 selesai lebih cepat pada output yang lebih panjang, karena ia menghasilkan sekitar 86 token per detik dibandingkan dengan Flash yang 49.
- Biaya. Objek
usagememberi Andaprompt_tokensdancompletion_tokensper panggilan. Kalikan dengan tarif setiap model dan Anda memiliki perbandingan biaya per permintaan yang nyata, bukan angka pemasaran campuran. Rincian harga kami memiliki tarif saat ini, dan perbandingan model lengkap mencakup di mana masing-masing unggul.
Perhatikan completion_tokens dengan cermat di seluruh pengaturan upaya penalaran. Dengan reasoning_effort pada default max-nya, token penalaran ditagih sebagai output, jadi jawaban singkat yang terlihat dapat membawa jumlah penyelesaian yang besar di belakangnya. Menjalankan prompt yang sama pada low, high, dan max serta membaca jumlah token adalah cara tercepat untuk memutuskan apa yang sebenarnya dibutuhkan beban kerja Anda.
Menguji penerapan lokal
Jika Anda melakukan self-hosting bobot (weights), vLLM dan SGLang sama-sama mengekspos endpoint yang kompatibel dengan OpenAI. Ubah base_url ke server Anda dan jalankan koleksi yang sama.

Ini adalah penggunaan suite dengan nilai tertinggi. Build terkuantisasi dapat melewati pengujian obrolan dasar dan masih salah menangani skema alat Anda atau menurun pada input gambar, dan itulah kegagalan yang muncul dalam produksi daripada dalam pemeriksaan cepat. Panduan menjalankan lokal kami mencakup sisi penerapan.
Masukkan ke CI
Setelah koleksi stabil, jalankan sesuai jadwal atau di pipeline Anda. Pemicu yang berguna:
- Sebelum migrasi model, sebagai sinyal lanjut atau tidak.
- Berdasarkan jadwal, untuk menangkap perubahan di sisi penyedia yang tidak Anda ketahui.
- Setelah pembaruan dependensi, karena perubahan SDK dapat mengubah serialisasi permintaan.
Penyedia model memperbarui model di balik ID yang stabil. Eksekusi terjadwal adalah cara Anda mengetahui bahwa perilaku telah bergeser, daripada mendengarnya dari pengguna.
Apa yang harus diuji di luar "happy path"
Beberapa kasus yang patut ditambahkan setelah dasar-dasar lulus:
- Permintaan konteks panjang pada panjang yang benar-benar Anda gunakan. Perilaku pada 500K token tidak diimplikasikan oleh perilaku pada 5K.
- Input yang salah format, untuk memastikan penanganan kesalahan Anda berfungsi.
- Respons batas laju (rate-limit), jika Anda dapat memicunya, untuk memverifikasi logika percobaan ulang Anda berfungsi.
- Beberapa gambar dalam satu permintaan, jika itu bagian dari aplikasi Anda. Setiap gambar memerlukan blok
image_url-nya sendiri. - Streaming, jika Anda menggunakannya, karena bentuk respons berbeda dari penyelesaian standar.
Meringkas
Nilai di sini bukanlah permintaan individu, melainkan bahwa permintaan tersebut dapat diulang. Pilihan model yang dapat Anda uji ulang dalam tiga puluh detik adalah keputusan yang dapat Anda tinjau kembali ketika harga berubah pada tanggal 9 September, ketika Z.ai mengirimkan revisi berikutnya, atau ketika seseorang mengusulkan untuk pindah ke penyedia yang sama sekali berbeda.
Apidog gratis untuk memulai, dan mengimpor skema yang kompatibel dengan OpenAI akan memberi Anda sebagian besar pengaturan ini tanpa membangun setiap permintaan secara manual. Koleksi yang Anda dapatkan adalah hal yang membuat pertukaran model berikutnya menjadi perbedaan daripada lompatan.
FAQ
- Apakah saya memerlukan paket berbayar Apidog? Tidak. Koleksi dengan variabel lingkungan dan penegasan (assertions) berfungsi di tingkat gratis.
- Bagaimana cara menguji gambar base64 tanpa body permintaan yang tidak terbaca? Simpan URL data sebagai variabel lingkungan dan rujuk sebagai
{{test_image_url}}di body. - Dapatkah saya menguji endpoint coding-plan dengan cara yang sama? Ya. Ubah
base_urlmenjadihttps://api.z.ai/api/coding/paas/v4. Perhatikan bahwa endpoint ini berbeda dari API standar, seperti yang dibahas dalam panduan Claude Code and Cline kami. - Apakah pengujian ini akan berfungsi melawan penyedia lain? Sebagian besar. OpenRouter, Cloudflare Workers AI, dan Vercel AI Gateway semuanya mengekspos antarmuka yang kompatibel dengan OpenAI. Ubah
base_urldan namespace ID model. - Bagaimana cara menegaskan (assert) respons yang tidak deterministik? Tegaskan pada struktur dan batasan daripada teks yang tepat: keberadaan bidang, tipe, jumlah token,
finish_reason, dan keberadaan substring untuk pertanyaan dengan jawaban yang diketahui.
