إذا ظهر لك الخطأ التالي في Claude API، فالسبب أنك ترسل قيمة غير افتراضية إلى temperature (أو top_p أو top_k) على نموذج من Claude 4.7 فما بعد. الحل هو حذف هذه المعاملات الثلاثة من طلباتك. وفي إصدار API الجديد 2026-10-21 الذي نُشر في أكتوبر 2026، يؤدي إرسال أيٍّ منها إلى خطأ 400 مع أي نموذج، بغضّ النظر عن القيمة.

400 invalid_request_error
`temperature` is deprecated for this model.

مثال على الاستجابة عند إرسال قيمة غير افتراضية إلى نموذج من Claude 4.7 فما بعد (وفق تقارير المستخدمين). لم تذكر الوثائق الرسمية ما إذا كانت رسالة الخطأ التي يعيدها إصدار API الجديد هي نفسها.

طريقة الإصلاح: احذف المعاملات الثلاثة

يسبب خطأ 400

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    temperature=0.2,
    messages=[...],
)

بعد الإصلاح

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[...],
)

لتغيير شكل الإجابات أو أسلوبها، أعطِ التعليمات في الموجّه (prompt) لا في المعاملات، وهذا ما توصي به دليل الانتقال من Anthropic.

تستند هذه المقالة إلى الوثائق الرسمية من Anthropic (تم التحقق في 26 أكتوبر 2026)، وتشرح الحالتين اللتين يظهر فيهما هذا الخطأ، وما يحدث عند تحديث SDK، والتغييرات التي تُجرى مع إصدار API الجديد، وطريقة إصلاح الخطأ القريب anthropic-version: header is required. نميّز إصدارات API بالألوان: 2023-06-01 (الإصدار السابق) و2026-10-21 (الإصدار الجديد).

1. الحالتان اللتان يظهر فيهما الخطأ

يختار Claude API إصدار API من خلال ترويسة الطلب anthropic-version. ويتوقف ظهور الخطأ على التركيبة بين النموذج الذي تستخدمه وإصدار API.

النموذج2023-06-012026-10-21
نماذج Claude 4.7 فما بعدOpus 4.7 والنماذج التي صدرت بعده (مثل Opus 5 وOpus 5.5 وSonnet 5.5 وHaiku 5.5 وFable 5.1)400 عند إرسال قيمة غير افتراضيةيعمل إذا أرسلت القيمة الافتراضية أو لم ترسل شيئًا400 عند الإرسال400 حتى مع القيمة الافتراضية
نماذج أقدمClaude Sonnet 4.6 وغيرهيعمليمكن خفض القيمة لتقليل تباين الإجابات400 عند الإرسال400 حتى مع القيمة الافتراضية

المصادر: Anthropic، «Migrating to API version 2026-10-21» (نماذج Claude 4.7 فما بعد لا تقبل إلا القيمة الافتراضية، وSonnet 4.6 وغيره تقبل قيمًا أخرى، وفي 2026-10-21 تعيد جميع النماذج الخطأ 400 حتى مع القيمة الافتراضية)، وأدلة الانتقال لكل نموذج (Opus 5.5، Sonnet 5.5، Haiku 5.5، Fable 5.1. ويذكر دليل Fable 5.1 أن له القيود نفسها على أخذ العينات التي لدى Opus 5). تم التحقق في 26 أكتوبر 2026.

تشير الخانات المكتوب فيها «400» في الجدول إلى الحالتين التاليتين.

  1. الحالة 1: أرسلت قيمة غير افتراضية باستخدام 2023-06-01 إلى نموذج من Claude 4.7 فما بعد (الصف الأول من الجدول، عمود 2023-06-01)
  2. الحالة 2: أرسلت أيًّا من المعاملات الثلاثة باستخدام 2026-10-21، بغض النظر عن النموذج أو القيمة (العمود الأيمن من الجدول)

تظهر رسالة الخطأ في أعلى المقالة، `temperature` is deprecated for this model.، في الحالة 1 ضمن استجابة API أبلغ عنها أحد المستخدمين على GitHub (مثال من البلاغ). ولا تتضمن الوثائق الرسمية من Anthropic نص رسالة الخطأ نفسها، بل تذكر أن الطلب يعيد الخطأ 400.

باختصار، يؤدي حذف المعاملات الثلاثة إلى إصلاح الحالتين. أما إن كنت تغيّر القيم على نموذج أقدم، فانتبه إلى أن حذفها سيغيّر مدى تباين الإجابات (انظر القسم 2).

2. طريقة الإصلاح، وإذا أردت الحصول على الإجابة نفسها في كل مرة

  1. احذف المعاملات الثلاثة من طلباتكاحذف temperature وtop_p وtop_k من طلبات Messages API، ومن كل طلب في Message Batches أيضًا. وإذا كنت تضبط قيمة افتراضية لها في ملف إعدادات أو دالة تغليف، فاحذفها هناك أيضًا.
  2. ما يحدث بعد الحذفإذا لم ترسل المعاملات الثلاثة، فسيختار النموذج الرمز التالي باستخدام القيم الافتراضية (قيمة temperature الافتراضية هي 1.0). ولأن القيم الافتراضية لـ top_p وtop_k غير مذكورة كأرقام، فإن عدم إرسالها هو الخيار الأكثر أمانًا. وهذا هو نفسه ما يحدث عند عدم إرسال المعاملات الثلاثة في إصدارات API السابقة. أما نماذج Claude 4.7 فما بعد فلا تقبل إلا القيم الافتراضية أصلًا، لذا لن يتغير سلوكها.
  3. إذا أردت الحصول على الإجابة نفسها في كل مرةلا يوجد إعداد بديل لذلك. وتوصي أدلة الانتقال من Anthropic بتوجيه سلوك النموذج عبر الموجّهات (prompts). كما تذكر أنه حتى مع temperature = 0 لم يكن هناك ضمان للحصول على الإجابة نفسها في النماذج السابقة. وإذا أردت فقط توحيد شكل الإجابة، فيمكنك استخدام المخرجات المنظّمة (Structured outputs)، إذ تحدد شكل JSON وتطلب من النموذج الرد به.

الاستثناء هو أن تكون قد استخدمت نموذجًا يقبل قيمًا أخرى، مثل Claude Sonnet 4.6، وخفّضت القيمة لتقليل تباين الإجابات. ففي إصدار API الجديد لا بد من حذفها، ويزول ذلك التأثير. وتنص إرشادات Anthropic على أحد أمرين: إما إبقاء هذا الطلب على 2023-06-01، أو التوقف عن إرسال المعامل. وللإبقاء على 2023-06-01، إما أن تبقى على الإصدار الرئيسي الحالي من SDK (1.x في Python)، وإما إذا كنت تستدعي HTTP مباشرة فأبقِ الترويسة anthropic-version: 2023-06-01. ولا يشرح دليل الانتقال كيفية اختيار إصدار API أقدم لكل طلب عند استخدام SDK الجديد.

طريقة الإصلاح في TypeScript وHTTP

// TypeScript (@anthropic-ai/sdk): احذف temperature
const msg = await client.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello, Claude" }],
});
# HTTP (جسم JSON): لا تضع أسطر temperature وtop_p وtop_k
{
  "model": "claude-sonnet-5-5",
  "max_tokens": 1024,
  "messages": [{"role": "user", "content": "Hello, Claude"}]
}

3. البحث عن المكان الذي يرسل فيه كودك هذه المعاملات

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

# macOS وLinux وWSL: ابحث في المشروع (دون التمييز بين الأحرف الكبيرة والصغيرة)
grep -rniE "temperature|top_p|top_k" --exclude-dir={node_modules,.venv,venv,.git,dist} \
  --include="*.py" --include="*.ts" --include="*.js" --include="*.json" \
  --include="*.yaml" --include="*.yml" --include="*.toml" --include=".env*" .

# Windows (PowerShell)
Get-ChildItem -Recurse -Include *.py,*.ts,*.js,*.json,*.yaml,*.yml,*.toml,.env* |
  Where-Object { $_.FullName -notmatch "node_modules|\\.?venv|\\.git\\|\\dist\\" } |
  Select-String -Pattern "temperature|top_p|top_k"
المكان الذي وُجد فيهطريقة الإصلاح
سطر يستدعي APIاحذف المعاملات الثلاثة من الوسائط
دالة مشتركة أو دالة تغليفاحذف المكان الذي تُضبط فيه كقيمة افتراضية (وتحقق أيضًا من أن المستدعين لا يمررون قيمًا)
ملف إعدادات أو متغير بيئةاحذف العنصر، أو تحقق من أن القيمة الفارغة لا تُدرج في الطلب
طلبات Message Batchesاحذفها أيضًا من params في كل طلب (كل طلب داخل الدُفعة يعيد الخطأ 400)
طلبات عد الرموز (tokens)احذفها أيضًا من الجسم المرسل إلى /v1/messages/count_tokens
عبر مكتبة من جهة أخرىتحقق في وثائق المكتبة من وجود إعداد يرسل temperature إلى Claude

تنطبق قواعد إصدار API الجديد على طلبات Messages API وطلبات عد الرموز وكل طلب في Message Batches (دليل الانتقال من Anthropic).

4. ما الذي يحدث عند تحديث SDK

ترسل حزم SDK الرسمية تلقائيًا إصدار API الذي كان حاليًا عند صدور إصدارها الرئيسي. ومن إصدارات SDK في الجدول أدناه، ستُرسل 2026-10-21، ولم تعد المعاملات الثلاثة المحذوفة موجودة في أنواع SDK (دليل الانتقال من Anthropic). لذلك قد يظهر لك المشكل عند تحديث SDK أولًا على شكل خطأ في فحص الأنواع أو خطأ «وسيط غير موجود» بدلًا من الخطأ 400 من API. وإذا أضفت معاملات إلى الجسم دون المرور عبر الأنواع (مثلًا باستخدام ميزة تمرر حقولًا إضافية في الجسم، أو عند الإرسال المباشر عبر HTTP)، فسيعيد API الخطأ 400. والإصلاح واحد في الحالتين: احذف المعاملات الثلاثة.

اللغة أو الأداةأول إصدار يرسل 2026-10-21
Pythonanthropic 2.0.0
TypeScript@anthropic-ai/sdk 1.0.0حدّث أيضًا الحزم المرتبطة بـ Bedrock وVertex وFoundry إلى v1
Javacom.anthropic:anthropic-java 3.0.0
Goanthropic-sdk-go 2.0.0مسار الوحدة هو github.com/anthropics/anthropic-sdk-go/v2
C#Anthropic 13.0.0
Rubyanthropic 2.0.0
PHPanthropic-ai/sdk 1.0.0
CLIant 2.0.0

المصدر: Anthropic، «Migrating to API version 2026-10-21»، قسم Upgrade steps. وإذا استدعيت API دون SDK، فاضبط الترويسة anthropic-version على 2026-10-21 لاستخدام إصدار API الجديد.

إصدار API الجديد متاح على Claude API، وClaude Platform on AWS، وClaude على Google Cloud (المُدار من Anthropic والمُدار من Google كليهما)، وMicrosoft Foundry. أما Amazon Bedrock فلا يتاح فيه الإصدار الجديد إلا لنماذج Claude 4.7 فما بعد. وإذا كنت تستدعي نماذج أقدم هناك، فتنصح Anthropic بالإبقاء على إصدار SDK الحالي (أو على anthropic-version الحالي) (Versions).

خطوات تحديث SDK

  1. انتقل إلى إصدار API الجديدحدّث SDK إلى الإصدار المذكور في الجدول أعلاه. وإذا كنت تستدعي HTTP مباشرة، فاضبط anthropic-version: 2026-10-21.
  2. أصلح التغييرات غير المتوافقةاحذف المعاملات الثلاثة، وأصلح البنود التي تنطبق عليك في جدول القسم 5. وتحقق أيضًا من الطرق الجديدة في كتابة SDK الجديد (مثل أسماء الأنواع) ضمن «SDK and CLI changes» في دليل الانتقال.
  3. اختبر على إصدار API الجديد قبل الإطلاققبل النشر في بيئة الإنتاج، تحقق من أن طلباتك تنجح مع إصدار API الجديد. وأطلق تحديث SDK والإصلاحات في الإصدار نفسه.

المصدر: Anthropic، «Migrating to API version 2026-10-21»، قسم Upgrade steps (Switch to 2026-10-21 → Update your code for the breaking changes → Test against 2026-10-21).

5. تغييرات أخرى تُصلَح مع إصدار API الجديد

إذا انتقلت إلى إصدار API الجديد، فهناك تغييرات أخرى إلى جانب temperature. (صف مفتاح API خاص بتغييرات SDK وCLI فقط، ولا يهمّك إن كنت تستدعي HTTP مباشرة.) أصلح ما ينطبق عليك فقط (في قسم Breaking changes من دليل الانتقال نفسه).

ما يتغيرالتغيير بالتحديدطريقة الإصلاح
document في رسائل assistantخطأ 400أرسل المستندات في رسائل user
citations في نص رسالة userإرسال citations غير فارغة يعيد الخطأ 400احذف تلك citations (وتبقى citations في رسائل assistant كما كانت)
طريقة إرسال مفتاح APIتغيير في SDK وCLI (يقبل API أيًّا من الترويستين)يُرسل بـ Authorization: Bearer بدلًا من X-Api-Keyحدّث الوكلاء (proxies) والبوابات وفلاتر السجلات التي تقرأ المفتاح لتستخدم Authorization (يقبل API أيًّا من الترويستين)
أسماء حقول Admin APIمثلًا يُحذف حقل workspace_id من مفاتيح APIاقرأ الأسماء الجديدة، مثل scope.workspace_id

يظهر الخطأ التالي عندما لا تحتوي الطلبات على ترويسة إصدار API.

400 invalid_request_error
anthropic-version: header is required

ترسل حزم SDK الرسمية إصدار API تلقائيًا، لذا يظهر هذا الخطأ غالبًا عندما تستدعي HTTP مباشرة دون SDK. فمثلًا، هناك بلاغات على GitHub عن ظهوره عندما يوجّه أحدهم عميلًا أو أداة مصممة لـ OpenAI إلى عنوان Claude API ويحاول عرض النماذج (/v1/models) (مثال 1، مثال 2).

طريقة الإصلاح هي إضافة الترويسة. فإذا كنت تكتب كودًا جديدًا فاستخدم 2026-10-21، وإذا أردت أن يعمل الكود الحالي دون تغيير فاستخدم 2023-06-01.

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -H "content-type: application/json" \
  -d '{"model": "claude-opus-5-5", "max_tokens": 1024,
       "messages": [{"role": "user", "content": "Hello, Claude"}]}'

المصدر: Anthropic، «Versions» (ترويسة anthropic-version مطلوبة في الطلبات، وSDK يرسلها تلقائيًا). نص الخطأ مأخوذ من استجابة API أبلغ عنها أحد المستخدمين على GitHub. ويقبل API مفتاح API في الترويسة x-api-key أو في Authorization: Bearer (دليل الانتقال).

إذا كانت الأداة التي تستخدمها لا تسمح بإضافة ترويسات، فتحقق من أنها تدعم Claude API (وأنها لا تستدعيه بصيغة OpenAI).

الخلاصة

  • `temperature` is deprecated for this model. هو الخطأ 400 الذي يظهر عند إرسال قيمة غير افتراضية لـ temperature أو top_p أو top_k إلى نموذج من Claude 4.7 فما بعد، ويُصلح بحذف المعاملات الثلاثة.
  • في إصدار API الجديد 2026-10-21، يؤدي إرسال المعاملات الثلاثة نفسها إلى الخطأ 400 بغض النظر عن القيمة أو النموذج (ولم تنشر الوثائق الرسمية نص الرسالة).
  • تُرسل حزم SDK الأحدث، مثل anthropic 2.0.0 في Python، الإصدار 2026-10-21 تلقائيًا، وتمت إزالة المعاملات الثلاثة من الأنواع أيضًا. والكود الذي ما زال يمررها يحصل على خطأ في الوسائط أو على الخطأ 400 بعد تحديث SDK.
  • لا يوجد إعداد يضمن الحصول على الإجابة نفسها في كل مرة. استخدم الموجّهات للتعليمات (ويمكنك توحيد شكل الإجابة بالمخرجات المنظّمة).
  • يعني anthropic-version: header is required أن ترويسة إصدار API مفقودة، ويحدث ذلك عند استدعاء API دون SDK.

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

س. هل يمكنني إرسال temperature بقيمة 1.0 (القيمة الافتراضية)؟

في إصدار API الجديد 2026-10-21، يؤدي الإرسال إلى الخطأ 400 حتى مع القيمة الافتراضية. وإذا استدعيت نموذجًا من Claude 4.7 فما بعد باستخدام 2023-06-01، فستعمل القيمة الافتراضية، لكن لا فائدة من إرسالها، لذا فحذفها هو الخيار الأكثر أمانًا.

س. كنت أستخدم temperature = 0 للحصول على الإجابة نفسها في كل مرة. ما البديل؟

لا يوجد إعداد بديل. وتذكر أدلة الانتقال من Anthropic أن temperature = 0 لم يكن يضمن الإجابة نفسها أصلًا. وإذا أردت توحيد شكل الإجابة (مثل حقول JSON)، فاستخدم المخرجات المنظّمة (Structured outputs)، واكتب الصياغة ومعايير القرار بالتفصيل في الموجّه.

س. هل يمكنني الاستمرار في استخدام الإصدار الحالي دون الانتقال إلى إصدار API الجديد؟

نعم. تقول Anthropic إنها تحافظ على حقول الإدخال والإخراج الحالية داخل كل إصدار من إصدارات API، ويمكن تحديد 2023-06-01 كما كان من قبل. ولا تذكر صفحة Versions متى سيتوقف دعم 2023-06-01 (Versions، تم التحقق في 26 أكتوبر 2026). غير أن نماذج Claude 4.7 فما بعد ستعيد الخطأ 400 لأي قيمة غير افتراضية لـ temperature أو ما شابهها حتى مع 2023-06-01. كما توصي Anthropic باستخدام إصدار API الأحدث عندما يكون ذلك ممكنًا، وتحديث SDK ينقلك إليه تلقائيًا.

س. انتقلت إلى نموذج من Claude 4.7 فما بعد فظهر خطأ

بعد الانتقال إلى نموذج من Claude 4.7 فما بعد، تعيد قيمة temperature أو ما شابهها غير الافتراضية الخطأ 400 حتى إن بقي إصدار API كما هو. وللاطلاع على نقاط أخرى يجب إصلاحها عند تغيير النموذج (مثل إعدادات التفكير والـ prefill)، انظر «دليل الانتقال إلى Claude Opus 4.7».