ثلاثة أسباب مرتبطة بالنماذج الحديثة
1. معاملات الاعتيان على Opus 4.7 فأحدث
أوقفت Anthropic معاملات temperature وtop_p وtop_k على Claude Opus 4.7 وكل ما تلاه، بما فيه Opus 4.8. اضبط أياً منها على قيمة غير افتراضية فيفشل الاستدعاء بخطأ 400 بدل تجاهل الحقل بصمت. والحل إزالة لا ضبط: أسقط المعاملات ووجّه التنويع عبر الموجّه.
2. رسائل المساعد المملوءة مسبقاً
إنهاء المحادثة بدور مساعد جزئي كان الحيلة المعتادة لفرض شكل المخرج. النماذج الحالية ترفضه. كل من Claude Fable 5 وClaude Mythos 5 وClaude Mythos Preview وClaude Opus 4.8 وOpus 4.7 وOpus 4.6 وSonnet 4.6 يُرجع خطأ 400 بهذه الرسالة بالضبط:
"Prefilling assistant messages is not supported for this model."
تسمّي وثائق Anthropic ثلاثة بدائل: المخرجات المُهيكَلة، أو تعليمات موجّه النظام، أو output_config.format. إن كان كودك يبدأ الردود بـ { لانتزاع JSON، فذلك هو السطر الذي تحذفه.
3. كتل التفكير المُعدَّلة
يأتي التفكير الممتد بقاعدة ذهاب وإياب صارمة. إن عُدِّلت كتل thinking أو redacted_thinking في آخر رسالة مساعد، أو أُعيد ترتيبها أو رُشِّحت أو أُعيد بناؤها، أرجع API خطأ 400. تبدأ الرسالة بموضع الكتلة المخالفة، مثل messages.1.content.0، ثم تنص على القاعدة:
`thinking` or `redacted_thinking` blocks in the latest assistant message
cannot be modified. These blocks must remain as they were in the
original response.
مع استخدام الأدوات، يجب إعادة كل كتلة تفكير كما استُلمت، بما فيها الكتل الفارغة. راجع أي وسيط يختصر سجل المحادثة أو يحذف هذه الكتل، فقد لا يظهر الخلل إلا عند أول استدعاء لأداة.
الأسباب التقليدية
إذا لم ينطبق أي سبب مما سبق، فراجع الأسباب المعتادة: JSON غير صالح، أو حقل مطلوب مفقود مثل model أو max_tokens، أو نوع بيانات خاطئ، أو ترتيب غير صحيح للرسائل. ويحمل الرد request_id الذي يفيد عند التواصل مع الدعم:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "..."
},
"request_id": "req_..."
}
الحل من سطرين
للحالة الأشيع في 2026، الإصلاح كله هو حذف حقول. قبل وبعد لاستدعاء Opus 4.8:
# BEFORE: returns 400 on claude-opus-4-8
{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"temperature": 0.7,
"top_p": 0.9,
"messages": [{"role": "user", "content": "Summarize this contract."}]
}
# AFTER: same call, sampling parameters removed
{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Summarize this contract."}]
}
إن كان temperature: 0.2 القديم موجوداً من أجل الثبات، فقل ذلك في الموجّه بدلاً منه — "أعطِ القراءة الأرجح وحدها، لا تطرح بدائل" — والجأ إلى المخرجات المُهيكَلة حين يستهلك مُحلِّل النتيجة.
إن كنت تهاجر عن Opus 4 أو 4.1
قد يظهر الخطأ 400 بعد الترحيل مباشرة بسبب معاملات أخذ العينات. أُوقف Opus 4 في 15 يونيو 2026، ويتبعه Opus 4.1 في 5 أغسطس، وكثير من التطبيقات المبنية لهما يرسل temperature. عند تغيير المعرّف إلى claude-opus-4-8، راجع منشئ الطلب في التعديل نفسه. يشرح دليل إيقاف Opus 4 و4.1 المواعيد وخطوات الانتقال، وتعرض صفحة تسعير Opus 4.8 فرق التكلفة.