פורסם ב כלים לחיים קלים, לא רק למתכנתות

מאיה כותבת (עם) אלגוריתמים – חלק ב׳

Photo by National Cancer Institute on Unsplash

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

ההבטחה של כלים לכתיבת אפליקציות ללא קידוד כמו base44, lovable ו-Bolt היא מאוד פשוטה. אתן תתנו להן תיאור, והן ייצרו לכן אפליקציה יפה ועובדת בתוך דקות.

״the AI-powered platform that lets users build fully functioning apps in minutes״

base44

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

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

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

ציור של אפליקציית מחזור

זה היה הלקח הראשון שלי – האייג׳נט לא יעשה שום דבר שאני לא אגיד לו במפורש לעשות.


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

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

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

אייג׳נט עובד קשה מדי על דברים שלא ביקשתי

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

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

בסופו של דבר הפקודה שהתחילה בתור ״תשתמש בממוצע של מחזורים קודמים כדי לחזות את המחזור הבא״ הפכה לפקודה הבאה – 

  1. מחק את דאטבייס המחזורים הנוכחי.
  2. צור דאטבייס של מחזורים עם השדות – תאריך התחלה, תאריך סיום, אורך ווסת ואורך מחזור (כן, אני יודעת שאפשר לחשב את אורך המחזור לפי תאריך ההתחלה והסיום, אבל אנחנו מאפטמות על חישובים, לא על מקום).
  3. צור פונקציה ששולפת מהדאטבייס את עשרת המחזורים האחרונים של המשתמשת (אם קיימים כאלה), ומחזירה את האורך הממוצע של המחזור ושל הווסת שלה.
    במקרה שלמשתמשת אין אף מחזור רשום בדאטבייס, בקש ממנה את תאריך ההתחלה והסיום של המחזור הקודם שלה, הכנס אותם לדאטהבייס והמשך לחשב בהתבסס על ממוצעים דיפולטיים.
  4. בדשבורד של האפליקציה הצג למשתמשת את תאריך תחילת המחזור הבא שלה לפי הנוסחא – תאריך תחילת מחזור נוכחי + אורך מחזור ממוצע.

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

פוסטים נוספים בסדרת ״מאיה כותבת (עם) אלגוריתמים

תגובה אחת בנושא “מאיה כותבת (עם) אלגוריתמים – חלק ב׳

השאר תגובה