אנטי תבניות ו AI

09/06/2025

אנטי-תבניות ו AI זה לא שילוב טוב.

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

p = Person.find(7)

# new DB query
p.addresses.first

# new DB query
p.addresses.second

# new DB query
p.addresses.third

כל פניה דרך ה Relation לטבלת ההמשך מייצרת שאילתה חדשה בבסיס הנתונים.

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

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

Code review my last commit:
{commit_text}

Refer to the following aspects:
    1. Security - it's a public facing system
    2. Performance - both load times and interaction time
    3. Architecture - code is core part of a big system and will be used by many developers
    4. Newer or better technology alternatives that weren't used
    5. Anti patterns in the code (for example N+1 queries)

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

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