DEV Community

Cover image for Cara Menguji API GLM-5.3-Flash di Apidog
Walse
Walse

Posted on Originally published at apidog.com

Cara Menguji API GLM-5.3-Flash di Apidog

Mengganti LLM di aplikasi Anda hanya membutuhkan perubahan satu baris, tetapi risikonya jauh lebih besar. ID model memang berupa string, namun string itu menentukan latensi, biaya token, stabilitas format output, perilaku tool calling, dan kompatibilitas pipeline gambar.

GLM-5.3-Flash menunjukkan pertukaran ini dengan jelas: harganya kira-kira sembilan kali lebih murah daripada GLM-5.3, mendukung gambar secara native, tetapi menghasilkan token sekitar setengah lebih lambat. Satu-satunya cara mengetahui model yang tepat untuk beban kerja Anda adalah menguji permintaan nyata terhadap keduanya.

Coba Apidog hari ini

Panduan ini membuat koleksi pengujian yang dapat digunakan ulang untuk API GLM-5.3-Flash di Apidog, mencakup permintaan teks, gambar, tool calling, assertions, serta perbandingan dengan model yang lebih besar.

Mengapa tidak cukup menggunakan curl?

Anda dapat menguji endpoint ini dengan curl, seperti dijelaskan dalam panduan API kami. Namun, dua masalah segera muncul:

  • Payload gambar Base64 sulit dikelola. URL data untuk tangkapan layar dapat mencapai ribuan karakter. Perintahnya sulit dibaca, diedit, atau digunakan kembali.
  • Tidak ada validasi respons. Output curl hanya menunjukkan bahwa permintaan berhasil, bukan bahwa respons masih memiliki bidang yang dibutuhkan aplikasi Anda.

Koleksi tersimpan mengatasi keduanya: payload tetap dapat diedit dan assertions dijalankan pada setiap eksekusi.

Siapkan lingkungan

Buat environment berisi nilai yang dapat berubah antar-eksekusi. Menjadikan ID model sebagai variabel memungkinkan Anda mengarahkan seluruh koleksi ke model lain tanpa mengedit setiap permintaan.

Variabel Nilai
base_url https://api.z.ai/api/paas/v4
api_key kunci Z.ai Anda
model glm-5.3-flash

Simpan kunci API sebagai environment variable, bukan langsung di header. Dengan begitu, kunci tidak ikut tersebar saat koleksi diekspor, dibagikan, atau di-commit.

Permintaan 1: penyelesaian teks

Buat permintaan POST ke {{base_url}}/chat/completions.

Header:

[REDACTED CREDENTIAL] {{api_key}}
Content-Type: application/json

Enter fullscreen mode Exit fullscreen mode

Body:

{
  "model": "{{model}}",
  "messages": [
    {"role": "user", "content": "Reply with exactly: OK"}
  ],
  "reasoning_effort": "low"
}

Enter fullscreen mode Exit fullscreen mode

reasoning_effort secara default bernilai max pada model ini dan token penalaran dihitung sebagai token output. Untuk pemeriksaan konektivitas, gunakan low agar tidak membayar penalaran yang tidak diperlukan.

Tambahkan assertions berikut:

  • Kode status sama dengan 200
  • choices[0].message.content ada
  • choices[0].finish_reason sama dengan stop
  • usage.total_tokens ada

Assertion finish_reason sering terlewat. Nilai length berarti respons terpotong oleh batas output, bukan selesai secara normal. Karena batas output model ini tidak konsisten antar-sumber, pemeriksaan eksplisit sangat berguna.

Permintaan 2: panggilan gambar

Permintaan ini menguji kemampuan multimodal yang tidak tersedia secara native di GLM-5.3.

Gunakan endpoint yang sama, tetapi ubah 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"
}

Enter fullscreen mode Exit fullscreen mode

Tambahkan test_image_url ke environment. URL tersebut harus menunjuk ke gambar yang stabil, dapat diakses publik, dan memiliki jawaban yang sudah Anda ketahui. Pertanyaan deterministik pada gambar tetap menjadikannya uji regresi, bukan sekadar demo.

Untuk gambar lokal, gunakan URL data Base64 pada bidang yang sama. Simpan nilainya sebagai environment variable agar body tetap mudah dibaca:

data:image/png;base64,iVBORw0KGgo...

Enter fullscreen mode Exit fullscreen mode

Assertions:

  • Kode status sama dengan 200
  • choices[0].message.content berisi jawaban yang diharapkan
  • usage.prompt_tokens lebih besar daripada permintaan teks

Gambar mengonsumsi token input. Jika jumlah token prompt tidak meningkat, gambar mungkin tidak diproses meskipun API mengembalikan 200. Assertion ini membantu menangkap kegagalan tersebut.

Baca lebih lanjut tentang jalur visi dan mode kegagalannya dalam panduan visi GLM-5.3-Flash.

Permintaan 3: pemanggilan alat

Jika aplikasi Anda menggunakan function calling, uji perilaku tersebut secara eksplisit. Format tool call sangat sensitif terhadap perubahan versi model dan 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"]
        }
      }
    }
  ]
}

Enter fullscreen mode Exit fullscreen mode

Assertions:

  • choices[0].message.tool_calls ada dan tidak kosong
  • choices[0].message.tool_calls[0].function.name sama dengan get_deployment_status
  • choices[0].finish_reason sama dengan tool_calls

Memeriksa nama fungsi, bukan hanya keberadaan tool call, dapat menangkap model yang memanggil alat yang salah. Dengan satu alat, hal ini memang tidak mungkin terjadi, tetapi assertion tetap bermanfaat ketika jumlah alat bertambah.

Jika definisi alat berasal dari API yang sudah ada, panduan mengubah spesifikasi OpenAPI menjadi alat agen menjelaskan cara membuatnya tanpa menulis skema secara manual.

Bandingkan dengan GLM-5.3

Inilah manfaat menyimpan ID model dalam environment variable.

Duplikasikan environment, ubah model menjadi glm-5.3, lalu jalankan koleksi yang sama. Bandingkan tiga hal berikut:

  • Kebenaran: Apakah semua assertions tetap lolos? Permintaan gambar akan gagal karena GLM-5.3 tidak menerima gambar secara native. Itu adalah temuan pengujian, bukan pengujian yang rusak.
  • Latensi: Apidog melaporkan waktu respons setiap permintaan. Untuk output yang lebih panjang, GLM-5.3 diperkirakan lebih cepat: sekitar 86 token per detik dibandingkan 49 token per detik pada Flash.
  • Biaya: Objek usage menyediakan prompt_tokens dan completion_tokens per panggilan. Kalikan angka tersebut dengan tarif model untuk mendapatkan biaya nyata per permintaan. Lihat rincian harga dan perbandingan model lengkap.

Periksa completion_tokens pada beberapa tingkat penalaran. Saat reasoning_effort menggunakan default max, token penalaran dihitung sebagai output. Jawaban singkat dapat memiliki jumlah token penyelesaian yang besar. Jalankan prompt yang sama dengan low, high, dan max untuk mengukur kebutuhan sebenarnya.

Uji penerapan lokal

Jika Anda melakukan self-hosting bobot model, vLLM dan SGLang sama-sama menyediakan endpoint yang kompatibel dengan OpenAI. Ubah base_url ke server lokal dan jalankan koleksi yang sama.

Inilah salah satu manfaat terbesar suite pengujian. Build terkuantisasi mungkin lulus pemeriksaan obrolan dasar tetapi gagal menangani skema alat atau input gambar—jenis kegagalan yang baru terlihat di produksi. Panduan menjalankan GLM-5.3-Flash secara lokal membahas proses penerapannya.

Jalankan di CI

Setelah koleksi stabil, jalankan secara terjadwal atau sebagai bagian dari pipeline CI. Pemicu yang berguna:

  • Sebelum migrasi model, sebagai sinyal lanjut atau berhenti
  • Secara berkala, untuk mendeteksi perubahan di sisi penyedia
  • Setelah pembaruan dependensi, karena SDK dapat mengubah serialisasi permintaan

Penyedia model dapat memperbarui perilaku model di balik ID yang sama. Eksekusi terjadwal memberi tahu Anda ketika perilaku bergeser, sebelum pengguna yang menemukannya.

Uji di luar happy path

Setelah pengujian dasar lulus, tambahkan kasus berikut:

  • Konteks panjang dengan ukuran yang benar-benar digunakan aplikasi. Perilaku pada 500K token tidak dapat disimpulkan dari 5K token.
  • Input dengan format salah untuk memvalidasi penanganan error
  • Respons rate limit, jika dapat dipicu, untuk memverifikasi logika retry
  • Beberapa gambar dalam satu permintaan, dengan satu blok image_url untuk setiap gambar
  • Streaming, jika digunakan, karena format responsnya berbeda dari penyelesaian standar

Kesimpulan

Nilai utama bukan pada satu permintaan, melainkan pada pengujian yang dapat diulang. Jika pilihan model dapat diuji ulang dalam tiga puluh detik, Anda dapat meninjau keputusan tersebut ketika harga berubah pada 9 September, Z.ai merilis revisi berikutnya, atau tim mempertimbangkan penyedia lain.

Apidog gratis untuk memulai. Mengimpor skema yang kompatibel dengan OpenAI juga dapat menyediakan sebagian besar konfigurasi tanpa membuat setiap permintaan secara manual. Koleksi yang tersimpan mengubah migrasi model dari lompatan menjadi perbandingan yang terukur.

FAQ

  • Apakah saya memerlukan paket berbayar Apidog? Tidak. Environment variable dan assertions tersedia pada tingkat gratis.
  • Bagaimana menguji gambar Base64 tanpa membuat body sulit dibaca? Simpan URL data sebagai environment variable dan gunakan {{test_image_url}} di body.
  • Apakah endpoint coding-plan dapat diuji dengan cara yang sama? Ya. Ubah base_url menjadi https://api.z.ai/api/coding/paas/v4. Endpoint ini berbeda dari API standar, seperti dijelaskan dalam panduan Claude Code dan Cline.
  • Apakah pengujian ini berlaku untuk penyedia lain? Sebagian besar. OpenRouter, Cloudflare Workers AI, dan Vercel AI Gateway menyediakan antarmuka yang kompatibel dengan OpenAI. Ubah base_url dan namespace ID model.
  • Bagaimana menegaskan respons yang tidak deterministik? Tegaskan struktur dan batasan, bukan teks persis: keberadaan bidang, tipe data, jumlah token, finish_reason, serta keberadaan substring untuk pertanyaan dengan jawaban yang diketahui.

Top comments (0)