التحكم في إبداع الذكاء الاصطناعي: فهم وإعداد معاملات Temperature و Top-K برمجياً
مقدمة هندسية: لماذا نتحكم في عشوائية النموذج أصلاً؟
عند بناء تطبيقات تعتمد على LLMs فإن جودة المخرجات لا تعتمد فقط على قوة النموذج أو جودة Prompt، بل تتأثر أيضاً بمعاملات التوليد التي تتحكم في آلية اختيار التوكن التالي. من أهم هذه المعاملات Temperature وTop-K. فهمهما بدقة مهم لأي مهندس يعمل على أنظمة التلخيص، المساعدات الذكية، التوليد الإبداعي، أو حتى أنظمة هندسة نماذج اللغة الكبيرة برمجياً.
عملياً، بعد أن يحوّل النموذج النص إلى تمثيل داخلي عبر طبقات Transformer، فإنه ينتج في كل خطوة قائمة احتمالات على كامل المفردات الممكنة. هنا يبدأ دور معاملات Sampling: هل نختار الكلمة الأعلى احتمالاً دائماً؟ هل نسمح ببعض التنوع؟ هل نحصر الاختيار في أفضل عدد ثابت من البدائل؟ هذه القرارات تحدد ما إذا كان التطبيق دقيقاً، مملاً، مبدعاً، أو غير منضبط.
كيف يتخذ النموذج قرار اختيار التوكن التالي؟
لفهم Temperature وTop-K يجب أولاً فهم خط الأنابيب الداخلي للتوليد:
- يتم تمرير النص إلى مرحلة
Tokenization. - تتحول
Tokensإلى متجهات عددية. - تعالج طبقات النموذج السياق لإنتاج
Logitsللتوكن التالي. - تُطبّق استراتيجيات إعادة توزيع الاحتمالات مثل
Temperature Scaling. - قد يتم تقليص فضاء الاختيار عبر
Top-K Filtering. - تُسحب النتيجة النهائية ثم تتكرر الدورة حتى الوصول إلى شرط الإنهاء.
إذا كنت قد أعددت بيئتك البرمجية مسبقاً فستحتاج فقط إلى مكتبات العميل المناسبة، كما في مقال تثبيت مكتبات Python الأساسية للتعامل مع الذكاء الاصطناعي.
ما هو Temperature؟
Temperature هو معامل يعيد تشكيل توزيع الاحتمالات قبل السحب. عندما تكون القيمة منخفضة مثل 0.1 أو 0.2 يصبح التوزيع أكثر حدة، أي أن النموذج يميل لاختيار الكلمات الأكثر احتمالاً بثبات أكبر. أما عندما ترتفع القيمة مثل 0.8 أو 1.2 فإن النموذج يمنح الفرص لتوكنات أقل ترجيحاً، ما يزيد التنوع والإبداع، لكنه قد يرفع احتمال الهلوسة أو الانحراف عن المطلوب.
متى نستخدم قيماً منخفضة أو مرتفعة؟
- قيمة منخفضة: للأسئلة المعرفية، الاستخراج، الشرح التقني، التحويل البنيوي للبيانات.
- قيمة متوسطة: للمحادثات العامة، إعادة الصياغة، كتابة المحتوى المتوازن.
- قيمة مرتفعة: للعصف الذهني، القصص، اقتراح الأفكار، كتابة النسخ الإبداعية.
أنت مساعد تقني. أجب في 5 نقاط دقيقة فقط، دون افتراضات إضافية، وبأسلوب رسمي.
في هذا المثال، حتى لو كان Prompt منضبطاً، فإن اختيار Temperature=0.2 يساعد في تقليل التشتت وزيادة الاتساق.
ما هو Top-K؟
Top-K يحدد عدد أفضل التوكنات المرشحة المسموح بالسحب منها. إذا كانت القيمة 50 مثلاً، فإن النموذج يهمل جميع التوكنات خارج أعلى 50 احتمالاً. هذا مفيد لتقليل الخيارات الضعيفة من دون جعل التوليد حتمياً بالكامل.
هندسياً، Top-K يعمل كمرشح قبل السحب، بينما Temperature يعيد توزيع الاحتمالات داخل المجموعة المتاحة. وعند دمجهما يمكن تحقيق توازن دقيق بين الإبداع والتحكم.
فهم العلاقة بين Temperature وTop-K
Temperatureمنخفض +Top-Kصغير = مخرجات صارمة جداً.Temperatureمرتفع +Top-Kكبير = تنوع مرتفع ومخاطر أعلى.Temperatureمتوسط +Top-Kمتوسط = توازن جيد لمعظم التطبيقات.
تطبيق برمجي عبر OpenAI API
بعد إتمام أول سكربت اتصال بمفاتيح API يمكنك البدء بضبط معاملات التوليد مباشرةً. المثال التالي يوضح الفكرة العملية:
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY")
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a precise technical assistant."},
{"role": "user", "content": "Explain vector databases in simple engineering terms."}
],
temperature=0.3
)
print(response.choices[0].message.content)
بعض الواجهات لا تدعم Top-K بشكل مباشر، بينما نماذج مفتوحة المصدر عبر transformers أو بعض مزودي Inference يدعمونه بوضوح.
تطبيق برمجي عبر transformers
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
prompt = "Write a concise explanation of embeddings for software engineers."
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
**inputs,
max_new_tokens=120,
do_sample=True,
temperature=0.7,
top_k=40
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
هذا الأسلوب مهم عند بناء مختبر تجارب محلي أو عند دمج النموذج مع تطبيقات مثل LLM Apps وبيئات Python التطويرية.
دمج الإعدادات داخل LangChain
عند بناء سلاسل عمل، أو وكلاء، أو أنظمة RAG مرتبطة بـ Embeddings، يصبح تثبيت إعدادات التوليد جزءاً من هندسة النظام وليس مجرد تفضيل شكلي.
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
llm = ChatOpenAI(
model="gpt-4o-mini",
temperature=0.2
)
response = llm.invoke([
HumanMessage(content="Summarize the role of top-k sampling in one paragraph.")
])
print(response.content)
أفضلية هذا الدمج هندسياً
- توحيد سلوك التوليد داخل جميع السلاسل.
- تقليل التباين عند الاختبار
A/B Testing. - رفع القابلية للتنبؤ في التطبيقات الإنتاجية.
- فصل منطق
Prompt Engineeringعن منطق الضبط الإحصائي.
كيف تختار القيم المناسبة حسب نوع التطبيق؟
- مساعد دعم فني: استخدم
Temperatureمنخفضاً لتقليل الاختراع. - مولد أفكار تسويقية: ارفع
TemperatureمعTop-Kمتوسط أو كبير. - نظام تلخيص مستندات: اعتمد قيماً منخفضة ومتسقة لضمان ثبات النتائج.
- أنظمة
RAG: لا تخلط بين جودة الاسترجاع وجودة التوليد؛ قد تكون المشكلة في الاسترجاع لا فيTemperature.
أخطاء شائعة يجب تجنبها
- رفع
Temperatureثم لوم النموذج على قلة الدقة. - استخدام نفس الإعدادات لكل المهام دون تقييم تجريبي.
- الخلط بين
DeterminismوAccuracy. - اعتبار
Top-Kبديلاً عن تحسين البرومبت أو تنظيف البيانات.
خلاصة عملية للمهندس
التحكم في إبداع النموذج ليس مسألة تجميلية، بل طبقة ضبط أساسية داخل معمارية تطبيقات الذكاء التوليدي. استخدم Temperature لضبط حدة توزيع الاحتمالات، واستخدم Top-K لتقييد مساحة الاختيار. أفضل نهج هو اختبار عدة إعدادات على نفس مجموعة المهام، وقياس الاتساق، الدقة، والانحراف. بهذه الطريقة تتحول عملية الضبط من تخمين إلى ممارسة هندسية قابلة للتكرار والتحسين.
24 comments