ChatGPT API mit Apidog testen: Auth, Streaming, Tools und CI

End-to-End ChatGPT API-Tests in Apidog. Authentifizierung einrichten, Chat-Vervollständigungen senden, SSE-Streaming debuggen, Tool-Aufrufe validieren, Antworten simulieren und CI-Testszenarien bereitstellen.

Ashley Innocent

Ashley Innocent

9 June 2026

ChatGPT API mit Apidog testen: Auth, Streaming, Tools und CI

Apidog für Unternehmen

On-Premises Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

Die ChatGPT API wird schnell weiterentwickelt, bricht oft Verträge und rechnet pro Token ab, selbst wenn Ihre Tests fehlschlagen. Streaming-Antworten schlagen anders fehl als Nicht-Streaming-Antworten. Funktionsaufrufe fügen eine JSON-Schema-Ebene hinzu, die nicht immer mit dem übereinstimmt, was das Modell zurückgibt. Ratenbegrenzungen treten in der Produktion stillschweigend auf und nicht in Ihrer Entwicklerkonsole. Wenn Sie all dies in einer Python REPL oder einer curl-Schleife debuggen, verschwenden Sie Geld und Zeit.

Dieser Leitfaden führt Sie durch den vollständigen ChatGPT API-Test-Workflow in Apidog: Authentifizierung, die erste Chat-Vervollständigung, Streaming SSE, Funktionsaufrufe, Fehlerbehandlung, Ratenbegrenzungsprüfungen und simulierte Antworten für parallele Frontend-Arbeit. Am Ende werden Sie ein wiederverwendbares Apidog-Projekt haben, das OpenAI-Vertragsabweichungen erkennt, bevor sie die Produktion erreichen.

Schaltfläche

Das Wichtigste in Kürze

Warum die ChatGPT API überhaupt testen?

Die API-Oberfläche von OpenAI sieht stabil aus. Das ist sie aber nicht. Zwischen Januar 2024 und heute hat das Team Folgendes veröffentlicht oder geändert:

Wenn Sie dies direkt in Ihre Anwendung integrieren und eine Testschicht überspringen, liefert Ihr nächster Prompt-Änderungs-PR eine Regression, die Sie erst bemerken werden, wenn sich Benutzer beschweren. Eine Anfragesammlung in Apidog gibt Ihnen einen Vertrag, den Sie kontrollieren. Sie können die genaue Anfrage wiederholen, die Antwort abgleichen und lautstark scheitern, wenn sich die Struktur ändert.

Schritt 1: OpenAI als Umgebung in Apidog hinzufügen

Öffnen Sie Apidog und erstellen Sie ein neues Projekt. Innerhalb des Projekts öffnen Sie die Umgebungsverwaltung (Dropdown oben rechts) und fügen eine Umgebung namens OpenAI Prod hinzu:

Variable Wert
baseUrl https://api.openai.com/v1
OPENAI_API_KEY sk-proj-... (als Geheimnis speichern)
defaultModel gpt-5.5

Markieren Sie OPENAI_API_KEY als Geheimnis, damit es in gemeinsamen Arbeitsbereichen maskiert und niemals in exportierte Sammlungen geschrieben wird. Apidog speichert Geheimnisse pro Benutzer, sodass ein Teamkollege, der das Projekt zieht, den Variablennamen sieht, aber seinen eigenen Schlüssel bereitstellen muss.

Schritt 2: Bearer-Authentifizierung auf Ordnerebene festlegen

Erstellen Sie einen Ordner namens ChatGPT innerhalb des Projekts. Öffnen Sie die Ordnereinstellungen, gehen Sie zu Authentifizierung, wählen Sie Bearer Token und fügen Sie {{OPENAI_API_KEY}} ein. Jede Anfrage innerhalb des Ordners erbt diesen Header. Sie müssen nicht mehr Authorization: Bearer sk-... in jede Anfrage einfügen, und die Schlüsselrotation ist eine einmalige Bearbeitung.

Dies ist das kleine Detail, das Apidog schneller macht als ein roher curl-Workflow: Authentifizierung lebt an einem Ort, Anfragetexte bleiben sauber.

Schritt 3: Die erste Chat-Vervollständigungsanfrage erstellen

Erstellen Sie im Ordner ChatGPT eine neue Anfrage:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "system", "content": "You are a senior backend engineer. Answer in under 100 words." },
    { "role": "user", "content": "What's the difference between idempotent and safe HTTP methods?" }
  ],
  "temperature": 0.2
}

Klicken Sie auf Senden. Sie sollten eine 200 mit einem Feld choices[0].message.content, das die Antwort enthält, und einem usage-Block mit Token-Zählungen zurückerhalten. Speichern Sie die Anfrage als chat-completion-basic.

Wenn Sie 401 erhalten, wurde Ihr Schlüssel nicht geladen. Überprüfen Sie, ob das Umgebungs-Dropdown oben rechts auf OpenAI Prod eingestellt ist. Wenn Sie 429 erhalten, haben Sie eine Ratenbegrenzung erreicht, was der nächste Schritt behandelt.

Schritt 4: Streaming-Antworten (SSE) testen

Streaming ist der Punkt, an dem die meisten ChatGPT-Integrationen versagen. Die Antwort ist text/event-stream, nicht JSON, und jeder Chunk ist eine data: {...}-Zeile mit einem partiellen delta. Apidog unterstützt SSE nativ.

Duplizieren Sie chat-completion-basic, benennen Sie es in chat-completion-stream um und fügen Sie `"stream": true` zum Text hinzu:

{
  "model": "{{defaultModel}}",
  "stream": true,
  "messages": [
    { "role": "user", "content": "Stream the first 100 prime numbers, comma-separated." }
  ]
}

Klicken Sie auf Senden. Das Antwortfeld wechselt zur Streaming-Ansicht und rendert jeden data:-Chunk, sobald er ankommt. Sie sehen die eigentlichen SSE-Frames, nicht nur den zusammengesetzten Text. Das ist die Ansicht, die Sie benötigen, wenn Sie ein fehlerhaftes Delta oder einen fehlenden [DONE]-Terminator debuggen.

Worauf Sie achten sollten:

Schritt 5: Funktionsaufrufe und Tool-Nutzung testen

Funktionsaufrufe sind der häufigste Bereich, in dem Prompt-Änderungen stillschweigend nachgelagerten Code unterbrechen. Das Modell gibt ein tool_calls-Array zurück; Ihre Aufgabe ist es, zu validieren, dass die Argumente gemäß dem von Ihnen registrierten JSON-Schema geparst werden.

Erstellen Sie eine Anfrage chat-completion-tools mit diesem Text:

{
  "model": "{{defaultModel}}",
  "messages": [
    { "role": "user", "content": "What is the weather in Singapore right now?" }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a city.",
        "parameters": {
          "type": "object",
          "properties": {
            "city": { "type": "string" },
            "unit": { "type": "string", "enum": ["c", "f"] }
          },
          "required": ["city"]
        },
        "strict": true
      }
    }
  ],
  "tool_choice": "auto"
}

Eine korrekte Antwort hat choices[0].message.tool_calls[0].function.name === "get_weather" und function.arguments ist ein JSON-String, der zu { "city": "Singapore", "unit": "c" } (oder Ähnlichem) geparst wird.

Fügen Sie im Reiter Tests der Anfrage Folgendes hinzu:

pm.test("Tool was called", () => {
  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("Arguments parse as valid JSON", () => {
  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");
});

Führen Sie es aus. Die grünen Tests sind jetzt Ihr Vertrag. Wenn OpenAI die Struktur ändert, wird der Test rot, bevor Ihr Produktionsverkehr betroffen ist.

Schritt 6: Fehler und Ratenbegrenzungen explizit behandeln

ChatGPT-Integrationen in der Produktion schlagen auf fünf vorhersehbare Weisen fehl. Erstellen Sie für jeden Fall eine Anfrage und überprüfen Sie das erwartete Verhalten:

Szenario Wie auslösen Erwartet
Ungültiger Schlüssel Setzen Sie OPENAI_API_KEY auf sk-bad in einer Sandbox-Umgebung 401 mit error.code = "invalid_api_key"
Ratenbegrenzung Wiederholen Sie die Anfrage 200x im Collection Runner von Apidog 429 mit Retry-After Header
Token-Limit überschritten Senden Sie einen 200K-Token-Prompt an ein 128K-Kontextmodell 400 mit error.code = "context_length_exceeded"
Ungültiger Modellname "model": "gpt-99" 404
Schemaverletzung Tool-Aufruf mit strict: true und fehlerhafter Eingabe Das Modell lehnt das Tool ab, gibt Klartext zurück

Fügen Sie Assertionen im Reiter Tests hinzu, damit eine Regression als roter Test und nicht als stiller Wiederholungssturm angezeigt wird. Der Retry-After-Header ist der, bei dem die meisten Produktionscodes Fehler machen. Er ist in Sekunden angegeben, manchmal als Bruchwert, und Sie sollten ihn lesen, anstatt einen festen Backoff zu programmieren.

Schritt 7: ChatGPT für parallele Frontend-Entwicklung simulieren

Ihr OpenAI-Schlüssel hat ein monatliches Limit. Ihr Frontend-Team nicht. Wenn die Benutzeroberfläche gestreamte Token, vorgeschlagene Folgefragen und Tool-Call-Karten rendern muss, bevor der Backend-Prompt fertiggestellt ist, geben Sie ihnen einen Apidog-Mock.

Klicken Sie im Ordner ChatGPT mit der rechten Maustaste auf die Anfrage chat-completion-basic, wählen Sie Smart Mock und aktivieren Sie es. Apidog gibt eine synthetische Antwort zurück, die dem OpenAI-Schema entspricht: id, object, created, model, choices, usage. Die Mock-URL sieht wie https://mock.apidog.com/m1/<projectId>/chat/completions aus und akzeptiert denselben Text.

Für Streaming-Mocks definieren Sie ein Skript im Reiter Erweiterter Mock, das data: { ... }\n\n-Chunks in einem Intervall von 50 ms schreibt. Das Frontend erhält einen realistischen SSE-Stream ohne OpenAI-Traffic.

Wenn der echte Prompt landet, setzen Sie die Basis-URL des Frontends wieder auf https://api.openai.com/v1 zurück. Nichts anderes ändert sich.

Schritt 8: Die Suite als CI-Testszenario speichern

Die Testszenarien von Apidog ermöglichen es Ihnen, Anfragen mit Assertionen zu verketten und sie headless auszuführen. Erstellen Sie ein Szenario, das:

  1. Ruft chat-completion-basic auf, überprüft, ob status === 200 und usage.total_tokens > 0 ist.
  2. Ruft chat-completion-stream auf, überprüft, ob das SSE mit [DONE] abgeschlossen wurde.
  3. Ruft chat-completion-tools auf, überprüft, ob das Tool-Call-Schema validiert wird.
  4. Ruft jedes Fehlerszenario aus Schritt 6 auf, überprüft den korrekten Statuscode.

Exportieren Sie das Szenario und führen Sie es in CI über apidog-cli run scenario.json --env OpenAI Prod aus. Integrieren Sie es in die PR-Pipeline für die Datei, die Ihre Prompts enthält. Jede Prompt-Änderung wird nun als Vorab-Merge-Prüfung gegen die Live-OpenAI-API ausgeführt. Kosten: ein paar Cent pro CI-Lauf. Wert: Sie hören auf, Prompt-Regressionen zu veröffentlichen.

FAQ

Funktioniert dies mit Azure OpenAI? Ja. Tauschen Sie baseUrl gegen Ihre Azure-Ressourcen-URL aus, fügen Sie den Abfrageparameter api-version hinzu und ändern Sie die Authentifizierung von Bearer auf den api-key-Header. Die Anfragetexte sind identisch.

Kann ich dies für o1- und o3-Argumentationsmodelle verwenden? Ja, aber diese Modelle lehnen temperature, top_p, presence_penalty und frequency_penalty ab. Erstellen Sie einen separaten Ordner Reasoning mit einem reduzierten Body-Template.

Wie versioniere ich Prompts in Apidog? Apidog unterstützt Branches. Erstellen Sie einen Branch pro Prompt-Experiment, führen Sie das Testszenario gegen die Live-API aus, vergleichen Sie die Token-Nutzung und die Antwortqualität und führen Sie dann den Merge durch. Es ist derselbe Workflow wie bei Code, angewendet auf Prompts.

Was ist mit dem neuen Endpunkt /v1/responses? Richten Sie einen separaten Ordner dafür ein. Die Authentifizierung und die Basis-URL sind identisch; nur die Body-Struktur unterscheidet sich. Behalten Sie beide Ordner, damit Sie sie mit denselben Prompts A/B-testen können.

Berechnet Apidog pro API-Aufruf? Nein. Der Apidog-Client ist für die individuelle Nutzung und die meisten Team-Nutzungen kostenlos. OpenAI berechnet pro Token; Apidog schaltet sich nicht zwischen Sie und OpenAI.

Zusammenfassung

Die ChatGPT API wird sich ständig ändern. Streaming wird auf neue Arten fehlschlagen, Tool-Schemas werden strenger werden, und Argumentationsmodelle werden weiterhin Parameter weglassen, die Sie für stabil hielten. Die Verteidigung ist eine Anfragesammlung, die Sie kontrollieren, ein Mock-Server, auf den sich Ihr Frontend stützen kann, und ein Testszenario, das Ihr CI vor jedem Prompt-PR ausführt.

Laden Sie Apidog herunter und importieren Sie Ihre bestehenden OpenAI-Aufrufe. Postman-Sammlungen und curl-Befehle lassen sich beide mit einem Klick konvertieren. Erstellen Sie die acht oben genannten Anfragen einmal, und jedes zukünftige ChatGPT-Update wird zu einem kontrollierten Testlauf anstelle eines Produktionsvorfalls.

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen