DEV Community

Cover image for مقارنة بين ChatCompletions و Anthropic Messages و Responses API: اختبار تنسيقات واجهة برمجة التطبيقات الثلاثة لـ DeepSeek V4 Pro
Yusuf Khalidd
Yusuf Khalidd

Posted on Originally published at apidog.com

مقارنة بين ChatCompletions و Anthropic Messages و Responses API: اختبار تنسيقات واجهة برمجة التطبيقات الثلاثة لـ DeepSeek V4 Pro

أصبح DeepSeek-V4-Pro-0813 متاحًا بشكل عام في 12 أغسطس 2026، ويُقدَّم تحت معرّف النموذج الدائم deepseek-v4-pro على https://api.deepseek.com، إلى جانب النموذج الأقل تكلفة deepseek-v4-flash (غطّت Unite.AI إعلان الإتاحة العامة). تشمل المواصفات نافذة سياق بحجم مليون رمز، وإخراجًا يصل إلى 384 ألف رمز، واستدعاء الأدوات، والمخرجات المنظمة، وثلاثة أوضاع تفكير تُظهر مسار الاستدلال في الحقل reasoning_content.

جرّب Apidog اليوم

الجزء غير المعتاد ليس في المواصفات، بل في أن النموذج نفسه يستجيب عبر ثلاث لهجات لواجهة API. يقبل V4 Pro طلبات OpenAI ChatCompletions، وطلبات Anthropic Messages، وواجهة DeepSeek Responses API. يمكنك توجيه كود OpenAI SDK الحالي إليه، أو وكيل مبني على Claude، أو حلقة وكيل بنمط Codex، باستخدام الأوزان نفسها وثلاثة أشكال مختلفة للطلبات والاستجابات.

يعرض هذا الدليل التنسيقات الثلاثة جنبًا إلى جنب، مع طلب عملي لكل تنسيق، وجدول مقارنة، وخطوات لاختبارها من مشروع Apidog واحد باستخدام متغيرات بيئة مشتركة. إذا كنت تحتاج إلى إعداد الحساب وأول استدعاء، ابدأ بـ كيفية استخدام DeepSeek V4 API ثم عد إلى هنا.

باختصار

  • يتوفر DeepSeek-V4-Pro-0813 باسم deepseek-v4-pro على https://api.deepseek.com. ويشارك deepseek-v4-flash الواجهات نفسها بسعر أقل.
  • يدعم النموذج ثلاثة تنسيقات: OpenAI ChatCompletions، وAnthropic Messages، وDeepSeek Responses API.
  • المواصفات: سياق مليون رمز، وإخراج حتى 384 ألف رمز، واستدعاء أدوات، ومخرجات منظمة، وثلاثة أوضاع تفكير مع reasoning_content.
  • التسعير: 0.435 دولار لكل مليون رمز إدخال عند فشل ذاكرة التخزين المؤقت، و0.003625 دولار لكل مليون رمز عند نجاحها، و0.87 دولار لكل مليون رمز إخراج.
  • تختلف الواجهات في موضع موجه النظام، ودلالات max_tokens، وشكل تعريف الأدوات، وأحداث البث.
  • يتيح مشروع Apidog واحد باستخدام {{DEEPSEEK_API_KEY}} ومتغيرات العنوان الأساسي اختبار الموجه نفسه عبر التنسيقات الثلاثة ومقارنة الاستجابات الخام.

لماذا يتحدث نموذج واحد ثلاث لهجات؟

السبب هو التوافق مع الأدوات الموجودة في النظام البيئي:

  • ChatCompletions هو الخيار الأسرع إذا كان مشروعك يستخدم OpenAI SDK أو أطرًا متوافقة معه. غالبًا يكفي تغيير base_url.
  • Anthropic Messages يستهدف المشاريع والوكلاء المبنية لواجهة Claude، بما في ذلك أدوات مثل Claude Code.
  • Responses API موجهة أكثر إلى الوكلاء وسير العمل متعدد الخطوات التي تستفيد من الحالة المُدارة على الخادم.

يتوفر V4 Pro أيضًا عبر المجمّعات، مثل صفحة OpenRouter لـ deepseek-v4-pro-0813، لكن هذا المقال يركز على واجهة DeepSeek API الأصلية. لمراجعة أوسع لعائلة V4، راجع كيفية استخدام DeepSeek V4.

التنسيق 1: OpenAI ChatCompletions

هذا هو التنسيق المألوف: مصفوفة messages، مع موجه النظام كأول رسالة بدور system.

الإعداد الأساسي:

  • مفتاح DeepSeek API
  • عنوان API الأساسي: https://api.deepseek.com
  • النموذج: 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

لا تحتاج إلى SDK جديد أو أسلوب مصادقة جديد. يستخدم استدعاء الأدوات شكل function المتداخل المعتاد، ويصل البث عبر أحداث chat.completion.chunk وينتهي بـ data: [DONE].

عند تفعيل وضع التفكير، قد يظهر حقل reasoning_content بجانب content. لذلك لا تفترض أن محتوى الرسالة هو الحقل الوحيد في الاستجابة.

استخدم هذا التنسيق عندما يكون لديك:

  • تكامل قائم على OpenAI SDK
  • أطر عمل مثل LangChain
  • مكتبات داخلية تستخدم ChatCompletions
  • حاجة إلى أقل قدر من الترحيل

شكل الطلب مطابق تقريبًا لما هو موضح في اختبار ChatGPT API باستخدام Apidog، مع تغيير المضيف والنموذج فقط.

التنسيق 2: Anthropic Messages

قد يبدو تنسيق Messages مشابهًا لـ ChatCompletions، لكنه يختلف في نقاط مهمة يجب التعامل معها صراحةً.

  1. موجه النظام ليس رسالة داخل المصفوفة، بل قيمة system على المستوى الأعلى.
  2. الحقل max_tokens مطلوب في كل طلب.
  3. تعريفات الأدوات مسطحة: كل أداة تحتوي على name وdescription وinput_schema، دون غلاف function.

مثال Python باستخدام Anthropic SDK

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

الاستجابة هنا ليست سلسلة نصية واحدة؛ بل قائمة من كتل المحتوى. كذلك يختلف البث عن OpenAI، إذ يستخدم أحداث SSE مسماة مثل:

  • message_start
  • content_block_delta
  • message_stop

تتبع المصادقة أيضًا اصطلاحات عناوين Anthropic بدلًا من رمز Bearer التقليدي. راجع وثائق DeepSeek API للتفاصيل الحالية الخاصة بالواجهة المتوافقة.

توجيه وكيل متوافق مع Claude

إذا كانت أداتك تقرأ إعداداتها من متغيرات البيئة، يمكنك توجيهها إلى 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

استخدم هذا التنسيق عندما تكون أدواتك مبنية أصلًا لـ Claude. إذا كان فريقك يرسل طلبات Messages إلى Anthropic، يمكنك تجربة DeepSeek ضمن الأداة نفسها وبالهياكل نفسها. راجع أيضًا دليل Claude Opus 5 API.

التنسيق 3: DeepSeek Responses API

واجهة Responses API هي الواجهة الأحدث لدى DeepSeek والموجهة أكثر إلى الوكلاء. بدل مصفوفة messages، ترسل:

  • instructions للتعليمات على المستوى الأعلى
  • input كسلسلة نصية أو قائمة عناصر مصنفة

مثال باستخدام 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

يختلف هذا التنسيق عن الاثنين الآخرين في ثلاث نقاط عملية:

  • حالة على جانب الخادم: يمكن لطلب متابعة الإشارة إلى استجابة سابقة عبر previous_response_id بدل إعادة إرسال سجل المحادثة كاملًا.
  • إخراج مصنف: يصل الإخراج كقائمة عناصر، مثل عناصر الاستدلال والنص واستدعاءات الأدوات، بدل رسالة واحدة.
  • بث دلالي: يستخدم أحداثًا مسماة مثل response.output_text.delta وresponse.completed، ما يسهل على الوكيل التعامل مع مراحل دورة الحياة.

يدعم التنسيق أيضًا استدعاء الأدوات، باستخدام عناصر مثل function_call وfunction_call_output وفقًا لمواصفات Responses. عند وجود تفاصيل خاصة بتنفيذ DeepSeek، اعتبر api-docs.deepseek.com المصدر المرجعي.

استخدم Responses API عندما تبني:

  • وكلاء متعددين الخطوات
  • سير عمل بنمط Codex
  • تنفيذًا يحتاج إلى حالة محادثة على الخادم
  • منطقًا يتعامل بشكل مختلف مع النص والأدوات والاستدلال

أما لإكمال دردشة بسيط، فقد يكون ChatCompletions أبسط.

التنسيقات الثلاثة جنبًا إلى جنب

OpenAI ChatCompletions Anthropic Messages DeepSeek Responses API
نقطة النهاية POST /chat/completions على api.deepseek.com POST /v1/messages على القاعدة المتوافقة مع Anthropic (/anthropic) POST /responses على api.deepseek.com
شكل الطلب مصفوفة messages واحدة، وموجه النظام كرسالة أولى system على المستوى الأعلى ورسائل user/assistant متناوبة instructions على المستوى الأعلى مع input كسلسلة أو قائمة عناصر
حد الإخراج max_tokens اختياري max_tokens مطلوب حد اختياري وفقًا لمواصفات Responses
تعريفات الأدوات كائن function متداخل مع parameters تعريف مسطح مع input_schema تعريفات وفقًا لمواصفات Responses
نتائج الأدوات رسائل بدور tool كتل محتوى tool_result عناصر function_call_output
البث دلتا chat.completion.chunk وتنتهي بـ [DONE] message_start ثم content_block_delta ثم message_stop أحداث دورة حياة مثل response.output_text.delta
حالة المحادثة يديرها العميل بإعادة إرسال السجل يديرها العميل بإعادة إرسال السجل يمكن إدارتها على الخادم بالاستناد إلى الاستجابة السابقة
الأفضل لـ أدوات وأطر OpenAI الحالية أدوات ووكلاء Claude وClaude Code الوكلاء وسير العمل الطويلة متعددة الخطوات

النموذج والتسعير نفسيهما؛ الاختلاف الحقيقي في عقد نقل البيانات. لذلك اختبر كل تنسيق فعليًا بدل الاعتماد على الذاكرة أو افتراض التوافق الكامل.

اختبر الثلاثة جميعًا في مشروع Apidog واحد

لاختبار التنسيقات عمليًا، أنشئ مشروعًا واحدًا في Apidog ونظمه بحيث يعكس أشكال الطلبات المختلفة.

  1. أنشئ ثلاثة مجلدات:

    • chat-completions
    • anthropic-messages
    • responses
  2. أضف داخل كل مجلد طلبات محفوظة للسيناريوهات نفسها:

    • إكمال بسيط
    • استدعاء أداة
    • بث SSE
  3. عرّف متغيرات البيئة المشتركة مرة واحدة:

   {{DEEPSEEK_API_KEY}}
   {{BASE_URL}}
   {{ANTHROPIC_BASE}}
Enter fullscreen mode Exit fullscreen mode
  1. أرسل الموجه نفسه عبر التنسيقات الثلاثة، ثم قارن الاستجابة الخام:

    • choices[0].message.content في ChatCompletions
    • قائمة content في Messages
    • عناصر الإخراج المصنفة في Responses
  2. اختبر البث باستخدام:

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

ستلاحظ بوضوح الفرق بين:

  • أجزاء ChatCompletions التي تنتهي بـ [DONE]
  • أحداث Messages المسماة
  • أحداث دورة حياة Responses
  1. أضف اختبارات تحقق للحقول التي يعتمد عليها تكاملك فعليًا، مثل:
    • مسار النص النهائي
    • موقع معرف استدعاء الأداة
    • سبب الإنهاء
    • وجود reasoning_content

إذا لم تكن معتادًا على تصحيح SSE، راجع كيفية بث استجابات API باستخدام SSE.

بهذا يصبح مشروع المجلدات الثلاثة توثيقًا حيًا: بدل السؤال عن شكل أداة Messages أو حدث البث في Responses، ستجد طلبًا محفوظًا واستجابة حقيقية قابلة للمراجعة.

ملاحظات الترحيل

الترحيل من OpenAI

غيّر القيم التالية:

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

يفترض أن يبقى بناء الرسائل وتعريفات الأدوات ومعالجات البث كما هي. قبل الإطلاق:

  • اختبر أي معلمات إضافية تستخدمها خارج المواصفات الأساسية.
  • حدّث محلل الاستجابة ليتحمل وجود reasoning_content بجانب content.
  • شغّل مجموعة اختبارات التراجع كاملة.

الترحيل من Anthropic

استبدل:

  • العنوان الأساسي بالمسار المتوافق مع Anthropic
  • مفتاح API
  • اسم النموذج

لأن شكل Messages ينتقل مباشرة، لا ينبغي أن تحتاج إلى إعادة كتابة منطق الرسائل أو كتل المحتوى أو أحداث البث، ما دام عميلك يتبع المواصفات. للوكلاء المعتمدين على متغيرات البيئة، يكفي تطبيق أوامر export المذكورة سابقًا.

الترحيل إلى Responses API

هذا ليس تغيير إعدادات فقط. ستحتاج إلى إعادة بناء طبقة الطلب لأن messages لا تتحول آليًا إلى instructions وinput.

اعتمد هذا التنسيق عندما تحتاج ميزاته الخاصة، مثل الحالة على الخادم وعناصر الإخراج المصنفة، وليس لمجرد أنه الواجهة الأحدث.

في جميع الحالات، غيّر الإعدادات أولًا ثم شغّل اختبارات التراجع قبل الاعتماد على التكامل في الإنتاج.

الأسئلة الشائعة

أي تنسيق يجب أن يختاره مشروع جديد؟

استخدم ChatCompletions افتراضيًا للحصول على أوسع دعم للأدوات. اختر Messages إذا كانت حزمتك أو أدواتك مبنية أصلًا لـ Claude. واختر Responses API إذا كنت تبني وكيلًا متعدد الخطوات وتحتاج إلى حالة تُدار على الخادم.

هل يمكن توجيه Claude Code إلى DeepSeek V4 Pro؟

نعم. اضبط ANTHROPIC_BASE_URL على نقطة نهاية DeepSeek المتوافقة مع Anthropic، واستخدم مفتاح DeepSeek كرمز المصادقة، واضبط النموذج إلى deepseek-v4-pro.

هل يعمل استدعاء الأدوات والمخرجات المنظمة في كل تنسيق؟

يدعم النموذج كليهما، لكن كل واجهة تمثل الأدوات بشكل مختلف:

  • كائنات function متداخلة في ChatCompletions
  • أدوات مسطحة مع input_schema في Messages
  • عناصر بنمط Responses في Responses API

اختبر مخططات الأدوات الفعلية ضمن كل واجهة قبل الإطلاق، لأن حالات الحافة في شكل المخطط هي أكثر مواضع اختلاف التطبيقات المتوافقة.

Top comments (0)