עופר הלמן,
Data & AI Tech-Lead, Kaltura
המאבק על ממשק המשתמש האינטרנטי – הערכת תשתיות פייתון לצורך יצירת אבטיפוסים של בינה מלאכותית (AI Prototyping)
2023-10-04
•
6 דקות קריאה
בחודשים האחרונים, שירותי בינה מלאכותית (AI) כמו ChatGPT פרצו אל הזירה הטכנולוגית תוך שהם משנים דרמטית את האופן שבו רבים מאיתנו עובדים ויוצרים. כלי AI עוצמתיים אלה של חברות כמו Anthropic, OpenAI ואחרות, נתנו לכולם, סטודנטים, מתכנתים ומשווקים כאחד, יכולת חדשה ומדהימה לייצר טקסטים וקוד הדומים לכאלה שנוצרו בידי אדם, וזאת באמצעות הנחיה פשוטה אחת.
עם זאת, ראויה לציון ככל שתהיה טכנולוגיה חדשה זו, היא מגיעה גם עם מגבלות וסיכונים משמעותיים שאנו עדיין לומדים איך לטפל בהם בצורה נכונה. אחת הבעיות העכשוויות המשפיעות ביותר הקשורות ל-AI כמו ChatGPT היא הנטייה שלו "להזות", כלומר, להמציא מידע מתקבל על הדעת לכאורה, אך שלמעשה אינו נכון או חסר היגיון, אם הוא אינו יודע למעשה את התשובה לשאלה כלשהי. התוצאה עשויה להיות תוכן מהימן לכאורה, אך שלמעשה אינו מדויק, שיש לו פוטנציאל להוליך אנשים שולל או להזיק למשתמשים אם הם יסתמכו עליו באופן עיוור, ללא פיקוח אנושי.
כמהנדסי למידת מכונה ובינה מלאכותית, עמיתיי ואני עובדים קשה כדי לעזור לחברה שלנו למנף בהצלחה את הכלים החדשים העוצמתיים אך הלא-מושלמים הללו. העבודה שלנו היא למצוא דרכים יצירתיות לשלב AI במוצרים ותהליכי העבודה שלנו, תוך מקסום היעילות, הדיוק והמהירות, אך בה-בעת גם לפתח הגנות אפקטיביות למניעת הזיות ושגיאות אחרות.
יצירת אבטיפוסים וניסויים ב-AI
לאחרונה, Kaltura ערכה ניסיונות בטכנולוגיות AI שונות כדי להטמיע אותן במוצרים שלה.
דוגמה אחת היא מנוע חיפוש וידאו היכול לשמש למציאת מידע ספציפי בתוך סרטי וידאו. זה התאפשר על ידי GenAI, אשר מאפשר ל-Kaltura לבנות בקלות רבה יותר מנועי חיפוש למטרות מיוחדות.
באופן כללי, Kaltura מכוונת להשתמש ב-AI כדי לשפר את מוצריה ושירותיה על ידי הפיכתם ליותר אפקטיביים, מרתקים וידידותיים למשתמש (כמובן שאנו לא משתמשים בנתוני לקוח כלשהם כדי לאמן את כלי ה-AI).
העמדת כלים אינטרנטיים במבחן לצורך הוכחת ההיתכנות של AI
כמהנדסי תוכנה, עלינו להישאר מעודכנים בנוגע לטכנולוגיות מתהוות ולהבין כיצד ליישם אותן לצרכים המתפתחים של מוצרים שונים. לצורך הדגמת היכולות היוצרות החדשות של ה-AI, עלינו לבנות מהר הוכחות היתכנות מקצה-לקצה.
תוך בחינת כלי ממשק המשתמש האינטרנטיים כדי לבדוק טכנולוגיות חדשות, לנסות תהליכי עבודה חדשים ולהציג ניסויים בתחום ה-AI באמצעות ממשקים והדגמות משכנעים, חיפשתי אופציות שיענו על כמה קריטריונים עיקריים:
- קל ומהיר ללמידה: מצמצם למינימום את זמן הלימוד הנדרש כדי להתחיל לעבוד עם התשתית.
- מכיל מאפיינים מלאים: כולל את המגוון הפונקציונלי המלא הנדרש כדי לבנות יישומי front-end חזקים.
- חווית פיתוח נעימה: הופך את היצירה, הבדיקה וההפצה של יישומים לאינטואיטיבית וחלקה.
- תמיכה קהילתית רחבה: מכיל בסיס משתמשים פעיל לשאלת שאלות ומציאת רכיבים שנבנו מראש.
- אפשרויות להפצה ואחסון בענן: כולל את האפשרות לפרסם ולאחסן יישומים בקלות.
כדי להעריך באופן מעשי מסגרות שונות, יצרתי צ'אטבוט להוכחת היתכנות, שמסוגל לחפש באינטרנט ולספק תוצאות רלוונטיות (SearchBot). לצורך הערכה זו בחנתי את אפשרויות ממשק המשתמש האינטרנטי הבאות, וזאת על ידי שימוש מעשי בכל אחת מהן במשך כמה שעות:
- Streamlit
- Gradio
- Taipy
- Shiny
- Datapane
לכל אחת מהן הסתמכתי על קטעי קוד הנמצאים אונליין, תיעוד ומשאבים זמינים אחרים. בתוך מסגרת הזמן המוגבלת, המטרה שלי לא הייתה ללמוד לעומק כל פלטפורמה, אלא לאמוד את הפוטנציאל לייצור מהיר של יישום AI demo פשוט אך תפקודי.
הערכה מעשית זו סייעה לי לגלות אילו מסגרות אפשרות לנוע הכי מהר ממצב של דף חלק ליצירת אבטיפוס ראשוני. אמנם זה לא היה סקירה טכנית מקיפה ומלאה, עדיין זה נתן לי תובנות חשובות ביחס לאפשרויות שעשויות להתאים ביותר לפיתוח ואיטרציה בקצב מהיר של יישום AI.
Streamlit
Streamlit היא תשתית מבוססת פייתון לבניית יישומי אינטרנט עבור למידת מכונה ומדעי נתונים. זוהי ספריית קוד פתוח חינמית המאפשרת לכם ליצור ולשתף בקלות יישומי אינטרנט אינטראקטיביים ישירות מסקריפטים של פייתון. היא מייתרת את הצורך בלמידת קוד JavaScript מסובך עם טקסטים תיאוריים, פלטי מודל, הדמיות נתונים ואלמנטים של ממשק משתמש. Streamlit ידידותית למשתמש, בטוחה, מהירה לפיתוח ולהפצה.
ל-Streamlit יש קהילה גדולה וצומחת, שבה ישנן אלפי שאלות ותשובות ב - StackOverflow, המאפשרת גישה לדוגמאות וקטעי קוד.
חלק מן היתרונות העיקריים שמצאתי ב-Streamlit:
- מהירה להתחלה וללמידה: ממשק תכנות היישומים הוא אינטואיטיבי עם תיעוד מעולה.
- פיתוח קוד פתוח פעיל, כולל תמיכה חלקה שנוספה לאחרונה עבור LangChain ומודלי שפה גדולים (LLM) אחרים.
- טעינה מחדש של היישום בלייב תוך כדי עריכת הקוד: השינויים מופיעים מייד בדפדפן.
- הפצה חסרת תקלות בענן של פרויקטים ציבוריים ב-GitHub תוך דקות ספורות.
ל-Streamlit יש חיסרון אחד בולט, שהוא מבצע עיבוד גרפי מחדש של כל היישום בכל פעם שנעשה שינוי בנתונים, מה שיכול לגרום לאיטיות מסוימת ביישומים גדולים. אבל באופן כללי, Streamlit מעניקה תשתית מצוינת עם הוצאות תקורה מינימליות לבנייה ואיטרציה מהירה של כל יישומי הדמו של AI.
Taipy
Taipy היא ספריית קוד פתוח בפייתון שנועדה לבנות את ה-front-end וה-back-end של היישומים שלך. ממשק המשתמש הגרפי (GUI) של Taipy הוא אחד המרכיבים של Taipy שנועד ליצור יישומים אינטרנטיים במהירות. Taipy מביאה את שיטות העבודה שהוכחו כיעילות ביותר במונחים של ניתוח מה-אם, יחד עם מודול ניהול תהליכים עוצמתי וכן גישת ניטור KPI אינטואיטיבית.
מערכת Taipy מציעה יכולות ייחודיות מעבר לפיתוח ממשק משתמש אינטרנטי, ובזכותן היא שווה בדיקה. בנוסף לתשתית ה-Front-end שלה, היא כוללת את Taipy Core - מודול לתזמון (בדומה ל Airflow), אשר מדגים תזרימי עבודה בעזרת גרפים מכוונים חסרי מעגלים (DAGS), שמירה זמנית (caching), מעקב ועוד.
עם זאת, נראה כי Taipy עדיין בשלבי התבגרות מוקדמים יחסית לאלטרנטיבות. במשך הבדיקות שערכתי, חלק מן התיעוד ודוגמאות הקוד הצביעו על Streamlit ולא על Taipy. לא הצלחתי למצוא דוגמאות צ'אטבוט מוכנות או ליצור אחת בעצמי במהירות תוך כמה שעות של מחקר.
Taipy API משתמש בשילוב של Markdown, HTML ו-Python, תוך מתן שליטה רבה יותר בעיצוב מאשר פייתון לבד, אך ייתכן שזהו ממשק תכנות יישומים פחות אינטואיטיבי עבור מפתחים ללא מומחיות בפיתוח אינטרנטי.
Taipy מציעה טעינה מחדש אוטומטית שמאפשר פיתוח זריז יותר. עם זאת, גיליתי שהטעינה מחדש בלייב היא איטית יחסית לאופציות האחרות.
באופן כללי, Taipy נראית מבטיחה בחיבור בין פיתוח UI, תזמון של תזרימי העבודה, וביצועי למידת מכונה (ML). נראה שהיא עדיין בשלבים המוקדמים יחסית של בשלות.
בשביל מפתחים שמתמקדים אך ורק בבניית חוויות אינטרנטיות נהדרות ליישומי AI demo, אפשרויות אחרות כמו Streamlit מציעות כיום דרך מהירה יותר לפרודוקטיביות על בסיס גודל קהילה ואיכות התיעוד. סט המאפיינים הרחב יותר של Taipy עשוי להוות מוקד משיכה לצוותים שצריכים לבצע תזמון ולעקוב אחרי תהליכי למידת מכונה מורכבים. שווה לעקוב אחרי ההתקדמות של Taipy ככל שקהילת המשתמשים צומחת וגדלה.
Gradio
Gradio היא ספריית קוד פתוח של פייתון אשר מאפשרת לכם ליצור במהירות רכיבי UI ניתנים להתאמה אישית סביב מודלי למידת המכונה שלכם, רשתות הנוירונים ופונקציות נוספות.
ספריית ה-Gradio של Hugging Face הפכה לאופציה מובילה לבנייה מהירה של ממשקי משתמש אינטרנטיים למודלים של AI. בעיניי, ה-API אינטואיטיבי מאוד - יכולתי להתאים בקלות דוגמת צ'אטבוט לתוך בוט החיפוש מותאם אישית שהייתי זקוק לו, על ידי שינוי כמה שורות קוד פייתון בלבד.
האינטגרציה החלקה של Gradio עם Hugging Face Transformers וספריות למידת מכונה אחרות הופך את החיבור של ממשקי משתמש למודלים עוצמתיים מאומנים-מראש לפשוט וברור. עם פלטפורמת המרחבים המשולבים של Hugging Face, גם אפליקציות אחסון (hosting) נראות פשוטות, אם כי לא בדקתי זאת באופן אישי.
Gradio נהנית מקהילת משתמשים הצומחת במהירות. ספריית הכלים של Gradio, מספקת עטיפות נוחות לאינטגרציה הדוקה יותר עם LangChain ויכולות AI מודרניות אחרות.
אחרי הבדיקות שערכתי, אני מאמין ש-Gradio מספקת תשתית חזקה לצורך פיתוח, הפצה ואיטרציה מהירה של מודלי AI על ממשקים אינטרנטיים. ה-API מעוצב בקפידה. עם הגיבוי והתמיכה הקהילתית הנרחבים של Hugging Face, פלטפורמת Gradio נותנת מקום בשל ואמין להצגה של AI באמצעות יישומים אינטרנטיים אינטואיטיביים.
הייתי מרגיש בטוח לבנות על Gradio לצורך ייצור, לא רק לאבטיפוסים. המשאבים הרבים והתמיכה הנרחבת הקיימים, עוזרים גם להתגבר מהר על כל מכשולים הצצים לאורך הדרך.
Shiny
Shiny מבטיחה יישומים אינטרנטיים קלים למדע הנתונים ללא פשרות. אמנם לא הצלחתי לגרום ל-Shiny ליישם את פונקציונליות בוט החיפוש המדויקת שרציתי בפרק הזמן המוגבל שהוקצה לכך, אך גיליתי שספריית ה-chatstream החיצונית סיפקה דוגמאות ותבניות שימושיות לצ'אטבוט. אילו היה לי יותר זמן לעבוד עליהן, אני מאמין ש-Shiny יכלה לתמוך בבניית גרסת ההדגמה שהתכוונתי לבנות.
ההרגשה בשימוש בממשק תכנות היישומים העיקרי של Shiny הייתה שהוא קצת יותר מאתגר לתחזק ולהרחיב בהשוואה לאופציות אחרות, כיוון שנדרש בו להטמיע אלמנטים של UI בתוך כל מיני אובייקטים וקונטיינרים (container and layout objects). עם זאת, Shiny כן נותנת יתרונות ביצועיים, שכן מתבצע בה רק עיבוד גרפי (rendering) של רכיבי UI התלויים בשינויי נתונים, ובכך מתאפשרת רספונסיביות כוללת הרבה יותר מהירה.
Shiny מאפשרת שליטה באלמנטים של HTML ישירות דרך פייתון, ובכך תומכת בפיתוח זריז. ישנה גם אפשרות חינמית לאחסון בענן ב-https://www.shinyapps.io/ לצורך הפצת יישומים בקלות.
לסיכום, בעוד ממשק תכנות היישומים של Shiny עשוי לכלול עקומת למידה ראשונית תלולה יותר, הרי שהיתרונות הביצועיים של שליטת HTML מבוססת פייתון ושל אחסון חינמי הופכת את Shiny לפלטפורמה ששווה לשקול אותה, במיוחד עם ספריות עזר כמו chatstream. הדוגמאות והתבניות הקיימות מסוגלות להתגבר על המכשולים הראשוניים הכרוכים בהתחלת העבודה.
אמנם זו לא הייתה הפלטפורמה המתאימה ביותר להכנה מהירה של גרסת ההדגמה הספציפית שלי, אך Shiny היא עדיין מסגרת בעלת יכולת ליצירת יישומים אינטרנטיים אינטראקטיביים חזקים בפייתון.
מסקנות
בהערכה שביצעתי למסגרות אינטרנטיות שונות בפייתון לפיתוח מהיר של יישומי דמו של AI התגלו הדברים הבאים:
- Streamlit ו-Gradio הן מלוטשות וקלות לשימוש, ויש להן סטים מלאים של מאפיינים. בשתי המסגרות ניתן להשתמש כדי ליצור אבטיפוס פונקציונלי של צ'אטבוט במהירות. Streamlit היא קצת יותר אינטואיטיבית ומחוץ לקופסה, בעוד Gradio מצטיינת ביתרון של אינטגרציה הדוקה עם Hugging Face.
- Taipy נראית מבטיחה, במיוחד לצוותים הזקוקים גם ל-UI וגם ליכולות צינור איסוף נתונים ללמידת מכונה. עם זאת, היא נמצאת בשלב פיתוח מוקדם יותר מאשר Streamlit ו-Gradio. שווה לעקוב אחרי התפתחות האקוסיסטם של Taipy.
- Datapane זו בחירה מצוינת לחקר והדמיית נתונים, אבל היא פחות ממוטבת לבניית יישומים אינטרנטיים דינמיים מאוד. לצורך בניית אבטיפוסים של AI מתאימות יותר אפשרויות אחרות כמו Streamlit.
- Shiny מספקת מסגרת רבת עוצמה, אך סביר שייקח יותר זמן ללמוד את כל היכולות שלה. ייתכן שהיא עדיפה ליישומים גדולים ומורכבים יותר מאשר יצירת אבטיפוסים מהירים.
באופן כללי, לכל מסגרת יש חוזקות ההופכות אותה למתחרה חזקה בזכות עצמה למקרי שימוש שונים.
התנסות ישירה זו גילתה גורמים מרכזיים שיש להביאם בחשבון כשבוחרים מסגרת אינטרנטית לצורך פיתוח ואיטרציה מהירים של יישומי AI. ערכת הכלים הנכונה יכולה להאיץ את התהליך של לקיחת רעיון משלב הגייתו ועד להכנת אבטיפוס ראשוני מהר ובאופן אינטואיטיבי.
שתפו את הבלוג:
Startup for Startup אישי
קבלו עדכונים על הנושאים שהכי מעניינים אתכם
שלי Startup for Startup
קבלו עדכון ישר למייל ברגע שיוצא תוכן חדש בנושא.
הירשמו לאיזור האישי
צרו פרופיל אישי באתר ותוכלו להתחבר לאחרים ואחרות, לקבל תכנים מותאמים אישית, ולשמור את התכנים שהכי מעניינים אתכם.
הירשמו לאיזור האישי
צרו פרופיל אישי באתר ותוכלו להתחבר לאחרים ואחרות, לקבל תכנים מותאמים אישית, ולשמור את התכנים שהכי מעניינים אתכם.
עוד תוכן בנושא:
בלוג
6 דק'
10/2023
המאבק על ממשק המשתמש האינטרנטי – הערכת תשתיות פייתון לצורך יצירת אבטיפוסים של בינה מלאכותית (AI Prototyping)
וידאו
1 דק'
08/2023
AI for Data Analysts
כלי AI שיעזרו לכם בניתוחי עומק ועבודות אנליטיקה, ושימוש במתודולוגית יצירת הכלים ואופטימיזציה לתהיליכים יומיומיים
פודקאסט
22 דק'
08/2023
222: איך לשלב Generative AI במוצר שלכם (מירב פרלמוטר, Tastewise)
אנחנו מדברים על איך לשלב Gen AI במוצר בצורה נכונה, לאיזה מוצרים כדאי לשלב AI במוצר שלהם, ולמי זה לא מתאים.
וידאו
54 דק'
06/2023
כלים בפרודוקטיביות: כלי AI שיעזרו לכם לרוץ מהר יותר
רות השקס, Senior Data Scientist ב-monday.com, מסבירה על מה מדברים כשמדברים על AI, ונוגעת בכלים ספציפיים שיהפכו את היום יום שלנו ל יותר יעיל
בלוג
4 דק'
09/2023
חברו הטוב ביותר של המנכ״ל - איך ניתן להשתמש בכלי Generative AI בעבודה היומיומית?
פודקאסט
34 דק'
08/2023
221: איך AI יכול לייצר יתרון תחרותי לסטארטאפים בתחילת הדרך
אנחנו מדברים על איך סטארטאפים בתחילת הדרך יכולים להשתמש ב-AI כדי לרוץ מהר יותר ולייצר לעצמם יתרון תחרותי, גם מול חברות גדולות בהרבה
פודקאסט
16 דק'
08/2023
220: AI למפתחים - שלושה כלים ואיך להשתמש בהם
אנחנו מדברים על מה ההזדמנות בשימוש ב-AI ב-R&D, וסוקרים שלושה כלי AI לאיפטום עבודת הפיתוח בסטארטאפ
בלוג
3 דק'
09/2023
ה-ChatGPT שלכם כבר לא יהיה אותו הדבר: הכירו את Custom Instructions
בלוג
5 דק'
08/2023
מה ארגונים שרוצים להטמיע Generative AI צריכים לדעת
פודקאסט
28 דק'
08/2023
219: איך משתמשים ב-AI בשירות לקוחות (אוהד הגדיש וזיו שכטמן)
אנחנו מדברים על איך אפשר להשתמש ב-AI כדי לאפטם ולייעל את מחלקת ה-CX בסטארטאפ, ועל האתגרים שמגיעים עם זה.
הניוזלטר שלנו
הירשמו וקבלו עדכונים על פרקים חדשים, כתבות, אירועים ועוד הפתעות!
רוצים לקחת חלק בשיתוף ידע?
אם גם אתם רוצים להצטרף למשימה שלנו להעשיר את האקוסיסטם בידע ותובנות, אם אתם רוצים לשאול אותנו משהו, אם אתם מרגישים שיש משהו שעזר לכם וכולם צריכים לדעת, נשמח לשמוע.
Startup for Startup