DEV Community

Cover image for Kiểm tra DeepSeek V4 Pro: So sánh ba định dạng API ChatCompletions, Anthropic Messages và Responses API
Sebastian Petrus
Sebastian Petrus

Posted on Originally published at apidog.com

Kiểm tra DeepSeek V4 Pro: So sánh ba định dạng API ChatCompletions, Anthropic Messages và Responses API

DeepSeek-V4-Pro-0813 đã chính thức ra mắt (GA) vào ngày 12 tháng 8 năm 2026 qua ID mô hình luôn cập nhật deepseek-v4-pro tại https://api.deepseek.com; đồng thời có deepseek-v4-flash với chi phí thấp hơn (Unite.AI đã đưa tin về thông báo GA này). Mô hình hỗ trợ cửa sổ ngữ cảnh 1 triệu token, đầu ra tối đa 384K, gọi công cụ, đầu ra có cấu trúc và ba chế độ tư duy trả dấu vết suy luận trong trường reasoning_content.

Dùng thử Apidog ngay hôm nay

Điểm đáng chú ý là cùng một mô hình hỗ trợ ba phương ngữ API: OpenAI ChatCompletions, Anthropic Messages và DeepSeek Responses API. Bạn có thể tái sử dụng SDK OpenAI hiện có, chuyển một tác nhân xây dựng cho Claude sang DeepSeek, hoặc tích hợp vào vòng lặp tác nhân kiểu Codex—nhưng mỗi giao diện có cấu trúc request, tool call và streaming riêng.

Bài viết này đặt ba định dạng cạnh nhau, cung cấp request chạy được cho từng định dạng và hướng dẫn kiểm thử chúng trong một dự án Apidog. Nếu bạn chưa thiết lập tài khoản hoặc chưa thực hiện lời gọi đầu tiên, hãy xem cách sử dụng DeepSeek V4 API trước.

Tóm tắt

  • deepseek-v4-pro là bản GA tại https://api.deepseek.com; deepseek-v4-flash dùng cùng giao diện với chi phí thấp hơn.
  • DeepSeek hỗ trợ ba định dạng:
    • OpenAI ChatCompletions: tương thích SDK openai khi thay base_url.
    • Anthropic Messages: phù hợp SDK anthropic và công cụ như Claude Code.
    • Responses API: hướng đến tác nhân kiểu Codex và workflow đa bước có trạng thái.
  • Thông số: ngữ cảnh 1M, đầu ra tối đa 384K, tool calling, structured output và reasoning_content.
  • Giá: $0.435/M token đầu vào khi cache miss, $0.003625/M khi cache hit và $0.87/M token đầu ra.
  • Các khác biệt quan trọng nằm ở vị trí system prompt, max_tokens, schema công cụ, tool result và sự kiện streaming.
  • Bạn có thể lưu cả ba request trong một dự án Apidog, dùng chung biến môi trường và so sánh phản hồi thô.

Tại sao một mô hình lại hỗ trợ ba định dạng API?

Mỗi định dạng giúp DeepSeek tương thích với một hệ sinh thái công cụ khác nhau:

  • ChatCompletions phù hợp hàng nghìn SDK, framework và thư viện đã hỗ trợ OpenAI.
  • Anthropic Messages cho phép nhóm đang dùng Claude, tác nhân và Claude Code thử DeepSeek mà không phải viết lại toàn bộ lớp tích hợp.
  • Responses API phục vụ workflow tác nhân đa bước, đặc biệt khi cần quản lý trạng thái hội thoại và xử lý đầu ra có kiểu dữ liệu.

V4 Pro cũng xuất hiện trên các nền tảng tổng hợp, ví dụ trang OpenRouter cho deepseek-v4-pro-0813. Tuy nhiên, bài viết này tập trung vào API chính thức của DeepSeek. Để xem tổng quan về họ V4, hãy đọc cách sử dụng DeepSeek V4.

Định dạng 1: OpenAI ChatCompletions

Đây là lựa chọn ít ma sát nhất nếu hệ thống của bạn đã dùng SDK OpenAI. Bạn gửi một mảng messages; system prompt là message đầu tiên có role: "system".

Gọi bằng Python SDK openai

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

Điểm cần kiểm tra khi tích hợp

  1. Đổi base_url sang https://api.deepseek.com.
  2. Đổi API key sang khóa DeepSeek.
  3. Đặt model thành deepseek-v4-pro hoặc deepseek-v4-flash.
  4. Khi bật chế độ tư duy, parser phải chấp nhận thêm trường reasoning_content bên cạnh content.
  5. Với streaming, xử lý các chunk chat.completion.chunk và tín hiệu kết thúc data: [DONE].

Tool calling giữ cấu trúc OpenAI quen thuộc: định nghĩa công cụ lồng trong đối tượng function, sau đó trả kết quả bằng message có role: "tool".

Nên dùng khi: bạn đã có công cụ OpenAI, framework kiểu LangChain hoặc thư viện nội bộ dựa trên ChatCompletions. Cấu trúc request gần như giống bài kiểm tra API ChatGPT với Apidog; bạn chủ yếu thay máy chủ và model.

Định dạng 2: Anthropic Messages

Anthropic Messages trông tương tự ChatCompletions, nhưng không thể chỉ đổi tên trường. Có ba khác biệt cần xử lý đúng:

  1. System prompt nằm ở trường system cấp cao nhất, không nằm trong messages.
  2. max_tokens là bắt buộc.
  3. Công cụ dùng schema phẳng với name, descriptioninput_schema; không có wrapper function.

Gọi bằng Python SDK anthropic

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/anthropic",  # Xác nhận đường dẫn hiện tại trong tài liệu 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

Khác biệt trong response và streaming

  • Response content là danh sách content block, không phải một chuỗi duy nhất.
  • Tool call xuất hiện dưới dạng block tool_use.
  • Bạn gửi kết quả công cụ lại bằng block tool_result trong message có role: "user".
  • Streaming dùng SSE event có kiểu, ví dụ:
    • message_start
    • content_block_delta
    • message_stop

Xác thực cũng tuân theo quy ước header của Anthropic thay vì bearer token chuẩn OpenAI. Hãy đối chiếu tài liệu API DeepSeek trước khi đưa vào production.

Chuyển Claude Code sang DeepSeek

Nếu công cụ hoặc tác nhân của bạn đọc cấu hình từ biến môi trường, hãy dùng:

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

Nên dùng khi: stack của bạn xây dựng cho Claude hoặc đã dùng Anthropic Messages. Cách này giúp A/B test DeepSeek và Claude với cùng body request, tool schema và streaming handler. Xem thêm cấu trúc Messages trong hướng dẫn API Claude Opus 5.

Định dạng 3: DeepSeek Responses API

Responses API là giao diện hướng tác nhân. Thay vì gửi một mảng messages, bạn gửi:

  • instructions: chỉ dẫn cấp cao nhất
  • input: chuỗi hoặc danh sách input item có kiểu dữ liệu
  • tùy chọn previous_response_id: tham chiếu response trước để duy trì trạng thái phía máy chủ

Gọi bằng 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

Khi nào Responses API khác biệt thực sự?

  1. Trạng thái phía máy chủ

    Workflow tiếp theo có thể tham chiếu response trước qua previous_response_id, thay vì gửi lại toàn bộ lịch sử hội thoại.

  2. Đầu ra có kiểu dữ liệu

    Response là danh sách item riêng biệt cho reasoning, văn bản và function call. Tác nhân có thể xử lý từng loại item theo nhánh logic riêng.

  3. Streaming có ngữ nghĩa

    Thay vì chỉ nhận text chunk, bạn nhận event như:

    • response.output_text.delta
    • response.completed
  4. Tool call theo Responses spec

    Kết quả công cụ được gửi dưới dạng item function_call_output, thay vì message role: "tool" hoặc content block tool_result.

Đối với hành vi riêng của DeepSeek ngoài đặc tả Responses, hãy xem api-docs.deepseek.com là nguồn đáng tin cậy.

Nên dùng khi: bạn xây tác nhân đa bước, workflow kiểu Codex hoặc cần trạng thái hội thoại phía máy chủ. Với một chat completion đơn giản, giao diện này thường phức tạp hơn cần thiết.

Ba định dạng đặt cạnh nhau

OpenAI ChatCompletions Anthropic Messages DeepSeek Responses API
Điểm cuối POST /chat/completions trên api.deepseek.com POST /v1/messages trên cơ sở tương thích Anthropic (/anthropic) POST /responses trên api.deepseek.com
Cấu trúc request Mảng messages; system prompt là message đầu tiên system cấp cao nhất + message user/assistant xen kẽ instructions cấp cao nhất + input là chuỗi hoặc danh sách item
Giới hạn đầu ra Tùy chọn max_tokens bắt buộc Tùy chọn theo đặc tả Responses
Định nghĩa công cụ Lồng nhau trong đối tượng function Phẳng với input_schema Các item phẳng theo Responses spec
Kết quả công cụ Message role: "tool" Content block tool_result Item function_call_output
Streaming chat.completion.chunk, kết thúc [DONE] Event có kiểu như message_start, content_block_delta, message_stop Event vòng đời như response.output_text.delta
Trạng thái hội thoại Client quản lý và gửi lại lịch sử Client quản lý và gửi lại lịch sử Có thể quản lý phía máy chủ qua response trước
Phù hợp nhất Tooling và framework OpenAI Tooling/tác nhân gốc Claude Tác nhân đa bước, workflow kiểu Codex

Cùng một model và cùng mức giá, nhưng ba hợp đồng truyền dữ liệu khác nhau. Vì vậy, thay vì chỉ đọc bảng so sánh, hãy gửi cùng một prompt qua cả ba giao diện và kiểm tra response thực tế.

Kiểm tra cả ba trong một dự án Apidog

Thiết lập một dự án Apidog giúp bạn so sánh request, response, tool call và event streaming mà không phải đổi công cụ.

1. Tạo ba thư mục request

Tạo ba folder:

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

Trong mỗi folder, lưu ít nhất ba request:

  • Chat completion đơn giản
  • Tool calling
  • Streaming với stream: true

2. Dùng biến môi trường dùng chung

Định nghĩa các biến sau trong environment:

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

Khi cần đổi sang deepseek-v4-flash hoặc xoay API key, bạn chỉ cần cập nhật một nơi.

3. Gửi cùng một prompt qua ba giao diện

Ví dụ prompt:

Explain idempotency keys in two sentences.
Enter fullscreen mode Exit fullscreen mode

So sánh các đường dẫn đầu ra:

ChatCompletions: choices[0].message.content
Anthropic Messages: content[0].text
Responses API: output item có kiểu văn bản
Enter fullscreen mode Exit fullscreen mode

Mục tiêu không chỉ là kiểm tra nội dung trả lời, mà còn xác nhận code của bạn đang đọc đúng trường dữ liệu.

4. Kiểm tra SSE streaming

Bật stream: true cho từng request và quan sát event:

  • ChatCompletions: chunk đồng nhất, kết thúc bằng [DONE]
  • Anthropic Messages: event có tên và content block delta
  • Responses API: event vòng đời có ngữ nghĩa

Nếu bạn mới làm việc với SSE, hãy xem cách truyền phát phản hồi API bằng SSE.

5. Thêm assertions cho dữ liệu ứng dụng thực sự dùng

Ví dụ assertions nên kiểm tra:

  • Đường dẫn nội dung trả về có tồn tại.
  • Tool call có ID hợp lệ.
  • Finish reason hoặc stop reason đúng kỳ vọng.
  • Event stream kết thúc thành công.
  • reasoning_content không làm parser lỗi khi xuất hiện.

Chạy lại collection sau mỗi bản cập nhật DeepSeek. Ba folder request cũng trở thành tài liệu sống cho nhóm: thay vì hỏi “tool schema của Messages là gì?”, bạn mở request đã lưu và xem response thực tế.

Lưu ý khi di chuyển

Từ OpenAI sang DeepSeek

Thông thường bạn chỉ đổi:

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

Giữ nguyên messages, tool definition và streaming handler. Trước khi triển khai:

  • Kiểm tra các tham số ngoài đặc tả cốt lõi trong collection kiểm thử.
  • Đảm bảo parser chấp nhận reasoning_content bên cạnh content.
  • Xác minh behavior của tool calling bằng request thực tế, không chỉ dựa vào tương thích danh nghĩa.

Từ Anthropic sang DeepSeek

Đổi base URL, token và model:

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

Vì Messages giữ cùng cấu trúc, client tuân thủ đặc tả thường không cần viết lại logic cho:

  • max_tokens
  • Content block
  • Tool use/tool result
  • SSE event có kiểu

Sang Responses API

Đây không phải chỉ là đổi cấu hình. Bạn cần viết hoặc điều chỉnh lớp request để dùng instructions, input, output item và—nếu cần—previous_response_id.

Chỉ nên chọn Responses API khi bạn cần rõ ràng các lợi ích riêng của nó: trạng thái phía máy chủ và output có kiểu dữ liệu cho workflow tác nhân.

Dù di chuyển theo hướng nào, hãy đổi cấu hình trước, sau đó chạy collection hồi quy trước khi tin rằng integration đã sẵn sàng.

Câu hỏi thường gặp

  • Dự án mới nên chọn định dạng nào?

    Mặc định chọn ChatCompletions vì có hỗ trợ công cụ rộng nhất. Chọn Messages nếu stack của bạn gốc Claude. Chọn Responses API nếu bạn xây tác nhân đa bước và cần trạng thái phía máy chủ.

  • Có thể hướng Claude Code tới DeepSeek V4 Pro không?

    Có. Đặt ANTHROPIC_BASE_URL về endpoint tương thích Anthropic của DeepSeek, dùng DeepSeek API key làm token xác thực và đặt model là deepseek-v4-pro.

  • Tool calling và structured output có hoạt động ở mọi định dạng không?

    Mô hình hỗ trợ cả hai, nhưng hình dạng dữ liệu khác nhau: đối tượng function lồng nhau, công cụ input_schema hoặc item kiểu Responses. Hãy kiểm tra schema cụ thể của bạn trên từng giao diện trước khi triển khai.

Top comments (0)