وضع التفكير

بعض النماذج تفكّر قبل أن تجيب. يحسّن هذا الاستدلال الإجابات على المسائل المعقدة، لكنه يكلّف رموز إخراج ووقتًا. يمكنكم تعطيله، أو ضبط شدته.

السلوك الافتراضي#

النموذجيفكّر افتراضيًا؟
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"}},
)

تختلف النتائج بحسب الطلب والإعدادات.

مع حزمة SDK لـOpenAI

تتحقق حزمة 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 مع الاستدلال فقط حين تُعتبَر الإجابة الأولى غير كافية. لا تدفعون ثمن التفكير إلا حيث يغيّر النتيجة فعلًا.

الإعدادات

استجابة API