المستوى: مبتدئ — مناسب لأي حد بيستخدم Claude أو ChatGPT في كود لأول مرة، وعايز يفهم باراميتر واحد بيغيّر سلوك الموديل كله.
لو طلبت من Claude "اقترحلي اسم لمشروع Todo" وجابلك "إنجاز"، وسألته نفس السؤال بعد دقيقة وجابلك "خطوة"، ده مش عطل في الموديل. ده باراميتر اسمه temperature بتقدر تتحكم فيه من سطر كود واحد. لو ضبطته صح، بتوفر على نفسك ساعات debugging و 30% من تكلفة الـ retries.
Temperature في الذكاء الاصطناعي بالظبط بيعمل إيه؟
المشكلة باختصار
لو بتبني فيتشر "ولّد رد إيميل تلقائي" في تطبيقك، وكل مرة Claude بيرد بشكل مختلف، الـ unit tests بتفشل والمستخدم بيتلخبط. لو طفّيت العشوائية تمامًا في كل حتة، التطبيق بقى مكرر وأي حد بيستخدمه مرتين بيلاحظ. الحل وسط، وده الباراميتر اللي بيتحكم فيه. اللي بيحصل فعلاً إن أغلب المطورين بيسيبوه على القيمة الافتراضية ومبيلمسوش، ودي السبب الرئيسي إن تطبيقاتهم بترجّع JSON بأخطاء عشوائية.
المثال اللي هيخلّيك تفهمها فورًا (للمبتدئ)
تخيّل إنك دخلت مطعم، وقلت للجرسون: "هاتلي طبق". الجرسون عنده ٣ طرق يرد بيهم:
- الجرسون الممل (temperature = 0): دايمًا بيجيبلك نفس الطبق — الأكثر مبيعًا في المطعم. لو سألته ١٠٠ مرة، هيجيبلك كشري ١٠٠ مرة. متوقّع ١٠٠%.
- الجرسون المتوازن (temperature = 1): بيختار من أعلى ٥ أطباق مبيعًا، بنسب احتمالية. مرة كشري، مرة فراخ، مرة محشي. متنوّع بس مش غريب.
- الجرسون المغامر (temperature = 2): ممكن يجيبلك أي حاجة في القايمة، حتى الأطباق اللي محدش بيطلبها. ممكن يبدع، وممكن يجيبلك حاجة مالهاش لازمة.
ده بالظبط اللي بيحصل جوّه الموديل. كل توكن جاي، الموديل عنده توزيع احتمالي على عشرات الآلاف من التوكنز الممكنة. Temperature بتغيّر شكل التوزيع ده — بتخلّيه حاد ومركّز على الأعلى، أو مفرود وعادل بين كل الخيارات.
التعريف العلمي (بعد ما فهمت الفكرة)
الموديل قبل ما يطلع كل توكن، بيحسب قيمة اسمها logit لكل توكن في الـ vocabulary (في Claude حوالي ٢٠٠ ألف توكن). الـ logits دي بتعدّي على دالة softmax عشان تتحوّل لاحتمالات تجميعها = ١.
Temperature بتدخل في المعادلة بالشكل ده:
probabilities = softmax(logits / T)لمّا T = 1، ما فيش تأثير. لمّا T < 1، التوزيع بيبقى أكثر حدة — التوكن الأعلى احتمالًا بياخد نسبة أكبر بكتير. لمّا T > 1، التوزيع بيبقى أكثر تساويًا — التوكنز الأقل احتمالًا بتاخد فرصة حقيقية تطلع.
الافتراض هنا إنك بتستخدم نموذج بيدعم temperature direct (Claude، GPT، Gemini، Llama). لو بتستخدم نموذج open-source local، اسم الباراميتر هو نفسه بس مكانه في الكود مختلف.