أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالمناهج والباقات
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

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

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
الذكاء الاصطناعي

Temperature و Top-p للمبتدئ: ليه نفس السؤال بيرد عليه الـ AI كل مرة بإجابة مختلفة

مبتدئ١٦ يونيو ٢٠٢٦4 دقائق قراءة
Temperature و Top-p للمبتدئ: ليه نفس السؤال بيرد عليه الـ AI كل مرة بإجابة مختلفة

المستوى: مبتدئ — لو بتستخدم ChatGPT أو Claude ومش فاهم يعني إيه Temperature و Top-p، المقال ده ليك.

Temperature و Top-p: ليه نفس السؤال بيرد عليه الـ AI كل مرة بإجابة مختلفة

لو سألت نفس النموذج نفس السؤال 3 مرات وطلعت 3 إجابات مختلفة، ده مش عطل. ده إعداد اسمه Temperature بتقدر تتحكم فيه. بعد المقال ده هتعرف تخلّي النموذج «ثابت ودقيق» أو «متنوّع ومبدع»، وامتى تختار كل واحد.

المشكلة باختصار

النموذج اللغوي مش بيختار الكلمة التالية مرة واحدة وخلاص. هو بيحسب احتمال لكل كلمة ممكنة، وبعدين بيسحب واحدة من التوزيع ده. لو السحب فيه عشوائية، الإجابة بتختلف كل مرة. الإعدادين اللي بيتحكموا في العشوائية دي هما Temperature و Top-p.

رسم مفاهيمي لنموذج لغوي يختار الكلمة التالية من بين عدة احتمالات بأوزان مختلفة

الـ Temperature بمثال الراديو

تخيّل راديو قديم بزرّ صوت. لو نزّلت الصوت لأقصى حد، بتسمع المحطة الأقوى بس وكل اللي تحتها بيختفي. لو علّيت الصوت، المحطات الضعيفة بتبان ومعاها تشويش. الـ Temperature هو زرّ الصوت ده بالظبط: بيقرّر قد إيه النموذج «يسمع» الكلمات ضعيفة الاحتمال.

دلوقتي بالتعريف الدقيق: النموذج بيطلّع لكل كلمة رقم اسمه logit. دالة اسمها softmax بتحوّل الأرقام دي لاحتمالات مجموعها 100%. الـ Temperature بيتقسّم على الـ logits قبل الـ softmax. قيمة قليلة (0.3 مثلاً) بتكبّر الفرق بين الكلمات، فالأقوى تاخد نصيب أكبر. قيمة عالية (1.8) بتقرّب الكلمات من بعضها، فالعشوائية بتزيد.

Python
import math

def softmax(logits, temperature):
    scaled = [x / temperature for x in logits]
    m = max(scaled)
    exps = [math.exp(x - m) for x in scaled]
    total = sum(exps)
    return [e / total for e in exps]

logits = [4.2, 3.6, 2.9, 2.2, 1.7, 1.1, 0.6, 0.2]

for t in (0.3, 1.0, 1.8):
    probs = softmax(logits, t)
    print(f"T={t}: أعلى كلمة تاخد {probs[0]*100:.0f}%")

# T=0.3: أعلى كلمة تاخد 87%
# T=1.0: أعلى كلمة تاخد 47%
# T=1.8: أعلى كلمة تاخد 31%

نفس الأرقام بالظبط، غيّرنا الـ Temperature بس. الكلمة الأقوى نزلت من 87% لـ 31%، يعني الكلمات التانية بقى ليها فرصة أكبر إنها تتختار.

Top-p (Nucleus Sampling): نقص الذيل

لوحة بيانات تعرض توزيعات ورسوم بيانية تمثل احتمالات اختيار الكلمات في نموذج لغوي

الـ Temperature بيتحكم في شكل التوزيع. الـ Top-p بيتحكم في عدد المرشحين. الفكرة بمثال بسيط: عندك ممكن 50 ألف كلمة محتملة، أغلبها احتمالها شبه صفر — دي اسمها «الذيل». إنك تسيب الذيل ده مفتوح ممكن يطلّع كلمة غريبة فجأة وسط كلام سليم.

بالتعريف العلمي: Top-p (أو Nucleus Sampling، من ورقة Holtzman وزملائه سنة 2020) بترتّب الكلمات من الأعلى احتمالاً للأقل، وتجمع احتمالاتها لحد ما توصل للنسبة اللي إنت حددتها. لو top_p = 0.9، النموذج بياخد أقل عدد كلمات مجموع احتمالها 90% ويرمي الباقي. العدد ده بيتغيّر من خطوة لخطوة: ساعات 3 كلمات، وساعات 200.

Python
def nucleus(probs, p=0.9):
    ranked = sorted(enumerate(probs), key=lambda kv: kv[1], reverse=True)
    keep, cum = [], 0.0
    for idx, prob in ranked:
        keep.append(idx)
        cum += prob
        if cum >= p:
            break
    return keep  # الكلمات اللي مجموع احتمالها وصل 90%

سيناريو واقعي + أرقام

افرض عندك شات بوت خدمة عملاء بيرد على أسئلة عن مواعيد الشحن. هنا إنت عايز ردود ثابتة ودقيقة، مش إبداع. خلّي temperature = 0.2. النتيجة العملية: لو 100 عميل سألوا نفس السؤال، هتاخد ردود شبه متطابقة، وبتقل فرصة إن النموذج «يخترع» معلومة غلط.

بالعكس، لو بتولّد 10 أفكار لأسماء منتج، خلّي temperature = 0.9. هتاخد تنوّع أكبر بدل ما الـ 10 أسماء تطلع كلها متشابهة.

الـ trade-offs

Temperature عالي: بتكسب تنوّع وإبداع، بتخسر ثبات ودقة، وبتزيد فرصة الهلوسة. Temperature واطي: بتكسب دقة وثبات، بتخسر تنوّع، والنص ممكن يبقى ممل ومتكرر.

الافتراض المهم هنا: التوثيق الرسمي لـ Anthropic و OpenAI بينصح تعدّل Temperature أو Top-p، مش الاتنين مع بعض. لو لخبطت في الاتنين، بيبقى صعب تتوقّع النتيجة وتعيد إنتاجها.

متى متغيّرش الإعدادات دي

لو شغلك كله أسئلة ليها إجابة واحدة صح (استخراج بيانات، تصنيف، توليد كود)، سيب Temperature واطي وخلاص ومتلعبش في Top-p. الافتراض هنا إنك عايز أعلى دقة ممكنة. اللعب في الإعدادات في الحالة دي بيضيّع وقتك من غير مكسب واضح.

الخطوة التالية

افتح آخر استدعاء API عملته، وجرّب نفس الـ prompt مرتين: مرة بـ temperature=0.2 ومرة بـ temperature=1.0. قارن الردود. لو الفرق واضح، يبقى فهمت الإعداد عملياً. ده الكود الأساسي:

Python
from anthropic import Anthropic

client = Anthropic()

resp = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=200,
    temperature=0.2,   # رد ثابت ودقيق
    messages=[{"role": "user", "content": "اكتب وصف قصير لقميص قطني"}],
)
print(resp.content[0].text)

المصادر

  • Holtzman et al., «The Curious Case of Neural Text Degeneration», ICLR 2020 — arxiv.org/abs/1904.09751
  • Anthropic Messages API (temperature, top_p) — docs.anthropic.com/en/api/messages
  • OpenAI API Reference (temperature, top_p) — platform.openai.com/docs/api-reference
  • Hugging Face — Text generation strategies — huggingface.co/docs/transformers

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة