Udostępnij

14 listopada 2024 r.

Ulepszanie narzędzi dla programistów wykorzystujących AI za pomocą interfejsu Gemini API

Scott Werner

CEO of Sublayer

Paige Bailey

Inżynier ds. wrażeń dla programistów AI

Vishal Dharmadhikari

Inżynier ds. rozwiązań produktowych

Tekst główny prezentujący podwarstwę

W ubiegłym roku uczynienie sztucznej inteligencji bardziej dostępnej dało deweloperom 2 duże możliwości: niezwykle łatwą integrację najnowocześniejszych technologii AI w ich projektach oraz zwiększenie wydajności procesu tworzenia oparte na AI.

Sublayer, framework agenta AI oparty na Ruby, demonstruje moc i wydajność interfejsu Gemini API, integrując nasze modele 1.5 w swojej podstawowej ofercie dla deweloperów, a także we własnych przepływach pracy narzędzi.

Aktualizowanie dokumentacji Sublayer zgodnie z Gemini

Jedną z możliwości, jakie daje AI deweloperom, jest umożliwienie zespołom, zwłaszcza małym startupom na wczesnym etapie rozwoju, osiągania lepszych wyników przy mniejszych nakładach. W przypadku wielu osób może to być coś tak prostego, a jednocześnie ważnego jak dokumentacja. W ramach własnych procesów Sublayer integruje swoją bibliotekę z Gemini 1.5 Pro i tworzy automatyzacje AI, aby ułatwić aktualizowanie dokumentacji i identyfikowanie obszarów wymagających poprawy.

„To wszystko dlatego, że ogromne okno kontekstu Gemini daje Ci przestrzeń do wypróbowania nowych pomysłów bez konieczności zagłębiania się w skomplikowane, zoptymalizowane implementacje”

– mówi Scott Werner, prezes firmy Sublayer, który niedawno opisał ten pomysł w artykule Waste Inferences! (Angielski)

Proces wygląda tak:

  1. Za każdym razem, gdy PR jest scalany z głównym repozytorium Sublayer, powoduje to, że pracownik zespołu zaczyna aktualizować dokumentację.

  2. Usługa generuje prompt zawierający całą zawartość biblioteki, całą dokumentację i wszystkie istotne treści z projektu PR wraz z instrukcjami dotyczącymi zadania, a następnie wysyła go do Gemini.

  3. Gemini zwraca wtedy wyniki ustrukturyzowane zawierające ścieżki do plików, nazwy i zawartość, które biblioteka Sublayer przekształca w obiekt do użycia.

  4. Na koniec agent wykorzystuje otrzymane uporządkowane informacje do utworzenia nowej gałęzi, wprowadzenia żądanych zmian w plikach i przesłania nowej wersji.

            
              
# 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  
          
            
          

Zobacz pełny kod przepływu pracy w przykładach kodu open source Sublayer

Po sukcesie pierwszego projektu zespół rozszerzył go o elementy monitorujące oddzielne repozytoria zasobów, aby skupić się na aktualizowaniu konkretnej strony katalogu dokumentów. Jest nawet podobne zadanie wykonywane w nocy, w którym Gemini analizuje bieżącą dokumentację, identyfikuje kilka obszarów wymagających ulepszenia, porządkuje je według wpływu, a następnie generuje jeden PR, który zespół Sublayer może sprawdzić każdego ranka.

Wprowadzanie AI do społeczności deweloperów Ruby za pomocą modeli Gemini

Oprócz zwiększania wydajności własnej infrastruktury i narzędzi dla programistów firma Sublayer obsługuje też modele Gemini w ramach podstawowej funkcjonalności usługi.

Misją Sublayer jest umożliwienie indywidualnym programistom i małym zespołom realizacji ambitnych projektów, które wcześniej były nieosiągalne ze względu na koszty lub złożoność. Skupiają się na automatyzacji żmudnych, czasochłonnych i powtarzalnych zadań – idealne zastosowanie dla AI. Może to być migracja kodu na dużą skalę, w której podobne operacje muszą być powtarzane tysiące razy, aż po codzienną wydajność osiąganą dzięki automatyzacji drobnych zadań z listy kontrolnej, które pochłaniają czas i energię.

Głównym wyzwaniem dla Sublayer jest wspieranie społeczności programistów Ruby, która jest stosunkowo zaniedbywana w ekosystemie AI. Dzięki integracji z Gemini firma ta mogła sprostać rosnącemu zapotrzebowaniu na obsługę Gemini w swoich narzędziach. Implementacja Gemini przez Sublayer jest bardzo wydajna i wymaga tylko około 60 linii kodu dzięki warstwie abstrakcji. Korzystają one ze strukturalnych danych wyjściowych, które współpracują z modelami w ramach jednoetapowego procesu iteracyjnego. Takie podejście upraszcza tworzenie i debugowanie, pomagając deweloperom w tworzeniu niezawodnych aplikacji.

„Podczas tworzenia aplikacji opartych na LLM podziel problem na jak najmniejsze możliwe komponenty” – radzi Werner. „Programy powinny być zaprojektowane tak, aby skutecznie obsługiwać dane wyjściowe modelu, co może nawet oznaczać celowe dodanie kroków, które użytkownik musi sprawdzić i edytować, zanim będzie mógł przejść dalej”.

Modele LLM – kluczowy element infrastruktury AI

Zdaniem Sublayer modele LLM, takie jak Gemini, są kluczowymi elementami infrastruktury, podobnymi do baz danych. Ich framework umożliwia bezproblemowe zintegrowanie wywołań zarówno Gemini 1.5 Pro, jak i Gemini 1.5 Flash, co pozwala pozyskiwać uporządkowane dane, których deweloperzy mogą używać w swoich aplikacjach. Takie podejście otwiera przed nami wiele możliwości, od wyodrębniania statystyk z różnych źródeł danych po generowanie kodu i przekształcanie baz kodu w różnych językach i bibliotekach. Sublayer wykorzystuje nawet modele Gemini, aby umożliwić użytkownikom generowanie nowych komponentów funkcjonalnych w ramach samego frameworka. Ta cecha „samoorganizowania się” zachęca do eksperymentowania i umożliwia użytkownikom szybkie testowanie nowych pomysłów.

„Gemini świetnie radzi sobie ze wszystkimi problemami, które nasz framework ma ułatwiać – generowanie kodu, dekompozycja zadań, wykonywanie instrukcji i generowanie nowych struktur danych na podstawie przykładów”

– Scott Werner, Sublayer

Co dalej?

W przyszłości firma Sublayer planuje wprowadzić platformę Augmentations.ai, która umożliwi udostępnienie tworzonych przez nią automatyzacji wszystkim zespołom programistycznym. Pierwsza wersja zawiera 2 narzędzia oparte na Gemini 1.5 Pro: semantyczne sprawdzanie kodu, które umożliwia zespołom tworzenie reguł sprawdzania kodu opartych na AI, które rozumieją kontekst i wspierają stosowanie sprawdzonych metod, oraz podsumowania tygodniowe, które przekształcają działania związane z rozwojem w różnych repozytoriach i narzędziach do zarządzania produktami w przydatne informacje dla kierownictwa.

Zamierzają nadal korzystać z modelu Gemini 1.5 Pro do wykonywania bardziej złożonych zadań i z modelu Gemini 1.5 Flash do obsługi funkcji, które wymagają mniejszego opóźnienia i są skierowane do użytkowników, ponieważ udostępniają coraz więcej narzędzi na platformie Augmentations. Te działania będą również owocować w ramach ich frameworku open source, umożliwiając społeczności Ruby korzystanie z nowych funkcji Gemini w miarę ich udostępniania, a także prowadzenie przez zespół Sublayer praktycznych testów.

Historia firmy Sublayer pokazuje przełomowy potencjał interfejsu Gemini API. To dowód na to, jak łatwo deweloperzy mogą integrować Gemini ze swoimi przepływami pracy, otwierając przed sobą mnóstwo możliwości innowacji i automatyzacji. Aby zacząć tworzyć rozwiązania z modelami Gemini, przeczytaj dokumentację interfejsu API.