DEV Community

Cover image for ChatCompletions vs Anthropic Messages vs Responses API: Pengujian Tiga Format API DeepSeek V4 Pro
Walse
Walse

Posted on Originally published at apidog.com

ChatCompletions vs Anthropic Messages vs Responses API: Pengujian Tiga Format API DeepSeek V4 Pro

DeepSeek-V4-Pro-0813 mencapai ketersediaan umum pada 12 Agustus 2026, tersedia melalui ID model deepseek-v4-pro di https://api.deepseek.com, bersama deepseek-v4-flash yang lebih murah (Unite.AI meliput pengumuman GA ini). Spesifikasi utamanya mencakup jendela konteks 1 juta token, output maksimum 384 ribu token, tool calling, output terstruktur, dan tiga mode berpikir yang menampilkan jejak penalaran model pada bidang reasoning_content.

Coba Apidog hari ini

Yang menarik bukan hanya spesifikasinya. Satu model ini menerima tiga dialek API:

  • OpenAI ChatCompletions
  • Anthropic Messages
  • DeepSeek Responses API

Artinya, Anda dapat mengarahkan kode yang memakai OpenAI SDK, agen berbasis Claude, atau loop agen bergaya Codex ke model yang sama—dengan format request yang berbeda.

Panduan ini membandingkan ketiganya secara praktis: bentuk request, perbedaan payload, streaming, tool calling, serta cara mengujinya dari satu proyek Apidog menggunakan variabel environment bersama. Jika Anda belum menyiapkan akun atau belum melakukan panggilan API pertama, mulai dari cara menggunakan DeepSeek V4 API.

Ringkasan

  • DeepSeek-V4-Pro-0813 tersedia secara umum melalui deepseek-v4-pro di https://api.deepseek.com.
  • deepseek-v4-flash memakai antarmuka yang sama dengan harga lebih rendah.
  • Model mendukung OpenAI ChatCompletions, Anthropic Messages, dan DeepSeek Responses API.
  • Spesifikasi: konteks 1 juta token, output maksimum 384 ribu token, tool calling, output terstruktur, dan reasoning_content.
  • Harga: $0.435/juta token input untuk cache miss, $0.003625/juta token untuk cache hit, dan $0.87/juta token output.
  • Ketiga format berbeda pada system prompt, max_tokens, skema tool, dan event streaming.
  • Satu proyek Apidog dengan {{DEEPSEEK_API_KEY}} dan base URL per format cukup untuk menguji ketiganya dengan prompt yang sama.

Mengapa satu model berbicara tiga dialek?

Dukungan tiga format ini adalah strategi kompatibilitas ekosistem.

  • ChatCompletions cocok untuk SDK, framework, dan kode internal yang sudah memakai format OpenAI. Biasanya Anda hanya perlu mengganti base_url.
  • Anthropic Messages cocok untuk tim yang membangun agen, evaluator, atau tooling berbasis Claude, termasuk Claude Code.
  • Responses API ditujukan untuk agen multi-langkah dan workflow stateful bergaya Codex.

V4 Pro juga tersedia melalui agregator. Lihat halaman OpenRouter untuk deepseek-v4-pro-0813. Namun, artikel ini fokus pada API pihak pertama DeepSeek. Untuk gambaran keluarga modelnya, lihat cara menggunakan DeepSeek V4.

Format 1: OpenAI ChatCompletions

Gunakan format ini jika proyek Anda sudah memakai OpenAI SDK atau endpoint ChatCompletions.

Ciri utama:

  • Prompt sistem masuk sebagai pesan pertama dengan role: "system".
  • messages adalah array tunggal.
  • Batas output bersifat opsional.
  • Tool calling memakai objek function bersarang.
  • Streaming menggunakan chunk chat.completion.chunk dan berakhir dengan data: [DONE].

Contoh Python menggunakan OpenAI SDK:

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

Untuk migrasi dari OpenAI, parameter utama yang perlu diubah biasanya hanya:

  1. base_url menjadi https://api.deepseek.com
  2. API key menjadi key DeepSeek
  3. model menjadi deepseek-v4-pro

Saat mode berpikir aktif, jangan hanya parsing content. Respons dapat menyertakan reasoning_content sebagai bidang tambahan.

message = response.choices[0].message

print("Jawaban:", message.content)
print("Penalaran:", getattr(message, "reasoning_content", None))
Enter fullscreen mode Exit fullscreen mode

Kapan menggunakan ChatCompletions?

Pilih format ini jika Anda memiliki:

  • Integrasi OpenAI SDK yang sudah berjalan
  • Framework seperti LangChain
  • Tool internal yang menggunakan ChatCompletions
  • Kebutuhan migrasi dengan perubahan kode minimum

Struktur request-nya sama seperti pada panduan menguji ChatGPT API dengan Apidog, dengan host dan model yang diganti.

Format 2: Anthropic Messages

Format Anthropic Messages mirip dengan ChatCompletions, tetapi ada perbedaan payload yang penting.

  1. System prompt berada di tingkat atas

    Jangan masukkan system prompt ke array messages. Gunakan parameter system.

  2. max_tokens wajib

    Setiap request harus menyatakan anggaran output secara eksplisit.

  3. Definisi tool bersifat datar

    Tool memakai name, description, dan input_schema, tanpa pembungkus function.

Contoh Python menggunakan SDK anthropic:

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/anthropic",  # Konfirmasikan path terkini di dokumentasi DeepSeek
)

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

Respons Anthropic Messages tidak selalu berupa string tunggal. content adalah daftar blok konten, jadi parse sesuai tipe bloknya.

for block in message.content:
    if block.type == "text":
        print(block.text)
Enter fullscreen mode Exit fullscreen mode

Streaming juga menggunakan event SSE bertipe, seperti:

  • message_start
  • content_block_delta
  • message_stop

Untuk detail endpoint dan kompatibilitas terbaru, gunakan dokumentasi API DeepSeek sebagai sumber rujukan.

Mengarahkan Claude Code ke DeepSeek

Untuk tooling yang membaca konfigurasi Anthropic dari environment variable, gunakan:

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

Kapan menggunakan Anthropic Messages?

Pilih format ini jika:

  • Agen Anda sudah dibangun untuk Claude
  • Harness evaluasi Anda memakai Anthropic Messages
  • Anda ingin melakukan A/B test DeepSeek dan Claude dengan bentuk request serupa
  • Anda menggunakan tooling seperti Claude Code

Untuk referensi struktur request Messages, lihat panduan API Claude Opus 5.

Format 3: DeepSeek Responses API

Responses API ditujukan untuk implementasi agen. Format ini mengikuti pola OpenAI Responses API: gunakan instructions dan input, bukan satu array messages.

Contoh request dengan 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

Tiga karakteristik utama Responses API:

  • Status dapat dikelola server-side

    Request berikutnya dapat mereferensikan respons sebelumnya, misalnya melalui previous_response_id sesuai spesifikasi.

  • Output berupa item bertipe

    Anda dapat menerima item penalaran, teks, atau pemanggilan tool sebagai entri terpisah.

  • Streaming berbasis event semantik

    Alih-alih chunk teks mentah, stream dapat berisi event seperti response.output_text.delta dan response.completed.

Tool calling memakai item seperti:

  • function_call
  • function_call_output

Gunakan api-docs.deepseek.com sebagai sumber kebenaran bila detail implementasi DeepSeek berbeda dari spesifikasi umum Responses API.

Kapan menggunakan Responses API?

Pilih format ini untuk:

  • Agen multi-langkah
  • Workflow bergaya Codex
  • Orkestrasi yang membutuhkan output bertipe
  • Sistem yang ingin memanfaatkan status percakapan server-side

Untuk chat completion biasa, format ini mungkin menambah kompleksitas yang tidak diperlukan.

Tiga format secara berdampingan

OpenAI ChatCompletions Anthropic Messages DeepSeek Responses API
Endpoint POST /chat/completions di api.deepseek.com POST /v1/messages di basis kompatibel Anthropic (/anthropic) POST /responses di api.deepseek.com
Bentuk request Array messages, system prompt sebagai pesan pertama system tingkat atas + pesan user/assistant bergantian instructions tingkat atas + string input atau daftar item
Batas output Opsional max_tokens wajib Opsional sesuai spesifikasi Responses
Definisi tool Bersarang: objek function dengan parameters Datar: input_schema per tool Entri datar sesuai spesifikasi Responses
Hasil tool Pesan role: "tool" Blok konten tool_result Item function_call_output
Streaming Delta chat.completion.chunk, diakhiri [DONE] Event bertipe: message_startcontent_block_deltamessage_stop Event siklus hidup semantik seperti response.output_text.delta
Status percakapan Dikelola klien dengan mengirim ulang riwayat Dikelola klien dengan mengirim ulang riwayat Dapat dikelola server-side melalui referensi respons sebelumnya
Terbaik untuk Tooling dan framework OpenAI Tool dan agen berbasis Claude Loop agen dan workflow stateful

Model dan harga tetap sama. Perbedaannya berada pada kontrak wire-level: endpoint, payload, streaming, dan format output.

Uji ketiganya dalam satu proyek Apidog

Cara termudah memverifikasi perbedaan format adalah mengirim prompt yang sama melalui ketiga endpoint dan membandingkan respons mentahnya.

1. Buat tiga folder request

Dalam satu proyek Apidog, buat folder berikut:

deepseek-v4-pro/
├── chat-completions/
├── anthropic-messages/
└── responses/
Enter fullscreen mode Exit fullscreen mode

Di setiap folder, simpan request untuk skenario yang sama:

  • Chat biasa
  • Tool calling
  • Streaming
  • Respons dengan system prompt
  • Respons multi-langkah jika relevan

2. Definisikan environment variable bersama

Buat environment dengan variabel berikut:

DEEPSEEK_API_KEY
BASE_URL
ANTHROPIC_BASE
MODEL
Enter fullscreen mode Exit fullscreen mode

Contoh nilai:

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

Dengan konfigurasi ini, beralih ke deepseek-v4-flash cukup dilakukan dengan mengganti nilai MODEL.

3. Kirim prompt yang identik

Gunakan prompt yang sama pada ketiga format, lalu bandingkan lokasi output teks:

ChatCompletions:
choices[0].message.content

Anthropic Messages:
content[].text

Responses API:
output[] item bertipe
Enter fullscreen mode Exit fullscreen mode

Perbandingan ini membantu Anda menulis adapter atau parser yang sesuai dengan format target.

4. Uji streaming

Aktifkan streaming:

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

Kemudian perhatikan bentuk event SSE:

  • ChatCompletions: chunk seragam dan [DONE]
  • Anthropic Messages: event bernama seperti content_block_delta
  • Responses API: event lifecycle seperti response.output_text.delta

Jika Anda baru menggunakan SSE, baca cara melakukan streaming respons API dengan SSE.

5. Tambahkan assertion pada bidang yang dipakai aplikasi

Jangan hanya memastikan request berhasil. Tambahkan assertion untuk kontrak yang benar-benar dipakai integrasi Anda, misalnya:

  • Path konten jawaban
  • ID tool call
  • Finish reason
  • Tipe item output
  • Keberadaan reasoning_content
  • Event streaming yang diharapkan

Jalankan ulang koleksi saat DeepSeek mengirim pembaruan snapshot model.

Catatan migrasi

Dari OpenAI ke DeepSeek

Ubah tiga nilai:

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

Lalu verifikasi dua hal sebelum deploy:

  1. Parameter non-inti yang Anda gunakan tetap berperilaku sesuai harapan.
  2. Parser respons Anda tidak gagal saat reasoning_content muncul di samping content.

Jalankan collection regression Anda, jangan hanya mengandalkan kompatibilitas nominal.

Dari Anthropic ke DeepSeek

Untuk SDK dan agen berbasis Anthropic:

  • Ganti base URL ke endpoint kompatibel Anthropic DeepSeek.
  • Ganti key menjadi key DeepSeek.
  • Ganti model menjadi deepseek-v4-pro.

Karena bentuk Messages diwariskan dari Anthropic, struktur max_tokens, content blocks, dan typed streaming events tetap relevan. Untuk aplikasi yang memakai environment variable, migrasinya dapat dilakukan melalui tiga baris export.

Ke Responses API

Migrasi ke Responses API bukan sekadar perubahan konfigurasi. Anda perlu menulis ulang lapisan request dan parsing respons karena formatnya berbeda dari ChatCompletions maupun Messages.

Adopsi format ini jika Anda memang membutuhkan:

  • Status server-side
  • Item output bertipe
  • Orkestrasi agen multi-langkah

Jangan memilihnya hanya karena antarmukanya lebih baru.

FAQ

Format mana yang sebaiknya dipilih untuk proyek baru?

Gunakan ChatCompletions sebagai default karena dukungan tooling-nya paling luas.

  • Pilih Messages jika stack Anda berbasis Claude.
  • Pilih Responses API jika Anda membangun agen multi-langkah dan membutuhkan state server-side.

Bisakah Claude Code diarahkan ke DeepSeek V4 Pro?

Ya. Atur ANTHROPIC_BASE_URL ke endpoint DeepSeek yang kompatibel dengan Anthropic, gunakan API key DeepSeek sebagai token autentikasi, lalu set model ke deepseek-v4-pro.

Apakah tool calling dan output terstruktur tersedia di semua format?

Model mendukung keduanya. Namun, setiap format memiliki representasi yang berbeda:

  • ChatCompletions memakai objek fungsi bersarang.
  • Messages memakai input_schema.
  • Responses memakai item function-call bergaya Responses API.

Uji skema tool spesifik Anda pada setiap endpoint sebelum production deployment, terutama untuk kasus tepi pada schema dan hasil tool.

Top comments (0)