שיתוף

Nov 14, 2024

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

Scott Werner

מנכ"ל Sublayer

פייג' ביילי

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

וישאל דהרמדיקארי

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

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

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

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

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

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

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

‫— אומר סקוט ורנר, מנכ"ל 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  
          
            
          

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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