שיתוף

14 בנובמבר, 2024

שיפור כלים למפתחים שמבוססים על AI באמצעות Gemini API

סקוט ורנר (Scott Werner)

מנכ"ל Sublayer

פייג' ביילי (Paige Bailey)

מהנדס חוויית מפתחים בתחום ה-AI

וישאל דהרמדיקארי (Vishal Dharmadhikari)

מהנדס פתרונות מוצר

תמונה ראשית של תצוגה של Sublayer

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

Sublayer, מסגרת של סוכן AI מבוססת Ruby, מדגימה את העוצמה והיעילות של Gemini API על ידי שילוב המודלים שלנו מסדרה 1.5 בהצעה העיקרית למפתחים וגם בתהליכי העבודה של כלי הפיתוח שלהם.

לשמור על מאמרי עזרה של Sublayer עדכניים באמצעות Gemini

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

"הכול התחיל כי חלון ההקשר הענק של Gemini באמת נותן לכם שקט לנסות רעיונות חדשים בלי להסתבך עם יישומים מורכבים ומותאמים כבר בהתחלה",

‫— כך לדברי סקוט ורנר (Scott Werner), מנכ"ל Sublayer, שכתב לאחרונה על הקונספט הזה במאמר Waste Inferences!

כך מתבצע התהליך:

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

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

  3. לאחר מכן, Gemini מגיב עם פלטים מובְנים שמכילים את נתיבי הקבצים, השמות והתוכן, וספריית ה-Sublayer ממירה אותם לאובייקט לשימוש.

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

            
              
# Get the diff from the PR
diff = GithubGetDiffAction.new(repo: repo, pr_number: pr_number).call

# Get the contents of the library repository and docs repository
code_context = GetContextAction.new(path: code_repo_path).call
doc_context = GetContextAction.new(path: doc_repo_path).call

# Use Gemini 1.5 Pro to decide whether this PR requires a documentation update
result = DocUpdateNecessityGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  diff: diff
).generate

# Use Gemini 1.5 Pro to generate suggested changes to the documentation
doc_update_suggestions = DocUpdateSuggestionGenerator.new(
  code_context: code_context,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list,
    diff: diff
).generate

# Use Gemini 1.5 Pro to generate the changes to the suggested files
file_updates = DocUpdateGenerator.new(
  code_context: code_context,
  suggestions: suggestions,
  doc_context: doc_context,
  context_ignore_list: context_ignore_list
).generate

# Update each of the files returned by Gemini 1.5 Pro and create a new PR  
          
            
          

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

קהילת מפתחי Ruby יכולה ליהנות מהיכולות של AI עם מודלים של Gemini

בנוסף לשיפור היעילות של התשתית וכלי הפיתוח שלהם, Sublayer תומכת גם במודלים של Gemini במסגרת הפונקציונליות של מוצר הליבה שלהם.

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

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

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

מודלים גדולים של שפה (LLM), שהם חלק מרכזי בתשתית ה-AI

עבור Sublayer, מודלים מסוג LLM כמו Gemini הם חלקים חיוניים בתשתית, בדומה למסדי נתונים. ה-framework שלהם נועד לשלב בצורה חלקה קריאות ל-Gemini 1.5 Pro ול-Gemini 1.5 Flash, ולאחזר נתונים מובנים שמפתחים יכולים להשתמש בהם בקלות באפליקציות שלהם. הגישה הזו פותחת עולם של אפשרויות, החל מהפקת תובנות ממקורות נתונים מגוונים ועד ליצירת קוד ולשינוי codebases בשפות ובספריות שונות. ‫Sublayer אפילו משתמשת במודלים של Gemini כדי לאפשר למשתמשים ליצור רכיבים פונקציונליים חדשים ב-framework עצמו. המאפיין הזה של "הרכבה עצמית" מעודד ניסויים ומאפשר למשתמשים לבדוק רעיונות חדשים במהירות.

‫"Gemini מצוין בלפתור את כל הבעיות שה-framework שלנו נועד להקל עליהן – יצירת קוד, פירוק משימות, ביצוע הוראות ויצירת מבני נתונים חדשים על סמך דוגמאות"

‫— סקוט ורנר, Sublayer

השלבים הבאים

במבט קדימה, ב-Sublayer מתכוננים להשיק את Augmentations.ai, פלטפורמה שהופכת את האוטומציות שהם יוצרים לזמינות לכל צוותי הפיתוח. הגרסה הראשונית שלהם תכלול שני כלים שמבוססים על Gemini 1.5 Pro: ‏ Semantic Linting, שמאפשר לצוותים ליצור כללי בדיקת קוד מבוססי-AI שמבינים את ההקשר ואוכפים שיטות מומלצות מתפתחות, ו-Weekly Summaries, שהופך פעילות פיתוח בכמה מאגרי קוד וכלי ניהול מוצרים לתובנות מעשיות לצוות הניהול.

הם מתכננים להמשיך להשתמש בשילוב של Gemini 1.5 Pro למשימות מורכבות יותר ו-Gemini 1.5 Flash לפונקציות שרגישות יותר לזמן האחזור, שגלויות למשתמשים, תוך שהם משיקים עוד כלים בפלטפורמת Augmentations. העבודה הזו גם תזין בחזרה את framework הקוד הפתוח שלהם, ותאפשר לקהילת מפתחי Ruby ליהנות מהפונקציונליות החדשה של Gemini כשהיא תצא, תוך הסתמכות על שימוש בעולם האמיתי על ידי צוות Sublayer.

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