Kilka słów o AI Assistant od JetBrains

Przez ostatni tydzień testowałem JetBrains AI, eksplorując jego możliwości w codziennej pracy.

🚀 Pierwsze wrażenia

Nie jest to moje pierwsze zderzenie z tego typu rozwiązaniem. Wcześniej testowałem przez dłuższy czas GitHub Copilot, lokalne rozwiązanie za pomocą pluginu Continue w połączeniu z Ollama z modelem llama3.1:8b do czatu oraz modelem qwen2.5-coder:1.5b-base do podpowiedzi w kodzie. Miałem też krótką przygodę z Cursorem. Pierwszą rzeczą, która wyróżnia JetBrains AI, jest fakt, że stanowi integralną część IDE, niejako jego uzupełnienie. Dzięki temu wszystkie opcje doskonale wpasowują się w aplikację, tworząc spójną całość.

Code Completion

JetBrains oferuje Full Line Completion działający lokalnie oraz bardziej rozbudowany moduł AI działający w chmurze.

Full Line Completion

  • Działa lokalnie na urządzeniu użytkownika, bez wysyłania kodu przez internet
  • Używa lokalnego modelu uczenia maszynowego
  • Sugeruje tylko pojedyncze linie kodu
  • Jest wbudowaną funkcją IDE, która nie wymaga AI Assistant

Inline Code Completion (AI Assistant)

Bierze pod uwagę:

  • język programowania i technologie używane w projekcie
  • lokalne zmiany
  • commity z systemu kontroli wersji
  • kontekst projektu

Dzięki asystentowi AI możemy bezpośrednio z edytora kodu skorzystać z integracji z chatem. Aby wyświetlić menu AI Actions, możemy skorzystać z kombinacji (opt + enter). Do dyspozycji mamy kilka opcji:

Generate code (cmd + \)

  • Generuje kod na podstawie opisu

Explain Code

  • Analizuje i wyjaśnia zaznaczony fragment kodu

Suggest Refactoring

  • Proponuje ulepszenia i optymalizacje kodu
  • Pozwala porównać zmiany w widoku diff
  • Można zaakceptować wszystkie lub wybrane zmiany

Find Problems

  • Analizuje kod pod kątem potencjalnych problemów i błędów. Zdarzało mi się z niego korzystać, gdy ESLint wykrył błąd.

Write Documentation

  • Tworzy dokumentację kodu w postaci komentarza

Generate Unit Tests

  • Generuje testy w nowym pliku, stosując odpowiednią konwencję, np. *.test.ts. Więcej o tym w sekcji dotyczącej testów.

Warto zaznaczyć, że AI w tym przypadku jest dość oszczędne w podpowiedziach. Rzadko kiedy zdarzało mu się, aby wygenerował więcej niż kilka linii.

🗣️ Chat

Oprócz podpowiedzi inline mamy oczywiście dostęp do chatu. Możemy tutaj wybrać model — ja korzystałem głównie z Claude 3.5 Sonnet (pod koniec moich testów pojawiła się już wersja 3.7, ale nie została jeszcze tutaj dodana). Co ciekawe, sam plugin umożliwia również korzystanie z lokalnego modelu LLM przez wspomnianą wcześniej Ollamę. Kontekst automatycznie obejmuje otwarte pliki, co możemy dostosować do własnych potrzeb.

Ciekawym rozwiązaniem są również wbudowane komendy:

  • /docs - wyszukuje w dokumentacji JetBrains informacji na dany temat
  • /explain - służy do analizy i wyjaśnienia kodu
  • /help - pokazuje listę dostępnych komend i ich opis
  • /refactor - pomaga w refaktoryzacji kodu poprzez sugestie usprawnień Dzięki nim możemy zasugerować AI, w jaki sposób ma przeanalizować prompt. Sam prompt może być również spersonalizowany w ustawieniach. Każdy rozpoczęty czat jest zapisywany i dostępny z poziomu listy.

Podsumowanie

Biorąc pod uwagę wszystkie powyższe kwestie, naprawdę ciężko mi się do czegokolwiek przyczepić. JetBrains AI Assistant to bardzo solidne narzędzie i z czystym sumieniem mogę je polecić. Już po krótkim czasie wiem, że zostanę z nim na dłużej.