יכולות

המודול של ה-AI, שדה אחר שדה — למתחילים לגמרי

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

מאת צוות קו פורסם 6 דק׳ קריאה

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

מה זה בעצם "המודול של ה-AI"?

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

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

use_when — לומר ל-AI מתי זה הכלי הנכון

זהו טקסט קצר, כתוב כאילו אתם פונים ישירות לעוזר ("להשתמש בזה כאשר…"), שמתאר את המצבים שבהם הכלי הזה הוא הבחירה הנכונה.

עבור יכולת בירור הארנונה, דוגמאות טובות נראות כך:

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

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

do_not_use_when — לומר ל-AI מתי להישאר מחוץ לתמונה

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

עבור אותה יכולת בירור ארנונה:

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

כתבו גם את use_when וגם את do_not_use_when כאילו אתם פונים ישירות לעוזר, בגוף שני ("להשתמש בזה כאשר…", "לא להשתמש בזה עבור…") — זה הקול שבו השדות האלה אמורים להיכתב, ולא תיאור בגוף שלישי כמו "היכולת הזו משמשת עבור…".

summary — המשפט הראשון שהמודל קורא על הכלי הזה

משפט אחד. זו השורה הראשונה ממש שהעוזר רואה כשהוא בודק אילו כלים בכלל קיימים — עוד לפני שהוא מגיע ל-use_when. עבור הדוגמה שלנו: "מברר את יתרת הארנונה הנוכחית של תושב."

disambiguation — מה לעשות כשבאמת לא ברור

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

grounding — כמה בטוח מותר לעוזר להישמע

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

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

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

מילים נרדפות — השדה עם המלכודת האמיתית

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

he=ארנונה
he=מס רכוש
en=property tax

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

החוזה: מה התושב נותן, ומה אתם מבטיחים בחזרה

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

לכל שורה בטבלה יש:

  • שם השדה — שם פנימי קצר לפרט מידע הזה, כמו propertyId.
  • סוג — איזה סוג ערך זה. יש בדיוק שישה סוגים: טקסט, מספר, מספר שלם, כן/לא, תאריך, או רשימת טקסטים.
  • חובה (בצד הנכנס) או תמיד מוחזר (בצד היוצא) — תיבת סימון. בטבלת הקלט, סימון אומר שהתושב חייב לספק את זה לפני שהיכולת יכולה לרוץ. בטבלת הפלט, סימון אומר שהשדה הזה יופיע בכל תשובה, לא רק לפעמים.
  • תיאור — משפט פשוט שמתאר את השדה. העמודה הזו היא לא רק הערה לבני אדם אחרים שיקראו את הטופס אחר כך — המודל של ה-AI עצמו קורא אותה, בדיוק כמו שהוא קורא את הטקסט של use_when. תיאור מעורפל כאן יכול לגרום למודל להשתמש בשדה בצורה שגויה, בדיוק כמו ש-use_when מעורפל יכול לגרום לו לבחור בכלי הלא נכון.

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

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

פתח המילוט המתקדם שכנראה לעולם לא תצטרכו

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