בואו נדבר
← לכל המדריכיםHALLUCINATIONS

למה AI ממציא דברים: הזיות של מודלים בלי מיסטיקה, ואיך בודקים לפני שזה יוצא ללקוח

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

המדריך הזה מבוסס על תיעוד ההנחיות של Anthropic להפחתת הזיות, על מרכזי התמיכה של Anthropic ו-OpenAI, ועל מה שראיתי קורה כשתוצר של AI יצא ללקוח בלי בדיקה. הוא מיועד למי שקיבל תשובה בטוחה ומשכנעת והתברר שהיא לא נכונה, למי שכבר משתמש כל יום ורוצה לדעת מתי לסמוך ומתי לא, ולמי שבונה מוצר על המודל וצריך להחליט מה עובר ישר ללקוח ומה עובר דרך בן אדם.

להתחיל לקרוא ↓
01 · הבעיה

מה קורה כשהמודל ׳ממציא׳

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

תיעוד התמיכה של Anthropic מנסח את זה בלי קישוטים: Claude יכול להציג ציטוטים שנראים סמכותיים ונשמעים משכנעים אבל לא מעוגנים בעובדות, ולכתוב דברים שנראים נכונים ושגויים מאוד. OpenAI כותבים במרכז התמיכה שלהם ש-ChatGPT ממציא לפעמים עובדות, וממליצים לבדוק אם התשובות מדויקות. שני היצרנים מתארים את זה כתוצאה של איך שהמודלים בנויים, ומבקשים מהמשתמשים לבדוק.

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

למי שרק מתחיל

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

למי שכבר משתמש

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

לטכניים

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

מקור רשמי: Anthropic Help, Claude is providing incorrect or misleading responses ↗
02 · איפה זה כואב

ארבעה מקומות שזה פוגע בעסק קטן

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

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

מה ביקשתםמה עלול לחזוראיפה זה מתפוצץ
מקורות למאמר או להצעהציטוט עם שם מחבר, שנה וכותרת, שאף אחד מהם לא קייםלקוח או שותף מחפש את המקור ולא מוצא
מחירים או נתוני שוקמספר עגול ומשכנע, בלי מקורהצעת מחיר שבנויה על השוואה שלא קיימת
מה החוק אומר על מקרה מסויםסעיף עם מספר, מנוסח כמו חוק, שלא אומר את זה או לא קייםהבטחה ללקוח או ניסוח בחוזה שאי אפשר לעמוד מאחוריו
איך מחברים למערכת מסוימתשם של פרמטר או endpoint שנשמע נכון ולא מופיע בתיעודאוטומציה שנופלת, ומי שבנה אותה מחפש שעות טעות שהיא לא שלו
מקור רשמי: OpenAI Help, What is ChatGPT? ↗
03 · למה זה קורה

שלושה מצבים שבהם המודל משלים לבד

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

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

קחו את המקרה השני, מידע שהתיישן. המודל אומן עד תאריך מסוים. מחירים, תקנות, גרסאות של תוכנה, כל אלה השתנו מאז, וכששואלים אותו על ההווה הוא עונה מהעבר בלשון הווה. תיעוד התמיכה של Anthropic נותן את הדוגמה הזאת בדיוק: בתחומים מסוימים המודל לא אומן על המידע העדכני ועלול להתבלבל כששואלים על אירועים נוכחיים.

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

למי שרק מתחיל

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

למי שכבר משתמש

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

לטכניים

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

מקור רשמי: OpenAI, Optimizing LLM accuracy ↗
04 · מה מקטין

ארבע הנחיות שמורידות המצאות

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

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

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

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

<source_material> [השלם את המידע כאן: הדביקו את המסמך, המחירון, החוזה או התיעוד] </source_material> תענה על השאלה שלמטה על בסיס החומר שבתוך התגיות בלבד. אל תשתמש בידע כללי שלך ואל תשלים פרטים שלא כתובים שם. שלב 1: תצטט מילה במילה את הקטעים הרלוונטיים לשאלה, ממוספרים. אם אין קטע כזה, תכתוב ׳לא נמצא בחומר׳ ותעצור. שלב 2: תענה, ואחרי כל טענה תציין את מספר הציטוט שתומך בה. שלב 3: אם משהו בשאלה לא מכוסה בחומר, תגיד את זה במפורש. ׳אני לא יודע׳ היא תשובה לגיטימית. השאלה: [השלם את המידע כאן: השאלה שלכם]

מקור רשמי: Anthropic, Reduce hallucinations ↗
05 · חיפוש ואחזור

חיפוש ברשת ואחזור ממסמכים: מה הם פותרים ומה לא

חיפוש ברשת ואחזור ממסמכים (RAG) עושים דבר אחד: מכניסים לחלון ההקשר טקסט עדכני או פנימי לפני שהמודל עונה. זה מטפל במידע שהתיישן ובמידע פנימי. זה לא הופך את התשובה לנכונה. המקור יכול להיות שגוי, והמודל עדיין יכול לסכם אותו לא נכון.

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

RAG הוא אותו רעיון עם המסמכים שלכם: לפי המילון של Anthropic, שולפים מהמאגר את הקטעים שנראים רלוונטיים לשאלה ומעבירים אותם למודל יחד איתה. האיכות תלויה במה שנשלף. OpenAI מפרקים את זה לשני מקומות שבהם זה נשבר: האחזור הביא קטע לא נכון, או שהמודל ענה לא נכון על קטע נכון. בלי רישום של מה נשלף בכל תשובה, אי אפשר לדעת איזה מהשניים קרה.

מקור רשמי: Anthropic, Web search tool ↗
06 · אימות

מה בודקים לפני שזה יוצא ללקוח, לפי סוג התוצר

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

בתיעוד של Anthropic להפחתת הזיות, אחרי כל הטכניקות, כתוב משפט שאני מצטט בכל סדנה: הטכניקות מפחיתות הזיות, הן לא מבטלות אותן, ותמיד צריך לאמת מידע קריטי. הטבלה למעלה הופכת את המשפט הזה לרשימה שעובד עובר עליה בשתי דקות.

סוג התוצרמה עלול להיות מומצאאיך מאמתים לפני שליחה
מייל או הודעה ללקוחפרט מהשיחה שלא נאמר, הבטחה שלא ניתנהקריאה אחת מול ההקשר האמיתי. כל תאריך, סכום ושם נבדקים ידנית
סיכום מסמך או פגישהנקודה שנשמעת נכונה ולא הופיעה במקורלבקש ציטוט לכל נקודה, ולדגום שתיים או שלוש מול המקור
מחיר, נתון או אחוזמספר סביר בלי מקוררק ממערכת שלכם או ממקור שפתחתם בעצמכם. מספר בלי מקור לא נכנס למסמך
ציטוט או מקור למאמרמקור שלא קיים או ציטוט שלא נאמרלפתוח את המקור ולמצוא את המשפט. אם לא נמצא, מוחקים
עניין משפטי, רגולטורי או מיסוייסעיף שלא קיים, דין זר שהוצג כישראליטיוטה לשיחה עם עורך דין או רואה חשבון. לא יוצא ללקוח בלי אישור שלהם
קוד, פרמטר של API, הגדרת אינטגרציהשם פונקציה או פרמטר שלא קייםבדיקה מול התיעוד הרשמי של המערכת, והרצה בסביבת ניסוי לפני ייצור
מקור רשמי: Anthropic, Reduce hallucinations: Advanced techniques ↗
07 · בקרה עצמית

לתת למודל לבדוק את עצמו, ואז לבדוק אותו

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

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

  1. תבקשו את התשובה כרגיל, עם המקור בחלון
  2. תשלחו את פרומפט הבדיקה שלמטה, ותקבלו רשימה: טענה, ציטוט תומך, או ׳אין ציטוט׳
  3. כל טענה בלי ציטוט: מוחקים או מסמנים לבדיקה ידנית
  4. אם התשובה חשובה, תריצו את אותה שאלה פעמיים בשיחות נפרדות. אם התשובות סותרות, לפחות אחת מהן מומצאת
  5. את מה שנשאר, מישהו עם הידע בודק לפי הטבלה מסעיף 06
פרומפט לבדיקה עצמית של תשובה

למטה תשובה שכתבת קודם, ומתחתיה חומר המקור. תעבור על התשובה טענה אחרי טענה. לכל טענה עובדתית (מספר, שם, תאריך, סעיף, ציטוט, הבטחה) תחזיר שורה בטבלה עם שלוש עמודות: הטענה, ציטוט מילה במילה מחומר המקור שתומך בה, ומידת הביטחון: ׳נתמך׳, ׳נתמך חלקית׳ או ׳אין ציטוט׳. אם אין ציטוט, אל תנסה להצדיק את הטענה. תסמן ׳אין ציטוט׳. בסוף תחזיר גרסה מתוקנת של התשובה שמכילה רק טענות שסומנו ׳נתמך׳. התשובה לבדיקה: [השלם את המידע כאן: הדביקו את התשובה] חומר המקור: [השלם את המידע כאן: הדביקו את המקור]

מקור רשמי: Anthropic, Prompting best practices: Ground responses in quotes ↗
08 · מחר בבוקר

מה עושים עם זה מחר בבוקר

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

  • תדפיסו את טבלת האימות ותשימו אותה ליד מי שכותב עם AI ללקוחות
  • תוסיפו להנחיות הקבועות שלכם משפט אחד: ׳אם אתה לא בטוח, תגיד שאתה לא בטוח׳
  • תחליטו מראש אילו סוגי תוצרים לא יוצאים בלי בן אדם: משפטי, כספי ורפואי לפחות
למי שרק מתחיל

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

למי שכבר משתמש

תבנו שני פרומפטים קבועים: שאלה עם מקור מסעיף 04, ובדיקה עצמית מסעיף 07. תשמרו אותם בפרויקט או בפתק. מעכשיו כל תוצר עובדתי עובר דרך שניהם.

לטכניים

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

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

שאלות שאני שומע על זה

אפשר לבקש מהמודל להיות ׳מדויק יותר׳ ולפתור את זה?

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

מודל חדש יותר ממציא פחות?

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

אם הפעלתי חיפוש ברשת, אני עדיין צריך לבדוק?

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

בהמשך לזה
NEXT STEP

רוצים לקחת את זה מהמדריך לתהליך אצלכם?

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

בואו נדבר