هندسة الـ Prompt· الدرس 3 من 7
- 1تشريح الـ Prompt — من إيه بيتكوّن6 دقيقة
- 2الـ Few-Shot — علّمه بالأمثلة7 دقيقة
- 3المخرجات المنظّمة — خلّيه يرد JSON7 دقيقة
- 4سلسلة التفكير — خلّيه يفكّر خطوة خطوة8 دقيقة
- 5تحسين الـ Prompt — التعديل المتدرّج6 دقيقة
- 6الدور والشخصية — قوله يبقى مين7 دقيقة
- 7أساسيات الـ Prompt Injection — لما المدخلات تخونك8 دقيقة
المخرجات المنظّمة — خلّيه يرد JSON
في سطر واحد · لما تطبيقك محتاج يقرا رد الموديل برمجيًا، بتطلب منه صيغة ثابتة زي JSON بمفاتيح محدّدة — مش كلام حر.
الكلام الحر جميل للبني آدم بس كابوس للكود. صيغة ثابتة بتخلّيك تـ parse الرد وتبني عليه من غير ما تخمّن. بس خلي بالك: مجرد ما تطلب JSON في الـ prompt مبيضمنش إنه ييجي صالح ١٠٠٪ — لسه لازم تـ validate، ولو الـ API بيدعم structured output / schema mode ده أوثق بكتير من الطلب بالكلام.
زي الفرق بين ما حد يحكيلك عنوانه في جملة، وبين ما يملّى لك فورمة فيها خانات: شارع، مدينة، رقم. التاني بتقراه آلي على طول.
فكّرها كـ API contract مع الموديل: إنت محدّد الـ schema، وهو بيملاه. أوضح ما تحدّده، أثبت ما يجيلك.
بدل «الرسالة دي شكوى ونبرتها غاضبة»، تطلب: {"category":"complaint","sentiment":"angry"} — وتقراه في الكود من غير regex.
بتوصّف الشكل المطلوب جوه الـ prompt: المفاتيح، نوع كل قيمة، والقيم المسموحة (enum)، ويفضّل كمان مثال كامل للرد المتوقّع. الموديل بيحاول يلتزم — بس ده التزام احتمالي: ممكن يزوّد جملة قبل الـ JSON، أو ينسى مفتاح، أو يخترع قيمة مش في الـ enum. عشان كده في الكود بتعمل دايمًا parse + validation (بمكتبة زي Zod)، ولو الـ API بتاعك بيدعم structured output أو JSON schema mode بتستخدمه — لأنه بيفرض الشكل على مستوى التوليد نفسه، مش بالرجاء.
Extract from the ticket below. Reply with JSON only, no prose:
{"category": "bug" | "billing" | "other",
"sentiment": "angry" | "neutral" | "happy",
"summary": string}
Ticket:
"""
I was charged twice this month and nobody replies to my emails!
"""حتى مع prompt بالوضوح ده، اتعامل مع الرد كمدخل غير موثوق: parse ثم validate قبل ما تبني عليه.
🧪 جرّب بنفسك: خد ٥ رسايل عملاء حقيقية واطلب من الموديل يصنّفها بالـ schema اللي فوق. اعمل parse للردود في الكود وسجّل كام واحد فشل، بعدين ضيف مثال output كامل جوه الـ prompt وأعد التجربة — قارن نسبة الـ JSON الصالح قبل وبعد.
JSON.parseعلى الرد مباشرة من غير validation ولا التعامل مع كلام زائد حوالين الـ JSON — أول رد مش مظبوط بيرمي exception في production.- schema غامض («رجّع JSON فيه التفاصيل») من غير مفاتيح وأنواع محددة.
- تجاهل الـ schema mode المدعوم في الـ API والاكتفاء بالطلب بالكلام — بتسيب أوثق أداة عندك على الرف.
أي رد هيتقرا بالكود: تصنيف، استخراج بيانات، فلترة، أي pipeline الموديل فيه خطوة في النص.
الردود اللي رايحة للبني آدم مباشرة (شات، شرح، كتابة) — JSON هناك بيخلّي التجربة أسوأ وبيقيّد جودة الكلام نفسه من غير سبب.