שיתוף

14 בנובמבר 2024

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

סקוט וורנר

מנכ"ל Sublayer

פייג' ביילי

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

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

מהנדס פתרונות למוצרים

תמונה ראשית של שכבת משנה

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

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

עדכון המסמכים של שכבת המשנה עם Gemini

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

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

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

כך פועל התהליך:

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

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

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

  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  
          
            
          

קוד תהליך העבודה המלא זמין בדוגמאות של Sublayer בקוד פתוח

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

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

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

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

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

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

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

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

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

– סקוט וורנר (Scott Werner), שכבת משנה

המאמרים הבאים

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

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

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