ברוכים הבאים ל-AI Code, קורס על בניית תוכנה עם סוכני קוד. המבוא הזה מסביר מה סוכנים יכולים לעשות, איך הם עובדים עם פרויקט, ולמה עדיין צריך לבדוק את העבודה שלהם. נסתכל גם על הסיכונים שבמתן גישה לסוכנים אל הכלים והקבצים שלנו.
בינה מלאכותית משנה את הדרך שבה אנשים עובדים במדעי המחשב ובתחומים אחרים.
פיתוח תוכנה הוא אחד התחומים שבהם קל לראות את השינויים האלה. כלים לכתיבת קוד יכולים לכתוב ולשנות קוד, ואז להריץ אותו כדי לבדוק חלקים מהתוצאה. במהלך הקורס, נבחן למה הכלים האלה שימושיים לפיתוח תוכנה.
הקורס הזה הוא הזדמנות להתחיל להשתמש בסוכני קוד בפרויקטים אמיתיים ולעבוד על השאלות שהם מעלים. אנחנו לומדים את הכלים האלה בזמן שהם משתנים מתחת לרגלינו. כך שחלק ממה שנלמד כאן עשוי להשתנות במהלך הקורס עצמו. עדיין מבררים מה הדרך הטובה ביותר להשתמש בבינה מלאכותית, ושאלות רבות עדיין פתוחות ברובן. ולכן זה זמן מרגש ללמוד את הכישורים האלה ולהתמודד עם שאלות בחזית הידע.
במשך עשרות שנים נוספו לתכנות כמה שכבות של הפשטה. הפשטה מאפשרת לנו להשתמש במשהו בלי לדעת בדיוק כל פרט בדרך שבה הוא עובד. נתחיל מקוד מכונה. אלה הפקודות הבינאריות שהמעבד מבצע. לעבוד ברמה הזאת פירושו להתעסק ישירות בפקודות האלה.
שפת תכנות נותנת לנו משתנים, לולאות ופונקציות. מהדר או מפרש מתרגמים את זה לפעולות שהמכונה יודעת לבצע. אנחנו לא צריכים לכתוב כל פקודת מעבד.
ספריות ופריימוורקים נותנים לנו קוד שכבר מטפל במשימות נפוצות. אפשר להשתמש בקוד הזה בלי לכתוב אותו מחדש. עדיין צריך לדעת מה הוא עושה ומתי הוא עלול לא להתאים לצרכים שלנו.
עם סוכן קוד אפשר לתאר במילים רגילות איך רוצים שהתוכנה תתנהג. והסוכן מנסה לכתוב את הקוד. אנחנו נותנים לו לקבל חלק מההחלטות שאחרת היינו מקבלים בעצמנו.
כל שכבה מאפשרת לומר יותר על מה שרוצים ופחות על איך לבנות את זה. אבל גם אם אנחנו מפרטים פחות, עדיין צריך לבדוק את התוצאה.
לאחרונה ראינו שלושה סוגים של עוזרי קוד מבוססי בינה מלאכותית, שהלכו והתקדמו ביכולות שלהם. השלמה אוטומטית מציעה קוד תוך כדי הקלדה. אתם מקבלים את ההצעה, משנים אותה או מתעלמים ממנה.
עוזר בצ'אט עונה על שאלות וכותב דוגמאות. את הקוד אתם מעתיקים לפרויקט בעצמכם.
סוכן קוד עובד בתוך הפרויקט בחופשיות רבה יותר. הוא קורא קבצים, עורך אותם ומריץ פקודות, ובוחר כל צעד הבא לפי מה שהוא רואה. חלק מהצעדים האלה עשויים להיות כאלה שלא ביקשתם.
עם סוכן, השלב האחרון בהתפתחות הזאת, התפקיד שלכם משתנה. אתם מגדירים את המשימה, ואז סוקרים את השינויים שהוא עושה, והוא מקבל הרבה יותר חופש לעבוד בעצמו.
סוכן יכול לעבור כמה שלבים בלי הוראה נפרדת לכל אחד מהם. אתם נותנים לו מטרה וגישה לפרויקט הרלוונטי. ואז הוא בוחר פעולות שלהערכתו יסייעו להשלים את המשימה.
הסוכן עלול לייצר קוד מהר יותר משאתם מספיקים לסקור. כשבקשה משאירה שאלות פתוחות, הסוכן מניח הנחות. הוא עלול לשנות בפרויקט יותר ממה שהתכוונתם. לכן התוצאה יכולה להיות שונה ממה שרציתם, גם אם הקוד רץ.
הצעד הראשון בסקירה הוא לגלות מה השתנה. תקראו את השינויים ותבדקו מה הם עושים. צריך להבין את הקוד הנוכחי לפני שמחליטים מה להשאיר. אם העבודה לא מתאימה למשימה, תסבירו מה לא בסדר ובמה הסוכן לא צריך לגעת. כששינויים מצטברים מהר יותר משאתם מספיקים להבין אותם, הפער בין הקוד שיש לכם לבין הקוד שאתם מבינים גדל.
לפער הזה קוראים לפעמים חוב קוגניטיבי. סגירת הפער לוקחת זמן. אולי תצטרכו לקרוא, להריץ טסטים, או לכתוב מחדש שינויים שקיבלתם מהר מדי. ולפעמים תחליטו לבטל אותם.
כמה אוטונומיה כדאי לתת לסוכן? זה תלוי בסיכון שבמשימה ובכמה קל לבדוק את העבודה שלו. אם נותנים לו לעבוד לבד יותר זמן, נותנים לו פחות הוראות, פחות מדויקות, ומכוונים אותו פחות. אבל אז גם הנחה שגויה של הסוכן עלולה להשפיע על יותר שינויים לפני שתשימו לב.
כדי להחליט כמה צמוד לעקוב אחרי הסוכן, צריך לדעת במה הוא מצליח ואיפה הוא טועה. הצורה הלא אחידה בתרשים הסכמטי הזה מייצגת יכולת לא אחידה בין משימות. באופן מפתיע, סוכן יכול לא פעם לבצע היטב משימה קשה אחת ובמשימה אחרת לעשות טעות בסיסית מאוד.
בחלק מהמשימות, סוכן יכול לכתוב מהר תוכנית עובדת או להסביר קוד לא מוכר. אלה יכולות שימושיות, אבל הצלחה בתחום הקשה מאוד של כתיבת קוד לא תמיד עוברת אפילו לתחומים שנראים לנו פשוטים יותר.
אותם מודלים שיודעים לכתוב קוד עובד תוך שניות היו טועים בשאלות הרבה יותר פשוטות. כששאלו אותם כמה אותיות r יש במילה strawberry, היו עונים שתיים, בביטחון רב. התשובה היא שלוש. מודלים עדכניים השתפרו דווקא בשאלה הזאת. הנקודה הכללית עדיין נכונה, כי היכולת לא אחידה והנקודות החלשות לא תמיד נמצאות איפה שמצפים.
המודל מייצר טקסט ממה שלמד באימון וממה שכתוב בבקשה עצמה. זה לא מבטיח שהוא בודק בקפדנות כל טענה לפני שהוא עונה. אז איך מסבירים את הטעות הזאת עם המילה "Strawberry"? מודלים עובדים עם חלקי טקסט שלא תמיד מתאימים לאותיות בודדות. במשימת ספירה, עדיף להשתמש בכלי שסופר מאשר לסמוך רק על התשובה שהמודל ייצר.
הלקח שעלינו ללמוד הוא זה: תבחנו את הסוכן בסוגי המשימות הספציפיים שאתם נותנים לו. אל תניחו שרמת היכולת שלו זהה בכל המשימות. מה שחשוב זה אם התוצאה שהוא מייצר עובדת במקרים שאנחנו צריכים.
לסוכן קוד יש מודל שפה ותוכנה שמחברת אותו לפרויקט. מודל השפה הגדול, או LLM, שמופיע כאן רץ על שרתים מרוחקים. המחשב שלכם שולח אליו בקשות דרך הרשת. המודל מייצר תשובה מהמידע שהוא מקבל. התשובה יכולה להכיל הסבר או בקשה לבצע פעולה. התשובה של המודל לא משנה קובץ בעצמה. התוכנה שעוטפת את המודל היא זו שצריכה לטפל בפעולה הזאת.
לתוכנה הזאת קוראים רתמה. היא רצה על המחשב שלכם.
הרתמה שולחת למודל פרומפט. הוא מכיל את המשימה ומידע נוסף שהמודל יכול להשתמש בו כדי להחליט מה לעשות.
ואז הרתמה מקבלת את התשובה של המודל. הבקשות והתשובות מרכיבות את השיחה עם המודל. Claude Code ו-Codex הם תוכנות שמנהלות את האינטראקציה הזאת. הרתמה גם מחברת את הבקשות של המודל לכלים שיכולים לפעול בפרויקט.
בקשה להשתמש בכלי נקראת קריאה לכלי. כלים יכולים לקרוא קבצים, לערוך קוד ולהריץ פקודות. הרתמה מטפלת בקריאה לפי ההרשאות שבתוקף.
כלים יכולים גם להביא מידע מחוץ לפרויקט, למשל בחיפוש באינטרנט.
הסוכן יכול לחזור על התהליך הזה תוך כדי עבודה. הרתמה שולחת בקשה למודל, מקבלת תשובה, ומבצעת קריאה מותרת לכלי. היא מכניסה את תוצאת הכלי לבקשה הבאה למודל. כל תוצאה עוזרת לסוכן לבחור מה לעשות הלאה. הלולאה הזאת נמשכת עד שהסוכן מסיים, צריך עזרה, או נעצר.
המודל מייצר תשובות, והרתמה מטפלת בכלים ובפעולות. נלמד את שני החלקים כדי להבין מה סוכן יכול לעשות ואיפה יכולות לקרות טעויות.
בקורס הזה נשתמש בסוכנים למשימות תכנות אמיתיות. נשאל איך להוציא מהם עבודה מועילה ובמקביל לעקוב אחרי מה שהתוכנה עושה.
ככל שפרויקט גדל, יותר חלקים בקוד צריכים לעבוד יחד. צריך לנהל את הקשרים האלה ולדאוג שהחוב הקוגניטיבי לא ייצא משליטה. כלומר לדאוג שנמשיך להבין את הפרויקט גם בזמן שהסוכן משנה אותו.
עדיין צריך עקרונות מוכרים של תכנון תוכנה ובדיקות. טסטים בודקים התנהגויות נבחרות. טיפוסים וכלים סטטיים אחרים יכולים למצוא טעויות מסוימות בקוד. סקירה שואלת אם השינויים מתאימים לפרויקט. כל סוג בדיקה עוזר בדרך אחרת. ויחד, הם מקלים על מציאת טעויות ועל הערכת עבודת הסוכן.
הבדיקות האלה עוזרות לנו לשמור על פרויקט שגדל, כך שימשיך לעבוד ויישאר מובן. הן נעשות שימושיות יותר ככל שבסיס הקוד גדל ויותר חלקים תלויים זה בזה.
הכלים של סוכן יכולים להשפיע על המחשב שבו הם רצים. גישה לקבצים, לפקודות ולרשת מאפשרת לסוכן לעשות עבודה מועילה. והיא גם קובעת כמה נזק פעולה שגויה עלולה לגרום.
עם ההרשאות הנכונות, סוכן יכול לבנות פיצ'רים, לתקן באגים, לעזור בתחזוקת המחשב שלכם, ולעשות אוטומציה לעבודה חוזרת.
טעות עלולה למחוק קבצים נחוצים, לחשוף סודות, או להריץ פקודה מזיקה. אם כמה פעולות רצות בלי סקירה, הנזק יכול לגדול לפני שתשימו לב.
צרות יכולות להגיע גם מהחומרים שהסוכן קורא. דף אינטרנט, קובץ, או תלות עלולים להכיל הוראות שתוקף הניח שם.
התוקף רוצה שהסוכן יציית להוראות האלה במקום למשימה של המשתמש. ההוראות לא חייבות להיות מוסתרות. הטעות היא להתייחס לתוכן הזה כמשהו שצריך לציית לו.
להתקפה מהסוג הזה קוראים הזרקת פרומפט.
תנו לסוכן רק את הגישה שהמשימה שלו דורשת. ותחשבו גם באילו מקורות של הוראות הוא צריך לבטוח. נלמד דרכים לצמצם את הנזק מטעויות ומהתקפות, כחלק מהלמידה איך לעבוד עם סוכנים.
הקורס מכסה חמישה תחומים שקשורים זה בזה. הראשון הוא לתת לסוכנים משימות תכנות ולסקור את עבודתם. נתרגל את זה במעבדות.
השני הוא ניהול ההקשר: המידע שעומד לרשות הסוכן למשימה שלו. קבצי זיכרון של הפרויקט דואגים שההוראות תמיד יהיו בהישג יד, skills שומרים נהלים לשימוש חוזר, ותת-סוכנים יכולים לעבוד עם הקשר משלהם. הכלים האלה עוזרים לתת לסוכנים את המידע שהם צריכים, בלי להכניס כל חלק מפרויקט גדול לשיחה אחת.
התחום השלישי הוא בדיקת התוכנה. טסטים, טיפוסים, לינטרים, ואינטגרציה רציפה עוזרים למצוא סוגים שונים של טעויות. עדיין צריך לסקור מה הבדיקות האלה מכסות ומה הן מפספסות.
התחום הרביעי הוא אבטחה. נסתכל על קונטיינרים שמגבילים גישה ועל התקפות כמו הזרקת פרומפט. סוכן שיכול לפעול בפרויקט צריך גם גבולות למה שהוא יכול להשפיע עליו.
התחום החמישי הוא תיאום בין כמה סוכנים שעובדים על אותה בעיה. חלוקת העבודה היא רק חלק מהמשימה. צריך גם לאחד את התוצאות ולבדוק שהן עובדות יחד.
לאורך הקורס, נמדוד אם התוצאה טובה יותר וכמה מאמץ היא דרשה. לייצר קוד מהר יותר זה לא מספיק בפני עצמו.
הסרטון הבא מסביר איך הקורס עובד, כולל לוח הזמנים השבועי, שיטת הציונים, ומה צריך להכין לפני המעבדה הראשונה. מה שחשוב לזכור מהמבוא הזה: סוכן יכול לעשות חלק גדול מהעבודה, אבל האחריות שלנו היא להגדיר את המשימה, לבדוק את התוצאה, ולשלוט בגישה שלו. וזה עצמו לא פשוט בפרויקט מורכב שהולך וגדל.