איך גרמתי ל-AI להפסיק להזות על בסיס הקוד הפינטק בן ה-3 שנים שלנו
כלי קוד מבוססי AI נכשלים בפרויקטים אמיתיים בסביבת פרודקשן. הם עובדים על קוד חדש, אך מתפרקים מול בסיסי קוד ישנים עם היסטוריה.
למדתי את זה בדרך הקשה בפרויקט הפינטק שלנו. יש לנו שני frontends ב-React, פאנל ניהול (admin panel), ו-backend ב-FastAPI. מסד הנתונים שלנו מורכב. הוא מכיל נתונים פיננסיים ונתוני משתמשים רגישים.
ניסינו להשתמש ב-AI כדי להתקדם מהר יותר. זה נכשל מיד.
ביקשתי מה-AI ליצור טבלת אנשי קשר (contacts table). הוא יצר עמודות חדשות לשמות ואימיילים. העמודות האלו כבר היו קיימות בטבלת המשתמשים (users table) שלנו. ה-AI הכפיל נתונים במקום להשתמש במפתח זר (foreign key). לא היה לו מושג שטבלת המשתמשים שלנו קיימת.
הפסקתי לשאול איך לגרום ל-AI לכתוב קוד טוב יותר. התחלתי לשאול מה ה-AI צריך לדעת כדי לקבל החלטות טובות.
ה-AI טוב רק ככל שהקונטקסט (context) שאתם נותנים לו טוב. הפכנו את הקונטקסט שלנו למפורש וסמכותי. הנה המערכת שבנינו:
• קבצי ADR: יצרנו תיקיית docs/adrs/. הקבצים האלו מתעדים מדוע קיבלנו החלטות ארכיטקטוניות מסוימות. קובץ אחד (ADR-001) אומר ל-AI: "בדוק קודם כל טבלאות קיימות. השתמש במפתחות זרים. לעולם אל תכפיל נתוני משתמשים."
• context.md: הקובץ הזה מסביר את המונחים הספציפיים שלנו. הוא אומר ל-AI איך מושגים שונים קשורים זה לזה במערכת שלנו.
• plot.md: זהו מפה ברמה גבוהה (high-level map). היא מראה איך החלקים השונים של הפרויקט שלנו מתחברים.
• חוקים נוקשים: אמרנו ל-AI שתיקיית ה-docs היא הסמכות העליונה. עליו לפעול לפי החוקים האלו לפי הסדר.
• בדיקות חובה: לכל נתיב API חדש חייבות להיות מקרי בדיקה (test cases).
המערכת הזו הופכת את ה-AI לצפוי.
פעם אחת, ה-AI שינה פונקציה משותפת ששיבשה שמונה חלקים אחרים באפליקציה. בגלל שהיו לנו בדיקות, ה-AI זיהה את הכשלים. הוא תיקן את הטעות שלו על ידי יצירת גרסה חדשה של הפונקציה שטיפלה גם בדרישות הישנות וגם בחדשות. ללא בדיקות, הבאג הזה היה מגיע לפרודקשן.
תפסיקו להאשים את ה-AI על כך שהוא לא מכיר את בסיס הקוד שלכם. התייחסו אליו כאל עובד חדש. אתם לא מאשימים עובד חדש על כך שהוא לא מכיר את החוקים שלכם. אתם נותנים לו תיעוד ותהליך קליטה (onboarding).
המבנה שלנו נראה כך:
docs/
- context.md (מונחים וקשרים)
- plot.md (מפה ברמה גבוהה)
- adr/ (חוקים ספציפיים כמו יצירת טבלאות או מבנה API)
שלוש טיפים לזרימת העבודה (workflow) שלכם:
- היו ספציפיים ב-ADRs שלכם. השתמשו בהוראות ברורות במקום בעצות מעורפלות.
- הפכו את התיעוד (docs) לסמכותי. אמרו ל-AI שהחוקים האלו קודמים לכל.
- הפכו טעויות לחוקים. בכל פעם שה-AI נכשל, צרו ADR חדש כדי למנוע זאת.
זה לא הופך את ה-AI למושלם. זה הופך אותו לעקבי.
Optional learning community: https://t.me/GyaanSetuAi
