كيف يولّد الذكاء الاصطناعي الاستجابات
تنبؤ الرموز والاحتمالات، ولماذا لا يفكر الذكاء الاصطناعي مثل البشر
كيف يولّد الذكاء الاصطناعي الاستجابات درس مجاني في AI Prompt Engineering على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Prompt Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
النص باعتباره مسألة احتمالية
في جوهره، لا يفعل نموذج اللغة سوى شيء واحد: التنبؤ بالرمز التالي استنادًا إلى جميع الرموز التي تسبقه.
الرمز وحدة صغيرة من النص، ويعادل تقريبًا كلمة أو جزءًا من كلمة. يعيّن النموذج احتمالًا لكل رمز في مفرداته، ثم يختار أحدها. بعد ذلك يكرر العملية رمزًا تلو الآخر حتى يولّد استجابة مكتملة.
ما الرمز؟
الرموز هي الذرات التي تقوم عليها معالجة النصوص لدى نماذج LLM. وتُجزّأ النصوص الإنجليزية تقريبًا على النحو التالي:
- الكلمات الشائعة → رمز واحد لكل كلمة (
the،run) - الكلمات الأقل شيوعًا → تُقسّم إلى رمزين أو ثلاثة (
running→run+ning) - علامات الترقيم والمسافات → غالبًا ما تكون رموزًا مستقلة
تستخدم نماذج مثل GPT-4o وClaude أدوات تقسيم رموز تتعامل مع مفردات تضم أكثر من 100 ألف إدخال، بما في ذلك الأجزاء الفرعية للكلمات عبر لغات عديدة.
import tiktoken
encoding = tiktoken.encoding_for_model('gpt-4o')
sentence = 'The temperature parameter controls randomness in token selection.'
tokens = encoding.encode(sentence)
token_strings = [encoding.decode([t]) for t in tokens]
print(f'Sentence: {sentence}')
print(f'Token count: {len(tokens)}')
print(f'Tokens: {token_strings}')التوليد ذاتي الانحدار
يكون التوليد ذاتي الانحدار: إذ يُضاف كل رمز جديد إلى الإدخال قبل التنبؤ بالرمز التالي.
لذلك، عند توليد «السماء زرقاء»، يقوم النموذج بما يلي:
- يرى «السماء» → يتنبأ بـ«زرقاء»
- يرى «السماء زرقاء» → يتنبأ بنهاية التسلسل
ولهذا يتباطأ التوليد عند إنتاج مخرجات طويلة جدًا، إذ يتطلب كل رمز تمريرة أمامية كاملة.
# Simulated autoregressive token-by-token output via streaming
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
stream = client.chat.completions.create(
model='gpt-4o',
stream=True, # receive tokens as they are generated
messages=[{'role': 'user', 'content': 'Name five planets in our solar system.'}]
)
print('Tokens arriving one by one:')
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end='', flush=True)
print() # newline at endدرجة الحرارة: التحكم في العشوائية
درجة الحرارة رقم يتراوح بين 0 و2، ويُعدّل توزيع الاحتمالات قبل أخذ العينات:
- درجة الحرارة 0: اختيار الرمز الأكثر احتمالًا دائمًا — حتمي ومتكرر
- درجة الحرارة 1: أخذ عينات وفق الاحتمالات الأصلية — متوازن
- درجة الحرارة 2: تسطيح الاحتمالات — عشوائي جدًا، وقد يكون غير مترابط أحيانًا
استخدم درجة حرارة منخفضة للمهام الواقعية، ودرجة حرارة أعلى للعمل الإبداعي.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
prompt = 'Continue this sentence with one word: The ocean is'
for temp in [0.0, 0.7, 1.5]:
response = client.chat.completions.create(
model='gpt-4o',
temperature=temp,
max_tokens=5,
messages=[{'role': 'user', 'content': prompt}]
)
word = response.choices[0].message.content.strip()
print(f'Temperature {temp}: "{word}"')لماذا تختلف الاستجابات بين عمليات التشغيل
حتى مع استخدام المطالبة نفسها، قد تنتج عمليتان لتشغيل النموذج نفسه مخرجات مختلفة. ويحدث ذلك للأسباب التالية:
- أخذ العينات احتمالي — فالنموذج يسحب من توزيع احتمالي، ولا يبحث في جدول ثابت
- قد تتراكم الفروق العددية الصغيرة في حسابات الفاصلة العائمة
- يؤدي التوازي في العتاد إلى عدم الحتمية
اضبط temperature=0 وseed (إذا كانا مدعومين) لتحقيق أقصى قدر من قابلية إعادة الإنتاج.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
prompt = 'Give me a one-word color that feels calm.'
for run in range(3):
response = client.chat.completions.create(
model='gpt-4o',
temperature=1.0, # randomness ON
max_tokens=5,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'Run {run + 1}: {response.choices[0].message.content.strip()}')
# For reproducible outputs use seed + temperature=0
response = client.chat.completions.create(
model='gpt-4o',
temperature=0,
seed=42,
max_tokens=5,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'Deterministic: {response.choices[0].message.content.strip()}')أخذ عينات Top-p
يُعد Top-p (أخذ عينات النواة) طريقة أخرى للتحكم في العشوائية. فبدلًا من تغيير مقياس جميع الاحتمالات، يقيّد أخذ العينات بمجموعة الرموز الأصغر التي يتجاوز مجموع احتمالاتها التراكمي قيمة p.
top_p=0.1: الرموز الأعلى احتمالًا فقط (محافظ)top_p=0.9: مجموعة أوسع (إبداعي)top_p=1.0: جميع الرموز (التوزيع الكامل)
عمليًا، تضبط معظم الفرق درجة الحرارة وتُبقي top-p عند 1.0.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Conservative generation: top_p=0.1 restricts to high-confidence tokens
response_conservative = client.chat.completions.create(
model='gpt-4o',
top_p=0.1,
max_tokens=30,
messages=[{'role': 'user', 'content': 'What is the capital of Japan?'}]
)
# Creative generation: top_p=0.95 allows broader token pool
response_creative = client.chat.completions.create(
model='gpt-4o',
top_p=0.95,
max_tokens=30,
messages=[{'role': 'user', 'content': 'Write a poetic one-liner about the moon.'}]
)
print('Conservative:', response_conservative.choices[0].message.content)
print('Creative: ', response_creative.choices[0].message.content)لا فهم حقيقي — مطابقة الأنماط
لا تفهم نماذج اللغة الكبيرة (LLMs) اللغة بالطريقة التي يفهمها بها البشر. إنها أدوات بالغة التطور لمطابقة الأنماط، وقد دُرِّبت على مجموعات نصية ضخمة.
عندما يجيب النموذج عن السؤال «ما البناء الضوئي؟»، فهو لا يسترجع حقيقة مخزنة، بل يولّد تسلسل الرموز الذي يأتي إحصائيا بعد نمط السؤال، استنادا إلى رؤيته ملايين المستندات المشابهة أثناء التدريب.
# Demonstration: the model can produce plausible-sounding but wrong answers
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Asking about something nonsensical — model may still try to answer
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=128,
messages=[{
'role': 'user',
'content': (
'What is the boiling point of happiness in degrees Celsius? '
'Please just say "I cannot answer this" if the question makes no sense.'
)
}]
)
print(response.content[0].text)التدريب مقابل الاستدلال
تجمّدت «معارف» النموذج أثناء التدريب على مجموعة نصية كبيرة. وأثناء الاستدلال (عندما ترسلون مطالبة)، يولّد النموذج نصا استنادا إلى تلك المعرفة المتجمدة؛ فهو لا يتعلم ولا يبحث في الإنترنت.
وهذا يعني أنه لا يمكنه معرفة الأحداث التي وقعت بعد تاريخ انتهاء تدريبه، ولا الوصول إلى عناوين URL، ولا التحقق مما إذا كانت حقيقة ما قد تغيرت منذ التدريب.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Asking the model about its own knowledge cutoff
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=128,
messages=[{
'role': 'user',
'content': (
'What is your knowledge cutoff date? '
'And can you access the internet right now to look up today\'s news?'
)
}]
)
print(response.content[0].text)ما يحدث داخل عملية المرور الأمامي
على مستوى عال، يتضمن كل توقّع لرمز ما يلي:
- تحويل جميع رموز الإدخال إلى تضمينات رقمية
- تمريرها عبر العديد من طبقات المحوّل (الانتباه + التغذية الأمامية)
- إنتاج توزيع احتمالي على كامل المفردات
- اختيار رمز واحد بالعينة من ذلك التوزيع
تحتوي النماذج الحديثة على مليارات المعاملات التي تشكّل هذا التحويل، وقد تعلّمتها جميعا أثناء التدريب من نصوص بشرية.
# You can inspect logprobs (token probabilities) to see the model's confidence
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
max_tokens=5,
logprobs=True,
top_logprobs=3,
messages=[{'role': 'user', 'content': 'The opposite of hot is'}]
)
for token_info in response.choices[0].logprobs.content:
print(f'Chosen token: "{token_info.token}"')
for alt in token_info.top_logprobs:
import math
prob = round(math.exp(alt.logprob) * 100, 1)
print(f' Option "{alt.token}": {prob}% probability')تسلسلات الإيقاف
تخبر تسلسلات الإيقاف النموذج بالتوقف عن التوليد عندما ينتج سلسلة نصية محددة. وهذا مفيد من أجل:
- منع النموذج من توليد أكثر من إجابة واحدة في قائمة
- التوقف عند فاصل مثل
###أو---END--- - فرض مخرجات في سطر واحد
من دون تسلسلات إيقاف، يستمر النموذج في التوليد حتى يصل إلى max_tokens أو يتوقع رمز نهاية التسلسل.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Stop after the first item in a numbered list
response = client.chat.completions.create(
model='gpt-4o',
max_tokens=64,
stop=['2.'], # halt as soon as '2.' appears
messages=[{
'role': 'user',
'content': 'List 5 programming languages, numbered 1 through 5.'
}]
)
print(response.choices[0].message.content)
print('Stop reason:', response.choices[0].finish_reason)الآثار العملية لكُتّاب المطالبات
يساعدكم فهم آليات التوليد على كتابة مطالبات أفضل:
- استخدموا درجة الحرارة 0 للمهام التي تتطلب مخرجات ثابتة وواقعية
- استخدموا درجة حرارة تتراوح بين 0.7 و1.0 للكتابة الإبداعية
- تحققوا من الحقائق — فالنموذج يولّد نصا يبدو معقولا، وليس حقيقة مضمونة
- استخدموا تسلسلات الإيقاف للتحكم بدقة في طول المخرجات
- المطالبات القصيرة → مخرجات أكثر إبداعا، لكنها أقل تحكما
- المطالبات التفصيلية → مخرجات أكثر تقييدا وتركيزا
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# Low temperature for factual classification
fact_response = client.messages.create(
model='claude-opus-4-5',
max_tokens=8,
temperature=0, # deterministic
messages=[{'role': 'user', 'content': 'Is Paris the capital of France? Answer YES or NO only.'}]
)
print('Factual (temp=0):', fact_response.content[0].text.strip())
# Higher temperature for creative tasks
creative_response = client.messages.create(
model='claude-opus-4-5',
max_tokens=64,
temperature=1.0,
messages=[{'role': 'user', 'content': 'Write a surprising one-line poem about code.'}]
)
print('Creative (temp=1):', creative_response.content[0].text.strip())اختبار المعرفة
لقد تعلمتم كيف تولّد نماذج اللغة الكبيرة النص رمزا بعد رمز. لنتحقق من فهمكم لدرجة الحرارة.
يطوّر أحد المطورين روبوت محادثة لخدمة العملاء، ويجب أن يقدم إجابات متسقة ودقيقة عن أسئلة الفوترة. ما إعداد درجة الحرارة الأنسب؟
كيف يولّد الذكاء الاصطناعي الاستجابات — مراجعة
أصبحتم الآن تفهمون الآليات الكامنة وراء كل استجابة من استجابات الذكاء الاصطناعي:
- تتوقع النماذج الرمز التالي في كل مرة — وهذا هو التوليد ذاتي الانحدار
- تتحكم درجة الحرارة في مقدار العشوائية المضافة إلى اختيار الرموز
- يقيّد Top-p أخذ العينات بمجموعة أساسية من الرموز ذات الاحتمال المرتفع
- النموذج لا يفهم — بل يطابق الأنماط على نطاق هائل
- تتجمد المعرفة عند التدريب — فلا توجد بيانات آنية ولا وصول إلى الإنترنت
- تتيح لكم تسلسلات الإيقاف التحكم بدقة في موضع انتهاء المخرجات
تعلم AI Prompt Engineering مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 53
- الدروس
- 199
الأسئلة الشائعة
هل درس «كيف يولّد الذكاء الاصطناعي الاستجابات» مجاني؟
نعم — نص درس «كيف يولّد الذكاء الاصطناعي الاستجابات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Prompt Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة AI Prompt Engineering 4 دروس في المجموع.
ماذا ستتعلم في «كيف يولّد الذكاء الاصطناعي الاستجابات»؟
تنبؤ الرموز والاحتمالات، ولماذا لا يفكر الذكاء الاصطناعي مثل البشر تتمرن على AI Prompt Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AI Prompt Engineering؟
لا تُشترط خبرة سابقة. AI Prompt Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «كيف يولّد الذكاء الاصطناعي الاستجابات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AI Prompt Engineering هذا؟
نعم. كل درس في AI Prompt Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- فهم واجهة الدردشة
- أنواع الطلبات التي يستطيع الذكاء الاصطناعي التعامل معها
- كيف يولّد الذكاء الاصطناعي الاستجابات
- ما الذي لا يستطيع الذكاء الاصطناعي فعله