הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

ה AI Agent הראשון שלי

03/05/2025
ai

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

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

המשך קריאה

שלוש ביקורות שמצאתי ברשת נגד פיתוח בעזרת AI

30/04/2025
ai

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

המשך קריאה

פיתוח משחק סנייק עם AI - מה כן עבד

28/04/2025
ai

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

המשך קריאה

חוב טכני והמדרון החלקלק של ה AI

23/04/2025
ai

הפוסט היום הוא תרגום של פוסט מהבלוג של הגורו סת גודין. הערות שלי בסוף.

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

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

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

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

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


כמה הערות:

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

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

  3. ובנימה אישית הבלוג של סת' הוא הבלוג הוותיק ביותר שאני קורא והוא שנתן לי את ההשראה לכתוב כל יום. אני ממליץ עליו בחום.

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

https://www.youtube.com/watch?v=90WD_ats6eE

היום למדתי: דריסת הפונקציה import ב Python

22/04/2025
ai

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

import tariff

# Set your tariff rates (package_name: percentage)
tariff.set({
    "numpy": 50,     # 50% tariff on numpy
    "pandas": 200,   # 200% tariff on pandas
    "requests": 150  # 150% tariff on requests
})

# Now when you import these packages, they'll be TARIFFED!
import numpy   # This will be 50% slower
import pandas  # This will be 200% slower

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

builtins.__import__ = _tariffed_import

זה מקור החבילה בגיטהאב:

https://github.com/hxu296/tariff/tree/main

ועכשיו אתם - מה הייתם משנים ב import? ולמה?

ניסוי: נתתי לסונט לכתוב כמה בדיקות לאתר

21/04/2025
ai

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

המשך קריאה