קלוד סוכן הקוד – חלק 1

לחץ להאזנה

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

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

אבל זו באמת רק ההתחלה.

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

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

אתר (שכבר היה קיים קודם) בשם Websim הפך לגן עדן שמצמיח פרוייקטים של קוד (HTML+CSS+JS) בקצב מסחרר רק מבקשות פשוטות (שליטה מצויינת גם בעברית!)

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

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

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

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

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

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

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

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

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

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

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

מה שעשיתי בשלב הזה: לקחתי את מסמך האפיון ובאמצעות ChatGPT פרסתי אותו לחתיכות להמון קבצים קטנים (בעזרת Code Interpreter)

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

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

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

העבודה של קלוד ב-40 דקות הסתכמה ביותר מ-1000 שורות

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

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


Comments

4 תגובות על “קלוד סוכן הקוד – חלק 1”

  1. תמונת פרופיל של Ohad Michaeli
    Ohad Michaeli

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

  2. תמונת פרופיל של אריאל אוחיון
    אריאל אוחיון

    מאוד מעניין לקרוא אביץ היקר.
    כתוב בצורה קולחת ומדויקת.
    תודה על התוכן החשוב שאתה משתף איתנו

  3. תמונת פרופיל של דניאל
    דניאל

    אמאלה , אתה אלוף ומרתק!

  4. תמונת פרופיל של משה אנסבכר
    משה אנסבכר

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

להגיב על דניאל לבטל

האימייל לא יוצג באתר. שדות החובה מסומנים *