Na większość maili odpisuję z użyciem sztucznej inteligencji, ale niekoniecznie tak, jak sobie to wyobrażasz.
Oto mój workflow 🧵 ↓
Uprzedzając pytania, wyjaśniam, że AI nie odpowiada za mnie na maile w sposób autonomiczny. Pomaga mi jedynie w szybkim generowaniu odpowiedzi na zapytania.
Szacuję, że pozwala mi to zaoszczędzić około 3-4h w skali tygodnia.
Rozwiązania używam już od ponad 2 miesięcy.
Jeśli chodzi o stack technologiczny, to wykorzystuję:
↳ Keyboard Maestro do obsługi skrótów klawiszowych
↳ PHP do napisania kodu backendu
↳ GPT-4o (konkretnie gpt-4o-2024-08-06) jako 'mózg'
↳ moją bazę notatek w postaci płaskiego pliku tekstowego
Jak wygląda mój workflow przy odpisywaniu?
Mam dwie sytuacje do ogarnięcia:
1) Odpisanie na CAŁEGO maila
2) Odpisanie na fragment maila/wiadomości (bo może to być np. tekst ze Slacka/FB itp.)
Niezależnie od tego, czy odpisuję na całość, czy fragment tekstu, za każdym razem zaznaczam po prostu tekst będący wejściem do mechanizmu.
Następnie naciskam na klawiaturze magiczny klawisz "Odpisz na maila" i wpisuję, co chcę odpisać, po czym naciskam ENTER.
Po kilku sekundach w schowku pojawia mi się gotowa odpowiedź, którą wklejam przez CTRL/CMD+V.
Dzięki temu, że rozwiązanie jest niezależne od aplikacji, mogę je stosować wszędzie (Gmail, Slack, Signal itp.).
Korzystam z klawiatury, na której mam trzy klawisze, z których nigdy nie korzystałem. Przeprogramowałem je więc tak, aby wykonywały ustalone przeze mnie akcje.
↳ Odpisywanie na maila
↳ Uruchamianie asystenta AI
↳ Zablokowanie ekranu
Jeśli mowa o asystencie AI, to korzystam z Alice — to pewnego rodzaju nakładka na wiele LLM-ów.
Bardzo przyjemne rozwiązanie do codziennego użytku.
heyalice.app/
Ale ja nie o tym! :)
W Keboard Maestro mam napisany scenariusz, który:
1) Kopiuje zaznaczony fragment tekstu
2) Wyświetla popupa systemowego z zapytaniem "Co odpisać?"
Gdy w oknie z odpowiedzią wpiszę tekst i nacisnę ENTER, używam Pythona i CURL-a do wysłania zarówno skopiowanego tekstu, jak i mojej odpowiedzi do skryptu PHP hostowanego gdzieś na moim koncie, na Mikrusie.
mikr.us
Otrzymaną od backendu odpowiedź wrzucam do schowka systemowego, a następnie odtwarzam dźwięk, abym wiedział, że mogę już coś wkleić do okna odpowiedzi.
Generowanie odpowiedzi zajmuje przeważnie od kilku do kilkunastu sekund, w zależności od długości maila.
OK, ale gdzie jest ta oszczędność czasu?!
Wyobraź sobie, że dostaję dłuuuugiego maila z zaproszeniem na konferencję. Niestety, termin mi nie odpowiada, bo koliduje z innym wystąpieniem.
Zaznaczam treść maila, klikam magiczny przycisk i wpisuję:
"jestem wtedy w Gdańsku"
Tak, dosłownie kilka słów wystarcza.
W odpowiedzi otrzymuję ładnie zredagowanego w moim stylu maila, gdzie dziękuję za zaproszenie, ale grzecznie odmawiam, ponieważ akurat w tym terminie występuje na innej konferencji, ale w Gdańsku. Dopisuję, że może za rok się uda.
Jeśli przypomina Ci to słynnego mema, to musisz wiedzieć, że był on dla mnie inspiracją 😉
No OK, ale wszystko muszę napisać, bo GPT-4o nic nie wie na mój temat?
Wie na mój temat wszystko, co jest mu potrzebne do pracy.
Dodatkowo zna linki do dokumentacji, które często wklejam, ceny moich produktów w sklepie, standardowe odpowiedzi na pytania przedzakupowe itp.
Skąd ta wiedza?
Stosuję coś na wzór prostego RAG-a.
Wiedzy nie ma wiele, więc mam jeden, prosty plik z wiedzą.
Podzielony jest on na sektory. Są tam informacje o mnie, o firmie, o produktach itp.
Skrypt wybiera to, co akurat wg niego jest potrzebne do udzielenia odpowiedzi.
Nie korzystam z douczonego (fine-tuning) modelu, a po prostu wrzucam do kontekstu wiedzę, której model może potrzebować do udzielenia odpowiedzi na pytania. Zaznaczam także, aby model nie odpowiadał na podstawie wiedzy własnej (aby ograniczyć totalne ściemnianie ze strony LLMa).
Mój automat odpowiada także w formacie, w jakim ja najczęściej to robię, czyli cytując pytania zawarte w mailu i odpowiadając na nie poniżej.
Jeśli model umie odpowiedzieć na pytanie, to odpowiada, a w przeciwnym przypadku wrzuca do odpowiedzi znacznik [odpisz].
Przychodzący mail może wyglądać przykładowo:
"Siema! Jak na Mikrusie postawić XYZ? Będziesz na konferencji ZZZ? Co tam u Ciebie?"
Mój input: "Będę jako prelegent"
Jak będzie wyglądała odpowiedź automatu?
> Jak na Mikrusie postawić XYZ?
Szczegółowy poradnik znajdziesz tutaj: [URL wyjęty z bazy].
W razie problemów pytaj.
> Będziesz na konferencji ZZZ?
Będę i nawet mam tam prelekcję!
Jak rozumiem, też się wybierasz, więc do zobaczenia na miejscu!
> Co tam u Ciebie?
[odpisz]
Tak przygotowane odpowiedzi uzupełniam czasami o 1-2 zdania od siebie lub poprawiam niektóre słowa, aby brzmiały sympatyczniej.
Niemniej, poprawa kilku słów jest szybsza niż znalezienie dokumentacji do np. 3 rzeczy i odpowiedź na wałkowane od lat 5 pytań związanych z hostingiem.
To ten moment, gdy powinny zacząć pojawiać się komentarze:
"OMG! SECURITY!!! RODO! Dane wyciekają!!!111111"
Rozwiązanie jest proste:
Nie wysyłam do automatu danych, które jakkolwiek uważam za wrażliwe 🤷♂️
80% maili, na które odpisuję to zapytania handlowe i pytania techniczne
No dobra, ale ile to kosztuje?
Szczerze mówiąc, to nie wiem. Nie chce mi się tego liczyć.
Szacuję, że odpowiedź na jednego maila to coś w okolicach 2-3 groszy? Jak odpiszę dziennie np. na 10-15 maili, to kwota jest raczej pomijalna.
Oszczędność czasu liczona w setkach godzin rocznie już pomijalna nie jest, więc to rozwiązanie stanowi dla mnie ogromne usprawnienie pracy.
Docelowo chcę podmienić plikową bazę na coś wektorowego (qdrant?), aby lepiej wnioskować na podstawie kontekstu, o co chodzi nadawcy.
Jeśli chcesz zrozumieć jak wykorzystać sztuczną inteligencję jako backend w swoich aplikacjach, nauczyć się integrować LLMy z istniejącymi rozwiązaniami IT i ze swoimi danymi, to jeszcze dziś do północy możesz zgarnąć szkolenie AI Devs 3 w niższej cenie.
aidevs.pl/?ref=unknowX
Pamiętaj, że rozwiązania, którymi się dzielę, to coś, co sprawdza się u mnie.
Prowadzę własny biznes, miewam problemy z ogarnianiem poczty elektronicznej i jest szansa, że są to realia nijak nieprzystające do Twoich.