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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

[calm]
אחרי שהסביבה מוכנה, בואו נדבר על אבני הבניין של השפה. הדבר הבסיסי ביותר הוא משתנים, שהם כמו קופסאות עם תוויות לשמירת מידע. נכיר סוגי נתונים בסיסיים כמו טקסט, מספרים, וערכים בוליאניים של אמת או שקר. נתמקד בשני מבנים קריטיים: רשימות, שהן אוסף מסודר של פריטים, ומילונים, שהם אוסף של זוגות "מפתח-ערך". מילון פייתוני הוא כמעט זהה למבנה ג'ייסון שלמדנו, וזה מה שהופך את החיבור ביניהם לכל כך טבעי ופשוט.

[מעבר שקף]

[calm, confident]
כדי שהקוד שלנו יוכל לקבל החלטות ולבצע פעולות שחוזרות על עצמן, אנחנו צריכים להכיר מבני בקרה. הראשון הוא תנאי "if". הוא מאפשר לנו להריץ קוד רק אם תנאי מסוים מתקיים. לדוגמה, "אם קיבלנו תשובה מוצלחת מהשרת, עבד את הנתונים". השנייה היא לולאת "for", שמאפשרת לנו לעבור על כל פריט ברשימה ולבצע עליו פעולה. למשל, לעבור על רשימת לקוחות ולשלוח לכל אחד מהם מייל מותאם אישית. אלו הכלים שמאפשרים לנו לבנות לוגיקה מורכבת.

[מעבר שקף]

[calm]
כדי לכתוב קוד נקי ויעיל, אנחנו משתמשים בפונקציות. פונקציה היא בלוק קוד מאורגן שניתן לקרוא לו שוב ושוב מכל מקום בתוכנית. אפשר לחשוב על זה כמו מתכון: אנחנו מגדירים אותו פעם אחת עם מילת המפתח "def", והוא יכול לקבל "מצרכים" כקלט, שנקראים פרמטרים. בסוף התהליך, הוא יכול להחזיר לנו תוצאה באמצעות מילת המפתח "return". שימוש בפונקציות מונע חזרה על קוד והופך את התוכניות שלנו לקריאות וקלות יותר לתחזוקה.

[מעבר שקף]

[calm]
עכשיו כשיש לנו סביבה וירטואלית, הגיע הזמן למלא אותה בכלים. הכלי המרכזי לניהול חבילות בפייתון נקרא "pip". היום נתקין את ספריית "requests", שהיא הספריה הפופולרית ביותר לביצוע קריאות HTTP, כלומר, הדרך שלנו "לדבר" עם שרתים ו-APIs. היא ידועה בפשטות שלה והיא מקום מצוין להתחיל בו. נתקין אותה עם פקודה פשוטה בטרמינל: "pip install requests". זה כל מה שצריך כדי להתחיל לתקשר עם העולם מתוך הקוד שלנו.

[מעבר שקף]

[calm, confident]
הסוג הראשון של בקשת רשת שנלמד הוא בקשת GET. המטרה של בקשת GET היא פשוטה: לבקש ולקבל מידע משרת, מבלי לשנות שום דבר. זה כמו לשאול ספרן בספרייה איפה נמצא ספר מסוים. אנחנו נשתמש בספריית requests כדי לשלוח בקשת GET לאיי-פי-איי ציבורי, למשל, כזה שמספק מידע על מזג אוויר. נראה איך לשלוח את הבקשה לכתובת הנכונה, איך לבדוק שקיבלנו תשובה מוצלחת עם קוד סטטוס מאתיים, ואיך לגשת לתוכן שקיבלנו בפורמט ג'ייסון.

[מעבר שקף]

[calm, confident]
הסוג השני והחשוב יותר עבורנו הוא בקשת POST. בניגוד ל-GET, בקשת POST שולחת מידע אל השרת, בדרך כלל כדי ליצור ישות חדשה או להפעיל תהליך. זה בדיוק מה שאנחנו עושים כשאנחנו קוראים למודל שפה כמו קלוד אופוס ארבע נקודה שבע. אנחנו שולחים לו את הפרומפט שלנו, יחד עם פרמטרים נוספים, בגוף הבקשה. נלמד כיצד לבנות את גוף הבקשה כג'ייסון, וכיצד להוסיף "Headers" עם מפתח האימות שלנו כדי שהשרת ידע מי אנחנו.

[מעבר שקף]

[clear]
עכשיו, בואו נחבר הכל יחד בהדגמה חיה ראשונה. אני אכתוב סקריפט פייתון קצר מאפס. בסקריפט הזה, נגדיר את הפרומפט שלנו כמשתנה. לאחר מכן, נבנה את ה-headers עם מפתח ה-API שלנו ואת גוף הבקשה עם פרטי המודל. נשתמש בפונקציה "requests.post" כדי לשלוח את כל המידע הזה ל-API של קלוד, ולבסוף, נדפיס למסך את התשובה שקיבלנו מהמודל. זו תהיה הפעם הראשונה שנראה את הקוד שלנו מתקשר עם מודל שפה מתקדם בזמן אמת.

[מעבר שקף]

[calm, confident]
ראינו בהדגמה שהכנסנו את מפתח ה-API ישירות לקוד. זוהי פרצת אבטחה חמורה. אסור לעולם לשמור "סודות" כמו מפתחות אימות או סיסמאות בתוך הקוד עצמו. הפתרון המקובל בתעשייה הוא שימוש במשתני סביבה. אנחנו ניצור קובץ מיוחד בשם "נקודה אי-אן-וי" (dot env), נשמור בו את המפתח שלנו, ונוודא שהקובץ הזה לא נכנס למערכת ניהול הגרסאות. לאחר מכן, נשתמש בספרייה קטנה וחכמה בשם "python-dotenv" כדי לטעון את המשתנים מהקובץ לתוך סביבת הריצה של הסקריפט שלנו.

[מעבר שקף]

[calm]
אחרי שטענו את המשתנים מהקובץ באמצעות "python-dotenv", איך אנחנו ניגשים אליהם מתוך הקוד? כאן נכנס לתמונה המודול המובנה של פייתון שנקרא "os". המודול הזה מספק לנו דרך לתקשר עם מערכת ההפעלה. הפונקציה "os.getenv" מקבלת שם של משתנה סביבה, למשל "CLAUDE_API_KEY", ומחזירה את הערך שלו. היתרון הגדול הוא שאם המשתנה לא קיים, הפונקציה תחזיר "None" במקום לקרוס, מה שמאפשר לנו לטפל במצב הזה בצורה אלגנטית.

[מעבר שקף]

[calm, confident]
מה קורה אם האינטרנט מתנתק, או שה-API שאנחנו קוראים לו נפל זמנית? כרגע, הסקריפט שלנו פשוט יקרוס ויציג שגיאה. כדי לבנות אוטומציות אמינות, אנחנו חייבים לטפל בשגיאות כאלה. בפייתון, עושים זאת באמצעות בלוק "try-except". אנחנו מניחים את הקוד שעלול להיכשל, כמו הקריאה לרשת, בתוך בלוק ה-"try". אם מתרחשת שגיאה, התוכנית לא קורסת, אלא קופצת לבלוק ה-"except", שם אנחנו יכולים לרשום את השגיאה לקובץ, לנסות שוב, או פשוט לסיים את הריצה בצורה מבוקרת.

[מעבר שקף]

[calm]
פעמים רבות, אחרי שקיבלנו תשובה מורכבת מ-API, נרצה לשמור אותה להמשך עיבוד או לתיעוד. הדרך הטובה ביותר לעשות זאת היא לשמור את הנתונים בקובץ ג'ייסון. לפייתון יש ספרייה מובנית בשם "json" שעושה את זה פשוט להפליא. נשתמש בפקודה "with open" כדי לפתוח קובץ במצב כתיבה, ואז נשתמש בפונקציה "json.dump". הפונקציה הזו לוקחת את המילון הפייתוני שקיבלנו מה-API ואת אובייקט הקובץ, והיא כותבת את הנתונים לקובץ בצורה מסודרת וקריאה.

[מעבר שקף]

[clear]
הגיע הזמן להדגמה החיה השנייה והמרכזית שלנו, שבה נבנה אוטומציה מלאה מקצה לקצה. הסקריפט החדש שלנו יעשה ארבעה דברים מרכזיים. ראשית, הוא יטען את מפתח ה-API שלנו בצורה מאובטחת מקובץ "נקודה אי-אן-וי". שנית, הוא יבצע קריאת POST ל-API של קלוד. שלישית, כל הקריאה לרשת תהיה עטופה בבלוק "try-except" כדי לטפל בשגיאות תקשורת. ולבסוף, הוא ישמור את התשובה המלאה שקיבלנו מהמודל לקובץ ג'ייסון מקומי.

[מעבר שקף]

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

[מעבר שקף]

[clear]
לפני שנמשיך, בואו נסכם כמה כללי אצבע, או "Best Practices", לכתיבת סקריפטים מקצועיים בפייתון. כלל ראשון: תמיד להשתמש בסביבות וירטואליות כדי לבודד פרויקטים. כלל שני: לעולם לא לכתוב סודות בתוך הקוד; להשתמש בקבצי "dotenv" ומשתני סביבה. כלל שלישי: לארגן את הקוד בפונקציות כדי למנוע חזרות ולהגביר קריאות. כלל רביעי: תמיד לעטוף קריאות לרשת ולמערכת הקבצים בבלוקי "try-except". והכי חשוב, לכתוב הערות שמסבירות את ה"למה" מאחורי הקוד, לא רק את ה"מה".

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

[warm]
ובזאת אנחנו מסיימים. היום, הפכנו ידע תיאורטי על ג'ייסון לכוח מעשי באמצעות פייתון. למדנו להקים סביבת עבודה מקצועית, לבצע קריאות API, לטפל בסודות ושגיאות, ולבנות אוטומציה שלמה מאפס. כעת יש לכם את הכלי הבסיסי והחשוב ביותר בארגז הכלים של מהנדס ה-AI: היכולת לחבר בין מערכות. בשיעור הבא, ניקח את היכולת הזו צעד קדימה ונציג את ה-MCP, Multi-Claude-Pipeline, שבו נתזמר מספר מודלים יחד כדי לפתור בעיות מורכבות עוד יותר. תודה רבה, ונתראה בשיעור הבא.