תחשבו על עובד חדש שלא מסוגל להגיד ׳אני לא יודע׳. שואלים אותו מה המחיר של המתחרה, והוא עונה מספר. בביטחון. אין לו כוונה לרמות. ככה הוא בנוי: לענות. המספר הזה דורש בדיקה.
למה AI ממציא דברים: הזיות של מודלים בלי מיסטיקה, ואיך בודקים לפני שזה יוצא ללקוח
המודל לא יודע שהוא טועה. הוא כותב את ההמשך הסביר ביותר לטקסט שקיבל, ובאותו ביטחון בדיוק כותב עובדה נכונה ועובדה שהמציא. מי שמבין את זה יודע מה לבדוק לפני שתשובה יוצאת ללקוח.
המדריך הזה מבוסס על תיעוד ההנחיות של Anthropic להפחתת הזיות, על מרכזי התמיכה של Anthropic ו-OpenAI, ועל מה שראיתי קורה כשתוצר של AI יצא ללקוח בלי בדיקה. הוא מיועד למי שקיבל תשובה בטוחה ומשכנעת והתברר שהיא לא נכונה, למי שכבר משתמש כל יום ורוצה לדעת מתי לסמוך ומתי לא, ולמי שבונה מוצר על המודל וצריך להחליט מה עובר ישר ללקוח ומה עובר דרך בן אדם.
להתחיל לקרוא ↓מה קורה כשהמודל ׳ממציא׳
מודל שפה מייצר את ההמשך הסביר ביותר לטקסט שקיבל. אין בו שלב שבודק אם ההמשך הזה נכון. כשחסר לו מידע, הוא כותב משהו שנראה כמו התשובה. אותו טון בטוח משמש אותו לעובדה נכונה ולעובדה שהמציא, ולכן ביטחון בניסוח לא אומר כלום על אמת.
תיעוד התמיכה של Anthropic מנסח את זה בלי קישוטים: Claude יכול להציג ציטוטים שנראים סמכותיים ונשמעים משכנעים אבל לא מעוגנים בעובדות, ולכתוב דברים שנראים נכונים ושגויים מאוד. OpenAI כותבים במרכז התמיכה שלהם ש-ChatGPT ממציא לפעמים עובדות, וממליצים לבדוק אם התשובות מדויקות. שני היצרנים מתארים את זה כתוצאה של איך שהמודלים בנויים, ומבקשים מהמשתמשים לבדוק.
המילה ׳הזיה׳ מטעה, כי היא נשמעת כמו תקלה נדירה. המנגנון זהה בכל תשובה: ניבוי של המילה הבאה על סמך מה שבחלון ההקשר. כשהמידע הנכון שם, הניבוי יוצא נכון. כשהוא לא, הניבוי יוצא סביר. מבחוץ זה נראה אותו דבר.
תשובה שמכילה מספר, שם, תאריך, סעיף חוק או ציטוט, ואף אחד מהם לא הופיע במה שנתתם למודל, היא חשודה בברירת מחדל. זה הכלל היחיד שצריך לזכור.
המודל מייצר התפלגות על הטוקן הבא ודוגם ממנה. אין שלב אימות מול מאגר עובדות, אלא אם אתם מוסיפים אותו: אחזור, כלי חיפוש, או בדיקה מול מקור אחרי הייצור. ההסתברות שהמודל מקצה לטוקן היא לא הסתברות שהעובדה נכונה.
ארבעה מקומות שזה פוגע בעסק קטן
ציטוט ממקור שלא קיים, מחיר שנראה הגיוני ולא נכון, סעיף חוק שמנוסח יפה ולא אומר את זה, ופרמטר API שמעולם לא היה. ארבעה סוגי המצאות שראיתי יוצאים מהמודל, ולכולם דבר אחד משותף: הם נראים בדיוק כמו הדבר האמיתי.
שימו לב לתחום המשפטי והרגולטורי בפרט. התיעוד של OpenAI מונה שלושה מצבים שבהם חסר למודל הקשר: המידע לא היה באימון, הוא התיישן, או שהוא קנייני. חוק ישראלי, תקנות שמתעדכנות ופסיקה חדשה נופלים בקלות לשניים הראשונים. תשובה כזאת פותחת שיחה עם עורך דין. היא לא סוגרת אותה.
| מה ביקשתם | מה עלול לחזור | איפה זה מתפוצץ |
|---|---|---|
| מקורות למאמר או להצעה | ציטוט עם שם מחבר, שנה וכותרת, שאף אחד מהם לא קיים | לקוח או שותף מחפש את המקור ולא מוצא |
| מחירים או נתוני שוק | מספר עגול ומשכנע, בלי מקור | הצעת מחיר שבנויה על השוואה שלא קיימת |
| מה החוק אומר על מקרה מסוים | סעיף עם מספר, מנוסח כמו חוק, שלא אומר את זה או לא קיים | הבטחה ללקוח או ניסוח בחוזה שאי אפשר לעמוד מאחוריו |
| איך מחברים למערכת מסוימת | שם של פרמטר או endpoint שנשמע נכון ולא מופיע בתיעוד | אוטומציה שנופלת, ומי שבנה אותה מחפש שעות טעות שהיא לא שלו |
שלושה מצבים שבהם המודל משלים לבד
המודל ממציא בעיקר כשחסר לו הקשר. התיעוד של OpenAI מונה שלושה מצבים: המידע לא היה בנתוני האימון, הוא היה והתיישן, או שהוא מידע פנימי שלכם שהמודל לא ראה מעולם. יש גם מצב רביעי: נתתם לו יותר מדי, והמידע הנכון טבע בתוך הרעש.
קחו את המקרה השני, מידע שהתיישן. המודל אומן עד תאריך מסוים. מחירים, תקנות, גרסאות של תוכנה, כל אלה השתנו מאז, וכששואלים אותו על ההווה הוא עונה מהעבר בלשון הווה. תיעוד התמיכה של Anthropic נותן את הדוגמה הזאת בדיוק: בתחומים מסוימים המודל לא אומן על המידע העדכני ועלול להתבלבל כששואלים על אירועים נוכחיים.
המקרה הרביעי פחות מוכר. בתיעוד של OpenAI על דיוק הם כותבים שאספקת יותר מדי הקשר לא רלוונטי מטביעה את המידע האמיתי וגורמת להזיות. זה מתחבר למדריך על חלון ההקשר: לא כל מסמך שמדביקים עוזר. מסמך לא קשור מתחרה על תשומת הלב של המודל עם המסמך הנכון.
לפני שאתם שואלים משהו עובדתי, תשאלו את עצמכם: המידע הזה יכול היה להשתנות בשנה האחרונה? הוא פנימי לעסק שלי? אם התשובה לאחד מהם היא כן, המודל לבדו הוא לא מקור.
תבדילו בין שני סוגי בקשות. ניסוח, סיכום, שכתוב ותרגום של טקסט שנתתם: המודל עובד על מה שמול העיניים שלו, וההמצאות נדירות. שאלת ידע פתוחה בלי מקור בפרומפט: כאן ההמצאות מתחילות.
הזרמת הקשר מקטינה את הבעיה. היא לא סוגרת אותה, כי המודל עדיין יכול להוסיף פרטים שלא היו במקור. OpenAI מציעים לחשוב על זה כשני צירים: אופטימיזציית הקשר משפרת דיוק, אופטימיזציית המודל משפרת עקביות. הזיות הן בעיה של ציר ההקשר, ולכן פרומפט מנוסח יפה יותר לא פותר אותן.
ארבע הנחיות שמורידות המצאות
לתת למודל את הטקסט שממנו לענות. להרשות לו במפורש להגיד ׳אני לא יודע׳. לבקש ציטוטים מהטקסט לפני התשובה. ולהגביל אותו למקור שנתתם בלבד. ארבע ההנחיות האלה מופיעות בתיעוד של Anthropic, וכולן מנוסחות בפרומפט עצמו, בלי כלים מיוחדים.
הראשונה היא הכי חשובה, ואנשים מדלגים עליה. אם יש לכם את החוזה, המחירון או התיעוד, תדביקו אותם. השנייה, רשות להגיד ׳אני לא יודע׳, נראית טריוויאלית. בתיעוד של Anthropic כתוב שהיא יכולה להפחית מידע כוזב באופן דרסטי. בלי הרשות הזאת המודל מבין שמצפים ממנו לתשובה, ומספק אחת.
השלישית והרביעית עובדות ביחד: ציטוטים מילה במילה מהמסמך לפני התשובה, ותשובה רק על בסיסם, בלי הידע הכללי של המודל. ציטוט שהמודל לא מצא הוא אות אזהרה שרואים מיד.
<source_material> [השלם את המידע כאן: הדביקו את המסמך, המחירון, החוזה או התיעוד] </source_material> תענה על השאלה שלמטה על בסיס החומר שבתוך התגיות בלבד. אל תשתמש בידע כללי שלך ואל תשלים פרטים שלא כתובים שם. שלב 1: תצטט מילה במילה את הקטעים הרלוונטיים לשאלה, ממוספרים. אם אין קטע כזה, תכתוב ׳לא נמצא בחומר׳ ותעצור. שלב 2: תענה, ואחרי כל טענה תציין את מספר הציטוט שתומך בה. שלב 3: אם משהו בשאלה לא מכוסה בחומר, תגיד את זה במפורש. ׳אני לא יודע׳ היא תשובה לגיטימית. השאלה: [השלם את המידע כאן: השאלה שלכם]
חיפוש ברשת ואחזור ממסמכים: מה הם פותרים ומה לא
חיפוש ברשת ואחזור ממסמכים (RAG) עושים דבר אחד: מכניסים לחלון ההקשר טקסט עדכני או פנימי לפני שהמודל עונה. זה מטפל במידע שהתיישן ובמידע פנימי. זה לא הופך את התשובה לנכונה. המקור יכול להיות שגוי, והמודל עדיין יכול לסכם אותו לא נכון.
כשמפעילים חיפוש ברשת, המודל מקבל תוצאות ומצטט מהן. ב-API של Anthropic כל תשובה מחיפוש מגיעה עם כתובת המקור, הכותרת וקטע מהטקסט שצוטט. זה משנה את סוג הבדיקה: במקום לשאול אם העובדה נכונה, פותחים את המקור ובודקים שהוא אמין ושהסיכום נאמן לו. תיעוד התמיכה של Anthropic אומר את זה ישירות: האתר המקורי יכול להכיל הקשר שלא נכנס לסיכום.
RAG הוא אותו רעיון עם המסמכים שלכם: לפי המילון של Anthropic, שולפים מהמאגר את הקטעים שנראים רלוונטיים לשאלה ומעבירים אותם למודל יחד איתה. האיכות תלויה במה שנשלף. OpenAI מפרקים את זה לשני מקומות שבהם זה נשבר: האחזור הביא קטע לא נכון, או שהמודל ענה לא נכון על קטע נכון. בלי רישום של מה נשלף בכל תשובה, אי אפשר לדעת איזה מהשניים קרה.
מקור רשמי: Anthropic, Web search tool ↗מה בודקים לפני שזה יוצא ללקוח, לפי סוג התוצר
כל תוצר של AI שיוצא מהעסק עובר בדיקה שמתאימה לסוג שלו. ניסוח בודקים בקריאה. עובדה בודקים מול מקור. מספר בודקים מול המערכת שהוא הגיע ממנה. סעיף חוק בודקים אצל מי שמוסמך. הטבלה למטה היא רשימת הבדיקה שאני עובד לפיה.
בתיעוד של Anthropic להפחתת הזיות, אחרי כל הטכניקות, כתוב משפט שאני מצטט בכל סדנה: הטכניקות מפחיתות הזיות, הן לא מבטלות אותן, ותמיד צריך לאמת מידע קריטי. הטבלה למעלה הופכת את המשפט הזה לרשימה שעובד עובר עליה בשתי דקות.
| סוג התוצר | מה עלול להיות מומצא | איך מאמתים לפני שליחה |
|---|---|---|
| מייל או הודעה ללקוח | פרט מהשיחה שלא נאמר, הבטחה שלא ניתנה | קריאה אחת מול ההקשר האמיתי. כל תאריך, סכום ושם נבדקים ידנית |
| סיכום מסמך או פגישה | נקודה שנשמעת נכונה ולא הופיעה במקור | לבקש ציטוט לכל נקודה, ולדגום שתיים או שלוש מול המקור |
| מחיר, נתון או אחוז | מספר סביר בלי מקור | רק ממערכת שלכם או ממקור שפתחתם בעצמכם. מספר בלי מקור לא נכנס למסמך |
| ציטוט או מקור למאמר | מקור שלא קיים או ציטוט שלא נאמר | לפתוח את המקור ולמצוא את המשפט. אם לא נמצא, מוחקים |
| עניין משפטי, רגולטורי או מיסויי | סעיף שלא קיים, דין זר שהוצג כישראלי | טיוטה לשיחה עם עורך דין או רואה חשבון. לא יוצא ללקוח בלי אישור שלהם |
| קוד, פרמטר של API, הגדרת אינטגרציה | שם פונקציה או פרמטר שלא קיים | בדיקה מול התיעוד הרשמי של המערכת, והרצה בסביבת ניסוי לפני ייצור |
לתת למודל לבדוק את עצמו, ואז לבדוק אותו
אחרי שהתשובה מוכנה, מבקשים מהמודל לעבור טענה אחרי טענה ולמצוא לכל אחת ציטוט תומך מהמקור. טענה בלי ציטוט נמחקת. זה לא מחליף את הבדיקה שלכם. זה מצמצם אותה למה שנשאר.
התיעוד של Anthropic מציע את שתי הטכניקות האלה: אימות עם ציטוטים אחרי הייצור, שבו המודל חייב למחוק טענה שלא מצא לה תמיכה, והרצה חוזרת של אותו פרומפט, כי חוסר עקביות בין תוצאות מרמז על המצאה. באותו תיעוד גם מומלץ לבקש ציטוטים מהטקסט לפני המשימה, כדי שהמודל יתמקד במה שבאמת כתוב.
- תבקשו את התשובה כרגיל, עם המקור בחלון
- תשלחו את פרומפט הבדיקה שלמטה, ותקבלו רשימה: טענה, ציטוט תומך, או ׳אין ציטוט׳
- כל טענה בלי ציטוט: מוחקים או מסמנים לבדיקה ידנית
- אם התשובה חשובה, תריצו את אותה שאלה פעמיים בשיחות נפרדות. אם התשובות סותרות, לפחות אחת מהן מומצאת
- את מה שנשאר, מישהו עם הידע בודק לפי הטבלה מסעיף 06
למטה תשובה שכתבת קודם, ומתחתיה חומר המקור. תעבור על התשובה טענה אחרי טענה. לכל טענה עובדתית (מספר, שם, תאריך, סעיף, ציטוט, הבטחה) תחזיר שורה בטבלה עם שלוש עמודות: הטענה, ציטוט מילה במילה מחומר המקור שתומך בה, ומידת הביטחון: ׳נתמך׳, ׳נתמך חלקית׳ או ׳אין ציטוט׳. אם אין ציטוט, אל תנסה להצדיק את הטענה. תסמן ׳אין ציטוט׳. בסוף תחזיר גרסה מתוקנת של התשובה שמכילה רק טענות שסומנו ׳נתמך׳. התשובה לבדיקה: [השלם את המידע כאן: הדביקו את התשובה] חומר המקור: [השלם את המידע כאן: הדביקו את המקור]
מה עושים עם זה מחר בבוקר
תיקחו את התוצר האחרון שיצא מהמודל ללקוח. תריצו עליו את פרומפט הבדיקה מסעיף 07. אם הכל נתמך, יש לכם תהליך. אם משהו לא, גיליתם את זה לפני הלקוח, וזו כל המטרה.
- תדפיסו את טבלת האימות ותשימו אותה ליד מי שכותב עם AI ללקוחות
- תוסיפו להנחיות הקבועות שלכם משפט אחד: ׳אם אתה לא בטוח, תגיד שאתה לא בטוח׳
- תחליטו מראש אילו סוגי תוצרים לא יוצאים בלי בן אדם: משפטי, כספי ורפואי לפחות
השבוע, כל פעם שהמודל נותן מספר, שם או תאריך, תשאלו אותו ׳מאיפה זה?׳. אם התשובה היא לא מסמך שנתתם או מקור שאפשר לפתוח, המספר לא נכנס למייל.
תבנו שני פרומפטים קבועים: שאלה עם מקור מסעיף 04, ובדיקה עצמית מסעיף 07. תשמרו אותם בפרויקט או בפתק. מעכשיו כל תוצר עובדתי עובר דרך שניהם.
במוצר שאתם בונים, תסווגו תשובות לפי סיכון. תשובה עם סכום, תאריך או התחייבות עוברת אימות מול מקור לפני שהיא מגיעה למשתמש, או מסומנת כטעונה אישור. תשמרו את המקורות שנשלפו לצד כל תשובה, ותמדדו כמה טענות יצאו בלי תמיכה.
שאלות שאני שומע על זה
אפשר לבקש מהמודל להיות ׳מדויק יותר׳ ולפתור את זה?
לא. הנחיה כמו ׳תהיה מדויק׳ לא נותנת למודל מידע שאין לו. מה שכן עוזר: לתת לו את המקור, להרשות לו להגיד שהוא לא יודע, ולבקש ציטוטים. שלושתם מופיעים בתיעוד של Anthropic להפחתת הזיות.
מודל חדש יותר ממציא פחות?
שני היצרנים מתארים את ההמצאות כמגבלה של המודלים הנוכחיים, ומבקשים מהמשתמשים לבדוק. גם אם המצב משתפר בין דורות, תהליך האימות נשאר. הוא זול, והחלופה היא לגלות את הטעות אצל הלקוח.
אם הפעלתי חיפוש ברשת, אני עדיין צריך לבדוק?
כן, אבל אחרת. במקום לבדוק אם העובדה נכונה, פותחים את המקור שצוטט ובודקים שהוא אמין ושהסיכום נאמן לו. Anthropic מציינים שהאתר המקורי עשוי להכיל הקשר שלא נכנס לסיכום.
