Cara Menguji API ChatGPT dengan Apidog: Autentikasi, Streaming, Tools, dan CI

Pengujian API ChatGPT menyeluruh di Apidog. Siapkan autentikasi, kirim penyelesaian chat, debug streaming SSE, validasi panggilan alat, simulasi respons, dan terapkan skenario pengujian CI.

Ashley Innocent

Ashley Innocent

9 June 2026

Cara Menguji API ChatGPT dengan Apidog: Autentikasi, Streaming, Tools, dan CI

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

API ChatGPT berkembang pesat, sering melanggar kontrak, dan menagih Anda per token bahkan ketika pengujian Anda salah. Respons streaming gagal secara berbeda dari non-streaming. Pemanggilan fungsi menambahkan lapisan skema JSON yang tidak selalu cocok dengan apa yang dikembalikan model. Batas laju tercapai secara diam-diam dalam produksi dan bukan di konsol pengembang Anda. Jika Anda men-debug semua ini di Python REPL atau loop curl, Anda akan menghabiskan uang dan waktu.

Panduan ini membahas alur kerja pengujian API ChatGPT secara lengkap di dalam Apidog: autentikasi, penyelesaian chat pertama, streaming SSE, pemanggilan fungsi, penanganan kesalahan, pemeriksaan batas laju, dan respons tiruan untuk pekerjaan frontend paralel. Pada akhirnya, Anda akan memiliki proyek Apidog yang dapat digunakan kembali yang menangkap pergeseran kontrak OpenAI sebelum mencapai produksi.

tombol

TL;DR

Mengapa perlu menguji API ChatGPT sama sekali

Permukaan API OpenAI terlihat stabil. Padahal tidak. Antara Januari 2024 dan sekarang, tim telah merilis atau mengubah:

Jika Anda menghubungkan salah satu dari ini langsung ke aplikasi Anda dan melewatkan lapisan pengujian, PR perubahan prompt Anda berikutnya akan mengirimkan regresi yang tidak akan Anda lihat sampai pengguna mengeluh. Koleksi permintaan di Apidog memberi Anda kontrak yang dapat Anda kontrol. Anda dapat memutar ulang permintaan yang tepat, membandingkan respons, dan gagal dengan keras ketika bentuknya berubah.

Langkah 1: Tambahkan OpenAI sebagai lingkungan di Apidog

Buka Apidog dan buat proyek baru. Di dalam proyek, buka Manajemen Lingkungan (dropdown kanan atas) dan tambahkan lingkungan bernama OpenAI Prod:

Variabel Nilai
baseUrl https://api.openai.com/v1
OPENAI_API_KEY sk-proj-... (simpan sebagai Rahasia)
defaultModel gpt-5.5

Tandai OPENAI_API_KEY sebagai rahasia agar tersembunyi di ruang kerja bersama dan tidak pernah ditulis ke koleksi yang diekspor. Apidog menyimpan rahasia per-pengguna, sehingga rekan satu tim yang menarik proyek akan melihat nama variabel tetapi menyediakan kunci mereka sendiri.

Langkah 2: Atur otentikasi Bearer di tingkat folder

Buat folder bernama ChatGPT di dalam proyek. Buka pengaturan folder, masuk ke Auth, pilih Bearer Token, dan tempel {{OPENAI_API_KEY}}. Setiap permintaan di dalam folder mewarisi header ini. Anda tidak perlu lagi menempel Authorization: Bearer sk-... ke setiap permintaan, dan rotasi kunci hanyalah satu kali edit.

Ini adalah detail kecil yang membuat Apidog lebih cepat daripada alur kerja curl mentah: otentikasi berada di satu tempat, body permintaan tetap bersih.Langkah 3: Bangun permintaan penyelesaian chat pertama

Di dalam folder ChatGPT, buat permintaan baru:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "system", "content": "Anda adalah seorang insinyur backend senior. Jawab dalam di bawah 100 kata." },
    { "role": "user", "content": "Apa perbedaan antara metode HTTP idempoten dan aman?" }
  ],
  "temperature": 0.2
}

Tekan Kirim. Anda akan mendapatkan 200 dengan bidang choices[0].message.content yang berisi jawaban dan blok usage dengan jumlah token. Simpan permintaan sebagai chat-completion-basic.

Jika Anda mendapatkan 401, kunci Anda tidak dimuat. Periksa dropdown lingkungan di kanan atas apakah sudah diatur ke OpenAI Prod. Jika Anda mendapatkan 429, Anda telah mencapai batas laju, yang akan dibahas pada langkah berikutnya.

Langkah 4: Uji respons streaming (SSE)

Streaming adalah titik di mana sebagian besar integrasi ChatGPT rusak. Responsnya adalah text/event-stream, bukan JSON, dan setiap bagian adalah baris data: {...} dengan delta parsial. Apidog mendukung SSE secara native.

Duplikat chat-completion-basic, ganti nama menjadi chat-completion-stream, dan tambahkan "stream": true ke body:

{
  "model": "{{defaultModel}}",
  "stream": true,
  "messages": [
    { "role": "user", "content": "Streaming 100 bilangan prima pertama, dipisahkan koma." }
  ]
}

Tekan Kirim. Panel respons beralih ke tampilan streaming dan menampilkan setiap bagian data: saat tiba. Anda melihat frame SSE yang sebenarnya, bukan hanya teks yang digabungkan. Itu adalah tampilan yang Anda perlukan saat men-debug delta yang salah format atau terminator [DONE] yang hilang.

Yang perlu diperhatikan:

Langkah 5: Uji pemanggilan fungsi dan penggunaan alat

Pemanggilan fungsi adalah tempat paling umum di mana perubahan prompt secara diam-diam merusak kode downstream. Model mengembalikan array tool_calls; tugas Anda adalah memvalidasi argumen yang diurai sebagai Skema JSON yang Anda daftarkan.

Buat permintaan chat-completion-tools dengan body ini:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "user", "content": "Bagaimana cuaca di Singapura saat ini?" }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Dapatkan cuaca saat ini untuk suatu kota.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": { "type": "string" },
            "unit": { "type": "string", "enum": ["c", "f"] }
          },
          "required": ["city"]
        },
        "strict": true
      }
    }
  ],
  "tool_choice": "auto"
}
```

Respons yang benar memiliki choices[0].message.tool_calls[0].function.name === "get_weather" dan function.arguments adalah string JSON yang diurai menjadi { "city": "Singapore", "unit": "c" } (atau serupa).

Di tab Tests pada permintaan, tambahkan:

pm.test("Alat dipanggil", () => {
  const body = pm.response.json();
  const call = body.choices[0].message.tool_calls?.[0];
  pm.expect(call?.function?.name).to.eql("get_weather");
});

pm.test("Argumen diurai sebagai JSON yang valid", () => {
  const body = pm.response.json();
  const args = JSON.parse(body.choices[0].message.tool_calls[0].function.arguments);
  pm.expect(args.city).to.be.a("string");
});

Jalankan. Pengujian hijau sekarang adalah kontrak Anda. Ketika OpenAI mengubah bentuknya, pengujian akan berubah merah sebelum traffic produksi Anda terpengaruh.

Langkah 6: Tangani kesalahan dan batas laju secara eksplisit

Integrasi ChatGPT produksi gagal dalam lima cara yang dapat diprediksi. Buat permintaan untuk setiap kasus dan tegaskan perilaku yang diharapkan:

Skenario Cara memicu Diharapkan
Kunci tidak valid Atur OPENAI_API_KEY ke sk-bad di lingkungan Sandbox 401 dengan error.code = "invalid_api_key"
Batas laju Lakukan loop permintaan 200x di collection runner Apidog 429 dengan header Retry-After
Batas token terlampaui Kirim prompt 200K-token ke model 128K-konteks 400 dengan error.code = "context_length_exceeded"
Nama model salah "model": "gpt-99" 404
Pelanggaran skema Pemanggilan alat dengan strict: true dan input yang salah bentuk Model menolak alat tersebut, mengembalikan teks biasa

Tambahkan penegasan di tab Tests sehingga regresi muncul sebagai pengujian merah, bukan badai percobaan ulang yang senyap. Header Retry-After adalah yang paling sering salah ditangani oleh kode produksi. Ini dalam hitungan detik, terkadang nilai pecahan, dan Anda harus membacanya alih-alih melakukan hardcode backoff.

Langkah 7: Mock ChatGPT untuk pengembangan frontend paralel

Kunci OpenAI Anda memiliki batas bulanan. Tim frontend Anda tidak. Ketika UI perlu merender token streaming, saran tindak lanjut, dan kartu pemanggilan alat sebelum prompt backend diselesaikan, berikan mereka mock Apidog.

Di folder ChatGPT, klik kanan permintaan chat-completion-basic, pilih Smart Mock, dan aktifkan. Apidog mengembalikan respons sintetik yang cocok dengan skema OpenAI: id, object, created, model, choices, usage. URL mock terlihat seperti https://mock.apidog.com/m1/<projectId>/chat/completions dan menerima body yang sama.

Untuk mock streaming, definisikan skrip di tab Advanced Mock yang menulis bagian data: { ... }\n\n pada interval 50ms. Frontend mendapatkan aliran SSE yang realistis tanpa traffic OpenAI apa pun.

Ketika prompt asli tiba, ubah kembali URL dasar frontend ke https://api.openai.com/v1. Tidak ada yang lain yang berubah.

Langkah 8: Simpan suite sebagai skenario pengujian CI

Skenario Pengujian Apidog memungkinkan Anda merangkai permintaan dengan penegasan dan menjalankannya tanpa antarmuka grafis. Buat skenario yang:

  1. Memanggil chat-completion-basic, menegaskan status === 200 dan usage.total_tokens > 0.
  2. Memanggil chat-completion-stream, menegaskan SSE selesai dengan [DONE].
  3. Memanggil chat-completion-tools, menegaskan skema pemanggilan alat tervalidasi.
  4. Memanggil setiap skenario kesalahan dari Langkah 6, menegaskan kode status yang benar.

Ekspor skenario dan jalankan di CI melalui apidog-cli run scenario.json --env OpenAI Prod. Sambungkan ke pipeline PR untuk file yang menyimpan prompt Anda. Setiap perubahan prompt sekarang berjalan terhadap API OpenAI langsung sebagai pemeriksaan pra-gabungan. Biaya: beberapa sen per eksekusi CI. Nilai: Anda berhenti mengirimkan regresi prompt.

FAQ

Apakah ini berfungsi dengan Azure OpenAI? Ya. Ganti baseUrl dengan URL sumber daya Azure Anda, tambahkan parameter kueri api-version, dan ubah otentikasi dari Bearer ke header api-key. Body permintaan identik.

Bisakah saya menggunakan ini untuk model penalaran o1 dan o3? Ya, tetapi model-model tersebut menolak temperature, top_p, presence_penalty, dan frequency_penalty. Buat folder Reasoning terpisah dengan template body yang disederhanakan.

Bagaimana cara melakukan versi prompt di dalam Apidog? Apidog memiliki dukungan cabang. Buat cabang per eksperimen prompt, jalankan skenario pengujian terhadap API langsung, bandingkan penggunaan token dan kualitas respons, lalu gabungkan. Ini adalah alur kerja yang sama dengan kode, diterapkan pada prompt.

Bagaimana dengan endpoint /v1/responses yang baru? Siapkan folder terpisah untuk itu. Otentikasi dan URL dasar identik; hanya bentuk body yang berbeda. Pertahankan kedua folder agar Anda dapat melakukan A/B testing terhadap prompt yang sama.

Apakah Apidog mengenakan biaya per panggilan API? Tidak. Klien Apidog gratis untuk penggunaan individu dan sebagian besar penggunaan tim. OpenAI mengenakan biaya per token; Apidog tidak menyisipkan dirinya di antara Anda dan OpenAI.

Penutup

API ChatGPT akan terus berubah. Streaming akan rusak dengan cara baru, skema alat akan menjadi lebih ketat, dan model penalaran akan terus menghilangkan parameter yang Anda kira stabil. Pertahanannya adalah koleksi permintaan yang Anda kontrol, server mock yang dapat diandalkan frontend Anda, dan skenario pengujian yang dijalankan CI Anda sebelum setiap PR prompt.

Unduh Apidog dan impor panggilan OpenAI Anda yang sudah ada. Koleksi Postman dan perintah curl keduanya dapat dikonversi dalam satu klik. Bangun delapan permintaan di atas sekali, dan setiap pembaruan ChatGPT di masa mendatang menjadi pengujian terkontrol alih-alih insiden produksi.

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.