Home » AGH 2023/24 » (Github) COPILOT – gdy sugestie systemu są silniejsze od naszych decyzji, ale ułatwia to nam pracę. Zjawisko nudge technology oraz ślepa wiara w treści generowane. Występowania zjawiska z perspektywy zawodowej.

Tagi

Wyróżnione posty

Zobacz też

Statystyki

  • 100
  • 616
  • 25 026
  • 7 315
  • 15

(Github) COPILOT – gdy sugestie systemu są silniejsze od naszych decyzji, ale ułatwia to nam pracę. Zjawisko nudge technology oraz ślepa wiara w treści generowane. Występowania zjawiska z perspektywy zawodowej.

Spread the love

Wprowadzenie GitHub Copilot, rewolucyjnego narzędzia wspomagającego programistów, zmusza nas do ponownego rozważenia natury naszych decyzji w procesie tworzenia kodu. Jednakże, gdy sugestie systemu stają się dominujące, stajemy wobec zjawiska znanego jako “nudge technology” – subtelne, ale potężne skłonienia, które kształtują nasze wybory. Czy ślepo ufamy generowanym treściom? Jak to wpływa na naszą pracę? Przyjrzyjmy się temu zjawisku z perspektywy zawodowej, odkrywając zarówno jego korzyści, jak i potencjalne wyzwania.

Czym jest Copilot

GitHub Copilot to narzędzie wspomagające kodowanie, które wykorzystuje sztuczną inteligencję do generowania fragmentów kodu na podstawie kontekstu dostarczonego przez użytkownika. Dzięki analizie milionów linii kodu, Copilot jest w stanie sugerować całe funkcje, klasy czy nawet pełne rozwiązania problemów programistycznych. To narzędzie jest szczególnie przydatne w przyspieszaniu procesu tworzenia oprogramowania, redukując czas potrzebny na pisanie kodu oraz wyszukiwanie odpowiednich rozwiązań.

Zostało ono opracowane przez GitHub oraz OpenAI i pomaga użytkownikom zintegrowanych środowisk programistycznych (IDE) Visual Studio Code, Visual Studio, Neovim i JetBrains. Obecnie dostępne w ramach subskrypcji dla indywidualnych programistów i firm, zostało po raz pierwszy ogłoszone przez GitHub 29 czerwca 2021 r. i działa najlepiej w przypadku użytkowników piszących w językach Python, JavaScript, TypeScript, Ruby i Go. W marcu 2023 r. GitHub ogłosił plany dotyczące „Copilot X”, który obejmie chatbota opartego na GPT-4, a także obsługę poleceń głosowych w Copilocie.

Co myśli środowisko na temat Copilota?

Wprowadzenie nowych narzędzi w dziedzinie technologii i programowania niemal zawsze wywołuje mieszane uczucia wśród specjalistów. GitHub Copilot, asystent kodowania oparty na sztucznej inteligencji, nie jest wyjątkiem. Od momentu jego wprowadzenia, reakcje społeczności programistycznej oscylują między entuzjazmem a sceptycyzmem. Z jednej strony, Copilot obiecuje znaczne przyspieszenie procesu tworzenia kodu, co jest szczególnie kuszące w dynamicznie rozwijającej się branży IT. Z drugiej strony, pojawiają się obawy dotyczące jakości generowanego kodu, potencjalnego wpływu na rynek pracy programistów oraz etycznych aspektów korzystania z modeli opartych na danych zgromadzonych z publicznych repozytoriów. To właśnie te skrajne emocje i zróżnicowane opinie w środowisku programistycznym stanowią fascynujący temat do analizy w kontekście nowoczesnych narzędzi wspomagających kodowanie.

Konkretnym przykładem jest praca pt. AI in software programming: understanding emotional responses to GitHub Copilot. Autorzy pracy przeanalizowali ponad 100 000 wpisów na X-sie dotyczących Github Copilota i podzielili je według emocji, które najprawdopodobniej towarzyszyły twórcom wpisów: Loss, Deterrence, Challenge, Scepticism, Achievement, Apathy. Wyjaśnienia powyższych emocji autorzy pracy zamieścili w swojej publikacji:

 

Wyjaśnienie poszczególnych emocji X-owiczów opisanych przez autorów pracy

Wyniki badań są zaprezentowane poniżej:

Wyniki badań

Z wyników tych można wywnioskować, że emocje Challenge oraz Achievement stanowią ponad 50% przebadanych wpisów, czyli emocje od neutralnych do pozytywne przeważają. Pośród negatywnych odczuć można zauważyć częste wątpliwości autorów wpisów odnośnie praw autorskich do kodu, na którym Copilot został nauczony. Takie odczucia towarzyszyły emocjom Loss i Deterrence, które stanowiły ponad 20% badanych wpisów. Obawa o słabą jakość kodu generowanego przez Copilota wyraziło 9% wpisów, w emocji określonej jako Sceptism. 

Podsumowując, większość X-owiczów wyraża pozytywne opinie na temat Copilota, natomiast wśród negatywnych opinii przeważa kwestia praw autorskich do kodu, na którym Copilot się nauczył, a nie kwestia zastąpienia inżynierów oprogramowania przez sztuczną inteligencję.

Przykład z życia

Na stronie scalablepath.com we wrześniu 2022 roku ukazał się ciekawy artykuł o użyciu Github Copilota z perspektywy Senior Fullstack Developera. Autor przetestował to narzędzie na kilku powszechnie używanych technologiach, w tym React.js oraz PHP. Wykonał kilka testów, które polegały na napisaniu przez Copilota kilku fragmentów kodu w aplikacjach.

Wyniki tych testów różnią się w zależności od złożoności zadania oraz użytych technologii. Copilot lepiej poradził sobie z zadaniami w React.js niż w PHP. W wielu miejscach Copilot dokładnie odgadł intencje programisty (Na przykład przy obsługiwaniu braku uprawnień we frameworku PHP Laravel). W innych testach kod napisany przez Copilota wyglądał na “prawie idealny”, jednak zawierał błędy lub nie do końca zrozumiał intencje programisty, co jednak często nie było widoczne na pierwszy rzut oka.

Autor artykułu napisał również swoją opinię na temat Copilota. Sugerował on, że Copilot jest świetnym narzędziem, które przyspiesza pracę programisty i automatyzuje niektóre żmudne aspekty pracy z kodem. Ufanie na 100% sugestiom Copilota uważa za proszenie się o kłopoty – system ten nie jest w stanie od początku do końca napisać działającego, odpornego na błędy kodu, lecz często wymaga on licznych poprawek lub wybrania lepszych sugestii. Autor przestrzega również przed używaniem Copilota przez niedoświadczonych programistów – sugeruje, że błędne sugestie podsuwane przez Copilota mogą zbyt mocno wejść w nawyk nowicjuszom i skutecznie utrudnić im rozwój w tej dziedzinie.

Nudge Technology

Nudge technology, czyli technologia delikatnego popchnięcia, odnosi się do metod wpływania na decyzje użytkowników w subtelny, często niezauważalny sposób. To pojęcie wywodzi się z teorii ekonomii behawioralnej, a dokładniej z pracy Richarda Thalera i Cass Sunsteina, którzy w swojej książce “Nudge: Improving Decisions About Health, Wealth, and Happiness” opisali, jak drobne zmiany w otoczeniu mogą znacząco wpływać na wybory ludzi, bez odbierania im swobody decyzyjnej.

W kontekście technologii, nudge może przybierać różne formy, takie jak interfejsy użytkownika, powiadomienia, rekomendacje czy algorytmy sugestii. Celem jest skierowanie użytkowników ku określonym działaniom lub wyborom, które są uważane za korzystne, zarówno dla nich samych, jak i dla twórców technologii. W przypadku GitHub Copilot, nudge technology objawia się poprzez sugestie kodu generowane w czasie rzeczywistym:

  • Sugestie kodu: Copilot oferuje konkretne fragmenty kodu, które użytkownik może zaakceptować lub odrzucić. Te sugestie są często bardzo trafne i mogą znacząco przyspieszyć proces pisania kodu.
  • Poprawa błędów: Copilot może sugerować poprawki do istniejącego kodu, wskazując na potencjalne błędy i oferując optymalne rozwiązania.
  • Przykłady implementacji: Gdy użytkownik napotyka problem, Copilot może zaproponować gotowe rozwiązania oparte na szerokiej bazie kodów, co może prowadzić do szybszego rozwiązania problemu.

Przyjrzymy się bliżej zaletom i wadom nudge technology w kontekście GitHub Copilot, analizując, jak te subtelne formy wpływania mogą zarówno wspierać, jak i ograniczać pracę programistów.

Zalety:

  • Efektywność kodowania: GitHub Copilot może znacznie przyspieszyć proces tworzenia oprogramowania poprzez szybkie generowanie fragmentów kodu na podstawie kontekstu.
  • Zwiększenie produktywności: Dzięki szybkiemu dostępowi do gotowych fragmentów kodu, programiści mogą skupić się na rozwiązywaniu bardziej złożonych problemów, co może przyspieszyć cały proces tworzenia oprogramowania
  • Nauka poprzez przykład: Korzystanie z GitHub Copilot może być edukacyjne, ponieważ użytkownicy mogą uczyć się nowych technik programistycznych i najlepszych praktyk poprzez analizę sugerowanych rozwiązań.

Wady:

  • Zależność od narzędzia: Nadmierne poleganie na GitHub Copilot może prowadzić do ograniczenia umiejętności samodzielnego rozwiązywania problemów i kreatywnego myślenia przez programistów.
  • Ryzyko błędów: Sugestie Copilota mogą być generowane na podstawie niewłaściwego lub niepełnego zrozumienia kontekstu, co może prowadzić do błędnych lub nieoptymalnych rozwiązań.
  • Ślepa wiara w sugestie: Istnieje ryzyko, że użytkownicy mogą zaakceptować sugestie Copilota bez właściwej analizy, co może prowadzić do nieświadomego włączenia błędów lub nieoptymalnych rozwiązań do ich projektów.

Ślepa wiara w treści generowane

Wraz z dynamicznym rozwojem sztucznej inteligencji (AI) i jej narzędzi, takich jak GitHub Copilot, wśród programistów pojawia się coraz więcej pytań dotyczących zaufania do generowanych treści. Ślepa wiara w generowane przez AI treści to zjawisko, w którym użytkownicy bezrefleksyjnie akceptują sugestie, traktując je jako bezbłędne i najlepsze możliwe rozwiązania. Może to prowadzić do wprowadzania błędów do projektów oraz ograniczać umiejętność samodzielnego myślenia i kreatywnego rozwiązywania problemów. Zjawisko to jest szczególnie niepokojące w kontekście programowania, gdzie jakość kodu i bezpieczeństwo są kluczowe.

Wpływ na cyberbezpieczeństwo

Przykładów zbyt silnego zaufania do sztucznej inteligencji jest wiele, choć najbardziej niebezpieczne wydają się być te w obszarze cyberbezpieczeństwa. Bardzo obszernie problem ten został opisany w publikacji pt. AI hype as a cyber security risk: the moral responsibility of implementing generative AI in business. Autorzy w tej publikacji wskazują na różne problemy wynikające ze zbyt dużego zaufania do generatywnego AI:

  • Cyberprzestępcy również korzystają z generatywnego AI i dzięki temu mogą domyślić się jakie rozwiązanie zaproponuje AI dla pewnych problemów i wykorzystać to na swoją korzyść – a nuż jakiś naiwny specjalista od cyberbezpieczeństwa nie upewni się wystarczająco i skopiuje niesprawdzone rozwiązanie od generatywnego AI.
  • Dane do treningu mogą zostać zatrute, co oznacza ingerencję osoby trzeciej w ich zawartość. Taka możliwość występuje na przykład przy tworzeniu customowych GPT (personal GPT), które OpenAI udostępniło w 2023 roku. Haker mógłby wyszkolić taki model w taki sposób, aby celowo podpowiadał rozwiązania z lukami bezpieczeństwa, które następnie może wykorzystać. Zradykalizowane osoby i organizacje, na przykład o profilu terrorystycznym, mogłyby próbować zaśmiecać przestrzeń internetową rozwiązaniami różnych problemów wrażliwymi na atak, a nieświadome niczego modele, mówiąc kolokwialnie, łykałyby wszystko jak pelikany. W ten sposób można by wyrządzić niewyobrażalne wręcz szkody we wszystkich branżach na praktycznie całym świecie.
  • Dane treningowe do modeli mogą wyciec, gdyż nieświadome niczego modele mogą spróbować pochwalić się nimi, jeżeli zapytamy je o to sprytnym promptem. Tego typu atak nazwany został prompt injection i prowadzić może do poznania, przez cyberprzestępców, metod i procedur zabezpieczeń używanych np. w korporacjach.

Problemy te już zbierają żniwa w postaci ogromnych strat. Autorzy wskazują kilka przykładów: jednym z nich jest sytuacja w Samsungu, który zakazał używania ChataGPT swoim pracownikom, gdyż na tyle mu ufali i bywali na tyle zdesperowani, że bez zastanowienia do promptów wkładali wrażliwe dane firmy. Salesforce uruchomiło program kosztujący 360 000$ rocznie, aby przeciwdziałać skutkom umieszczania w modelach generatywnego AI wrażliwych informacji.

W trakcie researchu nie udało nam się znaleźć konkretnych przykładów, gdzie nadmierne zaufanie do AI przez programistów było bezpośrednią przyczyną podatności systemu. Trzeba jednak przyznać, że jest to tylko kwestia czasu aż to się wydarzy, o ile nie wydarzyło się już kilka razy, tylko nikt nie podał do publicznej wiadomości, że to właśnie AI stworzyło lukę w systemie. A jest to tym bardziej prawdopodobne, że w cytowanej przez autorów pracy pt. Asleep at the keyboard? assessing the security of github copilot’s code contributions wykazano, że nawet 40% sugestii Github Copilota może zawierać luki bezpieczeństwa.

Nasza perspektywa

Jako autorzy tego artykułu, z bliska przyglądamy się, jak technologia sztucznej inteligencji, na przykład GitHub Copilot, zmienia codzienność programistów. Nasze obserwacje wskazują na to, że chociaż Copilot oferuje wygodne i wydajne sugestie kodu, które mogą znacząco przyspieszyć proces tworzenia oprogramowania, pojawiają się również pewne wyzwania. Z naszego punktu widzenia, kwestia polegania na generowanych przez AI rozwiązaniach otwiera dyskusję na temat nudge technology, gdzie subtelne sugestie mogą kierować naszymi wyborami. Zastanawiamy się, jak to wpływa na niezależność naszych decyzji zawodowych i w jakim stopniu powinniśmy ufać tym automatycznym podpowiedziom. W tej sekcji dzielimy się naszymi przemyśleniami na temat konsekwencji, jakie niesie za sobą korzystanie z takich narzędzi, oraz wyzwań etycznych i praktycznych, z którymi musimy się zmierzyć w kontekście naszej pracy.

Z perspektywy Autora 1

Sam osobiście nie używałem nigdy Github Copilota, więc moje doświadczenia mogę oprzeć na innych generatywnych AI, na przykład ChatGPT.

Narzędzia te dobrze nadają się do tworzenia prostych i powtarzalnych fragmentów kodu. Jako przykład mogę podać prośbę o wylistowanie najczęściej używanych kolorów w stylistyce MaterialUI od Google. Jest to zadanie proste, jednak wymagałoby trochę czasu – trzeba odnaleźć w dokumentacji biblioteki listy kolorów oraz ich kody, natomiast ChatGPT od razu wylistował je wszystkie. Następnie można poprosić AI o ułożenie znalezionych kodów w postaci listy lub tablicy w dowolnym języku programowania i voila! Otrzymujemy kod gotowy do wklejenia w IDE, który ma dużą szansę zadziałać.

Innym zadaniem, z którym ChatGPT radził sobie dobrze jest prośba o sugestię rozwiązania problemu. Zamiast przeszukiwać całą dokumentację lub Stack Overflow w poszukiwaniu rozwiązania, można o możliwe rozwiązania zapytać generatywne AI. Często zdarzało mi się, że choć kod, który wytworzyło AI nie działał, to jednak zastosował w nim elementy, których długo szukałem i po kilku poprawkach można było zastosować je w kodzie.

Fragment Odpowiedzi ChataGPT na pytanie o to jak zamieniać tablicę intów na bajty i na odwrót w języku Ruby

Jednak, z mojego punktu widzenia ChatGPT czy Codex nie potrafi wiele więcej. Bardziej nietrywialne pytania pokonują modele od OpenAI na różne sposoby. Zdarza im się tworzyć kod, który nie ma żadnego sensu, gdyż najprawdopodobniej nie były w stanie zrozumieć sensu pytania im zadanego. Jednak jeżeli udało już się zrozumieć pytanie, generatywne AI w swoich rozwiązaniach potrafi używać funkcji, czy nawet całych bibliotek, które nigdy nie istniały. Z punktu widzenia modelu AI, utworzył on kod który ma sens i w sprytny sposób rozwiązał zadany problem, ale z punktu widzenia programisty to rozwiązanie jest bezużyteczne.

Odpowiedź ChatGPT na prośbę o wygenerowanie kodu, który znajdzie rozkład wraz z paramterami, które będą najlepiej pasować do zadanych danych. Kod ten jest błędny, gdyż obiekt best_fit_distribution nie posiada metody pdf.

Z perspektywy Autora 2

Również nie korzystałem z GitHub Copilota, a tylko z ChatGPT-3.

Używam go głównie do prostych rzeczy, których nie muszę w standardowy sposób googlować, a pytam się po prostu ChatGTP. Wiele razy pytałem się go o przykład poniżej, aż to zapamiętałem i zrozumiałem, więc można powiedzieć, że spełnia rolę zarówno pomocniczą, jak i dydaktyczną.

Sortowanie słownika w Pythonie po wartościach.

Potrafi również na podstawie ogólnych wzorców dostosować te programy pod moje potrzeby. Niestety czasem robi to źle, więc w takim przypadku pozostaje znalezienie odpowiedzi na StackOverflow, czy z tutoriali na YouTube. Właśnie z powodu takich przypadków uważam, że na ten moment takie narzędzia nie są w stanie zastąpić programistów, bo po prostu czasem one się mylą oraz wymagają skontrolowania i poprawy przez człowieka.

Podsumowując moje doświadczenia to takie narzędzia jak Github Copilot czy ChatGTP potrafią znacząco przyspieszyć pracę programisty, ale trzeba być jeszcze bardzo ostrożnym, ponieważ te programy mogą się jeszcze mylić.

Podsumowanie

GitHub Copilot to potężne narzędzie, które może znacząco zwiększyć efektywność pracy programistów, oferując inteligentne sugestie kodu w czasie rzeczywistym. Jednakże, z perspektywy zawodowej, ważne jest, aby użytkownicy byli świadomi potencjalnych pułapek związanych z nadmiernym poleganiem na automatycznych podpowiedziach. Nudge technology, jako zjawisko wpływające na decyzje użytkowników, podkreśla potrzebę zachowania zdrowego balansu między korzystaniem z nowoczesnych narzędzi a rozwijaniem własnych umiejętności i krytycznego myślenia. Dzięki temu, GitHub Copilot może być wartościowym wsparciem, a nie zastępstwem dla profesjonalnej wiedzy i doświadczenia programistów.

Źródła

https://www.emerald.com/insight/content/doi/10.1108/ITP-01-2023-0084/full/pdf?title=ai-in-software-programming-understanding-emotional-responses-to-github-copilot

https://www.scalablepath.com/full-stack/ai-pair-programming-github-copilot-review

https://link.springer.com/article/10.1007/s43681-024-00443-4

https://arxiv.org/abs/2108.09293

https://github.com/features/copilot

Leonard, Thomas C. “Richard H. Thaler, Cass R. Sunstein, Nudge: Improving Decisions about Health, Wealth, and Happiness: Yale University Press, New Haven, CT, 2008, 293 pp, $26.00.” (2008): 356-360.



 


Leave a comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze komentarze

  1. Ciekawe jest porównanie tradycyjnej terapii z nowymi rozwiązaniami opartymi na modelach językowych. Warto zauważyć, że mimo obiecujących wyników, istnieją ważne…