Nov 14, 2024
Ulepszanie narzędzi dla programistów opartych na AI za pomocą Gemini API

Demokratyzacja AI w ostatnim roku otworzyła przed deweloperami 2 duże możliwości: niezwykle łatwe integrowanie najnowocześniejszych technologii AI z projektami oraz wprowadzanie do procesu tworzenia oprogramowania wydajności opartej na AI.
Sublayer, platforma agentów AI oparta na Ruby, pokazuje moc i wydajność interfejsu Gemini API, integrując nasze modele 1.5 z podstawową ofertą dla deweloperów, a także z własnymi przepływami pracy.
Aktualizowanie dokumentacji Sublayer za pomocą Gemini
Jedną z możliwości, jakie AI daje deweloperom, jest umożliwienie zespołom, zwłaszcza w małych startupach na wczesnym etapie rozwoju, osiągania lepszych wyników przy mniejszych nakładach. Dla wielu osób może to być coś tak prostego, a zarazem kluczowego jak dokumentacja. W swoich procesach Sublayer rozwiązuje ten problem, integrując swoją bibliotekę z Gemini 1.5 Pro i tworząc automatyzacje AI, które pomagają w aktualizowaniu dokumentacji i identyfikowaniu obszarów wymagających ulepszeń.
„Wszystko zaczęło się od tego, że ogromne okno kontekstu Gemini daje swobodę wypróbowywania nowych pomysłów bez konieczności od razu wdrażania złożonych, zoptymalizowanych rozwiązań”
Proces przebiega w ten sposób:
Za każdym razem, gdy żądanie scalenia zostanie scalone z głównym repozytorium Sublayer, wyzwala to działanie agenta, który aktualizuje dokumentację.
Agent generuje prompt, który zawiera całą zawartość biblioteki, całą zawartość dokumentacji i wszystkie istotne treści z żądania pull request wraz z instrukcjami wyjaśniającymi zadanie, a następnie wysyła go do Gemini.
Następnie Gemini odpowiada za pomocą danych wyjściowych w formacie strukturalnym zawierających ścieżki, nazwy i zawartość plików, które biblioteka Sublayer przekształca w obiekt do użycia.
Na koniec agent pobiera otrzymane informacje strukturalne i wykorzystuje je do utworzenia nowej gałęzi, wprowadzenia żądanych zmian w plikach i przesłania nowego żądania pull request.
# 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 open source Sublayer
Po sukcesie pierwszego projektu zespół rozszerzył zakres działania agentów, którzy monitorują oddzielne repozytoria zasobów, aby dbać o aktualność konkretnej strony katalogu dokumentów. Istnieje nawet podobne zadanie, które jest wykonywane w nocy. Gemini analizuje bieżącą dokumentację, wskazuje kilka obszarów, które można ulepszyć, klasyfikuje je na podstawie wpływu i generuje 1 zgłoszenie z prośbą o scalenie, które zespół Sublayer może przejrzeć każdego ranka.
Wprowadzanie AI do społeczności programistów Ruby za pomocą modeli Gemini
Oprócz zwiększania wydajności własnej infrastruktury i narzędzi dla deweloperów Sublayer obsługuje też modele Gemini w ramach podstawowych funkcji produktu.
Misją Sublayer jest umożliwienie indywidualnym programistom i małym zespołom realizacji ambitnych projektów, które wcześniej były poza ich zasięgiem ze względu na koszty lub złożoność. Koncentrują się na automatyzacji żmudnych, czasochłonnych i powtarzalnych zadań, co jest idealnym zastosowaniem AI. Może to obejmować migracje kodu na dużą skalę, w przypadku których podobne operacje trzeba powtarzać tysiące razy, a także codzienne usprawnienia osiągane dzięki automatyzacji małych zadań na liście 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. Integracja Gemini pozwoliła im sprostać rosnącemu zapotrzebowaniu na obsługę Gemini w ich narzędziach. Implementacja Gemini w przypadku Sublayer jest bardzo wydajna i dzięki warstwie abstrakcji wymaga tylko około 60 linii kodu. Korzystają z danych wyjściowych w formie strukturalnej, wchodząc w interakcję z modelami w ramach iteracyjnego procesu jednokrotnego. Upraszcza to proces tworzenia i debugowania, co pomaga deweloperom tworzyć niezawodne aplikacje.
„Podczas tworzenia aplikacji opartych na LLM podziel problem na jak najmniejsze komponenty” – radzi Werner. „Programy powinny być zaprojektowane tak, aby skutecznie przetwarzać dane wyjściowe modelu. Może to nawet oznaczać celowe dodanie kroków, w których człowiek sprawdza i edytuje dane przed przejściem do kolejnego etapu”.
LLM, czyli kluczowy element układanki infrastruktury AI
Dla Sublayer modele LLM, takie jak Gemini, są kluczowymi elementami infrastruktury, podobnie jak bazy danych. Ich platforma została zaprojektowana tak, aby bezproblemowo integrować wywołania modeli Gemini 1.5 Pro i Gemini 1.5 Flash, pobierając uporządkowane dane, które deweloperzy mogą łatwo wykorzystywać w swoich aplikacjach. Otwiera to świat 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 korzysta nawet z modeli Gemini, aby umożliwić użytkownikom generowanie nowych komponentów funkcjonalnych w ramach platformy. Ta cecha „samodzielnego składania” zachęca do eksperymentowania i umożliwia użytkownikom szybkie odkrywanie nowych pomysłów.
„Gemini świetnie radzi sobie z rozwiązywaniem wszystkich problemów, które nasz framework ma ułatwiać – generowaniem kodu, dzieleniem zadań na mniejsze części, wykonywaniem instrukcji i generowaniem nowych struktur danych na podstawie przykładów”.
Co dalej?
W przyszłości Sublayer zamierza uruchomić Augmentations.ai, czyli platformę, która udostępni tworzone przez firmę automatyzacje wszystkim zespołom deweloperskim. W pierwszej wersji znajdą się 2 narzędzia oparte na Gemini 1.5 Pro: Semantic Linting, które umożliwia zespołom tworzenie opartych na AI reguł sprawdzania kodu, które rozumieją kontekst i wymuszają stosowanie zmieniających się sprawdzonych metod, oraz Weekly Summaries, które przekształca aktywność deweloperską w wielu repozytoriach i narzędziach do zarządzania produktem w praktyczne statystyki dla kierownictwa.
Planują nadal korzystać z modelu Gemini 1.5 Pro do bardziej złożonych zadań i z modelu Gemini 1.5 Flash do funkcji, które są bardziej wrażliwe na opóźnienia i są przeznaczone dla użytkowników, ponieważ udostępniają więcej narzędzi na platformie Augmentations. Wyniki tych prac zostaną też uwzględnione w ramach open source, dzięki czemu społeczność Ruby będzie mogła korzystać z nowych funkcji Gemini, gdy tylko się pojawią. Będą one oparte na rzeczywistych zastosowaniach zespołu Sublayer.
Historia Sublayer pokazuje przełomowy potencjał interfejsu Gemini API. To dowód na to, jak łatwo deweloperzy mogą zintegrować Gemini ze swoimi przepływami pracy, co otwiera przed nimi świat możliwości innowacji i automatyzacji. Aby zacząć tworzyć rozwiązania z użyciem modeli Gemini, zapoznaj się z naszą dokumentacją interfejsu API.