#AI Agents #MCP #OpenAI #Claude #AI
“Najgorsza część publikacji zajmuje mi około 10 minut - tak zwany Human Touch.” Łukasz opisuje swój system automatyzacji publikacji Patoarchitektów, gdzie AI agents robią transkrypcję, generują SEO, intro i posty - ale ostateczny bottleneck to ręczne poprawianie, bo “wygenerowane posty wychodzą takim korporacyjnym marketingiem, że można rzygać tęczą.” Ironia: cała infrastruktura (K3s w Azure, Claude z MCP, OpenAI Agent SDK, Airtable, RenderForm) działa automatycznie, ale człowiek musi ratować jakość contentu.
Stos technologiczny? Agent Jane pobiera transkrypcję przez HappyScribe, ekstraktuje linki z Google Drive Szymona, generuje podsumowania przez Anthropic Sonnet (najlepszy polski), a GPT-5 prowadzi główną logikę. GPT-5 mini sprawdza maile - “tani i wystarczający.” Drugi agent obsługuje sprzedaż szkoleń: dostaje webhook z EasyCart i automatycznie zakłada wydarzenie w kalendarzu, dodaje uczestników. Szymon: “To był killer feature.”
Kluczowa lekcja? “Agenty stosujemy tam, gdzie na wejściu mamy gołego teksta lub bloba.” Przewidywalne rzeczy to zwykły kod - webhooks, crony, API. Event-driven architecture, gdzie “LLM nie czeka proaktywnie” - wzbudza go cron w czwartki o 18:00.
Czy Twój stack publikacji też wymaga Human Touch, żeby nie brzmiało jak korpo? Sprawdź, zanim MCP wygeneruje Ci tęczowy marketing. 🎯
Linki i ciekawe znaleziska
Transkrypcja
Łukasz Kałużny: Poleciłbym je każdemu, kto ma ambicje robienia softu ze zrozumieniem. Wymaga otwartej głowy, bo jednorożce tu nie biegają po łące, tylko jest jak jest, a najczęściej jest to błoto.
Szymon Warda: Głównie chodzi o to, żeby wybić Wam z głowy patrzenie się na dashboardy i obserwowanie ręczne co tam jest, bo tych metryk będziecie mieli tysiące.
Łukasz Kałużny: Lecimy! To dzisiaj Szymonie, czas na odcinek Pato od kuchni.
Szymon Warda: Łukasz się chwali.
Łukasz Kałużny: Tak. Pato od kuchni, wytłumaczę słuchajcie nie tylko Wam, ale też Szymonowi, co się dzieje jak wyłączy program do nagrywania. Przyznam się, pewne rzeczy można byłoby nazwać overkillerem tutaj zrobione.
Szymon Warda: Ku zdziwieniu absolutnie nikogo.
Łukasz Kałużny: I to jest najgorszy element tego wszystkiego, bo nie można powiedzieć, że weź opublikuj.
Szymon Warda: Cześć, czołem, kluski z rosołem. Słuchacie Patoarchitektów, prowadzą Szymon Warda…
Łukasz Kałużny: I Łukasz Kałużny. Wszystkie linki do tego odcinka klasycznie na Patoarchitekci.io, gdzieś tu na dole, zdecydowanie na dole albo na naszej stronie.
Szymon Warda: Dobrze, to od czego Łukaszu zaczynamy dzisiaj?
Łukasz Kałużny: Od długiego słuchajcie dzisiaj wstępu. Przesuńcie za jakieś 6 minut, jeżeli nie chcecie, ale możecie dużo stracić. Więc zaczynamy. W czerwcu, na koniec czerwca wypada nam dwusetny odcinek naszego show, tudzież miernego stand upu, jak niektórzy to gdzieś komentowali. I planujemy z tej okazji 16 czerwca, już nie meet up, a taką całodniową konferencję, gdzie zamiast Keynote zaczniemy nagraniem odcinka, a potem będzie parę prezentacji między innymi ode mnie, od Szymona i od ludzi, których bardzo również szanujemy. Zobaczymy, jak zgramy teraz kalendarze.
Szymon Warda: Dobrze. I została nam pewna zaległość, bo coś obiecałeś. No i co tu się dzieje po prostu, teraz się tłumacz.
Łukasz Kałużny: Witamy w świecie doradztwa i konsultingu. Listopad i czerwiec są tak zwanym ultra wysokim sezonem. Pewnie wiecie, co się dzieje w niektórych firmach. I jest taka rzecz, która się nazywa budżet do wydania i zamknięcia. I zwaliłem sprawę i nie opublikowałem konkursu na social mediach, który miał być. Więc słuchajcie, jak dzisiaj słuchacie tego odcinka, a w momencie, kiedy nagrywamy, to będzie za tydzień, startuje do końca roku taki świąteczno-noworoczny konkurs, w którym będzie można wygrać m.in. wejściówkę na nasze szkolenia. Na każdej platformie oddzielnie, więc sprawdźcie sobie post do tego konkretnego odcinka na Facebooku, LinkedInie albo na komentarze w YouTubie i zobaczcie, poszukajcie o co tam chodzi. Życzymy powodzenia, na Sylwestra będziemy tutaj rozwiązywać ten konkurs.
Szymon Warda: Dobrze, to teraz co? Kawałek mój, czyli omawiamy co tam, z czego będziemy szkolili tak naprawdę.
Łukasz Kałużny: Tak, dokładnie. Więc jako że jest to ostatni odcinek przed przerwą świąteczną, to i ostatni odcinek w tym roku, to chcemy omówić jakie szkolenia będą przez najbliższe 6 miesięcy, jako taką dobrą zapowiedź. Dobra Szymonie, to Twoje pierwsze szkolenie.
Szymon Warda: Dobrze, pierwsze lecimy, zdziwię tu absolutnie wszystkich, czyli wracamy do, ponowna edycja, Observability ze stosem Grafany. Tym razem będzie w wydaniu półtorej dniowym. Czemu? Bo tak mniej więcej jeden dzień schodzi na przejście przez Loki, Tempo, Prometheus’za i potrzebujemy tak mniej więcej tego pół dnia na omówienie teorii, omówienie jak to ładnie połączyć, żeby to było. Szkolenie bardzo mocno techniczne, przejście przez składnię, jak to działa, architekturę, hands on, takie od zera do bohatera można powiedzieć. Tak że wszystkich zapraszam. A że cieszy się też bardzo dużym powodzeniem, to kto pierwszy ten lepszy właściwie, bo dobijamy do limitu.
Łukasz Kałużny: Technicznie trzeba dodać 3 spotkania po 4 godziny z rana 16-18 lutego.
Szymon Warda: Tak, dokładnie. Dziękujemy. Potem dalej Łukaszu lecimy z Twoim.
Łukasz Kałużny: Tak, nowy Hard Way. Mieliśmy Kubernetes Hard Way, a teraz będzie Agentic AI The Hard Way. 24 lutego, jednodniowe szkolenie. I czym się zajmiemy? Nie wykorzystując frameworków będziemy pisać własnego agenta.
Szymon Warda: Czyli pętle while.
Łukasz Kałużny: Tak, pętle while, bardziej kontrolowaną pętle while. Założenie jest takie, że weźmiemy API OpenAI i na bazie tego bez żadnych frameworków zbudujemy całego agenta, żeby wytłumaczyć wszystkie praktyki, które za tym idą i czego do końca nam nie pokazują frameworki, żeby mieć na przykład świadomość zarządzania oknem kontekstowym, czy jak agent wywołuje narzędzia. Więc pokazanie tych bebechów pod spodem. Przepraszam, nie będzie to 200% Hard Way’u, bo ktoś mówi, że powinniśmy robić to w bashu curlem i sami oprogramować API. To aż tak nie będziemy się znęcać, bo przez tydzień byśmy nie wyszli robiąc to z palca.
Szymon Warda: Bash nie jest językiem programowania, bo nie ma wsparcia dla tablic, ustalmy to.
Łukasz Kałużny: Da się osiągnąć, wiesz o tym sedem i pickiem. Dobra i moje następne szkolenie idące po, jako uzupełnienie Hard Way’a, to jest druga edycja Model Context Protocol Masterclass. Czyli Masterclass z tego, jak BUDOWAĆ, podkreślam słowo, nie używać, budować MCP i jak do tego podchodzić. Ta edycja będzie najnowszym w czasie, jak będziemy to robić, dostępny API version, ponieważ co kwartał mniej więcej wychodzi, więc będziemy celować w najnowszą wersję. I przejście tego, jakie są dobre praktyki, jak powinniśmy implementować MCP, podzielenie się też wzorcami produkcyjnymi, z naciskiem na rzeczy takie enterprise’owe jak uwierzytelnianie, ochrona danych i tego typu elementy. Dobrze Szymonie, teraz Twoje szkolenie.
Szymon Warda: Kolejny fajny fragment, który naprawdę trochę czekam na niego, aż będę go prowadził, czyli profilowanie z użyciem eBPF-ów. O co tu w ogóle chodzi? aBPF-y, nie musimy Wam tłumaczyć o co chodzi, rewolucja, można powiedzieć w kontekście security, networkingu i profilingu. I trochę zobaczymy jak to ugryźć, jaki jest stan tego całego ekosystemu, co można wykorzystać, a już sporo dojrzało. Rzucimy sobie okiem na Pixi, rzucimy sobie okiem na Pyroscope’a, zobaczymy w ogóle jak działają eBPF-y, jak to użyć i jakie są możliwości. Tak że taka trochę observability ze stosem Grafany tylko w tym momencie na trochę szerszym i skupiający się na eBPF-ie. Jednodniówka, 9 marca, więc zapraszam.
Łukasz Kałużny: I potem 13 kwietnia Grafana Masterclass od Ciebie.
Szymon Warda: Tak, znowu to jest kolejny obszar, który jest, będzie dość ciekawy. Bo co to będzie? Przejście przez to, co Grafana umie zrobić. Od całej wizualizacji, przez zarządzanie, przez co może zrobić w DataSource’ach, takie trochę uzupełnienie tego, że często patrzymy właśnie na same zapytania, ale żeby Grafana działała dobrze, ta cała kobyła, której tam doskonale wiemy jest dużo, to trzeba wiedzieć, co ona właściwie umie zrobić. I to takie przejście jak to uporządkować, co zrobić, żeby można było jej używać i robić piękne dashboardziki, że tak powiem i nie tylko.
Łukasz Kałużny: Dobrze, to lecimy. 14, 15 i 21, 22 kwietnia, szkolenie równie kultowe co Observability Szymona, czyli Architektura 101, w której… Wiecie co? Ja pozwolę sobie przytoczyć opinię, którą dostałem na temat tego szkolenia: poleciłbym je każdemu, kto ma ambicje robienia softu ze zrozumieniem. Wymaga otwartej głowy, bo jednorożce tu nie biegają po łące, tylko jest jak jest, a najczęściej jest to błoto. Więc to szkolenie z założenia ma uporządkować chaos czym jest rola architekta i czym jest architektura, jak do tego podchodzić i przejść przez najważniejsze kwestie, które z naszego doświadczenia nie są w ogóle kodem. To jest też rzecz ciekawa, że dużo osób na architekturę patrzy jako na kod, a tutaj patrzymy ją jako całość. Więc nieważne czy programujesz, jesteś DevOps’em, adminem, to jest takie szkolenie, które wprowadza w arkana projektowania systemów i rzeczy, których trzeba się dowiedzieć, więc jest dla Was takim dużym drogowskazem. A i dodałbym, że już zostało tylko 8 miejsc, więc radzę się spieszyć, bo potem jest płacz, a kolejny termin dopiero na jesień.
Szymon Warda: Tak, ono też bardzo ładnie rozchodzi. Dobrze, to ja kontynuuję ten trend i wchodzimy w kolejne szkolenie, czyli mianowicie Alerting w Grafanie. O co chodzi? Przejście przez, w ogóle jak tworzyć alerty, jak (…) alertów, czym są alerty. Skupimy się głównie na implementacji alertingu w Grafanie. Czemu? Bo tam mamy wiele źródeł. Porównamy trochę z Alert Managerem, który ma parę opcji, które są dość miłe. Głównie chodzi o to, żeby wybić Wam z głowy patrzenie się na dashboardy i obserwowanie ręczne co tam jest, bo tych metryk będziecie mieli tysiące. Więc tak naprawdę, żebyście spali spokojnie i umieli. Tylko żebyście reagowali na to, co wam systemy wyślą, jakie sygnały i żeby to było sensowne.
Łukasz Kałużny: I co? 11 maja, bo to też warto dodać. No i ostatnie Szymonie Twoje, czyli uzupełnienie całego observability i creme de la creme.
Szymon Warda: Creme de la creme i spinające w ogóle całe podejście jak podchodzić do observability i monitoringu. Czyli jak już umiemy alerty wysyłać, to fajnie byłoby wiedzieć na co je wysyłać i wysyłać je zanim coś się wywali, mówiąc ładnie i poprawnie, czyli wykrywanie anomalii. Nie będziemy tutaj prawdopodobnie, chyba że coś się zmieni na rynku do tego czasu super magicznych LLM-ów, ale po prostu metody statystyczne, matematykę, która umie wykrywać i zajmiemy się tym, gdzie dopasować jaki model i umiejętnością przewidywania i patrzenia jak się zachowują nasze systemy i wykrywania po prostu pewnych prawidłowości, żeby wiedzieć, że coś się za chwilę wywali. Zapraszam. Tym też jest spore zainteresowanie, tak że spieszcie się póki możecie. I tym będziemy właśnie kończyli nasz rok szkoleniowy, że tak powiem.
Łukasz Kałużny: Dobra, lecimy. To dzisiaj Szymonie czas na odcinek Pato od kuchni.
Szymon Warda: Łukasz się chwali.
Łukasz Kałużny: Tak, Pato od kuchni. Wytłumaczę, słuchajcie, nie tylko Wam, ale też Szymonowi, co się dzieje jak wyłączy program do nagrywania.
Szymon Warda: I przestanie kontrolować Łukasza co on tam koduje.
Łukasz Kałużny: Dobra, to słuchajcie, dzisiaj trochę powiemy co my robimy, jak automatyzujemy nasze wydawanie podcastu, bo jest tutaj parę rzeczy. Przyznam się, pewne rzeczy można byłoby nazwać overkillerem tutaj zrobione.
Szymon Warda: Ku zdziwieniu absolutnie nikogo.
Łukasz Kałużny: Tak. To jest mój side project, nad którym się znęcam, więc nie muszę tego robić w projektach zawodowych.
Szymon Warda: Dokładnie. To dajesz, o tam, żeś navibe’ował?
Łukasz Kałużny: Navibe’ował. Jest sporo zvibe’owanych i nie tylko, więc też wypraszam sobie, nie tylko zvibe’owanych. Czasami trzeba vibe’a poprawić. Dobra, słuchajcie, jak popatrzymy jak nagrywamy Pato, teraz używamy takiego, nagrywamy zdalnie, używamy softu, który nazywa się Riverside i kiedy naciskamy już koniec recordingu i pobieramy nagranie. Jest tak, że już teraz tego nie montujemy sami. I to, co Szymonie robię, bo będę tak się kierował, możesz się potem dopytywać, więc dla mnie w tym flow taką pierwszą rzeczą jest wrzucenie sobie tego do katalogu na OneDrive. I to jest pierwsza taka rzecz, wrzucam to sobie na OneDrive. I co się dzieje? Mamy pod spodem taki API Server, który chodzi sobie na moim z boku Kubernetesie do side projec’tów, dokładniej na jednonode’owym K3s, gdzie parę innych rzeczy też lata.
Szymon Warda: Który już nie stoi na twoim Raspberry domowym, prawda?
Łukasz Kałużny: Nie, nie nie nie. To stoi na VM-ce w Azure, o tak i jest w tym. To stoi na VM-ce w Azure. I słuchajcie, jak to sobie wleci, to OneDrive wysyła webhooka właśnie do tego naszego API Servera. API Server jest bardzo brzydkim monolitem, ma trzy takie duże funkcje. Jest API Serverem do odbierania webhooków, to jest jego jedna funkcjonalność. Druga jest prostym cron schedulerem do pewnych elementów. I trzeci element, który ma tutaj wbudowany, to pełnoprawny serwer MCP, do którego potem przejdziemy. Jak wrzucimy sobie to na OneDrive, więc nie wszystko robi tu agent, jest trochę rzeczy zakodowanych. W tym momencie wpada sobie webhook i uploaduje się na OneDrive do ekipy podcastu i która nam podcast montuje. I to jest taki pierwszy krok, więc w tym miejscu ściągam, wrzucam, oszczędza mi to w sumie niewiele czasu, bo mógłbym sam wziąć i teraz przeciągnąć to na Google Drive, ale nie muszę przez to o tym pamiętać. Drugim krokiem, odpalam sobie Claude’a i tutaj wchodzi nasze MCP i dodanie nowego odcinka. Jako bazę danych używamy Airtable i to jeszcze z prehistorycznych czasów, kiedy automatyzacje były w make.com i było to wtedy sprzed czasów AI-owych. O, to można tak to określić.
Szymon Warda: To mogę potwierdzić, faktycznie, Łukasz jest wielkim fanem Airtable.
Łukasz Kałużny: Tak, w tym miejscu Airtable. I to co robię w Claude poprzez MCP, to jest sprawdzenie sobie w Google Sheets jaki jest następny numer… Raczej numer odcinka znamy, więc pobranie daty z harmonogramu, który tam sobie leży, przypisanie tytułu, to jest taka pierwsza część. Drugi element poprawia mi tytuł, żeby nie było literówek, które wklepię przy wrzucaniu tego do Airtable i Google Sheets automatycznie. I trzeci najważniejszy element, który się dzieje, to jest RenderForm.io: wygeneruj mi okładki, bo to też jest taka pierdołowata rzecz. Czyli korzysta z gotowych szablonów i generuje nam okładki, pobiera je do Airtable i wrzuca do tego samego Google Drive, do katalogu, w którym zostały wrzucone pliki do montowania. I jest tam jeszcze jedna ciekawa funkcjonalność, która za tym idzie Szymon, o której też nie wiesz. Zautomatyzowałem, macie teraz, shorty mają dłuższe tytuły.
Szymon Warda: Jeszcze, wydaje mi się, pominąłeś jeszcze jeden element, mianowicie telefon do Szymona pod tytułem: Ty, jaki my tytuł wymyśliliśmy pod ten odcinek?
Łukasz Kałużny: Tak, to jest albo WhatsApp, tak, to się znajduje. A co do shortów, bo jak są odcinki short albo z gośćmi, to jest tam taki kawałek, który robi draftową transkrypcję za pomocą API OpenAI-a do transkrypcji i próbuje zasugerować, to jest taka pierwsza rzecz i to nie jest agent, tylko zwykły flow z wykorzystaniem LLMA i robi dwie rzeczy. Jeżeli jest więcej niż dwie ścieżki, to sprawdza, czy nie mieliśmy gościa w podcaście. To jest pierwsza rzecz. A drugi element, żeby nie zapomnieć tego ustawić, a drugi element, który się pojawia, to jeżeli jest to short, bo w nazwie katalogu daję wtedy short, więc robi transkrypcję i sugeruje to, co Szymon czasem oglądasz, 10 proponowanych tytułów dla shorta, żeby spróbować przekazać kwintesencję.
Szymon Warda: Tak, dodam, że transkrypcja się i mi i Tobie dość mocno przydaje. Także to jest, bardzo cieszy ten krok.
Łukasz Kałużny: Dobra, bo to jest shortowa transkrypcja, Ty jej nigdy nie widziałeś. I to jest taki śmietnik, którego nikogo nie pokazuję. I teraz przejdźmy co się dzieje? Na tym zakończyło się moje nagrywanie, pierwsza część publikacji odcinka. To sobie poszło i potem, zazwyczaj w poniedziałek rano, dostajemy od ekipy podcastu i dostajemy webhooka, wysyłane powiadomienie webhookiem, że został zmontowany odcinek i link do niego. I on wpada sobie na ten nasz API Server. I to co się dzieje w tym miejscu, to API Server z jednej strony zapisuje sobie tą informację w Airtable, też zapisuje teaser, który jest przygotowany, a z drugiej strony uploaduje do softu, który się nazywa HappyScribe, to jest soft do transkrypcji. Uploaduje nasz odcinek, żeby została zrobiona transkrypcja tego odcinka, ale już w lepszym toolu. I następnie wysyła maila do Izy, która robi nam, poprawia transkrypcję i walczy z tym, co Szymon mówił i próbuje się domyślić, co Szymon miał na myśli, jeżeli się rozpędził, takie coś występuje.
Szymon Warda: To się też zdarza.
Łukasz Kałużny: Tak. Jak teraz to już wszystko mamy, jest ta transkrypcja, to pojawia się drugi agent. I to jest taka ciekawa rzecz. Pojawia się tutaj drugi agent, roboczo nazwany sobie Jane, jak na niego popatrzymy. I Jane w tym miejscu, to jest agent na bazie OpenAI Agent SDK i tam jest zbiór agentów. Pierwszy agent, który jest, jest taka specjalna skrzynka, z której odczytuje, jakie maile przychodzą. Z tej samej też skrzynki te rozwiązanie wysyła maile. I jak dostaniemy informację, że transkrypcja jest gotowa, odpowiedź na maila, to pierwszy taki agent kategoryzujący wyciąga sobie z kontekstu, bezstanowy, kontekstu maila o jaki odcinek chodzi i forwarduje już go do takiego stanowego agenta, który ma wątek stan per odcinek i wysyła, że transkrypcja jest gotowa. I ten agent, to co robi, to pobiera transkrypcję i przygotowuje na podstawie tego wszystkiego, co mamy wokół odcinka, za pomocą MCP zaczyna wywoływać akcję. Czyli pierwsza, to jest pobierz transkrypcję, żeby znalazła się w Airtable. Następny krok, to na bazie tej transkrypcji wygeneruj podsumowanie odcinka, takie wewnętrzne, too long, didn’t read z najważniejszymi cytatami i innymi takimi elementami, wszystkimi wątkami. Z tego jest wszystkiego potem generowane całe SEO, keywords, TAG-i i inne takie rzeczy i z tego jest generowane również potem intro i posty na social media.
Łukasz Kałużny: I to jest taki pierwszy sobie krok, który się dzieje. Druga rzecz, którą, jest obkodowana w MCP i agent tego nie robi, tylko to jest akcja w MCP, to jest znalezienie na drivie notatki, Szymon, na Twoim drivie znalezienie notatki do odcinka. Potem wyekstraktowanie linków, a z linków korzystając tam z jednego z takich API wyekstraktowanie tytułów i o co chodziło i wyciągnięcie zawartości strony, żeby mieć potem do przeszukiwania. Czyli bierze i uzdatnia te linki, dodaje to wszystko…
Szymon Warda: Robi po prostu scraping.
Łukasz Kałużny: Tak, prosty scraping przez zewnętrzne API, żeby tego nie kodować, scrapingu. Nie próbujcie kodować scrapingu. Uniwersalny scraping to zło. Lepiej za to zapłacić parę centów od wywołania.
Szymon Warda: Nie jest tak źle, ale tak, lepiej zapłacić.
Łukasz Kałużny: Chyba coś wiesz, po Qukicie.
Szymon Warda: Doskonale sobie zdaję sprawę.
Łukasz Kałużny: Szymon ma inne poletko do wyżywania się. Projekt nazywał się Qukit. Qukit?
Szymon Warda: Tak, tak, tak.
Łukasz Kałużny: Dobra. I jak to mamy? To jest prawie gotowy odcinek. I następnie agent komunikuje się ze mną takim API do notyfikacji, polecam, Pushover. Czyli wysyła mi informację, że coś jest zrobione, a moim interfejsem czatowym jest mail. Czyli ma możliwość wysłania, jak czegoś brakuje, wysłania po prostu e-maila i mogę odpowiedzieć mu mailem co ma zrobić w tym temacie odcinka. I tak jak on sobie to wszystko wygeneruje, to się zatrzymuje. I potem w czwartki o godzinie 18:00 do tego wątku, tego stanowego agenta, wpada trigger. I ten trigger, bo słuchajcie, teraz rzecz, autonomiczny agent oznacza, że coś go wzbudziło. Tam LLM nie czeka proaktywnie, tylko jest to architektura event driven, więc u mnie tym eventem jest cron w czwartki o 18:00.
Szymon Warda: Drugim wyborem jest http://webhook, więc…
Łukasz Kałużny: Który też był wcześniej.
Szymon Warda: Dokładnie tak.
Łukasz Kałużny: Tutaj był mailhook. W tym wypadku wzbudzał mailhook stan tego agenta po dobraniu. I on o 18:00 wrzuca i on sobie pobiera z naszego sheeta, którego mamy z ekipą podcastu i którym się wymieniamy danymi, pobiera sobie linka do YouTube’a, pobiera sobie ID z naszego hostingu i przez API uzupełnia wszystkie informacje na YouTubie, na tych wszystkich platformach, przygotowuje się do uzupełnienia wszystkich informacji. I tutaj następuje ta najgorsza część publikacji, która teraz zajmuje mi około 10 minut, czyli tak zwany Human Touch. I to jest najgorszy element tego wszystkiego, bo nie można powiedzieć, że weź opublikuj, bo bardzo często te gotowe, wygenerowane posty wychodzą tak korporacyjnym marketingiem, że się przepraszam, ale można rzygać tęczą, o tak to nazwijmy.
Szymon Warda: Po prostu brakuje Ci odpowiednich instrukcji na starcie, żeby były bardziej podkolorowane.
Łukasz Kałużny: Wiesz co, tak, skill issue, jak to jest w jednym miejscu ostatnio popularne. Pozdrawiam ekipę z Order of Devs, Mateusza i Norberta. Ale jedna rzecz i tak dużo jakoś mi się poprawiła, bo to co robię, to do wszystkich tych intro postów i innych rzeczy wrzucam trzy poprzednie odcinki, z trzech poprzednich odcinków. Czyli dostaję sample jak wyglądały zaakceptowane już zawsze, za każdym razem, jak zostały zaakceptowane. No i poprawiam i robię publikuj. Potem już są ostatnie pierdoły, które jest, czyli nasz Hal 900…
Szymon Warda: 9000.
Łukasz Kałużny: 9000, przepraszam, ale zwaliłem, Boże, nie mogę się nazwać już geekiem ani nerdem po tym, po tej akcji. Jeszcze powinienem powiedzieć, że Sokół Millennium latał w Star Treku i byłby już koniec. Dobra, ale wracając, potem nasz bot na Discordzie publikuje info o nowym odcinku, z takich rzeczy. I rano jeszcze rusza i jeszcze jeden rusza flow po drodze przy publikacji, to jest robiony, odpalany GitHub Actions, który sobie te dane pobiera z Airtable i generuje wspaniałego markdowna, z którego generowana jest strona. Więc to sobie możecie akurat zobaczyć, tą część publicznie na GitHubie Patoarchitektów, bo strona jest tam publiczna w tym wszystkim. I ostatnia rzecz, to jest taka z tym, tars. Niektórzy mogą wiedzieć, skąd to pochodzi, ta nazwa. To jest kawałek małego Crona, który lata, który robi embeding i ładuje dane do SQL-a, SQL Database, w której trzymany jest cały RAG, który możecie sprawdzić na Discordzie od PatoAI, czyli w tej bazie. To jest ładowacz dla Hala, ładowacz danych o podcastach.
Szymon Warda: Dokładnie. I co? Tyle?
Łukasz Kałużny: Czy wiesz co, patrząc, tak, tyle. I z takich ciekawostek, bo ja mam cały stos technologiczny, który Ty oglądasz, to całość w sumie, to jest, lecimy, tu jest to Golang, Python. Na frontendzie mamy Hugo, mamy Airtable, Azure SQL-a i dla sesji agenta, bo w sumie nie interesuje nas ich super backup, jest SQL Lite używany, z takich rzeczy. A jak popatrzymy na AI i to jest ciekawe, bo do agentów słuchajcie, cały agenci pomocniczy, tam jest taki właśnie mail checker scheduler, latają sobie na GPT-5 mini, to jest ciekawostka. Główny agent, którego macie w postaci Hala, jak i agent od wydawania podcastu, lata na GPT-5, a nie na Anthropicu Szymon. To jest taka ciekawostka a propos naszych rozmów, tak.
Szymon Warda: To w takim razie ok, ale tak, żeby coś było z tego takiego do wyniesienia dla innych, to czemu akurat te modele w tych sytuacjach?
Łukasz Kałużny: Czy wiesz co…
Łukasz Kałużny: Bo przyznasz, że dobór LLM-a w agencie jest istotny i faktycznie produkowanie tego, na czym najlepiej się znasz.
Łukasz Kałużny: Wiesz co, inaczej, to są dwa elementy. GPT, bo ja zawsze zaczynam z tym… Są dwie rzeczy. Stanowi dla mnie on, tak jak powiedziałem, trochę poletko do zabaw, to jest istotny element. I teraz gdzie nie ma zabaw, gdzie są zabawy? Z GPT-5, 5 mini i 5, są u mnie z bardzo ważnego względu, bo to też używamy u klientów. Więc dla mnie to jest takie poletko do zabawy, jak i OpenAI SDK, które żeby być w tym miejscu sobie i to z jednej strony testować. I wyszło mi tak, że do sprawdzania sobie, kategoryzacji maili, tam do tych rzeczy schedulingowych 5 mini jest wystarczający, jest tani i wystarczający. Jeżeli chodzi o piątkę, to okazało się, że mini już w kontekście lupa do robienia, wydawania podcastu gubił kontekst i nie radził sobie dobrze. To już było w tym.
Szymon Warda: Chyba dość krótki.
Łukasz Kałużny: Raczej kontekst ma długi, ale nie radził sobie z utrzymaniem zadań. Jeżeli chodzi o PatoAI, które znacie tego, jest teraz tam w sumie 5.1 już, bo przez prośbę jednego z uczestników Discorda, przepraszam, bo zapomniałem z kim, ale pozdrowimy tutaj… A, Maciej Trybula był triggerem, żeby poprawić jedną rzecz w RAG-u, bo się nie ładowało, więc przy okazji zmieniłem tam od razu na 5.1 dla ciekawości, żeby zobaczyć jaka będzie jakość odpowiedzi z RAG-a, tyle na przykład. Jeżeli chodzi o transkrypcję audio, byłem leniwy do odpalania modelu lokalnego, więc skorzystałem po prostu z GPT-4o, bo tam jest po prostu API do transkrypcji na nim i tyle. Tam jest po prostu speech to text. Jeżeli chodzi za to o generowanie contentu, to jest tutaj, tu są Sonnety, najnowsze Sonnety, bo one, ich język jest najbardziej naturalny w języku polskim z tych testów, które wyszły mi as API. Więc tutaj, tu jest pełna, np. Anthropic, próbowałem też to z ciekawości na OpenAI i pozostawmy to. Tam dopiero wychodziły korpo posty, tak. No i embedingi, to ze względu na wygodę, to po prostu OpenAI.
Szymon Warda: Jasna sprawa.
Łukasz Kałużny: Więc takich elementów tutaj.
Szymon Warda: Dobra, czyli co? Tak podsumowując, agenci są, ale w zdrowej ilości, bo to co też ważne było, żeby odnośnie tego odcinka, to jest to, że tam, nawet podkreśliłeś parę razy, tam gdzie można i tam gdzie logika jest jasna, jest to kodowane w serwerach, w normalnym kodzie.
Łukasz Kałużny: Normalnym… Inaczej, przewidywalne rzeczy, które nie mają rozmytej logiki, ja bym to nazwał… Wiesz co, tak zastanawiam się jak to nazwać… Którą mogę przewidzieć od A do Z i nie będą tworzyły mi wielkiego łańcucha grafów i spaghetti.
Szymon Warda: Ja bym bardziej to nazwał, że te, które na wejściu nie mają po prostu gołego tekstu.
Łukasz Kałużny: To też jest dobre.
Szymon Warda: Tudzież takiego bloba jakiegoś, nazwijmy to, z którego trzeba wywnioskować, co tam właściwie jest w różnych formach. I to jest chyba właśnie najbardziej kluczowe, bo to często wychodzi na naszych szkoleniach odnośnie agentów właśnie, że gdzie, kiedy stosować agentów, a gdzie normalny kod. Jak jest logika prosta, to normalny kod.
Łukasz Kałużny: Naprowadziłeś się tego w grudniu, Szymonie.
Szymon Warda: Trochę tak.
Łukasz Kałużny: Tak. Jest jeszcze coś. Gdzie jest mój eksperyment? Mianowicie to jest, bo jest jeszcze druga część, to jest to, gdzie kupujecie szkolenia. I tam jest mój zrobiony taki pełen eksperyment, który lata na OpenAI. Tutaj go nie mamy spisanego w tym Szymon, lata na OpenAI SDK Agents. Mianowicie jest tak, że dostajemy webhooka z EasyCart i jest tak, że tam nie ma już żadnej integracji, tylko wpada okrojony event, żeby też nie był za duży, jest trochę okrojony event, wpada do agenta i następnie agent wywołuje wszystkie integracje. Czyli zamiast okodować integrację, po prostu mam wszystko wrzucone, żeby zobaczyć jak się będzie zachowywać. Jest wszystko wrzucone i on ma dostęp do mojego kalendarza i Szymona. Więc jeżeli ktoś z was dostawał teraz na te nowe szkolenia od jakiegoś czasu zaproszenia ode mnie albo od Szymona, to tak naprawdę wysyłał je agent, dodawał Was do zaproszenia. Jeżeli nie ma szkolenia w kalendarzu, to to jest rzecz, która, Szymon się zakochał akurat w tym miejscu, to zakłada szkolenie.
Szymon Warda: To przyznam, że tak, to był killer feature.
Łukasz Kałużny: Szymon nie wiedział, że to zrobiłem i nagle pojawiło mu się w kalendarzu szkolenie i zobaczył, że ludzie są zapraszani.
Szymon Warda: To mnie naprawdę ucieszyło, tak.
Łukasz Kałużny: Tak, więc zrobiliśmy tak, że zrobiłem tak, że po prostu event sobie wpada do agenta i agent ma za zadanie wykonać dla tego eventu, spróbować wykonać wszystkie akcje. Jak na razie był jeden Edge Case, ale w sumie nie z powodu agenta, tylko złego założenia w EasyCart. Pozdrawiamy kolegów z ostatniego szkolenia Szymona.
Szymon Warda: Tak, dobrze. Łukaszu, czy coś więcej?
Łukasz Kałużny: Czy wiesz co? Chyba nie. Zastanawiam się, jedna rzecz, która się wydarzy może w okresie między świętami a Sylwestrem, to być może będzie przepisywany, bo korci mnie, bo Szymon powiedział, że transkrypcje ratują tyłek, bo je też wykorzystujemy w codziennej naszej pracy. I trochę mnie korci, żeby zrobić sobie taki wspólny grupowy Vibe Coding Live na Discordzie, więc zapraszamy na Discorda, w którym wystawimy MCP do naszego RAG-a. I to jest taka rzecz, która mnie tam gdzieś w tym, żeby przygotować i wystawić, przerobić aktualne MCP do Pato, wydzielić je i udostępnić prawie że publicznie, bo żeby trochę odciążyć sobie koszty i nie bawić się w rate limiting, to plan jest taki, że będzie trzeba się zautoryzować GitHubem. Więc to jedyna rzecz, że nie będzie tak jak dokumentacja Microsoftu, którą MCP od dokumentacji Microsoftu, który jest dostępny publicznie. Tutaj RAG będzie wystawiony po zalogowaniu się. O, to jest taka idea, która mi gdzieś tam siedzi w tym miejscu.
Szymon Warda: Rozumiem, że liczysz na to, że podrzucisz to pod choinkę. Bardzo dobry plan.
Łukasz Kałużny: Nie, nie, po choince, zdecydowanie po choince, po świętach. Może sobie w ciągu dnia zrobimy w ramach rozrywki, bo w szczególności chcę jeszcze przetestować dla mnie. Znowu, dlaczego to jest zabawka? Bo chcę przetestować zmiany, które weszły do nowego release’u MCP, nowej wersji protokołu, bo tam się stała ważna rzecz w ogóle Szymon. Dynamic Registration jest już opcjonalne w najnowszej wersji specyfikacji, więc właśnie będzie można wykorzystać takiego GitHuba na przykład. Ona wyszła miesiąc, dwa, trzy tygodnie temu wyszła specyfikacja, 25 listopada została opublikowana nowa wersja i właśnie zostało zrobione sporo rzeczy, żeby urealnić użycie OpenID właśnie do uwierzytelniania. Między innymi zrzucony został ten wymóg dynamicznej rejestracji klienta, co było wrzodem na tyłku przy implementacjach.
Szymon Warda: To to było upierdliwe. Dobra Łukaszu, nie przedłużając.
Łukasz Kałużny: To co? Wesołych Świąt! Czy to po amerykańsku Happy Holiday.
Szymon Warda: I wesołego Nowego Roku. Także widzimy się w rpzyszłym roku.
Łukasz Kałużny: Trzymajcie się, na razie.
Szymon Warda: Heja.

Wypełnij poniższy formularz, aby być na bieżąco ze wszystkimi
odcinkami Patoarchitektów
i uzyskać dostęp do dodatkowych
materiałów.