وضع التفكير
بعض النماذج تفكّر قبل أن تجيب. يحسّن هذا الاستدلال الإجابات على المسائل المعقدة، لكنه يكلّف رموز إخراج ووقتًا. يمكنكم تعطيله، أو ضبط شدته.
السلوك الافتراضي#
| النموذج | يفكّر افتراضيًا؟ |
|---|---|
mina-flash | لا؛ إجابة مباشرة، مُحسَّنة لزمن الاستجابة. |
mina-low | لا؛ إجابة مباشرة. |
mina-full | نعم؛ يفكّر قبل أن يجيب. |
إيقاف الاستدلال#
في سؤال بسيط، الاستدلال وقت ومال ضائعان :
reponse = client.chat.completions.create(
model="mina-full",
messages=[{"role": "user", "content": "Quelle est la capitale de l'Algérie ?"}],
extra_body={"thinking": {"type": "disabled"}},
)curl https://api.cloudzir.com/v1/chat/completions \
-H "Authorization: Bearer $CLOUDZIR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mina-full",
"messages": [{"role": "user", "content": "Quelle est la capitale de l Algérie ?"}],
"thinking": {"type": "disabled"}
}'تختلف النتائج بحسب الطلب والإعدادات.
تتحقق حزمة SDK بلغة Python من الحقول المعروفة : مرّروا
thinking وreasoning_effort عبر
extra_body={...}. في HTTP المباشر، ضعوها ببساطة في جذر الجسم.
ضبط الشدة#
reponse = client.chat.completions.create(
model="mina-full",
messages=[{"role": "user", "content": probleme_complexe}],
extra_body={"reasoning_effort": "high"}, # minimal | low | medium | high
)
طلب جهد يُفعّل الاستدلال، حتى لو كان مُعطَّلًا. يُرفض مستوى غير معروف
بالرمز 400 بدل تجاهله بصمت.
قراءة تكلفة الاستدلال#
"usage": {
"prompt_tokens": 78,
"completion_tokens": 756,
"total_tokens": 834,
"completion_tokens_details": { "reasoning_tokens": 557 }
}
reasoning_tokens محتسَبة بالفعل ضمن
completion_tokens : ليست بندًا إضافيًا في الفاتورة، بل
تفصيل لما يمثله التفكير. في المثال أعلاه، استُخدم 557 من 756 رمز إخراج (أي
74 % من فاتورة الإخراج) للتفكير، لا للإجابة.
توقعوا max_tokens#
يستهلك الاستدلال ميزانية الإخراج. max_tokens ضيّق جدًا على
نموذج يفكّر ينتج إجابة مقطوعة، وربما فارغة، مع
finish_reason: "length". توقعوا هامشًا واسعًا (1000 رمز أو أكثر)،
أو أوقفوا الاستدلال.
صيغة Anthropic#
على /anthropic، استخدموا حقل thinking من مواصفات
Anthropic. يعود الاستدلال في كتلة محتوى thinking، قبل كتلة
text.
message = client.messages.create(
model="mina-full",
max_tokens=2000,
thinking={"type": "enabled", "budget_tokens": 4000},
messages=[{"role": "user", "content": probleme_complexe}],
)
for bloc in message.content:
if bloc.type == "thinking":
print("raisonnement :", bloc.thinking[:200])
elif bloc.type == "text":
print("réponse :", bloc.text)
لا توجد كتلة thinking منفصلة إلا في الاستجابات الكاملة. في
البث المباشر، يصل الاستدلال والإجابة في نفس تدفق النص : إن احتجتم إلى
التمييز بينهما، لا تستخدموا البث المباشر لهذا الطلب.
لا يملك budget_tokens مقابلًا دقيقًا من جهة المحرك :
يُترجَم إلى مستوى جهد (أقل من 2000 ← low، أكثر من 8000 ←
high، وإلا medium) بدل تجاهله بصمت. كتل
thinking التي تعيدون إرسالها من جولة سابقة مقبولة : يعيد
المحرك بناء استدلاله الخاص.
متى نفعّله#
| نوع المهمة | التوصية |
|---|---|
| الاستخراج، التصنيف، إعادة الصياغة، الترجمة | أوقفوه؛ الاستدلال لا يضيف شيئًا. |
| دردشة الدعم، التحرير الاعتيادي | mina-low، الذي لا يفكّر. |
| الرياضيات، المنطق، التخطيط متعدد الخطوات | أبقوه مفعّلًا. |
| برمجة معقدة، إعادة هيكلة، تصحيح أخطاء | أبقوه مفعّلًا، وeffort: "high" إن خابت النتيجة. |
| وكلاء بأدوات | أبقوه مفعّلًا؛ يتحسن اختيار الأداة بشكل ملحوظ. |
الإعداد الأكثر ربحية : mina-flash افتراضيًا، والتحويل إلى
mina-full مع الاستدلال فقط حين تُعتبَر الإجابة الأولى غير
كافية. لا تدفعون ثمن التفكير إلا حيث يغيّر النتيجة فعلًا.