Apidog ile ChatGPT API Test Etme: Kimlik Doğrulama, Akış, Araçlar ve CI

Apidog'da uçtan uca ChatGPT API testi. Kimlik doğrulamayı ayarlayın, sohbet tamamlama istekleri gönderin, SSE akışında hata ayıklayın, araç çağrılarını doğrulayın, yanıtları taklit edin ve CI test senaryolarını devreye alın.

Ashley Innocent

Ashley Innocent

9 June 2026

Apidog ile ChatGPT API Test Etme: Kimlik Doğrulama, Akış, Araçlar ve CI

Kurumsal İçin Apidog

Şirket İçi (On-Premises) Dağıtım

SSO ve RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfedin

ChatGPT API'si hızlı teslimat yapar, sık sık sözleşmeleri bozar ve testleriniz yanlış olsa bile jeton başına ücretlendirir. Akış yanıtları akışsız olanlardan farklı şekilde başarısız olur. Fonksiyon çağırma, modelin döndürdüğüyle her zaman eşleşmeyen bir JSON şeması katmanı ekler. Oran limitleri üretimde sessizce vururken, geliştirme konsolunuzda vurmaz. Tüm bunları bir Python REPL'de veya bir curl döngüsünde hata ayıklarsanız, para ve zaman harcarsınız.

Bu rehber, Apidog içinde eksiksiz ChatGPT API test iş akışını anlatır: kimlik doğrulama, ilk sohbet tamamlama, akış SSE, fonksiyon çağırma, hata yönetimi, oran limiti kontrolleri ve paralel ön uç çalışmaları için sahte yanıtlar. Sonunda, OpenAI sözleşme kaymalarını üretime geçmeden önce yakalayan yeniden kullanılabilir bir Apidog projeniz olacak.

button

Kısaca

ChatGPT API'sini neden test etmeli?

OpenAI'nin API yüzeyi kararlı görünüyor. Değil. Ocak 2024 ile şimdi arasında ekip şunları yayınladı veya değiştirdi:

Bunlardan herhangi birini doğrudan uygulamanıza bağlar ve bir test katmanını atlarsanız, bir sonraki istem değişikliği PR'niz, kullanıcılar şikayet edene kadar göremeyeceğiniz bir regresyonu dağıtır. Apidog'daki bir istek koleksiyonu, kontrol ettiğiniz bir sözleşme sunar. Tam isteği tekrar oynatabilir, yanıtı karşılaştırabilir ve şekil değiştiğinde yüksek sesle hata verebilirsiniz.

Adım 1: OpenAI'yi Apidog'da bir ortam olarak ekleyin

Apidog'u açın ve yeni bir proje oluşturun. Proje içinde Ortam Yönetimi'ni (sağ üst açılır menü) açın ve OpenAI Prod adında bir ortam ekleyin:

Değişken Değer
baseUrl https://api.openai.com/v1
OPENAI_API_KEY sk-proj-... (Gizli olarak sakla)
defaultModel gpt-5.5

OPENAI_API_KEY'i gizli olarak işaretleyin, böylece paylaşılan çalışma alanlarında maskelenir ve dışa aktarılan koleksiyonlara asla yazılmaz. Apidog sırları kullanıcı başına saklar, bu nedenle projeyi çeken bir ekip arkadaşı değişken adını görecek ancak kendi anahtarını sağlayacaktır.

Adım 2: Klasör düzeyinde Taşıyıcı yetkilendirmeyi ayarlayın

Proje içinde ChatGPT adında bir klasör oluşturun. Klasör ayarlarını açın, Kimlik Doğrulama'ya gidin, Taşıyıcı Belirteci'ni seçin ve {{OPENAI_API_KEY}}'i yapıştırın. Klasör içindeki her istek bu başlığı miras alır. Artık her isteğe Authorization: Bearer sk-... yapıştırmayı bırakırsınız ve anahtar rotasyonu tek bir düzenlemedir.

Bu, Apidog'u ham bir curl iş akışından daha hızlı yapan küçük bir ayrıntıdır: kimlik doğrulama tek bir yerde yaşar, istek gövdeleri temiz kalır.

Adım 3: İlk sohbet tamamlama isteğini oluşturun

ChatGPT klasörünün içinde yeni bir istek oluşturun:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "system", "content": "Sen kıdemli bir arka uç mühendisisin. 100 kelimenin altında yanıtla." },
    { "role": "user", "content": "Idempotent ve güvenli HTTP yöntemleri arasındaki fark nedir?" }
  ],
  "temperature": 0.2
}

Gönder'e tıklayın. Yanıt olarak 200 durumu, cevabı içeren bir choices[0].message.content alanı ve jeton sayılarını gösteren bir usage bloğu almalısınız. İsteği chat-completion-basic olarak kaydedin.

Eğer 401 alırsanız, anahtarınız yüklenmemiştir. Sağ üstteki ortam açılır menüsünün OpenAI Prod olarak ayarlandığını kontrol edin. Eğer 429 alırsanız, bir oran limitine takılmışsınızdır; bir sonraki adım bunu kapsar.

Adım 4: Akış yanıtlarını test edin (SSE)

Akış, çoğu ChatGPT entegrasyonunun bozulduğu yerdir. Yanıt text/event-stream'dir, JSON değil, ve her parça kısmi bir delta içeren bir data: {...} satırıdır. Apidog SSE'yi yerel olarak konuşur.

chat-completion-basic'i kopyalayın, adını chat-completion-stream olarak değiştirin ve gövdeye "stream": true ekleyin:

{
  "model": "{{defaultModel}}",
  "stream": true,
  "messages": [
    { "role": "user", "content": "İlk 100 asal sayıyı virgülle ayırarak akışla gönder." }
  ]
}

Gönder'e tıklayın. Yanıt paneli akış görünümüne geçer ve her data: parçasını geldiği gibi işler. Yalnızca birleştirilmiş metni değil, gerçek SSE çerçevelerini görürsünüz. Bozuk bir deltada veya eksik bir [DONE] sonlandırıcısında hata ayıklarken ihtiyacınız olan görünüm budur.

Nelere dikkat etmeli:

Adım 5: Fonksiyon çağırma ve araç kullanımını test edin

Fonksiyon çağırma, istem değişikliklerinin alt akış kodunu sessizce bozduğu en yaygın yerdir. Model bir tool_calls dizisi döndürür; sizin işiniz, argümanların kaydettiğiniz JSON Şeması olarak ayrıştırıldığını doğrulamaktır.

Bu gövdeyle chat-completion-tools adlı bir istek oluşturun:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "user", "content": "Singapur'da hava şu an nasıl?" }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Bir şehir için mevcut hava durumunu al.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": { "type": "string" },
            "unit": { "type": "string", "enum": ["c", "f"] }
          },
          "required": ["city"]
        },
        "strict": true
      }
    }
  ],
  "tool_choice": "auto"
}

Doğru bir yanıt, choices[0].message.tool_calls[0].function.name === "get_weather" içermeli ve function.arguments, { "city": "Singapore", "unit": "c" } (veya benzeri) olarak ayrıştırılan bir JSON dizesi olmalıdır.

İsteğin Testler sekmesinde şunları ekleyin:

pm.test("Araç çağrıldı", () => {
  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("Argümanlar geçerli JSON olarak ayrıştırılıyor", () => {
  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");
});

Çalıştırın. Yeşil testler artık sizin sözleşmenizdir. OpenAI şekli değiştirdiğinde, üretim trafiğinizden önce test kırmızıya dönecektir.

Adım 6: Hataları ve oran limitlerini açıkça ele alın

Üretim ChatGPT entegrasyonları beş öngörülebilir şekilde başarısız olur. Her biri için bir istek oluşturun ve beklenen davranışı doğrulayın:

Senaryo Nasıl tetiklenir Beklenen
Geçersiz anahtar OPENAI_API_KEY'i bir Sandbox ortamında sk-bad olarak ayarla 401 ve error.code = "invalid_api_key"
Oran limiti Apidog'un koleksiyon çalıştırıcısında isteği 200 kez döngüye sokun 429 ve Retry-After başlığı
Jeton limiti aşıldı 128K bağlamlı bir modele 200K jetonluk bir istem gönderin 400 ve error.code = "context_length_exceeded"
Kötü model adı "model": "gpt-99" 404
Şema ihlali strict: true ve hatalı bir giriş ile araç çağrısı Model aracı reddeder, düz metin döndürür

Testler sekmesine iddialar ekleyin, böylece bir regresyon sessiz bir yeniden deneme fırtınası yerine kırmızı bir test olarak görünür. Retry-After başlığı, çoğu üretim kodunun yanlış anladığı şeydir. Saniye cinsindendir, bazen kesirli bir değerdir ve bir geri çekmeyi sabit kodlamak yerine onu okumalısınız.

Adım 7: Paralel ön uç geliştirme için ChatGPT'yi taklit edin

OpenAI anahtarınızın aylık bir limiti vardır. Ön uç ekibinizin yoktur. Kullanıcı arayüzünün, arka uç istemi sonuçlandırılmadan önce akışlı jetonları, önerilen takipleri ve araç çağrısı kartlarını oluşturması gerektiğinde, onlara bir Apidog mock verin.

ChatGPT klasöründe, chat-completion-basic isteğine sağ tıklayın, Akıllı Mock'u seçin ve etkinleştirin. Apidog, OpenAI şemasına uygun sentetik bir yanıt döndürür: id, object, created, model, choices, usage. Mock URL'si https://mock.apidog.com/m1/<projectId>/chat/completions gibi görünür ve aynı gövdeyi kabul eder.

Akışlı taklitler için, Gelişmiş Mock sekmesinde 50ms aralıklarla data: { ... }\n\n parçalarını yazan bir betik tanımlayın. Ön uç, herhangi bir OpenAI trafiği olmadan gerçekçi bir SSE akışı alır.

Gerçek istem geldiğinde, ön ucun temel URL'sini tekrar https://api.openai.com/v1 olarak çevirin. Başka hiçbir şey değişmez.

Adım 8: Paketi bir CI test senaryosu olarak kaydedin

Apidog'un Test Senaryoları, iddialarla istekleri zincirlemenize ve bunları başsız çalıştırmanıza olanak tanır. Şunları yapan bir senaryo oluşturun:

  1. chat-completion-basic'i çağırır, status === 200 ve usage.total_tokens > 0 olduğunu doğrular.
  2. chat-completion-stream'i çağırır, SSE'nin [DONE] ile bittiğini doğrular.
  3. chat-completion-tools'u çağırır, araç çağrısı şemasının doğrulandığını doğrular.
  4. Adım 6'daki her hata senaryosunu çağırır, doğru durum kodunu doğrular.

Senaryoyu dışa aktarın ve CI'da apidog-cli run scenario.json --env OpenAI Prod komutuyla çalıştırın. İstemlerinizi tutan dosya için PR işlem hattına bağlayın. Her istem değişikliği artık bir ön birleştirme kontrolü olarak canlı OpenAI API'sine karşı çalışır. Maliyet: CI çalıştırması başına birkaç kuruş. Değer: istem regresyonlarını dağıtmayı bırakırsınız.

Sıkça Sorulan Sorular

Bu Azure OpenAI ile çalışır mı? Evet. baseUrl'yi Azure kaynak URL'nizle değiştirin, api-version sorgu parametresini ekleyin ve yetkilendirmeyi Bearer'dan api-key başlığına çevirin. İstek gövdeleri aynıdır.

Bunu o1 ve o3 muhakeme modelleri için kullanabilir miyim? Evet, ancak bu modeller temperature, top_p, presence_penalty ve frequency_penalty'yi reddeder. Kısaltılmış bir gövde şablonuyla ayrı bir Reasoning klasörü oluşturun.

Apidog içinde istemleri nasıl sürümleyebilirim? Apidog dal desteğine sahiptir. Her istem deneyi için bir dal oluşturun, canlı API'ye karşı test senaryosunu çalıştırın, jeton kullanımını ve yanıt kalitesini karşılaştırın, sonra birleştirin. Bu, kod için olduğu gibi istemler için de aynı iş akışıdır.

Yeni /v1/responses uç noktası ne olacak? Bunun için ayrı bir klasör oluşturun. Kimlik doğrulama ve temel URL aynıdır; sadece gövde şekli farklıdır. Aynı istemlere karşı A/B testi yapabilmek için her iki klasörü de tutun.

Apidog API çağrısı başına ücret alır mı? Hayır. Apidog istemcisi bireysel kullanım ve çoğu ekip kullanımı için ücretsizdir. OpenAI jeton başına ücret alır; Apidog sizinle OpenAI arasına girmez.

Özet

ChatGPT API'si değişmeye devam edecek. Akış yeni şekillerde bozulacak, araç şemaları daha katı hale gelecek ve muhakeme modelleri kararlı olduğunu düşündüğünüz parametreleri kaldırmaya devam edecek. Savunma, kontrol ettiğiniz bir istek koleksiyonu, ön ucunuzun güvenebileceği bir mock sunucu ve her istem PR'sinden önce CI'nızın çalıştırdığı bir test senaryosudur.

Apidog'u indirin ve mevcut OpenAI çağrılarınızı içe aktarın. Postman koleksiyonları ve curl komutları tek tıklamayla dönüştürülür. Yukarıdaki sekiz isteği bir kez oluşturun ve gelecekteki her ChatGPT güncellemesi, bir üretim olayı yerine kontrollü bir test çalıştırması haline gelir.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin