מעבר למבנה, הנדסת פרומפטים אפקטיבית מונחית על ידי עקרונות—אמיתות יסוד שחלות על כל המודלים, המשימות וההקשרים. שלטו בעקרונות אלה, ותוכלו להסתגל לכל אתגר בכתיבת פרומפטים.

<Callout type="info" title="8 עקרונות הליבה">
עקרונות אלה חלים על כל מודל AI וכל משימה. למדו אותם פעם אחת, השתמשו בהם בכל מקום.
</Callout>

## עיקרון 1: בהירות על פני חוכמה

הפרומפטים הטובים ביותר הם ברורים, לא חכמים. מודלי AI הם מפרשנים מילוליים—הם עובדים בדיוק עם מה שאתם נותנים להם.

### היו מפורשים

<Compare 
  before={{ label: "משתמע (בעייתי)", content: "תשפר את זה." }}
  after={{ label: "מפורש (יעיל)", content: "שפר את האימייל הזה על ידי:\n1. הפיכת שורת הנושא למשכנעת יותר\n2. קיצור פסקאות ל-2-3 משפטים מקסימום\n3. הוספת קריאה ברורה לפעולה בסוף" }}
/>

### הימנעו מעמימות

למילים יכולות להיות משמעויות מרובות. בחרו שפה מדויקת.

<Compare 
  before={{ label: "עמום", content: "תן לי סיכום קצר.\n(כמה קצר? משפט אחד? פסקה אחת? עמוד אחד?)" }}
  after={{ label: "מדויק", content: "סכם בדיוק ב-3 נקודות תבליט, כל אחת מתחת ל-20 מילים." }}
/>

### ציינו את המובן מאליו

מה שברור לכם אינו ברור למודל. פרטו הנחות.

```
אתה עוזר לי לכתוב מכתב מקדים.

הקשר חשוב:
- אני מגיש מועמדות למשרת Software Engineer ב-Google
- יש לי 5 שנות ניסיון ב-Python ומערכות מבוזרות
- התפקיד דורש ניסיון ניהולי (ניהלתי צוות של 4)
- אני רוצה להדגיש את התרומות שלי לקוד פתוח
```

## עיקרון 2: ספציפיות מניבה איכות

קלטים מעורפלים מייצרים פלטים מעורפלים. קלטים ספציפיים מייצרים פלטים ספציפיים ושימושיים.

### סולם הספציפיות

<SpecificitySpectrum levels={[
  { level: "רמה 1", text: "כתוב על שינויי אקלים" },
  { level: "רמה 2", text: "כתוב מאמר על השפעות שינויי האקלים" },
  { level: "רמה 3", text: "כתוב מאמר של 500 מילים על איך שינויי אקלים משפיעים על שוניות אלמוגים" },
  { level: "רמה 4", text: "כתוב מאמר של 500 מילים המסביר כיצד עליית טמפרטורות האוקיינוס גורמת להלבנת אלמוגים, המיועד לתלמידי תיכון, עם 2 דוגמאות ספציפיות מהשונית הגדולה, בטון מעניין אך מדויק מדעית" }
]} />

כל רמה מוסיפה ספציפיות ומשפרת באופן דרמטי את איכות הפלט.

### ציינו אלמנטים אלה

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">קהל יעד</span>
    <span className="text-muted-foreground">מי יקרא/ישתמש בזה?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">אורך</span>
    <span className="text-muted-foreground">כמה ארוך/קצר צריך להיות?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">טון</span>
    <span className="text-muted-foreground">רשמי? יומיומי? טכני?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">פורמט</span>
    <span className="text-muted-foreground">פרוזה? רשימה? טבלה? קוד?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">היקף</span>
    <span className="text-muted-foreground">מה לכלול/להוציא?</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-24">מטרה</span>
    <span className="text-muted-foreground">מה זה צריך להשיג?</span>
  </div>
</div>

## עיקרון 3: ההקשר הוא המלך

למודלים אין זיכרון, אין גישה לקבצים שלכם, ואין ידע על המצב שלכם. כל מה שרלוונטי חייב להיות בפרומפט.

### ספקו הקשר מספיק

<Compare 
  before={{ label: "הקשר לא מספיק", content: "למה הפונקציה שלי לא עובדת?" }}
  after={{ label: "הקשר מספיק", content: "יש לי פונקציית Python שאמורה לסנן רשימת מילונים לפי ערך מפתח ספציפי. היא מחזירה רשימה ריקה כשהיא אמורה להחזיר 3 פריטים.\n\nפונקציה:\ndef filter_items(items, key, value):\n    return [item for item in items if item[key] = value]\n\nקריאה: filter_items(items, 'status', 'active')\nצפוי: 2 פריטים, התקבל: רשימה ריקה" }}
/>

### רשימת בדיקת ההקשר

<Callout type="tip" title="לפני שאתם שולחים">
שאלו את עצמכם: האם זר חכם היה מבין את הבקשה הזו? אם לא, הוסיפו עוד הקשר.
</Callout>

<Checklist 
  title="רשימת בדיקת הקשר"
  items={[
    { text: "האם המודל יודע על מה אני עובד?" },
    { text: "האם הוא יודע את המטרה שלי?" },
    { text: "האם יש לו את כל המידע הדרוש?" },
    { text: "האם הוא מבין את האילוצים?" },
    { text: "האם זר חכם היה מבין את הבקשה הזו?" }
  ]}
/>

## עיקרון 4: הנחו, לא רק שאלו

אל תבקשו סתם תשובה—הנחו את המודל לכיוון התשובה שאתם רוצים.

### השתמשו במסגור הדרכתי

<Compare 
  before={{ label: "רק שואל", content: "מה היתרונות והחסרונות של microservices?" }}
  after={{ label: "מנחה", content: "רשום 5 יתרונות ו-5 חסרונות של ארכיטקטורת microservices.\n\nלכל נקודה:\n- ציין את הנקודה בבהירות במשפט אחד\n- ספק הסבר קצר (2-3 משפטים)\n- תן דוגמה קונקרטית\n\nשקול נקודות מבט של: סטארטאפים קטנים, ארגונים גדולים, וצוותים שעוברים ממונוליט." }}
/>

### ספקו פיגומי חשיבה

למשימות מורכבות, הנחו את תהליך החשיבה:

<TryIt 
  title="דוגמה לפיגום חשיבה"
  description="פרומפט זה מנחה את ה-AI דרך תהליך קבלת החלטות שיטתי."
  prompt={`אני צריך לבחור בין PostgreSQL ל-MongoDB לפרויקט האיקומרס שלי.

חשוב על זה בצורה שיטתית:
1. קודם, רשום את הדרישות האופייניות למסד נתונים של איקומרס
2. לאחר מכן, הערך כל מסד נתונים מול כל דרישה
3. שקול פשרות ספציפיות למקרה השימוש שלי
4. תן המלצה עם הצדקה ברורה`}
/>

## עיקרון 5: חזרו ושפרו

הנדסת פרומפטים היא תהליך איטרטיבי. הפרומפט הראשון שלכם הוא לעתים רחוקות הטוב ביותר.

### מחזור האיטרציה

```
1. כתבו פרומפט ראשוני
2. בדקו את הפלט
3. זהו פערים או בעיות
4. שפרו את הפרומפט
5. חזרו עד שתהיו מרוצים
```

### שיפורים נפוצים

<div className="my-4 grid gap-2">
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">מילולי מדי</span>
    <span className="text-muted-foreground">הוסיפו "היה תמציתי" או הגבלות אורך</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">מעורפל מדי</span>
    <span className="text-muted-foreground">הוסיפו דוגמאות ספציפיות או אילוצים</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">פורמט שגוי</span>
    <span className="text-muted-foreground">ציינו מבנה פלט מדויק</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">היבטים חסרים</span>
    <span className="text-muted-foreground">הוסיפו "וודא לכלול..."</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">טון שגוי</span>
    <span className="text-muted-foreground">ציינו קהל יעד וסגנון</span>
  </div>
  <div className="flex gap-2 p-3 bg-muted/50 rounded-lg">
    <span className="font-semibold min-w-32">לא מדויק</span>
    <span className="text-muted-foreground">בקשו ציטוטים או חשיבה צעד אחר צעד</span>
  </div>
</div>

### נהלו יומן פרומפטים

תעדו מה עובד:
```
משימה: סקירת קוד
גרסה 1: "סקור את הקוד הזה" → גנרי מדי
גרסה 2: הוספתי קריטריונים ספציפיים לסקירה → יותר טוב
גרסה 3: הוספתי דוגמה לסקירה טובה → מצוין
סופי: [שמור פרומפט מוצלח כתבנית]
```

## עיקרון 6: נצלו את החוזקות של המודל

עבדו עם האופן שבו מודלים מאומנים, לא נגדו.

### מודלים רוצים לעזור

נסחו בקשות כדברים שעוזר מועיל היה עושה באופן טבעי:

<Compare 
  before={{ label: "נגד הזרם", content: "אני יודע שאתה לא יכול לעשות את זה, אבל נסה..." }}
  after={{ label: "עם הזרם", content: "עזור לי להבין...\nאני עובד על X וצריך עזרה עם...\nהאם תוכל להדריך אותי דרך..." }}
/>

### מודלים מצטיינים בתבניות

אם אתם צריכים פלט עקבי, הראו את התבנית:

<TryIt 
  title="דוגמה לתבנית"
  description="פרומפט זה מראה ל-AI בדיוק איזה פורמט אתם רוצים להמלצות ספרים."
  prompt={`המלץ על 3 ספרי מדע בדיוני. עצב כל המלצה כך:

📚 **[שם הספר]** מאת [מחבר]
*[ז'אנר] | [שנת פרסום]*
[תיאור של 2 משפטים]
למה תאהבו את זה: [משפט אחד שמושך]

---`}
/>

### מודלים יכולים לשחק תפקידים

השתמשו בפרסונות כדי לגשת ל"מצבים" שונים של תגובה:

```
כמתנגד לשם הדיון, טען נגד ההצעה שלי...
כמנטור תומך, עזור לי להשתפר...
כמשקיע ספקן, הטל ספק בתוכנית העסקית הזו...
```

## עיקרון 7: שלטו במבנה הפלט

פלטים מובנים שימושיים יותר מטקסט חופשי.

### בקשו פורמטים ספציפיים

```
החזר את הניתוח שלך כ:

סיכום: [משפט אחד]

ממצאים מרכזיים:
• [ממצא 1]
• [ממצא 2]
• [ממצא 3]

המלצה: [1-2 משפטים]

ביטחון: [נמוך/בינוני/גבוה] כי [סיבה]
```

### השתמשו במפרידים

הפרידו בבירור בין חלקי הפרומפט שלכם:

```
### הקשר ###
[ההקשר שלכם כאן]

### משימה ###
[המשימה שלכם כאן]

### פורמט ###
[הפורמט הרצוי כאן]
```

### בקשו פלט קריא למכונה

לשימוש תכנותי:

```
החזר רק JSON תקין, ללא הסבר:
{
  "decision": "approve" | "reject" | "review",
  "confidence": 0.0-1.0,
  "reasons": ["מערך מחרוזות"]
}
```

## עיקרון 8: אמתו ותקפו

לעולם אל תסמכו באופן עיוור על פלטי המודל, במיוחד למשימות חשובות.

### בקשו נימוק

```
פתור את הבעיה הזו והראה את העבודה שלך צעד אחר צעד.
לאחר הפתרון, אמת את התשובה שלך על ידי [שיטת בדיקה].
```

### בקשו נקודות מבט מרובות

```
תן לי שלוש גישות שונות לפתרון הבעיה הזו.
לכל אחת, הסבר את הפשרות.
```

### שלבו בדיקה עצמית

```
לאחר יצירת הקוד, סקור אותו עבור:
- שגיאות תחביר
- מקרי קצה
- פגיעויות אבטחה
רשום כל בעיה שנמצאה.
```

## סיכום: העקרונות במבט אחד

<PrinciplesSummary />

<Quiz 
  question="איזה עיקרון מציע שעליכם לכלול את כל מידע הרקע הרלוונטי בפרומפט שלכם?"
  options={[
    "בהירות על פני חוכמה",
    "ספציפיות מניבה איכות",
    "ההקשר הוא המלך",
    "חזרו ושפרו"
  ]}
  correctIndex={2}
  explanation="ההקשר הוא המלך מדגיש שלמודלי AI אין זיכרון בין פגישות והם לא יכולים לקרוא את מחשבותיכם. הכללת רקע, אילוצים ומטרות רלוונטיים עוזרת למודל להבין את הצרכים שלכם."
/>

## תרגול: השלימו את החסר

בדקו את הבנתכם את עקרונות הליבה על ידי השלמת תבנית הפרומפט הזו:

<FillInTheBlank
  title="יישום העקרונות"
  description="השלימו את החסרים ליצירת פרומפט מובנה היטב — כתבו מה שתרצו!"
  useAI={true}
  openEnded={true}
  template={`אתה {{role}} עם מומחיות ב{{expertise}}.

הקשר: אני עובד על {{context}}.

משימה: {{task}}

אילוצים:
- שמור על התשובה שלך מתחת ל-{{length}} מילים
- התמקד רק ב{{focus}}

פורמט: החזר את התשובה שלך כ{{format}}.`}
  blanks={[
    { id: "role", correctAnswers: [], hint: "איזה תפקיד מקצועי ה-AI צריך לקחת?", context: "תואר תפקיד או תפקיד מקצועי" },
    { id: "expertise", correctAnswers: [], hint: "איזה ידע ספציפי בתחום נדרש?", context: "מיומנות או תחום שמתאים לתפקיד" },
    { id: "context", correctAnswers: [], hint: "מהו הפרויקט או המצב?", context: "פרויקט שמישהו עם המומחיות הזו היה עובד עליו" },
    { id: "task", correctAnswers: [], hint: "איזו פעולה ספציפית ה-AI צריך לבצע?", context: "פעולה מתאימה לתפקיד ולהקשר" },
    { id: "length", correctAnswers: [], hint: "כמה ארוכה צריכה להיות התשובה?", context: "מספר (ספירת מילים)" },
    { id: "focus", correctAnswers: [], hint: "על איזה היבט יש לתת עדיפות?", context: "איכות או היבט רלוונטי למשימה" },
    { id: "format", correctAnswers: [], hint: "כיצד צריך לבנות את הפלט?", context: "סוג פורמט פלט" }
  ]}
  explanation="פרומפט מובנה היטב כולל: תפקיד ברור (עיקרון 1), הקשר מספיק (עיקרון 3), משימה ספציפית (עיקרון 2), אילוצים (עיקרון 4), ופורמט פלט (עיקרון 5). ה-AI בודק אם הבחירות שלכם עקביות פנימית."
/>

<InteractiveChecklist
  title="רשימת בדיקת עקרונות"
  items={[
    { id: "clarity", label: "בהירות על פני חוכמה", description: "האם הפרומפט שלכם מפורש וחד-משמעי?" },
    { id: "specificity", label: "ספציפיות מניבה איכות", description: "האם כללתם קהל יעד, אורך, טון ופורמט?" },
    { id: "context", label: "ההקשר הוא המלך", description: "האם הפרומפט כולל את כל מידע הרקע הדרוש?" },
    { id: "examples", label: "דוגמאות עדיפות על הסברים", description: "האם הראיתם מה אתם רוצים, לא רק תיארתם?" },
    { id: "constraints", label: "אילוצים ממקדים פלט", description: "האם יש גבולות ברורים על היקף ופורמט?" },
    { id: "iteration", label: "חזרו ושפרו", description: "האם אתם מוכנים לשפר בהתבסס על התוצאות?" },
    { id: "persona", label: "פרסונה מעצבת פרספקטיבה", description: "האם ה-AI יודע איזה תפקיד לשחק?" },
    { id: "verify", label: "אמתו ותקפו", description: "האם שילבתם בדיקות לדיוק?" }
  ]}
/>

עקרונות אלה מהווים את הבסיס לכל מה שיבוא. בחלק II, ניישם אותם על טכניקות ספציפיות שמשפרות באופן דרמטי את יעילות הפרומפטים.
