System-wide ChatGPT z Node.js
System-wide ChatGPT z Node.js
Cześć !
Witaj w kolejnym wydaniu newslettera Ahoy Dev! Dzisiaj będzie nieco dłuższa wiadomość z artykułem od Adama Gospodarczyka i jak zawsze porcją ciekawych linków i newsów.
Pamiętaj, że jak zawsze możesz dać mi znać co sądzisz o tym newsletterze w dedykowanej do tego ankiecie - dzięki!
Trzymaj się!
Jarek
System-wide ChatGPT z Node.js
Cześć 👋 Przygotowałem proste CLI w node.js umożliwiające nawiązanie połączenia z ChatGPT oraz wykorzystanie go w dowolnym miejscu w którym można wpisać tekst. W praktyce zawartość schowka zostaje przekazana do aplikacji node.js wysyłającej zapytanie do ChatGPT. Odpowiedź zostaje zapisana w schowku i wklejona w pole tekstowe.
Oto przykład z iA Writer:
Przygotowane przeze mnie CLI wykorzystuje to repozytorium: https://github.com/transitive-bullshit/chatgpt-api a więc konieczne jest pobranie access tokenu z ChatGPT.
⚠️ Trudno powiedzieć czy to "nieoficjalne" wykorzystanie nie jest sprzeczne z regulaminem. Poza tym nie zachowuje kontekstu, ponieważ każde zapytanie traktowane jest indywidualnie. Sprawdza się świetnie do wyjaśniania pojedynczych zagadnień.
Tak wygląda makro obsługujące CLI:
A tak sam kod aplikacji. W zasadzie jest to żywcem skopiowany przykład z modyfikacją dotyczącą przyjmowania argumentów i pobrania wartości z .env.
W przypadku Keyboard Maestro wartość która zostanie zwrócona w konsoli, zostanie zapisana do zmiennej gptanswer a zaraz potem wklejona w miejsce w którym aktualnie znajduje się kursor.
Instalacja
Zakładam, że node.js macie już zainstalowane. Jeżeli nie, konieczna jest jedna z nowszych wersji. Sam pracuję na 19. Poza tym do obsługi zmiennych środowiskowych wykorzystuję env-cmd, więc również trzeba mieć do niego dostęp (npm i -g env-cmd). Samo CLI uruchamiane jest z poziomu makra Keyboard Maestro i w jego przypadku należy dostosować ścieżki. Mianowicie w tej akcji:
Trzeba upewnić się, że ścieżki do env-cmd, .env, node oraz app.js są poprawne. Można je wszystkie odnaleźć z pomocą polecenia which env-cmd, which node itd. A położenie .env i .app.js będzie zależeć od katalogu w którym zostanie zapisane przygotowane przeze mnie CLI.
Po pobraniu projektu należy zainstalować zależności oraz utworzyć plik .env z jednym kluczem
CHATGPT_TOKEN=
ustawionym na token, którego instrukcja pobrania znajduje się tuta jhttps://github.com/transitive-bullshit/chatgpt-api
No i samo uruchomienie makro Keyboard Maestro wymaga zaimportowania go do aplikacji oraz aktywowania (prawym przyciskiem na grupę makr → Activate Macro Group).
W zależności od obciążenia ChatGPT działa dość wolno. Warto nie uruchamiać tego makro wielokrotnie, ponieważ każda zwrócona odpowiedź zostanie wklejona w chwili gdy zapytanie zostanie wykonane.
Wykorzystanie
W zasadzie powyższy gif wszystko wyjaśnia. Piszę zapytanie, kopiuję do schowka i uruchamiam makro. Po kilku/nastu sekundach otrzymuję odpowiedź która jest wklejana przez Keyboard Maestro do edytora tekstowego.
Wydaje mi się że dobrym pomysłem w przypadku edytorów kodu będzie rozbudowanie makro Keyboard Maestro w taki sposób aby prosiło o podanie rozwiązania bez wyjaśnienia.
Kolejnym usprawnieniem będzie zbudowanie usługi działającej w tle, utrzymującej "konwersację" z możliwością rozpoczęcia jej od nowa. Niewykluczone że zbuduję taki skrypt ale jeżeli ktoś z Was będzie szybszy, chętnie przygarnę kod.
Ważne:
Jak informują twórcy GPT, jest to wczesna wersja. Jeżeli zdecydujecie się na wykorzystanie makro, upewnijcie się, że w zapytaniu nie wysyłacie żadnych niepublicznych informacji. Sam korzystam wyłącznie z opcji zadawania pytań i ewentualnie generowania bardzo pojedynczych fragmentów kodu czy przykładowych danych.
Pliki do pobrania
Kod źródłowy CLI
Makro Keyboard Maestro
Jeśli macie jakieś sugestie, lub pytania, to najlepiej zaadresować je do Adama w tym wątku na Ahoy.
Warto przeczytać:
Tydzień po tygodniu w Twitterze - mam wrażenie, że wątek Elon w Twitterze nieco ucichł, ale jeżeli korzystacie z twittera, to dalej może Was interesować, jak to wyglądało tydzień po tygodniu. Sam dalej jestem bardzo ciekaw, jak za kilka miesięcy/lat będziemy oceniać działania Elona. Geniusz? Szaleniec? Jak myslisz?
Wybór technologii - bardzo ciekawy artykuł na temat realnych i praktycznych problemów technologicznych, czyli jak wybrać konkretną technologię na przykładach. Trello wybiera Kafkę zamiast RabbitMQ, Birdle przechodzi na Micro Frontendy, MetalBear decyduje się na Rust. To wszystko w artykule.
W tym mailingu regularnie dotykamy trendów i przytaczamy opracowania na temat przyszłości programowania. Dzisiaj podrzucam Ci artykuł z pytaniem, co dalej z Reactem, a także o potencjalnym pożegnaniu z TypeScript. Jestem bardzo ciekaw, jakie jest Twoje zdane na temat przyszłości różnych języków i rozwiązań. Jeżeli chcesz podzielić się swoimi przemyśleniami w formie artykułu w ramach mailingu Full Stack Dev, to podeślij informację w odpowiedzi na tą wiadomość.
Skoro już jesteśmy przy pożegnaniach, to tutaj znajdziesz krótki artykuł o pożegnaniu ze złymi praktykami JS. Warto zajrzeć i zobaczyć, czy sami z nich nie korzystamy.
Lubisz nawiązywać relacje z innymi developerami? A może lubisz pojawiać się na konferencjach, lub przygotowywać artykuły i dzielić się wiedzą na video czy social mediach? Jeśli cokolwiek z tego brzmi ciekawie, to myślę, że może Cię zainteresować temat DevRel, czyli Developer Relations. Więcej na ten temat możesz przeczytać w tym artykule od Advocu oraz dodatkowo zaglądając na mojego Twittera. Serdecznie zapraszam!
Na Społeczności
Rozwijanie wielu projektówto często duże wyzwanie, a jednocześnie wspaniała przygoda, jeśli odpowiednio do tego podejdziemy. Na szczęście Adam dzieli się swoimi dobrymi praktykami na temat tego, jak to zrobić, żeby była większa szansa na sukces (bo pewności, to nikt nie da).
Denerwuje Cię konieczność sprawdzania wiadomości w róznych komunikatorach? Mnie bardzo. Na szczęście zaczynają się pojawiać rozwiązania, które mają ten ból ukrócić. O jednym z nich - Texts - wątek na Ahoyzałożył Grzegorz.
Polecane miejsca do pracy zdalnej - jeden z członków społeczności Ahoy rozpoczął niedawno projekt, w którym zbiera miejsca do pracy zdalnej. Jestem bardzo ciekaw osobiście, jak ta baza będzie się rozwijała. bo czasami brakuje mi takiej informacji, jak jestem w innym mieście.