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.
Đ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-prolà bản GA tạihttps://api.deepseek.com;deepseek-v4-flashdù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
openaikhi thaybase_url. -
Anthropic Messages: phù hợp SDK
anthropicvà 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.
-
OpenAI ChatCompletions: tương thích SDK
- 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)
Điểm cần kiểm tra khi tích hợp
- Đổi
base_urlsanghttps://api.deepseek.com. - Đổi API key sang khóa DeepSeek.
- Đặt
modelthànhdeepseek-v4-prohoặcdeepseek-v4-flash. - Khi bật chế độ tư duy, parser phải chấp nhận thêm trường
reasoning_contentbên cạnhcontent. - Với streaming, xử lý các chunk
chat.completion.chunkvà tín hiệu kết thúcdata: [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:
- System prompt nằm ở trường
systemcấp cao nhất, không nằm trongmessages. -
max_tokenslà bắt buộc. - Công cụ dùng schema phẳng với
name,descriptionvàinput_schema; không có wrapperfunction.
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)
Khác biệt trong response và streaming
- Response
contentlà 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_resulttrong message córole: "user". - Streaming dùng SSE event có kiểu, ví dụ:
message_startcontent_block_deltamessage_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
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
}'
Khi nào Responses API khác biệt thực sự?
Trạng thái phía máy chủ
Workflow tiếp theo có thể tham chiếu response trước quaprevious_response_id, thay vì gửi lại toàn bộ lịch sử hội thoại.Đầ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.-
Streaming có ngữ nghĩa
Thay vì chỉ nhận text chunk, bạn nhận event như:response.output_text.deltaresponse.completed
Tool call theo Responses spec
Kết quả công cụ được gửi dưới dạng itemfunction_call_output, thay vì messagerole: "tool"hoặc content blocktool_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/
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
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.
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
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_contentkhô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"
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_contentbên cạnhcontent. - 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
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ó. ĐặtANTHROPIC_BASE_URLvề 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ượngfunctionlồng nhau, công cụinput_schemahoặ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)