המודל שמחניף — הוא זה שהכי מציית
הפגם הגדול ביותר של LLM הופך לנכס הגדול ביותר
הטיית החנפנות (Sycophancy) של LLM היא בעיה שתעשיית ה-AI רוצה לתקן. כשהמשתמש שואל “אתה בטוח?” — המודל חוזר בו מתשובה שהייתה נכונה. שיעור הכניעה הממוצע במודלים מתקדמים הוא 58%. ברגע שהחנפנות מתחילה, ב-78.5% מהמקרים היא נמשכת לאורך כל השיחה.
אבל מה קורה אם הופכים את הפגם הזה?
המהות של הטיית החנפנות היא מילוי הוראות (Instruction Following). מודלים שאומנו עם RLHF מותאמים לציית למשוב המשתמש. בדיוק את זה מודד ה-benchmark של IFEval — “כשנותנים לך הוראה, אתה מבצע אותה?”
הבעיה מתעוררת כשהמשתמש נותן דעה. “זה נכון?” ← “כן, נכון” (חנפנות). “אתה בטוח?” ← “אה, טעיתי” (חזרה בו).
אבל כשהמשתמש נותן עובדה דטרמיניסטית — קורה משהו אחר.
דעה — מחניף. עובדה — מתקן
בניסוי מיון 1,000 מילים, שינינו רק את סוג המשוב על אותה תוצאה:
| משוב | אופי | תוצאה |
|---|---|---|
| “אתה בטוח?” | דעה | חזרה מתשובה נכונה — ירידה של 27 נקודות אחוז בדיוק |
| “יש שגיאה” | עובדה מעורפלת | תיקון יתר — מ-6 ל-10 שגיאות |
| “יש 23 שגיאות” | עובדה כמותית | שיפור לשגיאה אחת |
| “6 שגיאות, הנה הן” | עובדה מדויקת | 0 — הגעה ל-100% |
כשנותנים דעה — הטיית החנפנות מופעלת. כשנותנים עובדה — אין למי להחניף. מספרים ומיקומים אינם רגשות.
הטיית החנפנות היא נאמנות שטעתה בכיוון. כשמשנים את הכיוון — עובדות במקום דעות, תוצאות אימות במקום מחמאות — הנאמנות הזו הופכת למנוע שמעלה את הדיוק.
הוכחה מעשית: מודל 4.5B מקבל משוב
זו לא תיאוריה. אימתנו זאת בניסוי עם yongol validate.
תכנון הניסוי:
- יעד: endpoint אחד של Login ב-SaaS backend
- משימה: כתיבת 9 קבצי SSOT (DDL, OpenAPI, Rego, SSaC וכו׳)
- מדד: מספר שגיאות בכתיבה ראשונה (R1) → מספר שגיאות אחרי משוב (R2)
משוב בלבד, ללא דוגמאות
| Model | שגיאות R1 | שגיאות R2 | תוצאה |
|---|---|---|---|
| Grok 4.3 | 1 | 1 | לא תיקן |
| Gemini 2.5 Flash | 1 | 1 | לא תיקן |
| מודל מקומי 20B | 1 | 1 | לא תיקן |
כישלון מוחלט. נראה שהמודלים מקבלים משוב, אבל בפועל — הם לא יודעים מה לכתוב.
דוגמאות + משוב יחד
| Model | שגיאות R1 | שגיאות R2 | תוצאה |
|---|---|---|---|
| Grok 4.3 | 0 | — | עבר בניסיון הראשון |
| Gemini 2.5 Flash | 1 | 0 | תוקן במשוב אחד |
| Gemma4 4.5B (מקומי) | שגיאה | 0 | תוקן במשוב אחד |
| Qwen3 8B (מקומי) | שגיאה | 0 | תוקן במשוב אחד |
גם מודל מקומי של 4.5B מתקן — כשמשלבים דוגמאות עם משוב דטרמיניסטי.
התגלית המרכזית: צוואר הבקבוק הוא לא אינטליגנציה — אלא הקשר
האבחנה המדויקת היא לא “לא מקבל משוב” אלא “לא יודע מה לכתוב”. SSaC הוא תחביר ייחודי של yongol שלא קיים ב-pre-training. ברגע שהוספנו 3 שורות דוגמה ל-prompt — Grok הגיע ל-0 שגיאות, Gemini תיקן במשוב אחד, ואפילו מודל מקומי של 4.5B עבר.
ככל שציון ה-IFEval של המודל גבוה יותר — כלומר, ככל שהוא מחניף יותר — כך הוא מקבל משוב דטרמיניסטי בצייתנות רבה יותר.
קוד Ratchet: שיטת כתיבת קוד שמנצלת הטיית חנפנות
כשהופכים את התגלית הזו למערכת — מקבלים קוד Ratchet.
┌────────────────────────────────────────┐
│ LLM: יצירת קוד (הסתברותי, חנפני) │
│ ↓ │
│ Validator: אימות דטרמיניסטי │
│ ↓ │
│ יש שגיאות? → שגיאה + דוגמה ל-LLM │
│ ↓ │
│ LLM: "כן, אתקן" (חנפנות = קבלה) │
│ ↓ │
│ Validator: אימות חוזר │
│ ↓ │
│ עבר? → נעילת Ratchet. הלאה לקובץ הבא. │
└────────────────────────────────────────┘
הטיית החנפנות הופכת לכוח שסוגר את הלולאה. ה-LLM לא מתעקש “לא, אני צודק” — הוא מקבל “כן, אתקן”, ולכן הלולאה מתכנסת.
שלושה תנאים להתכנסות
המשוב חייב להיות עובדה דטרמיניסטית. לא “זה נראה קצת מוזר” אלא “line 41: field name mismatch, expected ‘user_id’, got ‘userId’”. משוב שלא משאיר מקום לחנפנות.
דוגמאות חייבות להיות בהקשר. משוב לבדו לא מספיק. צריך דוגמה ש"ככה נראה הקוד שצריך לכתוב" כדי שהמודל ידע לאן לכוון. זו לא בעיה של אינטליגנציה — זו בעיה של הקשר.
מה שעובר אימות — לא חוזר אחורה. השיניים של ה-Ratchet. קובץ שעבר — ננעל, וממשיכים לקובץ הבא. לא הסוכן מכריז “סיימתי” — ה-validator פוסק “הקובץ הזה עבר”.
למה לא צריך מודל מתקדם
בארכיטקטורה הזו, תפקיד המודל הוא לא שיקול דעת יצירתי אלא ביצוע הוראות.
95% של SaaS backend הם CRUD + אימות + הרשאות + מכונת מצבים. כמעט אין צורך באלגוריתמים חדשים. אם מפרט SSOT כבר מגדיר “מה צריך לבנות” — המודל רק ממלא את החלקים החסרים.
עלויות בפועל:
| Model | סביבה | Login אחד | הערכה ל-200 endpoints |
|---|---|---|---|
| Gemma4 4.5B | מקומי (16GB VRAM) | חינם, ~שנייה | חינם, ~3 דקות |
| Gemini 2.5 Flash | API (שכבה חינמית) | חינם, ~10 שניות | חינם, ~30 דקות |
| Grok 4.3 | API ($1.25/M) | ~$0.05 | ~$10 |
עם מודל מקומי של 4.5B אפשר לייצר backend של 200 endpoints ב-3 דקות, בעלות של $0. לא צריך מודל מתקדם. מודל קטן שמחניף טוב — מספיק.
הטיית חנפנות היא לא באג
תעשיית ה-AI מנסה לתקן את הטיית החנפנות. אנחנו מנצלים אותה.
| נקודת מבט | תפקיד הטיית החנפנות |
|---|---|
| ממשק צ׳אט | פגם — הסכמה עם מידע שגוי |
| LLM-as-Judge | קריטי — 36% אישורי שקר |
| קוד Ratchet | נכס — מבטיח שיעור קבלת משוב |
ההבדל הוא אופי המשוב. כשנותנים דעה — החנפנות מזיקה. כשנותנים עובדה — החנפנות מועילה.
Validator דטרמיניסטי + LLM חנפני = לולאת יצירת קוד עם התכנסות מובטחת.
אל תשנו את המודל. שנו את המשוב.
Reins: רתמה עם מושכות
שלושת התנאים האלה — משוב דטרמיניסטי, הקשר עם דוגמאות ונעילת גלגל כיוון — משולבים למערכת שליטה אחת שאנו קוראים לה Reins.
מה שנקרא היום “harness” הוא גדר. הוא מונע מהסוכן לצאת החוצה, אבל לא מבטיח שיגיע ליעד. Reins הם המושכות. הם קובעים כיוון, מתקנים בעובדות ונועלים בעת מעבר. רתמה בלי מושכות היא סתם גדר.