Connect with us

ืขืชื™ื“ ื‘ื ื™ื™ืช ืืคืœื™ืงืฆื™ื•ืช AI ืชืœื•ื™ ื‘ื‘ื˜ื™ื—ื•ืช ื˜ื™ืคื•ืก

ืžื ื”ื™ื’ื™ ื“ืขื”

ืขืชื™ื“ ื‘ื ื™ื™ืช ืืคืœื™ืงืฆื™ื•ืช AI ืชืœื•ื™ ื‘ื‘ื˜ื™ื—ื•ืช ื˜ื™ืคื•ืก

mm

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

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

בעיית התמריץ

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

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

שני סוגי שגיאות

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

1. שגיאות זמן-איסוף

  • מה קורה: המהדר תופס אי-התאמה בין הטיפוס המוכרז למה שהועבר.
  • כיצד בן אדם מתקן את זה: להחליט האם הקורא אשם (להמיר 42 ל-string) או שחתימת הפונקציה אשם (לשנות אותה לקבל number טיפוס).
  • כיצד ה-AI “מתקן” את זה: לשנות את טיפוס הארגומנט ל-any. בעיה “נפתרת”, אך אתה רק הסיר את המעקה שהיה צודק כדי לתפוס שגיאות עתידיות.

2. שגיאות זמן-ריצה

  • מה קורה: המהדר חושב שהכל בסדר (לעיתים קרובות מפני שטיפוסים הוקלו), אך הערך האמיתי בזמן ריצה אינו תואם את ההנחה.
  • כיצד בן אדם מתקן את זה: לעקוב אחר המשתנה למקור (כמו API או שאילתה לבסיס נתונים) ולתקן את הטיפוס בגבול כך שהנתונים מגיעים כ-string תקין.
  • כיצד ה-AI “מתקן” את זה: ללא הקשר, הוא מנחש. אולי הוא עוטף הכל ב-String(…), או פשוט מרחיב את הטיפוס שוב. ההתרסקות נעלמת בנקודה זו, אך עכשיו הלוגיקה שבורה. Number שנועדו לחישובים הפכו ל-strings.

מחזור זה של שגיאות זמן-ריצה → “תיקון” AI → טיפוס רופף מתרחב במהירות. התוצאה היא בסיס קוד שמאוסף וזורק פחות שגיאות זמן-ריצה, אך אי אפשר לבטוח בו. תדמיין מערכת לתזמון רופאים שבה משמרות הרופאים מנוהלות על ידי האפליקציה. אי-התאמה של טיפוס חודר: int לשעות מטופל כ-string. ה-AI ‘מתקן’ את זה על ידי הקלת הטיפוס ל-any. הקוד מאוסף והשגיאה נעלמת, אך חישובי המשמרות שבורים בשתיקה, מכפילים את הרופאים ומותירים כנף שלמה של בית החולים ללא כיסוי.

כפל הבסיס נתונים

רגע שאתה מחבר לבסיס נתונים, שגיאות מתרבות וגורמיהן הופכים קשים יותר לאיתור. SQL מטיפוס והוא מסיבה. כל סכמה (INT, TEXT, UUID, BOOLEAN) מקודדת הנחות על הנתונים.

כאשר AI מישט את הכל ל-string | any, אתה מאבד את ההבטחות האלה:

  • כתיבה גרועה: הכנס “true” לשדה בוליאני מאוסף, אך מוכפיל את ה-DB.
  • קריאה גרועה: השאילתה מחזירה NULL, אך ה-AI הניח ש-string, מה שגורם להתרסקות זמן-ריצה.
  • יחסים שבורים: אם מפתח יחס מצופה כ-UUID אך ה-AI מתייחס אליו כ-string ושולח בטעות ערכים מזבל, ה-join לא יתרסק, אך לא יחזיר נתונים. זה מסתיר שגיאות עד שהן מופיעות מאוחר יותר כתוצאות חסרות או לא עקביות..

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

למה צוותים בוגרים מאכפים טיפוס קפדני

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

טיפוסים:

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

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

איך לאלץ את ה-AI לטיפוס בטוח

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

ספק את ההקשר הנכון

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

תן הוראות קפדניות

בצורה ברורה מאוד, תן ל-AI לדעת שלא להשתמש ב-any, לעולם לא לאפשר unknown, ולכל מתודה, אובייקט ומשתנה להיות מטופס. צפה שה-AI יהיה קשה לע

ื‘ืจืื“ ืืงืจื˜ ื”ื•ื ื™ื–ื ืœื›ืœ ื”ื—ื™ื™ื ื•ืžื ื”ื™ื’ ื”ื ื“ืกื™ ืขื ื™ื•ืชืจ ืžืขืฉื•ืจ ืฉืœ ื ื™ืกื™ื•ืŸ ื‘ื”ื•ื‘ืœืช ืžื•ืฆืจื™ื ืžืฉืœื‘ ื”ืจืขื™ื•ืŸ ื“ืจืš ืžืกื™ืจื” ืœืœืงื•ื—ื•ืช ื•ืžืขื‘ืจ ืœื›ืš. ื‘ื•ื’ืจ MIT, ื”ื•ื ื›ืขืช ื”ืžื™ื™ืกื“-ืฉื•ืชืฃ ื•ื”ืžื ื”ืœ ื”ื˜ื›ื ื™ ืฉืœ Woz, ืคืœื˜ืคื•ืจืžืช AI ืฉืžืื•ื‘ื˜ื—ืช ืขืœ ื™ื“ื™ Y Combinator, ื”ืžืืคืฉืจืช ืœื›ืœ ืื—ื“ ืœื‘ื ื•ืช ื•ืœื”ืจื—ื™ื‘ ืขืกืงื™ ืชื•ื›ื ื”, ืœืœื ืฆื•ืจืš ื‘ืงื™ื“ื•ื“.