DEV Community

Cover image for เปรียบเทียบและทดสอบ API ของ DeepSeek V4 Pro: ChatCompletions, Anthropic Messages และ Responses API
Thanawat Wongchai
Thanawat Wongchai

Posted on Originally published at apidog.com

เปรียบเทียบและทดสอบ API ของ DeepSeek V4 Pro: ChatCompletions, Anthropic Messages และ Responses API

DeepSeek-V4-Pro-0813 เปิดให้บริการทั่วไปเมื่อวันที่ 12 สิงหาคม 2026 ภายใต้รหัสโมเดล deepseek-v4-pro ที่ https://api.deepseek.com และมีการอัปเดตอย่างต่อเนื่อง ควบคู่กับ deepseek-v4-flash ที่ราคาถูกกว่า (Unite.AI รายงานข่าวการเปิดให้บริการทั่วไป) จุดเด่นของรุ่นนี้คือหน้าต่างบริบท 1M โทเค็น, เอาต์พุตสูงสุด 384K, การเรียกใช้เครื่องมือ, เอาต์พุตแบบมีโครงสร้าง และโหมดการคิดสามแบบที่ส่งร่องรอยการให้เหตุผลผ่านฟิลด์ reasoning_content

ลองใช้ Apidog วันนี้

จุดที่น่าสนใจไม่ได้อยู่แค่สเปก แต่คือโมเดลเดียวรองรับ API ได้ 3 รูปแบบ ได้แก่ OpenAI ChatCompletions, Anthropic Messages และ DeepSeek Responses API คุณจึงสามารถย้าย OpenAI SDK เดิม, เอเจนต์ที่สร้างบน Claude หรือเวิร์กโฟลว์แบบ Codex-style มาใช้โมเดลเดียวกันได้ โดยเลือกเพียงรูปแบบการสื่อสารที่เหมาะกับสแตกของคุณ

บทความนี้เปรียบเทียบทั้ง 3 รูปแบบแบบลงมือทำ พร้อมตัวอย่างคำขอ ตารางเปรียบเทียบ และแนวทางทดสอบในโปรเจกต์ Apidog เดียวด้วย environment variables ร่วมกัน หากยังไม่ได้ตั้งค่าบัญชีหรือทดลองเรียก API ครั้งแรก ให้เริ่มจาก วิธีใช้ DeepSeek V4 API ก่อน

สรุปสั้นๆ

  • DeepSeek-V4-Pro-0813 ใช้งานผ่าน deepseek-v4-pro ที่ https://api.deepseek.com ส่วน deepseek-v4-flash ใช้รูปแบบ API เดียวกันแต่ราคาถูกกว่า
  • รองรับ 3 รูปแบบ API:
    • OpenAI ChatCompletions: ใช้กับ openai SDK ได้โดยเปลี่ยน base_url
    • Anthropic Messages: ใช้กับคำขอรูปแบบ anthropic รวมถึง Claude Code
    • DeepSeek Responses API: เหมาะกับเอเจนต์แบบ Codex และเวิร์กโฟลว์แบบมีสถานะ
  • คุณสมบัติหลัก: context 1M, เอาต์พุตสูงสุด 384K, tool calling, structured output และ reasoning_content
  • ราคา: อินพุตไม่อยู่ในแคช $0.435/M โทเค็น, อินพุตอยู่ในแคช $0.003625/M โทเค็น และเอาต์พุต $0.87/M โทเค็น
  • รูปแบบทั้งสามต่างกันที่ตำแหน่ง system prompt, ความหมายของ max_tokens, schema ของเครื่องมือ และ streaming events
  • ใช้โปรเจกต์ Apidog เดียว พร้อม {{DEEPSEEK_API_KEY}} และตัวแปร base URL แยกตามรูปแบบ เพื่อส่งพรอมต์เดียวกันและเปรียบเทียบ raw response ได้

ทำไมโมเดลเดียวถึงรองรับ 3 รูปแบบ

นี่คือแนวทางด้านความเข้ากันได้ของ ecosystem

  • ChatCompletions เป็นภาษากลางของ SDK และเฟรมเวิร์กจำนวนมาก จึงย้ายมาใช้ V4 Pro ได้ด้วยการเปลี่ยน base_url
  • Anthropic Messages เหมาะกับทีมที่มีเอเจนต์, eval harness หรือเครื่องมือที่สร้างบน Claude อยู่แล้ว
  • Responses API มุ่งเป้าไปที่งาน agentic ที่ต้องการเวิร์กโฟลว์หลายขั้นตอนและการจัดการสถานะ

V4 Pro ยังปรากฏในผู้ให้บริการรวมโมเดล เช่น หน้า OpenRouter ของ deepseek-v4-pro-0813 แต่บทความนี้เน้นการเรียกผ่าน DeepSeek API โดยตรง หากต้องการภาพรวมของตระกูล V4 เพิ่มเติม ดู วิธีใช้ DeepSeek V4

รูปแบบที่ 1: OpenAI ChatCompletions

รูปแบบนี้เหมาะที่สุดหากคุณมีโค้ด OpenAI อยู่แล้ว ใช้ messages array โดยวาง system prompt เป็นข้อความแรกที่มี role: "system"

สิ่งที่ต้องตั้งค่ามีเพียง:

  • DeepSeek API key
  • DeepSeek base URL
  • model: "deepseek-v4-pro" หรือ deepseek-v4-flash

ตัวอย่าง Python ด้วย 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

การเรียกใช้เครื่องมือใช้ schema แบบ function ตามสไตล์ OpenAI และการสตรีมส่ง chat.completion.chunk deltas ก่อนจบด้วย data: [DONE]

ข้อควรระวังสำหรับ V4 คือ เมื่อเปิดโหมดการคิด ร่องรอยการให้เหตุผลจะอยู่ใน reasoning_content แยกจาก content ดังนั้น parser ของคุณควรรองรับฟิลด์นี้ด้วย

ควรใช้เมื่อใด

เลือก ChatCompletions หากคุณใช้:

  • OpenAI SDK
  • LangChain หรือเฟรมเวิร์กที่รองรับ ChatCompletions
  • ไลบรารีภายในที่เรียก /chat/completions อยู่แล้ว

โครงสร้างคำขอเหมือนกับ การทดสอบ ChatGPT API ด้วย Apidog โดยเปลี่ยนเฉพาะ host และ model

รูปแบบที่ 2: Anthropic Messages

Anthropic Messages มีลักษณะคล้าย ChatCompletions แต่ไม่ควรแปลง body แบบตรงตัว เพราะมีความต่างสำคัญ 3 จุด

  1. system prompt อยู่นอก messages array โดยใช้ฟิลด์ system
  2. max_tokens เป็นฟิลด์บังคับ
  3. schema ของเครื่องมือเป็นแบบแบน โดยแต่ละเครื่องมือมี name, description และ input_schema

ตัวอย่าง Python ด้วย anthropic SDK

import os
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com/anthropic",  # ตรวจสอบเส้นทางล่าสุดจากเอกสาร 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

ผลลัพธ์จะเป็นรายการ content blocks แทน string เดียว และ SSE streaming จะใช้ events แบบมีชื่อ เช่น:

message_start
content_block_delta
message_stop
Enter fullscreen mode Exit fullscreen mode

รายละเอียด endpoint และ header ที่รองรับล่าสุดควรตรวจสอบจาก เอกสาร API ของ DeepSeek

ใช้กับ Claude Code

หากเครื่องมือของคุณอ่านค่าจาก environment variables ให้ชี้ Claude-compatible client ไปยัง DeepSeek ได้โดยไม่ต้องแก้โค้ดหลัก:

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

ควรใช้เมื่อใด

เลือก Messages หากสแตกของคุณเป็น Claude-native เช่น:

  • เอเจนต์ที่ใช้ anthropic SDK
  • Claude Code
  • eval harness ที่สร้างบน Messages API
  • ระบบที่ต้องการเปรียบเทียบ DeepSeek กับ Claude ด้วย request shape เดียวกัน

โครงสร้างนี้สอดคล้องกับแนวทางใน คู่มือ Claude Opus 5 API

รูปแบบที่ 3: DeepSeek Responses API

Responses API เป็นอินเทอร์เฟซที่เหมาะกับงาน agentic โดยเฉพาะ แทนที่จะส่ง messages เป็นหลัก คุณส่ง input พร้อม instructions ระดับบนสุด

ตัวอย่าง 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

รูปแบบนี้แตกต่างจากอีกสองแบบใน 3 ด้านหลัก

  • รองรับสถานะฝั่งเซิร์ฟเวอร์: คำขอต่อเนื่องสามารถอ้างอิง response ก่อนหน้าผ่าน previous_response_id แทนการส่งประวัติสนทนาทั้งหมดซ้ำ
  • เอาต์พุตเป็นรายการที่มีประเภท: reasoning, message และ tool call เป็นคนละ output item
  • Streaming เป็น semantic events: เช่น response.output_text.delta และ response.completed

การเรียกใช้เครื่องมือใช้รายการแบบ function_call และ function_call_output ตามข้อกำหนด Responses API หากรายละเอียด implementation ต่างจากข้อกำหนดทั่วไป ให้ยึด api-docs.deepseek.com เป็นแหล่งอ้างอิงล่าสุด

ควรใช้เมื่อใด

เลือก Responses API หากคุณกำลังสร้าง:

  • เอเจนต์หลายขั้นตอน
  • เวิร์กโฟลว์แบบ Codex-style
  • ระบบที่ต้องการให้เซิร์ฟเวอร์จัดการสถานะสนทนา
  • orchestration ที่ต้องแยกจัดการ output ตามประเภท

สำหรับแชตทั่วไป รูปแบบนี้อาจซับซ้อนเกินความจำเป็น

เปรียบเทียบทั้ง 3 รูปแบบ

OpenAI ChatCompletions Anthropic Messages DeepSeek Responses API
Endpoint POST /chat/completions บน api.deepseek.com POST /v1/messages บนฐาน Anthropic-compatible (/anthropic) POST /responses บน api.deepseek.com
รูปแบบคำขอ messages array เดียว, system prompt เป็นข้อความแรก system ระดับบนสุด + ข้อความ user/assistant สลับกัน instructions ระดับบนสุด + input แบบ string หรือรายการ
การจำกัดเอาต์พุต max tokens เป็นทางเลือก max_tokens เป็นฟิลด์บังคับ เป็นทางเลือกตามข้อกำหนด Responses
Tool schema ซ้อนในอ็อบเจกต์ function พร้อม parameters แบบแบน: input_schema ต่อเครื่องมือ แบบแบนตามข้อกำหนด Responses
Tool result ข้อความ role: "tool" tool_result content blocks function_call_output items
Streaming chat.completion.chunk และ [DONE] message_startcontent_block_deltamessage_stop lifecycle events เช่น response.output_text.delta
สถานะสนทนา client จัดการและส่งประวัติซ้ำ client จัดการและส่งประวัติซ้ำ อ้างอิง response ก่อนหน้าได้
เหมาะสำหรับ เครื่องมือ OpenAI เดิม เครื่องมือ Claude และ Claude Code agent loop และ workflow แบบมีสถานะ

โมเดลและราคาเป็นชุดเดียวกัน ความต่างจริงอยู่ที่ protocol และ response shape ดังนั้นการส่งพรอมต์เดียวกันผ่านทั้ง 3 รูปแบบคือวิธีตรวจสอบที่ดีที่สุด

ทดสอบทั้ง 3 รูปแบบในโปรเจกต์ Apidog เดียว

ตั้งค่าโปรเจกต์ Apidog ให้ทำซ้ำและเปรียบเทียบได้ง่ายตามขั้นตอนนี้

  1. สร้าง 3 โฟลเดอร์:

    • chat-completions
    • anthropic-messages
    • responses
  2. ในแต่ละโฟลเดอร์ บันทึกคำขออย่างน้อย 3 กรณี:

    • text completion ปกติ
    • tool calling
    • streaming
  3. สร้าง environment variables ร่วมกัน:

DEEPSEEK_API_KEY
BASE_URL
ANTHROPIC_BASE
Enter fullscreen mode Exit fullscreen mode
  1. ส่งพรอมต์เดียวกันผ่านทั้ง 3 รูปแบบ แล้วเปรียบเทียบ raw response:

    • ChatCompletions: choices[0].message.content
    • Messages: content blocks
    • Responses: typed output items
  2. เปิด stream: true และตรวจสอบ SSE:

    • ChatCompletions: chunks แบบไม่ระบุชื่อ จบด้วย [DONE]
    • Messages: named events
    • Responses: lifecycle events

หากต้องการทบทวนการดีบัก streaming ดู วิธีสตรีมการตอบกลับ API ด้วย SSE

  1. เพิ่ม assertions ในฟิลด์ที่ระบบของคุณใช้งานจริง เช่น:

    • เส้นทางของข้อความ
    • ตำแหน่ง tool-call ID
    • finish reason
    • การมีอยู่ของ reasoning_content
  2. รัน collection ซ้ำทุกครั้งที่ DeepSeek ออก snapshot หรืออัปเดตโมเดล

โครงสร้างนี้ทำให้โปรเจกต์ Apidog เป็นเอกสารที่ใช้งานได้จริง: หากต้องการดูว่า Messages tool schema มีหน้าตาอย่างไร ให้เปิด request ที่บันทึกไว้พร้อม response ตัวอย่างทันที

หมายเหตุการย้ายข้อมูล

ย้ายจาก OpenAI

เปลี่ยนเพียง 3 ค่า:

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

จากนั้นตรวจสอบ 2 เรื่องก่อนใช้งานจริง:

  1. พารามิเตอร์นอกเหนือจากข้อกำหนดหลักทำงานตรงตามที่ระบบคุณคาดหวังหรือไม่
  2. response parser รองรับ reasoning_content ที่มาคู่กับ content หรือไม่

ย้ายจาก Anthropic

เปลี่ยน:

  • base URL ไปยัง Anthropic-compatible endpoint
  • auth token เป็น DeepSeek API key
  • model เป็น deepseek-v4-pro

หาก client ปฏิบัติตาม Messages API อยู่แล้ว logic สำหรับ max_tokens, content blocks และ streaming events ควรยังใช้ได้ สำหรับเอเจนต์ที่อ่าน environment variables การย้ายคือการตั้งค่า export 3 บรรทัดเท่านั้น

ย้ายไป Responses API

Responses API ไม่ใช่การเปลี่ยนค่า config แบบตรงไปตรงมา เพราะ request และ response model ต่างจากอีกสองรูปแบบ ควรเลือกใช้เมื่อคุณต้องการความสามารถเฉพาะของมันจริง ๆ เช่น:

  • server-managed state
  • typed output items
  • agent orchestration แบบหลายขั้นตอน

ไม่ควรเลือกเพียงเพราะเป็น API ที่ใหม่กว่า

คำถามที่พบบ่อย

โปรเจกต์ใหม่ควรเลือกรูปแบบใด

ใช้ ChatCompletions เป็นค่าเริ่มต้นหากต้องการ compatibility กับเครื่องมือที่กว้างที่สุด เลือก Messages หากสแตกของคุณสร้างบน Claude และเลือก Responses API หากกำลังสร้างเอเจนต์หลายขั้นตอนที่ต้องการสถานะฝั่งเซิร์ฟเวอร์

ชี้ Claude Code ไปยัง DeepSeek V4 Pro ได้หรือไม่

ได้ ตั้งค่า ANTHROPIC_BASE_URL ไปยัง endpoint Anthropic-compatible ของ DeepSeek ใช้ DeepSeek API key เป็น auth token และตั้งค่า model เป็น deepseek-v4-pro

Tool calling และ structured output ใช้ได้ทุกรูปแบบหรือไม่

โมเดลรองรับทั้งสองความสามารถ แต่แต่ละรูปแบบมี schema ของตัวเอง:

  • ChatCompletions ใช้อ็อบเจกต์ function แบบซ้อน
  • Messages ใช้ input_schema
  • Responses ใช้ function-call items

ควรทดสอบ schema และ edge cases ของเครื่องมือในแต่ละรูปแบบผ่าน test collection ก่อนนำไปใช้งานจริง

Top comments (0)