DEV Community

Cover image for Test der drei API-Formate von DeepSeek V4 Pro: ChatCompletions, Anthropic Messages und Responses API
Emre Demir
Emre Demir

Posted on Originally published at apidog.com

Test der drei API-Formate von DeepSeek V4 Pro: ChatCompletions, Anthropic Messages und Responses API

DeepSeek-V4-Pro-0813 ist seit dem 12. August 2026 allgemein verfügbar und wird über die immergrüne Modell-ID deepseek-v4-pro auf https://api.deepseek.com bereitgestellt. Daneben gibt es das günstigere deepseek-v4-flash (Unite.AI berichtete über die GA-Ankündigung). Zu den Spezifikationen gehören ein Kontextfenster mit 1M Tokens, maximal 384K Ausgabetokens, Tool-Aufrufe, strukturierte Ausgaben und drei Denkmodi mit einem separaten Feld reasoning_content.

Apidog noch heute ausprobieren

Das Besondere ist die API-Kompatibilität: Dasselbe Modell akzeptiert drei Wire-Formate:

  • OpenAI ChatCompletions
  • Anthropic Messages
  • DeepSeeks Responses API

Sie können daher bestehenden OpenAI-SDK-Code umstellen, Claude-native Agenten weiterverwenden oder zustandsbehaftete Agentenschleifen im Codex-Stil implementieren — ohne das Modell zu wechseln.

Dieser Leitfaden zeigt für jedes Format eine lauffähige Anfrage, die praktischen Unterschiede bei Prompts, Tools und Streaming sowie eine Teststrategie in einem gemeinsamen Apidog-Projekt. Für Kontoeinrichtung und den ersten API-Aufruf lesen Sie zuerst DeepSeek V4 API verwenden.

TL;DR

  • deepseek-v4-pro ist auf https://api.deepseek.com allgemein verfügbar; deepseek-v4-flash unterstützt dieselben Schnittstellen zu einem niedrigeren Preis.
  • Sie können zwischen OpenAI ChatCompletions, Anthropic Messages und der DeepSeek Responses API wählen.
  • Das Modell unterstützt 1M Kontexttokens, maximal 384K Ausgabetokens, Tool-Aufrufe, strukturierte Ausgaben und reasoning_content.
  • Preise: $0.435/M Eingabetokens bei Cache-Fehler, $0.003625/M bei Cache-Treffer und $0.87/M Ausgabetokens.
  • Die Formate unterscheiden sich bei System-Prompt, max_tokens, Tool-Schemas und SSE-Streaming.
  • Mit gemeinsamen Umgebungsvariablen können Sie alle drei Formate in einem Apidog-Projekt vergleichen.

Warum ein Modell drei API-Dialekte unterstützt

Die drei Formate bieten vor allem Ökosystem-Kompatibilität:

  • ChatCompletions ist kompatibel mit vielen bestehenden SDKs, Frameworks und internen Bibliotheken.
  • Anthropic Messages erlaubt die Weiterverwendung Claude-nativer Tools, Agenten und Evaluierungs-Harnesses.
  • Responses API ist für mehrstufige, agentische Workflows mit typisierten Ausgaben und optionalem serverseitigem Zustand ausgelegt.

V4 Pro ist auch über Aggregatoren verfügbar, etwa auf der OpenRouter-Seite für deepseek-v4-pro-0813. Dieser Artikel bezieht sich jedoch auf DeepSeeks First-Party-API. Einen Überblick über die Modellfamilie finden Sie unter DeepSeek V4 verwenden.

Format 1: OpenAI ChatCompletions

Wählen Sie ChatCompletions, wenn Ihr Code bereits das OpenAI-SDK oder OpenAI-kompatible Frameworks verwendet.

Minimalbeispiel mit Python

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_DEEPSEEK_API_KEY",
    base_url="https://api.deepseek.com",
)

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[
        {
            "role": "system",
            "content": "You are a precise technical writer."
        },
        {
            "role": "user",
            "content": "Explain idempotency keys in two sentences."
        }
    ],
)

print(response.choices[0].message.content)
Enter fullscreen mode Exit fullscreen mode

Implementierungsdetails

  • Der System-Prompt ist die erste Nachricht mit role: "system".
  • max_tokens ist optional.
  • Tools folgen dem bekannten verschachtelten function-Schema.
  • Streaming verwendet chat.completion.chunk-Deltas und endet mit data: [DONE].
  • Bei aktiviertem Denkmodus kann die Antwort zusätzlich reasoning_content enthalten.

Ihre Response-Verarbeitung sollte daher nicht nur content lesen:

message = response.choices[0].message

print("Antwort:", message.content)

if getattr(message, "reasoning_content", None):
    print("Reasoning:", message.reasoning_content)
Enter fullscreen mode Exit fullscreen mode

Wann dieses Format passt

Verwenden Sie ChatCompletions für:

  • bestehende OpenAI-SDK-Integrationen
  • LangChain-ähnliche Frameworks
  • einfache Chat- oder Completion-Workloads
  • Teams, die möglichst wenig Migrationsaufwand möchten

Die Request-Struktur entspricht dem Muster aus ChatGPT API mit Apidog testen: Host und Modell ändern, der Rest bleibt weitgehend gleich.

Format 2: Anthropic Messages

Das Anthropic-Messages-Format ähnelt ChatCompletions, unterscheidet sich aber in drei wichtigen Punkten.

  1. Der System-Prompt steht als system auf oberster Ebene.
  2. max_tokens ist verpflichtend.
  3. Tools werden als flache Objekte mit input_schema definiert.

Minimalbeispiel mit Python

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/anthropic",
)

message = client.messages.create(
    model="deepseek-v4-pro",
    max_tokens=8192,
    system="You are a precise technical writer.",
    messages=[
        {
            "role": "user",
            "content": "Explain idempotency keys in two sentences."
        }
    ],
)

print(message.content[0].text)
Enter fullscreen mode Exit fullscreen mode

Prüfen Sie den aktuellen kompatiblen Pfad immer in der DeepSeek API-Dokumentation.

Tool-Schema im Messages-Format

Im Gegensatz zum OpenAI-Format gibt es keinen function-Wrapper:

{
  "name": "get_deployment_status",
  "description": "Returns the deployment status for an environment.",
  "input_schema": {
    "type": "object",
    "properties": {
      "environment": {
        "type": "string"
      }
    },
    "required": ["environment"]
  }
}
Enter fullscreen mode Exit fullscreen mode

Tool-Aufrufe kommen als tool_use-Content-Block zurück. Tool-Ergebnisse senden Sie als tool_result innerhalb einer User-Nachricht zurück.

Claude-native Agenten umleiten

Wenn ein Agent seine Konfiguration aus Umgebungsvariablen liest, reicht typischerweise diese Anpassung:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=$DEEPSEEK_API_KEY
export ANTHROPIC_MODEL=deepseek-v4-pro
Enter fullscreen mode Exit fullscreen mode

Wann dieses Format passt

Verwenden Sie Messages, wenn Sie bereits mit Claude-kompatiblen Tools arbeiten:

  • Claude-native Agenten
  • Claude Code
  • bestehende Messages-Clients
  • Evaluierungs-Harnesses, die Anthropic-Requests erwarten

Wenn Ihr Team bereits Claude-Anfragen verwendet, können Sie DeepSeek im selben Harness testen. Die grundlegende Request-Anatomie entspricht dem Claude Opus 5 API-Leitfaden.

Format 3: DeepSeeks Responses API

Die Responses API richtet sich an Agenten und mehrstufige Workflows. Statt eines klassischen messages-Arrays verwenden Sie instructions und input.

Minimalbeispiel mit cURL

curl https://api.deepseek.com/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-v4-pro",
    "instructions": "You are an API review agent. Be terse.",
    "input": "Review this OpenAPI diff and list any breaking changes: [diff here]",
    "stream": false
  }'
Enter fullscreen mode Exit fullscreen mode

Was dieses Format anders macht

1. Optionaler serverseitiger Zustand

Folgeanfragen können eine vorherige Antwort per ID referenzieren, etwa über previous_response_id. Dadurch müssen Sie den gesamten Konversationsverlauf nicht zwingend bei jeder Runde erneut senden.

2. Typisierte Ausgabeelemente

Die Ausgabe ist keine einzelne Nachricht. Sie kann verschiedene Elemente enthalten, beispielsweise:

  • Argumentationselemente
  • Textausgaben
  • Tool-Aufrufe
  • Tool-Ergebnisse

Das ist nützlich, wenn Ihr Orchestrator unterschiedliche Elementtypen gezielt verarbeitet.

3. Semantische Streaming-Ereignisse

Statt nur Textdeltas zu senden, nutzt die API benannte Ereignisse wie:

response.output_text.delta
response.completed
Enter fullscreen mode Exit fullscreen mode

Damit kann Ihr Agent auf Status- und Lebenszyklusereignisse reagieren, ohne rohe Chunks selbst interpretieren zu müssen.

Tool-Aufrufe verwenden function_call- und function_call_output-Elemente. Prüfen Sie Details, die über die allgemeine Responses-Spezifikation hinausgehen, in der offiziellen DeepSeek API-Dokumentation.

Wann dieses Format passt

Verwenden Sie die Responses API für:

  • mehrstufige Agentenschleifen
  • Codex-artige Agenten
  • Workflows mit serverseitig referenzierbarem Zustand
  • Orchestratoren, die typisierte Antwortobjekte verarbeiten

Für einen einfachen Chat-Endpoint ist ChatCompletions meist die einfachere Wahl.

Die drei Formate im Vergleich

OpenAI ChatCompletions Anthropic Messages DeepSeek Responses API
Endpunkt POST /chat/completions auf api.deepseek.com POST /v1/messages auf der Anthropic-kompatiblen Basis (/anthropic) POST /responses auf api.deepseek.com
Anfrageform messages-Array, System-Prompt als erste Nachricht system auf oberster Ebene plus user-/assistant-Nachrichten instructions plus input als String oder Item-Liste
Ausgabebegrenzung Optional max_tokens erforderlich Optional gemäß Responses-Spezifikation
Tool-Definitionen Verschachteltes function-Objekt mit parameters Flaches Tool mit input_schema Flache Einträge gemäß Responses-Spezifikation
Tool-Ergebnisse role: "tool" tool_result-Content-Block function_call_output-Element
Streaming chat.completion.chunk, endet mit [DONE] message_startcontent_block_deltamessage_stop Semantische Ereignisse wie response.output_text.delta
Konversationszustand Client-verwaltet Client-verwaltet Optional serverseitig über vorherige Antwort-ID
Geeignet für OpenAI-Tools und Frameworks Claude-native Tools und Agenten Agentenschleifen und zustandsbehaftete Workflows

Gleiches Modell und gleiche Preise bedeuten nicht gleiche Request- und Response-Objekte. Testen Sie deshalb die Felder, die Ihre Anwendung tatsächlich verarbeitet.

Alle drei Formate in einem Apidog-Projekt testen

Richten Sie ein Apidog-Projekt ein, um denselben Prompt gegen alle drei Schnittstellen auszuführen.

1. Drei Ordner anlegen

Erstellen Sie jeweils einen Ordner für:

chat-completions/
anthropic-messages/
responses/
Enter fullscreen mode Exit fullscreen mode

Legen Sie pro Ordner gespeicherte Requests für diese Szenarien an:

  • einfache Completion
  • Tool-Aufruf
  • Streaming

2. Gemeinsame Umgebungsvariablen definieren

Verwenden Sie eine gemeinsame Umgebung:

{{DEEPSEEK_API_KEY}}
{{BASE_URL}}
{{ANTHROPIC_BASE}}
{{MODEL}}
Enter fullscreen mode Exit fullscreen mode

Beispielwerte:

BASE_URL=https://api.deepseek.com
ANTHROPIC_BASE=https://api.deepseek.com/anthropic
MODEL=deepseek-v4-pro
Enter fullscreen mode Exit fullscreen mode

Zum Vergleich mit dem günstigeren Modell ändern Sie nur:

MODEL=deepseek-v4-flash
Enter fullscreen mode Exit fullscreen mode

3. Identische Prompts vergleichen

Senden Sie denselben Prompt in allen drei Formaten. Vergleichen Sie anschließend die Rohantworten:

ChatCompletions: choices[0].message.content
Messages:        content[0].text oder Content-Block-Liste
Responses:       typisierte Output-Elemente
Enter fullscreen mode Exit fullscreen mode

4. Streaming testen

Aktivieren Sie pro Request:

{
  "stream": true
}
Enter fullscreen mode Exit fullscreen mode

Vergleichen Sie in der SSE-Ansicht:

  • anonyme ChatCompletions-Chunks mit [DONE]
  • typisierte Messages-Ereignisse
  • Responses-Lebenszyklusereignisse

Falls Sie SSE bisher nicht debuggt haben, lesen Sie API-Antworten mit SSE streamen.

5. Assertions für Ihre Integrationslogik hinzufügen

Prüfen Sie nicht nur HTTP 200. Validieren Sie die Felder, die Ihr Code benötigt:

  • Pfad zum Antwortinhalt
  • Position und ID eines Tool-Aufrufs
  • Abbruchgrund
  • Vorhandensein von reasoning_content
  • erwartete Streaming-Ereignisse

Führen Sie die Sammlung erneut aus, wenn DeepSeek ein Snapshot-Update veröffentlicht. So wird Ihr API-Projekt gleichzeitig zu einer ausführbaren Dokumentation.

Migrationshinweise

Migration von OpenAI

Ändern Sie zunächst nur diese Werte:

base_url = "https://api.deepseek.com"
api_key = "YOUR_DEEPSEEK_API_KEY"
model = "deepseek-v4-pro"
Enter fullscreen mode Exit fullscreen mode

Ihre Nachrichtenstruktur, Tool-Definitionen und Streaming-Handler können grundsätzlich erhalten bleiben.

Prüfen Sie vor dem Release:

  1. Werden zusätzliche Parameter wie erwartet verarbeitet?
  2. Toleriert Ihr Parser reasoning_content neben content?
  3. Funktionieren Tool-Aufrufe mit Ihren konkreten JSON-Schemas?
  4. Bestehen Ihre bestehenden Regressionstests?

Migration von Anthropic

Wechseln Sie Basis-URL, Schlüssel und Modell:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=$DEEPSEEK_API_KEY
export ANTHROPIC_MODEL=deepseek-v4-pro
Enter fullscreen mode Exit fullscreen mode

Bei einem spezifikationskonformen Messages-Client sind normalerweise keine größeren Logikänderungen nötig. Prüfen Sie dennoch:

  • verpflichtendes max_tokens
  • Verarbeitung von Content-Blöcken
  • Streaming-Events
  • Tool-Schemas mit input_schema

Migration zur Responses API

Die Responses API ist keine reine Konfigurationsänderung. Sie müssen Ihre Request- und Response-Schicht auf instructions, input und typisierte Ausgabeelemente umstellen.

Setzen Sie sie ein, wenn Sie ihre spezifischen Vorteile benötigen:

  • serverseitig referenzierbarer Zustand
  • mehrstufige Agenten
  • strukturierte Lebenszyklusereignisse
  • Verarbeitung unterschiedlicher Output-Typen

FAQ

Welches Format sollte ein neues Projekt verwenden?

Starten Sie mit ChatCompletions, wenn Sie breite Tool-Unterstützung benötigen. Wählen Sie Messages für Claude-native Stacks. Nutzen Sie die Responses API für mehrstufige Agenten mit serverseitig verwaltetem Zustand.

Kann ich Claude Code auf DeepSeek V4 Pro ausrichten?

Ja. Setzen Sie ANTHROPIC_BASE_URL auf den Anthropic-kompatiblen DeepSeek-Endpunkt, verwenden Sie den DeepSeek-Schlüssel als Authentifizierungs-Token und setzen Sie ANTHROPIC_MODEL auf deepseek-v4-pro.

Funktionieren Tool-Aufrufe und strukturierte Ausgaben in allen Formaten?

Das Modell unterstützt beides. Jedes Format verwendet jedoch sein eigenes Schema:

  • ChatCompletions: verschachtelte function-Objekte
  • Messages: Tools mit input_schema
  • Responses API: function_call- und function_call_output-Elemente

Testen Sie Ihre konkreten Schemata und Kantenfälle vor dem Release in einer gemeinsamen Testsammlung.

Top comments (0)