العودة إلى المدونة

استكشاف الأخطاءدليل

خطأ 400 في Claude API عند temperature وtop_p وtop_k: كيفية إصلاحه

بدأ طلب Claude الخاص بك يعيد 400 على إصدار API 2026-10-21؟ احذف temperature وtop_p وtop_k، أو ثبّت الإصدار القديم. الخطوات بالداخل.

بواسطة CheapTokens Teamنُشر في 4 دقيقة قراءة

بطاقة بنمط الطرفية: خطأ 400 لـ temperature وtop_p وtop_k في Claude API
في هذه الصفحة
  1. كيف يبدو الطلب الفاشل
  2. الإصلاح: احذف المعاملات الثلاثة
  3. هل ستتغير الإجابات بعد إزالتها؟
  4. قائمة تحقق سريعة عند رؤية خطأ 400
  5. مسار كود واحد لواجهات Claude وواجهات بنمط OpenAI

طلب Claude الخاص بك عمل أمس، ثم نقلته إلى إصدار API 2026-10-21 (ترويسة anthropic-version، أو إصدار SDK مبني له)، والآن يعود إليك بخطأ 400. انظر إلى جسم الطلب: إذا كان يحتوي على temperature أو top_p أو top_k، فهذا هو السبب. احذف هذه الحقول الثلاثة وسيمر الطلب.

وفقًا لدليل الترحيل الخاص بـ Anthropic للإصدار 2026-10-21 (https://platform.claude.com/docs/en/api/migration-2026-10-21, تم التحقق منه في 24 أكتوبر 2026)، فإن أي طلب Messages أو Message Batches يرسل أيًا من الثلاثة يعيد خطأ 400. يحدث ذلك حتى لو كانت القيمة هي القيمة الافتراضية للمعامل. ابحث عن حالة 400 وعن أسماء تلك الحقول في طلبك.

كيف يبدو الطلب الفاشل#

لنفترض أن لديك سكربتًا صغيرًا يطلب من Claude تلخيص تذكرة ويحافظ على ثبات الإجابة باستخدام temperature منخفض:

python
import anthropic

client = anthropic.Anthropic()

reply = client.messages.create(
    model="<your Claude model>",
    max_tokens=500,
    temperature=0.2,  # <- this line now causes the 400
    messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)

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

bash
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": "<your Claude model>", "max_tokens": 500, "top_p": 0.9,
       "messages": [{"role": "user", "content": "Hello"}]}'

الإصلاح: احذف المعاملات الثلاثة#

احذف temperature وtop_p وtop_k من كل طلب Messages وMessage Batches. بدونها، يأخذ النموذج عينات بقيمه الافتراضية (temperature 1.0)، تمامًا كما فعل طلب 2023-06-01 الذي يتركها خارج الطلب.

python
reply = client.messages.create(
    model="<your Claude model>",
    max_tokens=500,
    messages=[{"role": "user", "content": "Summarise this ticket in two lines: ..."}],
)
قبل وبعد: الطلب الذي يحتوي على temperature يعيد 400، ونفس الطلب بدونه يمر
نفس الطلب قبل وبعد إزالة temperature

أحدث إصدارات SDK الرئيسية وأداة ant CLI (2.0.0) لم تعد تحتوي على هذه المعاملات على الإطلاق، لذا بعد الترقية يجب عليك إزالتها من الكود الخاص بك. يأتي خطأ 400 من الطلبات التي تُرسل مع anthropic-version: 2026-10-21 ولا تزال تحمل أحد الحقول الثلاثة. محولات .NET IChatClient تسلك مسارًا أكثر تسامحًا: فهي الآن تتجاهل ChatOptions.Temperature وTopK وTopP. أرقام إصدارات SDK الدقيقة لكل لغة موجودة في تبويبات خطوات الترقية في الدليل.

إذا استدعيت API بدون SDK، فإن الإصدار هو ترويسة anthropic-version، و2026-10-21 هي القيمة التي تفعّل القاعدة الجديدة.

هل ستتغير الإجابات بعد إزالتها؟#

يعتمد على النموذج، والدليل محدد هنا.

  • Claude 4.7 وما بعده يقبل بالفعل قيم أخذ العينات الافتراضية فقط. لا شيء يتغير بالنسبة لك: فقد أخذ عينات بالقيم الافتراضية سابقًا ولا يزال يفعل ذلك.
  • النماذج التي تقبل قيمًا أخرى، مثل Claude Sonnet 4.6: إذا خفّضت temperature للحصول على مخرجات أكثر اتساقًا، فإن ذلك التأثير يختفي، ولا يوجد إعداد آخر يحل محله.

إذا كان طلب معين يعتمد حقًا على قيمة غير افتراضية، فلديك خياران من الدليل: التوقف عن إرسال المعامل وقبول أخذ العينات الافتراضي، أو إبقاء ذلك الطلب الواحد على anthropic-version: 2023-06-01.

إذا كانت إجاباتك يجب أن تكون متسقة بشكل صارم، فضع الاتساق في الـ prompt بدلاً من ذلك: تنسيق مخرجات ثابت، ومثال قصير للإجابة التي تريدها، وفحص في الكود الخاص بك يرفض أي شيء خارج التنسيق. هذا عمل أكثر من رقم واحد، لكنه لا يعتمد على مقبض أخذ العينات.

قائمة تحقق سريعة عند رؤية خطأ 400#

  1. ابحث في المشروع عن temperature وtop_p وtop_k، بما في ذلك الأغلفة وملفات الإعداد المشتركة.
  2. تحقق من مهام الدفعات: تنطبق القاعدة على كل طلب داخل Message Batch تم إنشاؤه باستخدام 2026-10-21، لذا انظر إلى معاملات كل طلب في الدفعة.
  3. تحقق مما تغير: الإصدار الرئيسي لـ SDK، أو إصدار CLI، أو ترويسة anthropic-version.
  4. احذف الحقول، أو ثبّت ذلك الطلب على 2023-06-01 إذا كان يحتاج إلى قيمة غير افتراضية.
  5. شغّل طلبًا واحدًا قبل إعادة تشغيل دفعة كبيرة.

مسار كود واحد لواجهات Claude وواجهات بنمط OpenAI#

إعداد شائع: مساعد واحد يبني الطلب ويرسله إما إلى Anthropic Messages أو إلى نقطة نهاية Chat Completions بنمط OpenAI. أبسط إصلاح هو فصل المعاملات. أبقِ temperature في فرع نمط OpenAI فقط، ولا تضفه إلى فرع Messages.

في تنسيق Chat Completions يكون الإعداد حقل طلب عاديًا. على CheapTokens يعمل عبر العنوان المتوافق مع OpenAI https://api.cheaptokens.dev/v1. إليك طلبًا إلى DeepSeek-V4-Flash (سياق 380K، حتى 32,768 رمز إخراج لكل إجابة)، مع معرّف النموذج الكامل من وثائق CheapTokens:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "temperature": 0.2,
    "max_tokens": 300,
    "messages": [{"role": "user", "content": "Summarise this ticket in two lines: ..."}]
  }'

طلب كهذا، مع 1,000 رمز إدخال و300 رمز إخراج، يكلف $0.000045 بالسعر الحالي. لدى DeepSeek-V4-Flash سعر واحد في أي وقت من اليوم، بدون ساعات ذروة، ورصيد واحد يغطي جميع النماذج. لنفس مسار الكود مع نافذة سياق 390K يوجد أيضًا GLM-5.3-Flash (zai-org/GLM-5.3-Flash، حتى 8,192 رمز إخراج). الأسعار الحالية لجميع النماذج موجودة على صفحة الأسعار.

لمعرفة كيف يتصرف الإعداد، اقرأ System prompt and temperature: what they do and how to set them. لاستدعاء Messages بتنسيق Claude من Python، راجع Anthropic Python SDK with CheapTokens. إعداد العنوان الأساسي والمفتاح موجود في وثائق CheapTokens.