[{"content":"Ostatnio mnożą się alerty o podatnościach bezpieczeństwa związanych z pośrednimi atakami typu prompt injection. Główny wniosek brzmi: LLM-y są łatwowierne i nikt nie wie, jak uczynić je całkowicie odpornymi. W związku z tym żaden system AI nie jest bezpieczny.\nTo oczywiście całkowita prawda i uwaga, jaką przyciągają te ataki, jest jak najbardziej pożądana, ale główne pytanie pozostaje bez odpowiedzi: co z tym właściwie zrobić?\nPuryści forsowaliby zakaz wszelkich zewnętrznych danych wejściowych, które mogłyby prowadzić do prompt injection, ale szczerze mówiąc, nie byłbym aż tak pryncypialny. Wiele naprawdę użytecznych aplikacji opiera się na zewnętrznym wejściu, więc obawiam się, że musimy się cofnąć do ostatniej linii obrony: dyscypliny inżynierskiej.\nIstnieją różne schematy wykorzystujące sprytną interakcję kilku modeli, żeby zminimalizować ich ekspozycję na ataki (zob. na przykład artykuł o CaMeL). Uważam jednak, że za mało uwagi poświęcamy zwykłej sanityzacji danych wejściowych.\nWiele takich ataków opiera się na tekście ukrytym przed człowiekiem, lecz widocznym dla maszyny. Wykrywanie i usuwanie takiego tekstu jest stosunkowo trywialne (w sensie programistycznym), choć wymaga pracy na poziomie kontenera, a nie samego tekstu. Ta technika (nazywana swoją drogą Content Disarm \u0026amp; Reconstruction) istnieje już od dłuższego czasu. Szczerze mówiąc, dziwi mnie, że nie jest wdrożona wszędzie. Nie powstrzymałaby wszystkich ataków, ale utrudniłaby życie mało wyrafinowanemu napastnikowi.\nA tym, którzy upierają się, że 99% w bezpieczeństwie to ocena niedostateczna, chciałbym przypomnieć fundamentalną zasadę bezpieczeństwa: żaden system nie jest w 100% bezpieczny. Rolą bezpieczeństwa jest sprawić, żeby atak kosztował więcej niż potencjalna korzyść z niego płynąca (zob. model Gordona–Loeba).\nZ tym paradygmatem w głowie możemy budować niezawodne i bezpieczne systemy AI, nawet z niebezpiecznych pojedynczych komponentów.\n","permalink":"https://meshrefine.com/pl/microposts/2025-08-29-documents-sanitization/","summary":"\u003cp\u003eOstatnio mnożą się alerty o podatnościach bezpieczeństwa związanych z pośrednimi atakami typu prompt injection. Główny wniosek brzmi: LLM-y są łatwowierne i nikt nie wie, jak uczynić je całkowicie odpornymi. W związku z tym żaden system AI nie jest bezpieczny.\u003c/p\u003e\n\u003cp\u003eTo oczywiście całkowita prawda i uwaga, jaką przyciągają te ataki, jest jak najbardziej pożądana, ale główne pytanie pozostaje bez odpowiedzi: co z tym właściwie zrobić?\u003c/p\u003e\n\u003cp\u003ePuryści forsowaliby zakaz wszelkich zewnętrznych danych wejściowych, które mogłyby prowadzić do prompt injection, ale szczerze mówiąc, nie byłbym aż tak pryncypialny. Wiele naprawdę użytecznych aplikacji opiera się na zewnętrznym wejściu, więc obawiam się, że musimy się cofnąć do ostatniej linii obrony: dyscypliny inżynierskiej.\u003c/p\u003e","title":"Najpierw wyczyść swoje dokumenty"},{"content":"Kilka rzeczy, które warto wiedzieć o najnowszej premierze GPT-5, a o których ewangeliści nie mówią:\nGPT-5 nie jest jednym modelem. To, co poza kontekstem API nazywa się GPT-5, jest routerem, który przekazuje twoje zapytanie do modelu mającego, jego zdaniem, obsłużyć je najefektywniej. W tym świetle trzeba patrzeć na obietnicę OpenAI o dostępie dla wszystkich. Dają dostęp do routera, a ty nie znasz konkretnej konfiguracji, którą ci przydzielono, ani tego, czy faktycznie uda ci się przetestować najpotężniejszy model. To bez wątpienia sprawi, że doświadczenia różnych użytkowników będą zupełnie różne.\nGPT-5 nie jest doktorem nauk. To całkiem zdolny model (a przynajmniej jeden z nich jest), który błyszczy w niektórych zadaniach. Można oczekiwać poprawy w:\nzdolnościach kodowania (robią wrażenie według części vibe testów, ale według benchmarku SWE-bench Verified przewaga nad Claude Opus 4.1 jest minimalna); wywoływaniu narzędzi, co ma największe znaczenie dla obciążeń agentowych; innych zadaniach, w których OpenAI miało dostęp do natychmiastowego feedbacku. To ważne usprawnienia dla wielu dziedzin, ale nie czynią one z modelu doktora nauk. Halucynacja o profilu skrzydła podczas demo doskonale pokazuje, że model wciąż internalizuje przekonanie najpowszechniejsze, a nie najbardziej aktualne. To bardzo trudny problem do rozwiązania i w gruncie rzeczy poważna przeszkoda na drodze do AGI.\nMniej halucynacji to broń obosieczna. Z jednej strony im mniej model halucynuje, tym lepiej, bo można mu bardziej ufać. Z drugiej strony im bardziej ufasz modelowi, tym łatwiej przegapisz faktyczne halucynacje. W realnym świecie najlepszy jest model, który nie halucynuje nigdy. Model halucynujący w 0,01% przypadków może być groźniejszy od takiego, który halucynuje w 10% przypadków.\nMoje osobiste wrażenie jak dotąd jest takie, że ma on wciąż tę samą przypadłość co poprzednie modele OpenAI: bez starannego promptowania jest naprawdę powierzchowny. Serwuje najpłytszą analizę, jaka mu ujdzie na sucho, i maskuje ten fakt bardzo dobrze ustrukturyzowanymi odpowiedziami.\n","permalink":"https://meshrefine.com/pl/microposts/2025-08-08-about-gpt-5/","summary":"\u003cp\u003eKilka rzeczy, które warto wiedzieć o najnowszej premierze GPT-5, a o których ewangeliści nie mówią:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eGPT-5 nie jest jednym modelem\u003c/strong\u003e. To, co poza kontekstem API nazywa się GPT-5, jest routerem, który przekazuje twoje zapytanie do modelu mającego, jego zdaniem, obsłużyć je najefektywniej. W tym świetle trzeba patrzeć na obietnicę OpenAI o dostępie dla wszystkich. Dają dostęp do routera, a ty nie znasz konkretnej konfiguracji, którą ci przydzielono, ani tego, czy faktycznie uda ci się przetestować najpotężniejszy model. To bez wątpienia sprawi, że doświadczenia różnych użytkowników będą zupełnie różne.\u003c/p\u003e","title":"2025-08-08"},{"content":"Google Opal\nGoogle uruchomił publiczny preview swojego nowego narzędzia do graficznego tworzenia wieloetapowych workflow AI. Choć nie nadaje się ono do zastosowań produkcyjnych, świetnie pomaga w budowaniu osobistych narzędzi (a każdy powinien budować osobiste narzędzia, serio, to teraz największy wyróżnik).\nDziała na platformie Gemini z modelami Gemini (a jakże) i jako narzędzie w wersji preview jest na razie darmowe. W przyszłości najpewniej będzie korzystać z planu Gemini, jeśli użytkownik go ma. Nie jestem pewien co do własnych kluczy API, bo wygląda to na narzędzie dla szerokiej publiczności, ale zobaczymy.\nNa razie jest dostępne wyłącznie w USA.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-31-google-opal/","summary":"\u003cp\u003e\u003ca href=\"https://developers.googleblog.com/en/introducing-opal/\"\u003eGoogle Opal\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  \n  \n  \n    \n    \n    \n    \n    \n    \n    \n  \u003cpicture\u003e\n    \u003csource srcset=\"/pl/microposts/2025-07-31-google-opal/google-opal_hu_df8c6253ecad9107.webp\" type=\"image/webp\" /\u003e\n  \u003cimg class=\"img-fluid\" src=\"/pl/microposts/2025-07-31-google-opal/google-opal.f5b0b4e4310d106f8f86ef27ed3e0029.jpg\" alt=\"Google Opal\" loading=\"lazy\" height=\"723\" width=\"1374\" /\u003e\n\u003c/picture\u003e\n\u003c/p\u003e\n\u003cp\u003eGoogle uruchomił publiczny preview swojego nowego narzędzia do graficznego tworzenia wieloetapowych workflow AI. Choć nie nadaje się ono do zastosowań produkcyjnych, świetnie pomaga w budowaniu osobistych narzędzi (a każdy powinien budować osobiste narzędzia, serio, to teraz największy wyróżnik).\u003c/p\u003e\n\u003cp\u003eDziała na platformie Gemini z modelami Gemini (a jakże) i jako narzędzie w wersji preview jest na razie darmowe. W przyszłości najpewniej będzie korzystać z planu Gemini, jeśli użytkownik go ma. Nie jestem pewien co do własnych kluczy API, bo wygląda to na narzędzie dla szerokiej publiczności, ale zobaczymy.\u003c/p\u003e","title":"2025-07-31"},{"content":"Na X aż huczy od nowego modelu Horizon Alpha, który w pojedynkę bije wszystkie dotychczasowe modele w rozmaitych vibe testach (czytaj: jednorożce na rowerach i tym podobne). Model ma okno kontekstu 256k, co jest solidną, choć nie najbardziej imponującą liczbą.\nNajprawdopodobniej to nowy model OpenAI (GPT-5?), bo tę sztuczkę robili już wcześniej. Można go wypróbować na openrouter.ai zupełnie za darmo, ale pamiętajcie, żeby nie podawać mu żadnych prywatnych danych, bo są one zbierane i wykorzystywane do ulepszania modelu.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-31-horizon-alpha-model/","summary":"\u003cp\u003e\u003ca href=\"https://x.com/OpenRouterAI/status/1950713168193282078\"\u003eNa X aż huczy\u003c/a\u003e od nowego modelu Horizon Alpha, który w pojedynkę bije wszystkie dotychczasowe modele w rozmaitych vibe testach (czytaj: jednorożce na rowerach i tym podobne). Model ma okno kontekstu 256k, co jest solidną, choć nie najbardziej imponującą liczbą.\u003c/p\u003e\n\u003cp\u003eNajprawdopodobniej to nowy model OpenAI (GPT-5?), bo tę sztuczkę robili już wcześniej. Można go wypróbować na \u003ca href=\"https://openrouter.ai/openrouter/horizon-alpha\"\u003eopenrouter.ai\u003c/a\u003e zupełnie za darmo, ale pamiętajcie, żeby nie podawać mu żadnych prywatnych danych, bo są one zbierane i wykorzystywane do ulepszania modelu.\u003c/p\u003e","title":"2025-07-31"},{"content":"Subagenty w Claude Code\nAnthropic dodał do Claude Code możliwość tworzenia i używania wyspecjalizowanych subagentów. Subagenty korzystają z osobnego okna kontekstu, co pozwala wykonywać odrębne zadania bez zaśmiecania głównego kontekstu i ogranicza efekt context rot. Utworzone subagenty można uruchamiać ręcznie albo pozwolić Claude Code decydować, kiedy ich użyć.\nCo nadaje się na dobrego subagenta? Wszystko, co ma być ekspertem w swojej dziedzinie, nie musi współdzielić kontekstu z głównym agentem, może dostać dedykowane narzędzia i da się zaprojektować do wykonywania samowystarczalnych zadań. Żeby dać przedsmak tego, co można zamienić w subagenta, oto kilka przykładów:\nSubagent gitowy, na który można zrzucić rozmaite operacje związane z gitem. Ponieważ wystarczy mu lokalny stan gita i nie potrzebuje dostępu do globalnego kontekstu, dobrze sprawdzi się jako narzędzie z własnym oknem kontekstu. Subagent do pisania książek (wiem, wiem, ale tworzę książkopodobne dokumenty w określonym stylu do samokształcenia). Dostaje wysokopoziomowy plan, zestaw materiałów i jedną czy dwie sekcje jako przykłady, a potem pracuje nad swoją sekcją niezależnie od innych subagentów. Drugi przykład naprawdę zyskałby na możliwości uruchamiania kilku subagentów równolegle, ale wygląda na to, że proszę o zbyt wiele.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-28-claude-code-subagent/","summary":"\u003cp\u003e\u003ca href=\"https://docs.anthropic.com/en/docs/claude-code/sub-agents\"\u003eSubagenty w Claude Code\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAnthropic dodał do Claude Code możliwość tworzenia i używania wyspecjalizowanych subagentów. Subagenty korzystają z osobnego okna kontekstu, co pozwala wykonywać odrębne zadania bez zaśmiecania głównego kontekstu i ogranicza efekt context rot. Utworzone subagenty można uruchamiać ręcznie albo pozwolić Claude Code decydować, kiedy ich użyć.\u003c/p\u003e\n\u003cp\u003eCo nadaje się na dobrego subagenta? Wszystko, co ma być ekspertem w swojej dziedzinie, nie musi współdzielić kontekstu z głównym agentem, może dostać dedykowane narzędzia i da się zaprojektować do wykonywania samowystarczalnych zadań. Żeby dać przedsmak tego, co można zamienić w subagenta, oto kilka przykładów:\u003c/p\u003e","title":"2025-07-28"},{"content":"Cytując Arvinda Narayanana:\nGdybyśmy porównywali możliwości AI z ludźmi pozbawionymi dostępu do narzędzi, takich jak internet, prawdopodobnie okazałoby się, że AI już teraz przewyższa ludzi w wielu, jeśli nie w większości zadań poznawczych wykonywanych przez nas w pracy. Ale to oczywiście mało pomocne porównanie i niewiele mówi o ekonomicznym wpływie AI. Bez naszych narzędzi jesteśmy niczym.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-21-quot1/","summary":"\u003cp\u003e\u003ca href=\"https://x.com/random_walker/status/1946180439045018046\"\u003eCytując Arvinda Narayanana\u003c/a\u003e:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eGdybyśmy porównywali możliwości AI z ludźmi pozbawionymi dostępu do narzędzi, takich jak internet, prawdopodobnie okazałoby się, że AI już teraz przewyższa ludzi w wielu, jeśli nie w większości zadań poznawczych wykonywanych przez nas w pracy. Ale to oczywiście mało pomocne porównanie i niewiele mówi o ekonomicznym wpływie AI. \u003cstrong\u003eBez naszych narzędzi jesteśmy niczym\u003c/strong\u003e.\u003c/p\u003e\n\u003c/blockquote\u003e","title":"2025-07-21"},{"content":"Modele rozumienia wideo TwelveLabs są już dostępne w Amazon Bedrock\nAWS dodaje do Amazon Bedrock natywne embeddingi wideo oraz modele rozumienia wideo. Otwiera to mnóstwo potencjalnych zastosowań, do których wcześniej sięgałem po modele Gemini. Przykładem takiego zastosowania jest system edukacyjny, który obserwuje, jak uczeń wykonuje zadanie, i udziela informacji zwrotnej na podstawie materiałów szkoleniowych.\nBedrock miał już workflow do rozumienia wideo, ale to było dokładnie to: workflow, żadne natywne modele. Możecie sobie wyobrazić, jak to wyglądało\u0026mdash;weź wideo, potnij na klatki, wrzuć klatki do VLM, spróbuj utrzymać spójność czasową, popadnij w rozpacz, pogódź się z wydajnością systemu i jedź na urlop.\nTeraz jednak mamy nie jeden, a dwa różne natywne modele wideo:\nTwelveLabs Marengo, do tworzenia embeddingów wideo; TwelveLabs Pegasus, do generowania tekstu na podstawie wideo. Cennik modeli zależy od tego, czy wideo ma ścieżkę audio, ale trzeba się liczyć z $2.5-$3 za godzinę wideo w przypadku Marengo i $1.8 za godzinę w przypadku Pegasusa.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-20-twelvelabs-models-in-amazon-bedrock/","summary":"\u003cp\u003e\u003ca href=\"https://aws.amazon.com/blogs/aws/twelvelabs-video-understanding-models-are-now-available-in-amazon-bedrock/\"\u003eModele rozumienia wideo TwelveLabs są już dostępne w Amazon Bedrock\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAWS dodaje do Amazon Bedrock natywne embeddingi wideo oraz modele rozumienia wideo. Otwiera to mnóstwo potencjalnych zastosowań, do których wcześniej sięgałem po modele Gemini. Przykładem takiego zastosowania jest system edukacyjny, który obserwuje, jak uczeń wykonuje zadanie, i udziela informacji zwrotnej na podstawie materiałów szkoleniowych.\u003c/p\u003e\n\u003cp\u003eBedrock miał już workflow do rozumienia wideo, ale to było dokładnie to: workflow, żadne natywne modele. Możecie sobie wyobrazić, jak to wyglądało\u0026mdash;weź wideo, potnij na klatki, wrzuć klatki do VLM, spróbuj utrzymać spójność czasową, popadnij w rozpacz, pogódź się z wydajnością systemu i jedź na urlop.\u003c/p\u003e","title":"2025-07-20"},{"content":"Jedną z form context rot jest coś, co nazywam samowzmacniającą się strukturą. Kiedy akceptujesz długą odpowiedź modelu, sygnalizujesz, że taka struktura jest w porządku, więc model próbuje generować kolejne odpowiedzi w podobny sposób. Dla każdej dłuższej pracy twórczej może to być destrukcyjne.\nJedyną realną obroną jest zadbanie o to, żeby historia, którą dostaje model, nie zawierała takich odpowiedzi. Trzeba więc albo zapobiec temu wcześnie, albo naprawić to później, podając zamiast faktycznej historii podsumowanie dotychczasowej rozmowy.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-20-context-rot-self-reinforcing-structure/","summary":"\u003cp\u003eJedną z form \u003ca href=\"https://simonwillison.net/2025/Jun/18/context-rot/\"\u003econtext rot\u003c/a\u003e jest coś, co nazywam samowzmacniającą się strukturą. Kiedy akceptujesz długą odpowiedź modelu, sygnalizujesz, że taka struktura jest w porządku, więc model próbuje generować kolejne odpowiedzi w podobny sposób. Dla każdej dłuższej pracy twórczej może to być destrukcyjne.\u003c/p\u003e\n\u003cp\u003eJedyną realną obroną jest zadbanie o to, żeby historia, którą dostaje model, nie zawierała takich odpowiedzi. Trzeba więc albo zapobiec temu wcześnie, albo naprawić to później, podając zamiast faktycznej historii podsumowanie dotychczasowej rozmowy.\u003c/p\u003e","title":"2025-07-20"},{"content":"Przedstawiamy agenta ChatGPT: pomost między badaniem a działaniem\nOpenAI wypuściło agenta, który potrafi sterować twoim komputerem. Wykorzystuje on swoje zaawansowane zdolności rozumowania do planowania i rozwiązywania zadań w aplikacjach takich jak Excel czy PowerPoint.\nPodczas gdy Sam Altman „czuje AGI”, patrząc na działanie tego systemu, ja uważam je za niesamowicie toporne. Zamiast skupić się na dostarczaniu modelom natywnych narzędzi (MCP to dobry krok naprzód, choć nie bez własnych problemów), próbuje się emulować dla nich ręce i oczy, żeby modele mogły robić to samo co my, tylko wolno i niezgrabnie.\nUznałbym więc ten typ agenta za tymczasowe obejście, dopóki nie opracujemy lepszych mechanizmów komunikacji maszyna-maszyna. Później będzie on obsługiwał coraz dłuższy ogon systemów legacy, które nigdy nie doczekają się interfejsów zdatnych do użytku maszynowego.\nP.S. Gemini podsunął punkt widzenia, którego nie wziąłem pod uwagę: takie systemy mogą zbierać dane potrzebne do trenowania lepszej ucieleśnionej inteligencji, czyli takiej, która potrafi działać w świecie rzeczywistym. To całkowicie słuszna uwaga i nie należy jej zostawiać bez echa.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-17-chatgpt-agent/","summary":"\u003cp\u003e\u003ca href=\"https://openai.com/index/introducing-chatgpt-agent/\"\u003ePrzedstawiamy agenta ChatGPT: pomost między badaniem a działaniem\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eOpenAI wypuściło agenta, który potrafi sterować twoim komputerem. Wykorzystuje on swoje zaawansowane zdolności rozumowania do planowania i rozwiązywania zadań w aplikacjach takich jak Excel czy PowerPoint.\u003c/p\u003e\n\u003cp\u003ePodczas gdy Sam Altman „czuje AGI”, patrząc na działanie tego systemu, ja uważam je za niesamowicie toporne. Zamiast skupić się na dostarczaniu modelom natywnych narzędzi (MCP to dobry krok naprzód, choć nie bez własnych problemów), próbuje się emulować dla nich ręce i oczy, żeby modele mogły robić to samo co my, tylko wolno i niezgrabnie.\u003c/p\u003e","title":"2025-07-17"},{"content":"Raport AI Index 2025 Uniwersytetu Stanforda\nStanford opublikował swój doroczny raport. To dość ważna publikacja, bo oddziela spekulacje od twardych liczb. Obok rzeczy oczywistych (AI staje się lepsze, tańsze i powszechniejsze, a jakże) znajdziemy tam kilka bardzo ciekawych faktów:\nChoć AI używa już prawie każda organizacja (78% w 2024 roku, choć dla większości z nich bez wątpienia sprowadza się to do pisania maili chatbotem), faktyczne rezultaty są dość skromne. Wzrost produktywności jest rzędu 10% (szczerze mówiąc, taki skok w jeden rok jest w sumie bezprecedensowy), ale wzrost przychodów w większości branż to zaledwie około 5%. Dlaczego? Bo jak w przypadku każdej technologii ogólnego przeznaczenia, pełne wykorzystanie korzyści wymagałoby całkowitej przebudowy struktur organizacyjnych i procesów. Problem w tym, że nikt nie wie, jak te nowe procesy miałyby wyglądać, i będziemy musieli uczyć się na własnych błędach.\nMoże to już nie nowość, ale AI daje większą dźwignię mniej doświadczonym pracownikom. Wielki wyrównywacz naszych czasów. To znów oznacza, że musimy przeformułować podejście do kompletowania zespołów. Dodałbym tylko, że pomaga to wyłącznie wtedy, gdy masz choć mgliste pojęcie o tym, co robisz, więc kandydaci na stanowiska juniorskie: odróbcie porządnie pracę domową.\nLiczba incydentów związanych z AI wciąż rośnie. W 2024 roku widzimy dwukrotny wzrost względem 2023, a to jeszcze przed gorączkową adopcją agentów i MCP, którą obserwujemy w 2025. Musimy więc zacisnąć zęby i szykować się na coraz więcej wycieków danych i naruszeń integralności.\nRaport zawiera znacznie więcej smaczków, ale ma prawie 500 stron, więc gorąco polecam użyć AI do wydobycia tego, co was interesuje.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-17-stanfordhai2025/","summary":"\u003cp\u003e\u003ca href=\"https://hai.stanford.edu/ai-index/2025-ai-index-report\"\u003eRaport AI Index 2025 Uniwersytetu Stanforda\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eStanford opublikował swój doroczny raport. To dość ważna publikacja, bo oddziela spekulacje od twardych liczb. Obok rzeczy oczywistych (AI staje się lepsze, tańsze i powszechniejsze, a jakże) znajdziemy tam kilka bardzo ciekawych faktów:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eChoć AI używa już prawie każda organizacja (78% w 2024 roku, choć dla większości z nich bez wątpienia sprowadza się to do pisania maili chatbotem), faktyczne rezultaty są dość skromne. Wzrost produktywności jest rzędu 10% (szczerze mówiąc, taki skok w jeden rok jest w sumie bezprecedensowy), ale wzrost przychodów w większości branż to zaledwie około 5%. Dlaczego? Bo jak w przypadku każdej technologii ogólnego przeznaczenia, pełne wykorzystanie korzyści wymagałoby całkowitej przebudowy struktur organizacyjnych i procesów. Problem w tym, że nikt nie wie, jak te nowe procesy miałyby wyglądać, i będziemy musieli uczyć się na własnych błędach.\u003c/p\u003e","title":"2025-07-17"},{"content":"Voxtral\nMistral przedstawia Voxtral, rodzinę open-source\u0026rsquo;owych modeli rozpoznawania i rozumienia mowy. Najwyższy czas. Porównywalnego modelu open source nie widzieliśmy od czasów Whispera od OpenAI, a to było dość dawno temu.\nModele występują w rozmiarach 3B i 24B i wyprzedzają Whispera w większości benchmarków. Wymagają jednak mocniejszego sprzętu, bo największy wariant Whispera ma zaledwie 1,5B. To bezpośrednia konsekwencja tego, że są one zarazem zwykłymi modelami językowymi. Inna konsekwencja jest taka, że trudniej będzie je okiełznać w scenariuszu czystej transkrypcji.\nModele są dostępne na Hugging Face, a także przez API Mistrala i ich LeChat.\nCzego im obecnie brakuje, to obsługi diaryzacji (rozpoznawania mówiących). Jest ona na roadmapie, ale w międzyczasie wciąż musimy używać do tego celu nieco topornego pyannote-audio.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-17-voxtral/","summary":"\u003cp\u003e\u003ca href=\"https://mistral.ai/news/voxtral\"\u003eVoxtral\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMistral przedstawia Voxtral, rodzinę open-source\u0026rsquo;owych modeli rozpoznawania i rozumienia mowy. Najwyższy czas. Porównywalnego modelu open source nie widzieliśmy od czasów Whispera od OpenAI, a to było dość dawno temu.\u003c/p\u003e\n\u003cp\u003eModele występują w rozmiarach 3B i 24B i wyprzedzają Whispera w większości benchmarków. Wymagają jednak mocniejszego sprzętu, bo największy wariant Whispera ma zaledwie 1,5B. To bezpośrednia konsekwencja tego, że są one zarazem zwykłymi modelami językowymi. Inna konsekwencja jest taka, że trudniej będzie je okiełznać w scenariuszu czystej transkrypcji.\u003c/p\u003e","title":"2025-07-17"},{"content":"Strategic Intelligence in Large Language Models: Evidence from evolutionary Game Theory\nArtykuł pokazuje, że różne modele zachowują się zupełnie inaczej, gdy umieści się je w warunkach rodem z teorii gier. Oznacza to, że testy i ewaluacje odgrywają coraz bardziej krytyczną rolę w budowaniu systemów agentowych, ponieważ aktualizacja lub podmiana bazowego modelu prowadzi do nieprzewidywalnych zmian w zachowaniu agenta.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-17-ai-prisoners-dilemma/","summary":"\u003cp\u003e\u003ca href=\"https://arxiv.org/abs/2507.02618\"\u003eStrategic Intelligence in Large Language Models: Evidence from evolutionary Game Theory\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eArtykuł pokazuje, że różne modele zachowują się zupełnie inaczej, gdy umieści się je w warunkach rodem z teorii gier. Oznacza to, że testy i ewaluacje odgrywają coraz bardziej krytyczną rolę w budowaniu systemów agentowych, ponieważ aktualizacja lub podmiana bazowego modelu prowadzi do nieprzewidywalnych zmian w zachowaniu agenta.\u003c/p\u003e","title":"2025-07-17"},{"content":"Przedstawiamy Kiro\nAWS wskakuje z Kiro do pociągu agentowych IDE. Żeby odciąć się od vibe codingu, który zdążył zebrać sporo złej sławy, kładą nacisk na metodę „spec-driven development”. Oznacza to, że agent najpierw pomaga użytkownikowi stworzyć pełny dokument wymagań dla danej funkcji, następnie analizuje istniejącą bazę kodu i dopiero potem zaczyna implementować.\nTo podejście zdecydowanie ma sens i stanowi krok naprzód w porównaniu ze ślepym rzucaniem się w wir, jakim bywa vibe coding. To, że specyfikacje aktualizują się razem ze zmianami w kodzie, czyni je jeszcze cenniejszymi i minimalizuje problem nieaktualnej dokumentacji. Hooki potrafią automatycznie uruchamiać powtarzalne zadania agentowe, na przykład pilnowanie, żeby nowa funkcja miała wystarczające testy.\nCiekawie obserwuje się, jak różne narzędzia przyjmują różne metodologie, bo dzięki temu społeczność programistów może znajdować i rozpowszechniać techniki, które naprawdę działają.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-15-aws-introduces-kiro/","summary":"\u003cp\u003e\u003ca href=\"https://kiro.dev/blog/introducing-kiro/\"\u003ePrzedstawiamy Kiro\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAWS wskakuje z Kiro do pociągu agentowych IDE. Żeby odciąć się od vibe codingu, który zdążył zebrać sporo złej sławy, kładą nacisk na metodę „spec-driven development”. Oznacza to, że agent najpierw pomaga użytkownikowi stworzyć pełny dokument wymagań dla danej funkcji, następnie analizuje istniejącą bazę kodu i dopiero potem zaczyna implementować.\u003c/p\u003e\n\u003cp\u003eTo podejście zdecydowanie ma sens i stanowi krok naprzód w porównaniu ze ślepym rzucaniem się w wir, jakim bywa vibe coding. To, że specyfikacje aktualizują się razem ze zmianami w kodzie, czyni je jeszcze cenniejszymi i minimalizuje problem nieaktualnej dokumentacji. Hooki potrafią automatycznie uruchamiać powtarzalne zadania agentowe, na przykład pilnowanie, żeby nowa funkcja miała wystarczające testy.\u003c/p\u003e","title":"2025-07-15"},{"content":"TIL: ccusage — fajne narzędzie do śledzenia i analizowania użycia Claude Code.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-15-0d12c26b/","summary":"\u003cp\u003eTIL: \u003ca href=\"https://simonwillison.net/2025/Jul/14/ccusage/\"\u003eccusage\u003c/a\u003e — fajne narzędzie do śledzenia i analizowania użycia Claude Code.\u003c/p\u003e","title":"2025-07-15"},{"content":"Anthropic opublikował 4 nowe kursy w swojej akademii:\nClaude Code in Action z praktycznymi poradami dotyczącymi używania agenta CLI. Claude with the Anthropic API, kompleksowy kurs korzystania ze wszystkich obecnych możliwości API, od pojedynczego generowania tekstu po agenty. Introduction to Model Context Protocol oraz Model Context Protocol: Advanced Topics dla zainteresowanych MCP. Każdy kurs jest dostępny w formie wideo i tekstu oraz kończy się certyfikatem ukończenia.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-14-6fe8db2d/","summary":"\u003cp\u003eAnthropic opublikował 4 nowe kursy w \u003ca href=\"https://www.anthropic.com/learn\"\u003eswojej akademii\u003c/a\u003e:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ca href=\"https://anthropic.skilljar.com/claude-code-in-action\"\u003eClaude Code in Action\u003c/a\u003e z praktycznymi poradami dotyczącymi używania agenta CLI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://anthropic.skilljar.com/claude-with-the-anthropic-api\"\u003eClaude with the Anthropic API\u003c/a\u003e, kompleksowy kurs korzystania ze wszystkich obecnych możliwości API, od pojedynczego generowania tekstu po agenty.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://anthropic.skilljar.com/introduction-to-model-context-protocol\"\u003eIntroduction to Model Context Protocol\u003c/a\u003e oraz \u003ca href=\"https://anthropic.skilljar.com/model-context-protocol-advanced-topics\"\u003eModel Context Protocol: Advanced Topics\u003c/a\u003e dla zainteresowanych MCP.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eKażdy kurs jest dostępny w formie wideo i tekstu oraz kończy się certyfikatem ukończenia.\u003c/p\u003e","title":"2025-07-14"},{"content":"TIL: DBML - Database Markup Language\nJęzyk znaczników do opisywania schematu bazy danych, który może się przydać do przekazywania go narzędziom AI.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-14-22cb7f0e/","summary":"\u003cp\u003eTIL: \u003ca href=\"https://dbml.dbdiagram.io/home/\"\u003eDBML - Database Markup Language\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eJęzyk znaczników do opisywania schematu bazy danych, który może się przydać do przekazywania go narzędziom AI.\u003c/p\u003e","title":"2025-07-14"},{"content":"Pomiar wpływu AI z początku 2025 roku na produktywność doświadczonych programistów open source\nWażne i dobrze przeprowadzone badanie pokazujące, że nowoczesne narzędzia AI do kodowania szkodzą programistom, którzy:\nmają spore doświadczenie; pracują nad dużymi bazami kodu; znają kod jak własną kieszeń. Co ciekawe, choć średnio zamykali swoje zadania o 19% wolniej, wciąż mieli poczucie, że agenty AI dają im około 20% przyspieszenia!\nAutorzy zauważają, że efekt ten może słabnąć wraz z kolejnymi generacjami agentów, a co najważniejsze, istnieje szeroki wachlarz zadań, w których już teraz widać wzrost wydajności.\nWięc jeśli nie znasz dogłębnie bazy kodu, masz ograniczone doświadczenie z używanymi technologiami albo rozwijasz projekt od zera, agent AI prawdopodobnie ci pomoże.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-11-20dc3714/","summary":"\u003cp\u003e\u003ca href=\"https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/\"\u003ePomiar wpływu AI z początku 2025 roku na produktywność doświadczonych programistów open source\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eWażne i dobrze przeprowadzone badanie pokazujące, że nowoczesne narzędzia AI do kodowania szkodzą programistom, którzy:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emają spore doświadczenie;\u003c/li\u003e\n\u003cli\u003epracują nad dużymi bazami kodu;\u003c/li\u003e\n\u003cli\u003eznają kod jak własną kieszeń.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo ciekawe, choć średnio zamykali swoje zadania o 19% wolniej, wciąż mieli poczucie, że agenty AI dają im około 20% przyspieszenia!\u003c/p\u003e\n\u003cp\u003eAutorzy zauważają, że efekt ten może słabnąć wraz z kolejnymi generacjami agentów, a co najważniejsze, istnieje szeroki wachlarz zadań, w których już teraz widać wzrost wydajności.\u003c/p\u003e","title":"Paradoks produktywności AI"},{"content":"Bardzo ważne jest zrozumienie, że modele AI nie są deterministyczne i nie da się ich uczynić deterministycznymi bez drastycznego ograniczenia środowiska, w którym działają. Ustawianie seedów nie pomaga. Ustawienie temperatury na 0 nie pomaga. Każdy drobny błąd zaokrąglenia liczb zmiennoprzecinkowych może ostatecznie doprowadzić do zupełnie innych wyników.\nZłożone modele są w istocie systemami chaotycznymi i tak należy je traktować.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-09-259fafd6/","summary":"\u003cp\u003eBardzo ważne jest zrozumienie, że modele AI nie są deterministyczne i nie da się ich uczynić deterministycznymi bez drastycznego ograniczenia środowiska, w którym działają. Ustawianie seedów nie pomaga. Ustawienie temperatury na 0 nie pomaga. Każdy drobny błąd zaokrąglenia liczb zmiennoprzecinkowych może ostatecznie doprowadzić do zupełnie innych wyników.\u003c/p\u003e\n\u003cp\u003eZłożone modele są w istocie systemami chaotycznymi i tak należy je traktować.\u003c/p\u003e","title":"2025-07-09"},{"content":"Agenty AI do kodowania to po prostu kolejne narzędzie w skrzynce dobrego programisty. Zaczyna on od bloku kamienia i używa tych agentów jak metaforycznego młota, żeby nadać mu z grubsza wymarzoną formę. Potem sięga po narzędzia wspomagające kodowanie, takie jak GitHub Copilot, żeby pracować precyzyjniej, niczym mniejszym młotkiem. A na końcu bierze najmniejsze dłuto i ręcznie rzeźbi najdrobniejsze detale.\nJakże zabawnie brzmią głosy, że sztuka programowania umarła, bo nie obrabiamy już bloków wyłącznie tymi małymi dłutami.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-07-ae052c28/","summary":"\u003cp\u003eAgenty AI do kodowania to po prostu kolejne narzędzie w skrzynce dobrego programisty. Zaczyna on od bloku kamienia i używa tych agentów jak metaforycznego młota, żeby nadać mu z grubsza wymarzoną formę. Potem sięga po narzędzia wspomagające kodowanie, takie jak GitHub Copilot, żeby pracować precyzyjniej, niczym mniejszym młotkiem. A na końcu bierze najmniejsze dłuto i ręcznie rzeźbi najdrobniejsze detale.\u003c/p\u003e\n\u003cp\u003eJakże zabawnie brzmią głosy, że sztuka programowania umarła, bo nie obrabiamy już bloków wyłącznie tymi małymi dłutami.\u003c/p\u003e","title":"2025-07-07"},{"content":"Zabawna rzecz: Gemini Deep Research jest programowo zniechęcany do przedwczesnego kończenia pracy. Odkryłem to, gdy próbowałem użyć go do wyciągnięcia informacji z nieustrukturyzowanego tekstu i wypełnienia szablonu. Choć to narzędzie badawcze, ma wszystko, czego potrzeba do takiego zadania: dostęp do Google Docs, umiejętność tworzenia długich dokumentów i skrupulatny agentowy przebieg pracy. Oczywiście, jeśli chcemy tylko przebudować strukturę dokumentu, ważne jest, żeby model w ogóle nie korzystał z wyszukiwarki.\nAgent wykonał robotę całkiem dobrze i szybko. Jednak kiedy już miał kończyć, dostał od programowego orkiestratora kilka ponagleń w stylu „kontynuuj badania” i zgadnijcie co? Zaczął przeszukiwać internet w poszukiwaniu brakujących informacji.\nMorał z tego taki: z takimi systemami można sobie pozwolić na kreatywność, ale trzeba się liczyć z tym, że scaffolding wsadzi kij w szprychy.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-05-55a52a46/","summary":"\u003cp\u003eZabawna rzecz: Gemini Deep Research jest programowo zniechęcany do przedwczesnego kończenia pracy. Odkryłem to, gdy próbowałem użyć go do wyciągnięcia informacji z nieustrukturyzowanego tekstu i wypełnienia szablonu. Choć to narzędzie badawcze, ma wszystko, czego potrzeba do takiego zadania: dostęp do Google Docs, umiejętność tworzenia długich dokumentów i skrupulatny agentowy przebieg pracy. Oczywiście, jeśli chcemy tylko przebudować strukturę dokumentu, ważne jest, żeby model w ogóle nie korzystał z wyszukiwarki.\u003c/p\u003e\n\u003cp\u003eAgent wykonał robotę całkiem dobrze i szybko. Jednak kiedy już miał kończyć, dostał od programowego orkiestratora kilka ponagleń w stylu „kontynuuj badania” i zgadnijcie co? Zaczął przeszukiwać internet w poszukiwaniu brakujących informacji.\u003c/p\u003e","title":"2025-07-05"},{"content":"Po tygodniach alarmowania przez Markeya Senat nocnym głosowaniem 99-1 usuwa moratorium na regulacje AI z ustawy budżetowej\nA więc moratorium na stanowe regulacje AI nie będzie. Ci, którzy rozwijają systemy AI, niech szykują się na poznawanie i wdrażanie wymogów compliance dla 50 różnych stanów. Biada nam.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-02-72f7e44e/","summary":"\u003cp\u003e\u003ca href=\"https://www.markey.senate.gov/news/press-releases/after-weeks-of-markey-raising-the-alarm-senate-strikes-ai-moratorium-from-budget-reconciliation-bill-overnight-in-overwhelming-99-1-vote\"\u003ePo tygodniach alarmowania przez Markeya Senat nocnym głosowaniem 99-1 usuwa moratorium na regulacje AI z ustawy budżetowej\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eA więc moratorium na stanowe regulacje AI nie będzie. Ci, którzy rozwijają systemy AI, niech szykują się na poznawanie i wdrażanie wymogów compliance dla 50 różnych stanów. Biada nam.\u003c/p\u003e","title":"2025-07-02"},{"content":"Cloudflare właśnie zmieniło sposób, w jaki crawlery AI skanują cały internet; podejście oparte na zgodzie toruje drogę nowemu modelowi biznesowemu\nCloudflare robi duży krok w stronę monetyzacji danych do trenowania AI. Od teraz wszystkie nowe dane hostowane na Cloudflare są domyślnie niedostępne dla crawlerów AI. Pojawiła się też nowa opcja, dzięki której strona może zwracać kod HTTP 402 („Payment required”) i pobierać opłatę za dostęp. Oczywiście Cloudflare będzie tu pośrednikiem, co daje mu znaczną kontrolę i siłę finansową.\nCo więcej, może to zapoczątkować erę „ciemnego crawlingu”, która bez wątpienia doprowadzi do zabawy w kotka i myszkę przy wykrywaniu crawlerów.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-02-c80a82b1/","summary":"\u003cp\u003e\u003ca href=\"https://www.cloudflare.com/ru-ru/press-releases/2025/cloudflare-just-changed-how-ai-crawlers-scrape-the-internet-at-large/\"\u003eCloudflare właśnie zmieniło sposób, w jaki crawlery AI skanują cały internet; podejście oparte na zgodzie toruje drogę nowemu modelowi biznesowemu\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eCloudflare robi duży krok w stronę monetyzacji danych do trenowania AI. Od teraz wszystkie nowe dane hostowane na Cloudflare są domyślnie niedostępne dla crawlerów AI. Pojawiła się też nowa opcja, dzięki której strona może zwracać kod \u003ca href=\"https://blog.cloudflare.com/introducing-pay-per-crawl/\"\u003eHTTP 402 („Payment required”)\u003c/a\u003e i pobierać opłatę za dostęp. Oczywiście Cloudflare będzie tu pośrednikiem, co daje mu znaczną kontrolę i siłę finansową.\u003c/p\u003e","title":"2025-07-02"},{"content":"Kodowanie wspomagane przez AI dla zespołów, które nie mogą sobie pozwolić na vibe\u0026rsquo;y\nBardzo fajny przewodnik po efektywnym używaniu agentów AI do kodowania. Krótki, ale daje pojęcie, gdzie kopać.\n","permalink":"https://meshrefine.com/pl/microposts/2025-07-01-agentic-coding-advice/","summary":"\u003cp\u003e\u003ca href=\"https://blog.nilenso.com/blog/2025/05/29/ai-assisted-coding/\"\u003eKodowanie wspomagane przez AI dla zespołów, które nie mogą sobie pozwolić na vibe\u0026rsquo;y\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eBardzo fajny przewodnik po efektywnym używaniu agentów AI do kodowania. Krótki, ale daje pojęcie, gdzie kopać.\u003c/p\u003e","title":"2025-07-01"},{"content":"Szef wyszukiwarki Google ujawnia podejście „systemu gry”, gdy w trybie AI rusza wdrażanie reklam\nGoogle będzie pokazywać reklamy w swoim trybie AI. Całkowicie spodziewany ruch ze strony giganta wyszukiwania, zważywszy że wyszukiwanie AI i inne nowe funkcje psują tradycyjny model reklamowy. Ciekawie będzie zobaczyć, jak te nowe techniki integrowania reklam będą ewoluować i jak będzie wyglądać nowe pokolenie blokerów reklam.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-30-google-to-roll-out-ads-in-ai-mode/","summary":"\u003cp\u003e\u003ca href=\"https://ppc.land/google-search-head-reveals-game-system-approach-as-ai-mode-begins-advertising-rollout/\"\u003eSzef wyszukiwarki Google ujawnia podejście „systemu gry”, gdy w trybie AI rusza wdrażanie reklam\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eGoogle będzie pokazywać reklamy w swoim trybie AI. Całkowicie spodziewany ruch ze strony giganta wyszukiwania, zważywszy że wyszukiwanie AI i inne nowe funkcje psują tradycyjny model reklamowy. Ciekawie będzie zobaczyć, jak te nowe techniki integrowania reklam będą ewoluować i jak będzie wyglądać nowe pokolenie blokerów reklam.\u003c/p\u003e","title":"2025-06-30"},{"content":"Kiedy pracujesz z agentem AI do kodowania, naprawdę chcesz dostarczyć mu mnóstwo instrukcji dotyczących workflow, organizacji bazy kodu, wytycznych stylistycznych i nie tylko. Te instrukcje powinny być wielokrotnego użytku i komponowalne, żeby wszędzie mieć jednolite bazy kodu. Repozytorium zawiera przykłady takich instrukcji dla web developmentu i Windsurfa.\nPolecam stworzyć podobny zestaw plików dla projektów, nad którymi pracujesz, utrzymywać je i kompilować do AGENTS.md/CLAUDE.md/GEMINI.md prostym poleceniem cp:\n$ cp Workflow.md Styles.md Structure.md \u0026gt; AGENTS.md ","permalink":"https://meshrefine.com/pl/microposts/2025-06-28-b5dadddc/","summary":"\u003cp\u003eKiedy pracujesz z agentem AI do kodowania, \u003cem\u003enaprawdę\u003c/em\u003e chcesz dostarczyć mu mnóstwo instrukcji dotyczących workflow, organizacji bazy kodu, wytycznych stylistycznych i nie tylko. Te instrukcje powinny być wielokrotnego użytku i komponowalne, żeby wszędzie mieć jednolite bazy kodu. \u003ca href=\"https://github.com/Shamail/ai-coding-template\"\u003eRepozytorium\u003c/a\u003e zawiera przykłady takich instrukcji dla web developmentu i Windsurfa.\u003c/p\u003e\n\u003cp\u003ePolecam stworzyć podobny zestaw plików dla projektów, nad którymi pracujesz, utrzymywać je i kompilować do \u003ccode\u003eAGENTS.md\u003c/code\u003e/\u003ccode\u003eCLAUDE.md\u003c/code\u003e/\u003ccode\u003eGEMINI.md\u003c/code\u003e prostym poleceniem \u003ccode\u003ecp\u003c/code\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ cp Workflow.md Styles.md Structure.md \u0026gt; AGENTS.md\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Szablon do kodowania wspomaganego przez AI"},{"content":"Microsoft reaktywuje elektrownię jądrową Three Mile Island szybciej, niż zakładał harmonogram\nPopyt na AI wskrzesza energetykę jądrową — najwydajniejsze i bezemisyjne źródło energii, jakim obecnie dysponujemy. To dobitne przypomnienie, że nie można rozpatrywać bezpośrednich skutków w oderwaniu od ich konsekwencji drugiego i trzeciego rzędu.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-28-b46c7630/","summary":"\u003cp\u003e\u003ca href=\"https://www.techradar.com/pro/microsofts-rekindling-of-three-mile-island-nuclear-plant-is-ahead-of-schedule\"\u003eMicrosoft reaktywuje elektrownię jądrową Three Mile Island szybciej, niż zakładał harmonogram\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePopyt na AI wskrzesza energetykę jądrową — najwydajniejsze i bezemisyjne źródło energii, jakim obecnie dysponujemy. To dobitne przypomnienie, że nie można rozpatrywać bezpośrednich skutków w oderwaniu od ich konsekwencji drugiego i trzeciego rzędu.\u003c/p\u003e","title":"2025-06-28"},{"content":"State of Cybersecurity Resilience 2025\nTylko jedna na dziesięć organizacji jest wystarczająco chroniona przed zagrożeniami związanymi z AI. Pośpieszne wdrażanie narzędzi opartych na AI dramatycznie zwiększa powierzchnię ataku. Kluczowe jest staranne i metodyczne opracowanie strategii bezpieczeństwa dla każdego systemu, zbieranie najlepszych praktyk i edukowanie interesariuszy.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-28-3169d51b/","summary":"\u003cp\u003e\u003ca href=\"https://www.accenture.com/us-en/insights/security/state-cybersecurity-2025\"\u003eState of Cybersecurity Resilience 2025\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eTylko jedna na dziesięć organizacji jest wystarczająco chroniona przed zagrożeniami związanymi z AI. Pośpieszne wdrażanie narzędzi opartych na AI dramatycznie zwiększa powierzchnię ataku. Kluczowe jest staranne i metodyczne opracowanie strategii bezpieczeństwa dla każdego systemu, zbieranie najlepszych praktyk i edukowanie interesariuszy.\u003c/p\u003e","title":"2025-06-28"},{"content":"Swift Android Workgroup\nApple utworzyło grupę roboczą wspierającą tworzenie aplikacji na Androida w Swifcie. Może to być ciekawe dla firm, które już mają aplikacje na iOS i chciałyby ponownie wykorzystać logikę biznesową na Androidzie. UI i inne komponenty specyficzne dla platformy trzeba jednak nadal pisać przy użyciu natywnych frameworków i bibliotek.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-27-cb648728/","summary":"\u003cp\u003e\u003ca href=\"https://www.swift.org/android-workgroup/\"\u003eSwift Android Workgroup\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eApple utworzyło grupę roboczą wspierającą tworzenie aplikacji na Androida w Swifcie.\nMoże to być ciekawe dla firm, które już mają aplikacje na iOS i chciałyby ponownie wykorzystać logikę biznesową na Androidzie. UI i inne komponenty specyficzne dla platformy trzeba jednak nadal pisać przy użyciu natywnych frameworków i bibliotek.\u003c/p\u003e","title":"2025-06-27"},{"content":"Twórz i udostępniaj aplikacje oparte na AI z Claude\nNowa funkcja od Anthropic, która pozwala tworzyć i udostępniać małe aplikacje oparte na AI przy użyciu artefaktów. Aplikacje te korzystają w tym celu z konta Claude użytkownika końcowego. Okazuje się, że Gemini ma taką funkcję już od jakiegoś czasu.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-26-93a301c0/","summary":"\u003cp\u003e\u003ca href=\"https://www.anthropic.com/news/claude-powered-artifacts\"\u003eTwórz i udostępniaj aplikacje oparte na AI z Claude\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eNowa funkcja od Anthropic, która pozwala tworzyć i udostępniać małe aplikacje oparte na AI przy użyciu artefaktów. Aplikacje te korzystają w tym celu z konta Claude użytkownika końcowego.\n\u003ca href=\"https://x.com/emollick/status/1938091740121935929\"\u003eOkazuje się\u003c/a\u003e, że Gemini ma taką funkcję już od jakiegoś czasu.\u003c/p\u003e","title":"2025-06-26"},{"content":"Gemini CLI: twój open-source\u0026rsquo;owy agent AI\nTeraz Google ma własnego agenta do kodowania w CLI. Ogromny kontekst, hojny darmowy plan (w większości przypadków jest po prostu darmowy) i pełny open source. Jeszcze go nie wypróbowałem, ale wygląda imponująco.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-25-9bb932fa/","summary":"\u003cp\u003e\u003ca href=\"https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/\"\u003eGemini CLI: twój open-source\u0026rsquo;owy agent AI\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eTeraz Google ma własnego agenta do kodowania w CLI. Ogromny kontekst, hojny darmowy plan (w większości przypadków jest po prostu darmowy) i pełny open source. Jeszcze go nie wypróbowałem, ale wygląda imponująco.\u003c/p\u003e","title":"2025-06-25"},{"content":"Anthropic wygrywa w sprawie o trenowanie AI w procesie o prawa autorskie, ale czeka je rozprawa za pirackie książki\nBardzo ważny precedens prawny w dziedzinie praw autorskich. TL;DR: trenowanie modeli na legalnie pozyskanych materiałach objętych prawem autorskim to dozwolony użytek (fair use). Twórcy modelu muszą zadbać o to, żeby jego wyniki były „w swej istocie transformatywne”.\nNielegalne pozyskiwanie danych treningowych jest karalne tak jak dotychczas.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-25-f08b90df/","summary":"\u003cp\u003e\u003ca href=\"https://apnews.com/article/anthropic-ai-fair-use-copyright-pirated-libraries-1e5cece51c2e4bd0bb21d94de2abb035\"\u003eAnthropic wygrywa w sprawie o trenowanie AI w procesie o prawa autorskie, ale czeka je rozprawa za pirackie książki\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eBardzo ważny precedens prawny w dziedzinie praw autorskich. TL;DR: trenowanie modeli na legalnie pozyskanych materiałach objętych prawem autorskim to dozwolony użytek (fair use). Twórcy modelu muszą zadbać o to, żeby jego wyniki były „w swej istocie transformatywne”.\u003c/p\u003e\n\u003cp\u003eNielegalne pozyskiwanie danych treningowych jest karalne tak jak dotychczas.\u003c/p\u003e","title":"2025-06-25"},{"content":"Zazwyczaj staram się podchodzić do wszelkich nowych, błyszczących zabawek z pewną dozą sceptycyzmu. Dokładnie taki, do niedawna, był mój stosunek do systemów wieloagentowych. Powiedziałbym, że nie jest to zaskakujące, ponieważ wokół nich jest teraz mnóstwo szumu, a ja nie widziałem prawdziwie udanych przykładów takiego podejścia. Większość realizacji, które faktycznie działały, należała do jednego z następujących typów:\nSystemy agentowe działające według określonego planu. Czyli LLM z narzędziami, wytrenowane do automatyzacji konkretnego procesu. Dzięki temu każdy krok można testować osobno i weryfikować jego wyniki. Opisywane są takie systemy zazwyczaj w postaci skierowanego grafu acyklicznego (DAG), czasem dynamicznego, i tworzone przy użyciu już standardowych prymitywów z frameworków typu LangChain i Griptape1. Tak funkcjonowała wczesna implementacja Gemini Deep Research, w której najpierw tworzono plan wyszukiwania, następnie wykonywano samo wyszukiwanie, a na końcu składano wynik. Rozwiązania działające w systemach ze sprzężeniem zwrotnym. Różne Claude Code, Cursor i inne agenty operujące na kodzie. Im silniejsze sprzężenie zwrotne, czyli im lepszy tooling i surowsza kontrola typów, tym większe szanse, że ostatecznie nie zepsują wam bazy kodu2. Modele trenowane za pomocą Reinforcement Learning, takie jak modele z interleaved thinking, na przykład OpenAI o3. To osobna i bardzo ciekawa rozmowa, ale nawet takie modele mają jakieś modus operandi, określone przez specyfikę ich treningu. Tymczasem systemy wieloagentowe typu otwartego, ze względu na ich ogólną zawodność, istniały dotychczas głównie w formie proof of concept. W społeczności brakowało zrozumienia, gdzie je stosować i jak dokładnie je implementować. Aż pojawił się głęboki artykuł inżynierski od Anthropic o tym, jak tworzyli swój Deep Research. Zdefiniowano w nim wystarczająco jasne ramy do budowy takich systemów i to właśnie je dzisiaj przeanalizujemy.\nSedno sprawy Najważniejsze w tym artykule jest wyodrębnienie wzorca systemów wieloagentowych z dynamiczną orkiestracją. Tak, tak, przeprowadzam tu bezpośrednią analogię do klasycznych wzorców projektowych ze świata programowania.\nKlasyczne wzorce to gęsto upakowane fragmenty mądrości architektów i programistów, którzy napisali setki tysięcy systemów oprogramowania. Analizując je, wyodrębnili pewne prawidłowości, które sformalizowali w celu podniesienia poziomu abstrakcji problemów architektonicznych i ułatwienia komunikacji.\nDobry wzorzec składa się z3:\nChwytliwej nazwy. Obowiązkowy składnik, bez którego wzorzec po prostu się nie przyjmie. Opisu problemu, który rozwiązuje. Zazwyczaj jest on na tyle ogólny, by warto było go uogólniać. Opisu samego wzorca. I opisu, gdzie nie należy go stosować. Spójrzmy teraz na to, co inżynierowie Anthropic przedstawiają w swoim artykule:\nNazwa W artykule nazywają go orkiestrator-worker, co oddaje istotę, ale gubi ważną różnicę w stosunku do klasycznego wzorca — dynamiczną naturę i adaptację zadań dla workerów w zależności od pierwotnego zadania. Uważam, że jest to na tyle istotna cecha, by odzwierciedlić ją w nazwie. Inne określenia, których używają — Advanced Research, multi-agent research system — dotyczą już raczej opisu obszaru zastosowań. Dlatego dalej będę go nazywał \u0026ldquo;Adaptive Orchestrator\u0026rdquo;, czyli AdOrc4.\nOpis problemu This unpredictability makes AI agents particularly well-suited for research tasks. Research demands the flexibility to pivot or explore tangential connections as the investigation unfolds. The model must operate autonomously for many turns, making decisions about which directions to pursue based on intermediate findings. A linear, one-shot pipeline cannot handle these tasks.\nThe essence of search is compression: distilling insights from a vast corpus. Subagents facilitate compression by operating in parallel with their own context windows, exploring different aspects of the question simultaneously before condensing the most important tokens for the lead research agent. Each subagent also provides separation of concerns—distinct tools, prompts, and exploration trajectories—which reduces path dependency and enables thorough, independent investigations.\n…\nOur internal evaluations show that multi-agent research systems excel especially for breadth-first queries that involve pursuing multiple independent directions simultaneously.\nInżynierowie jasno wskazują, w jakich przypadkach wzorzec sprawdza się dobrze:\nW przypadkach, gdzie konieczna jest modyfikacja planu w zależności od wyników pośrednich. To nie są deterministyczne procesy biznesowe, to badanie otaczającego świata. Zadania poszukiwawcze i badawcze idealnie tu pasują. Tam, gdzie napotykamy techniczne ograniczenia pojedynczego agenta. Głównym jest kontekst, ale pociąga on za sobą opóźnienia i wysoki koszt inferencji, a także pewien spadek jakości związany ze specyfiką mechanizmu uwagi. I wreszcie, w sytuacjach, w których istnieje możliwość uruchomienia dużej liczby niezależnych, równoległych podzadań. Wzorzec sprawdza się najlepiej np. w poszukiwaniach patentowych czy Due Diligence, czyli tam, gdzie ludzie również pracują równolegle. Opis wzorca Our Research system uses a multi-agent architecture with an orchestrator-worker pattern, where a lead agent coordinates the process while delegating to specialized subagents that operate in parallel.\nThe multi-agent architecture in action: user queries flow through a lead agent that creates specialized subagents to search for different aspects in parallel.\nWhen a user submits a query, the lead agent analyzes it, develops a strategy, and spawns subagents to explore different aspects simultaneously. As shown in the diagram above, the subagents act as intelligent filters by iteratively using search tools to gather information, in this case on AI agent companies in 2025, and then returning a list of companies to the lead agent so it can compile a final answer.\nTraditional approaches using Retrieval Augmented Generation (RAG) use static retrieval. That is, they fetch some set of chunks that are most similar to an input query and use these chunks to generate a response. In contrast, our architecture uses a multi-step search that dynamically finds relevant information, adapts to new findings, and analyzes results to formulate high-quality answers.\nStruktura wzorca z opisu jest jasna:\nSystem składa się z orkiestratora i workerów. Są to LLM-y (lub LMM-y5) z dostępem do narzędzi. Orkiestrator w ogólnym przypadku może przydzielać konkretne narzędzia konkretnym workerom. Do systemu trafia zadanie oraz opis pożądanego rezultatu. Proces rozpoczyna się od budowy planu, w którym zadania mogą być wykonywane zarówno przez samego orkiestratora, jak i przez wyspecjalizowanych workerów, jeśli spełnia to warunki wymienione powyżej. Na każdym kroku orkiestrator uruchamia workerów, którzy wykonują działania i zwracają mu uzyskane dane. Na końcu cyklu sprawdzany jest warunek zakończenia, i proces albo wraca do punktu 3, gdzie orkiestrator modyfikuje plan, albo proces kończy się i wynik jest zwracany użytkownikowi. Podam kilka możliwych przyczyn zakończenia: Osiągnięcie wymagań zadania (pomyślne wyjście); Przekroczenie przydzielonego budżetu; Przekroczenie zadanej liczby iteracji; Zbieżność (brak widocznej poprawy w ostatnich kilku iteracjach). graph TD subgraph \u0026#34;Cykl AdOrc\u0026#34; A(\u0026#34;1\\. Otrzymanie zadania i oczekiwanego rezultatu\u0026#34;) --\u0026gt; B(\u0026#34;2\\. Budowa / Modyfikacja planu\u0026#34;); B --\u0026gt; C(\u0026#34;3\\. Uruchomienie workerów i odbiór wyników\u0026#34;); C --\u0026gt; D{\u0026#34;4\\. Sprawdzenie warunku zakończenia\u0026#34;}; D -- \u0026#34;Nie, potrzebne dopracowanie\u0026#34; --\u0026gt; B; D -- \u0026#34;Tak, cel osiągnięty\u0026#34; --\u0026gt; E(\u0026#34;Zwrot wyniku do użytkownika\u0026#34;); end subgraph \u0026#34;Powody zakończenia\u0026#34; F[\u0026#34;-Zgodność wyniku z wymaganiami\u0026lt;br/\u0026gt;-Przekroczenie budżetu lub limitu iteracji\u0026lt;br/\u0026gt;-Zbieżność wyniku (brak poprawy)\u0026#34;]; end D -.- F; Ograniczenia Zobaczmy teraz, gdzie ten wzorzec sprawdza się gorzej. Autorzy piszą:\n… in practice, these architectures burn through tokens fast. In our data, agents typically use about 4× more tokens than chat interactions, and multi-agent systems use about 15× more tokens than chats. For economic viability, multi-agent systems require tasks where the value of the task is high enough to pay for the increased performance. Further, some domains that require all agents to share the same context or involve many dependencies between agents are not a good fit for multi-agent systems today. For instance, most coding tasks involve fewer truly parallelizable tasks than research, and LLM agents are not yet great at coordinating and delegating to other agents in real time.\n…\nSubagent output to a filesystem to minimize the ‘game of telephone.’ Direct subagent outputs can bypass the main coordinator for certain types of results, improving both fidelity and performance.\nJak widać, podejście to ma również wady:\nCena. Uruchomienie takiego systemu jest drogie, dlatego powinien być używany do zadań o stosunkowo wysokiej wartości ekonomicznej, np. analizy precedensów prawnych, przeglądu artykułów w określonej dziedzinie naukowej, zbierania opinii i porad przy nauce nowej technologii. Niezależność agentów. Tak, czasami jest to wada, na przykład, gdy agenci muszą utrzymywać duży wspólny kontekst. Przykładem może być system przetwarzania dokumentów, który jednocześnie analizuje dokument z różnych perspektyw. W implementacji Deep Research workerzy musieli czasami komunikować się przez system plików, co należy traktować jako protezę. Opóźnienia. Cykliczna natura badań z wykorzystaniem potężnych (a co za tym idzie, wolnych) modeli prowadzi do tego, że oczekiwanie na wynik przez kilka minut jest zjawiskiem normalnym. Wymaga to specjalnej konstrukcji interakcji z użytkownikiem, co czyni go nieodpowiednim dla ogromnej części zastosowań. W związku z tym AdOrc najczęściej nie nadaje się do takich scenariuszy jak:\nPisanie nowego kodu. Jak od dawna wiadomo, pisanie kodu nie zawsze idzie w parze z równoległością, a dzielenie zadań w taki sposób, aby członkowie zespołu sobie nie przeszkadzali, to poważny ból głowy. Niemniej jednak ten wzorzec może być przydatny w innych aspektach tworzenia oprogramowania, pomagając wejść w nową bazę kodu, refaktoryzować i debugować. Automatyzacja procesów biznesowych. Większość z nich jest stosunkowo dobrze sformalizowana i dlatego lepiej rozwiązują je agenci o stałym planie. Ostatnio pojawiają się studia przypadków bardziej rozbudowanych i elastycznych automatyzacji, ale nie dostarczają one wystarczającej ilości szczegółów, aby ocenić ich skuteczność i niezawodność. Przeszukiwanie baz wiedzy. Tutaj ten wzorzec jest w zasadzie stosowalny, ale ze względu na wysokie opóźnienia i koszty, do takich zadań lepiej nadają się klasyczne systemy RAG. Tworzenie AGI lub ASI. Nie, nie twierdzę, że ten wzorzec jest nieprzydatny do AGI. Po prostu nikt nie wie, co w ogóle jest do tego przydatne. Pożyteczne rady Teraz, gdy zapoznaliśmy się z moim zdaniem głównym wkładem tego posta w naszą wiedzę techniczną, spójrzmy na niektóre rady, których udzielają deweloperzy Anthropic budowniczym podobnych systemów agentowych. Ponieważ deweloperzy świetnie opatrzyli je swoimi notatkami, nie będę powtarzał ich wszystkich, ograniczę się tylko do tych, które najbardziej mi zaimponowały.\nZacznijcie oceniać od samego początku, nawet na małej próbce. Ewaluacja modelu jest droga, skomplikowana i niejasna, dlatego wiele produktów ogranicza się do \u0026ldquo;vibe checkingu\u0026rdquo;, lub, jak ta metoda jest jeszcze nazywana, \u0026ldquo;sprawdziłem ten prompt w ChatGPT, wydaje się, że działa\u0026rdquo;. Ta droga prowadzi donikąd (do wielomilionowych pozwów, do porażki produktu lub po prostu do jailbreaku systemu, niepotrzebne skreślić). Budowa skutecznego i automatycznego systemu ewaluacji i red teamingu, który pomoże wyłapywać problemy, zanim się jeszcze ujawnią, to ważna praktyka inżynierska. Nie wspominając o tym, że ulepszanie promptów systemu bez możliwości ich wiarygodnej oceny to coś z gatunku walenia w piniatę z zawiązanymi oczami.\nDo tworzenia ewaluacji można używać takich projektów jak promptfoo i DeepEval, które wspierają wiele przydatnych metryk i LLM-as-judge \u0026ldquo;z pudełka\u0026rdquo;.\nLLM-as-judge skaluje się, jeśli się go odpowiednio przygotuje. Tak, ale jego przygotowanie to sztuka sama w sobie. Różne LLM-y oceniają ten sam wynik zupełnie inaczej. W artykule proponuje się użycie LLM do wystawiania odpowiedziom ocen od 0 do 1. To bezpośrednio zaprzecza znanym pracom o tym, że nawet potężne modele nie potrafią konsekwentnie wystawiać podobnych ocen. Najbardziej niezawodną metodą użycia LLM-as-judge jest porównywanie parami dwóch wyników, i to z zastosowaniem głosowania większościowego oraz zamiany wariantów miejscami. Krótko mówiąc, w tej radzie coś się nie zgadza. Aczkolwiek, całkiem możliwe, że przy implementacji Deep Research oceny działały wystarczająco dobrze.\nOcena przez ludzi wyłapuje to, co przeoczyła automatyka. Ocena przez ludzi to drogi i skrajnie subiektywny proces. Ale tego kroku nie wolno pomijać, ponieważ tylko on może wykryć przypadki brzegowe, nieprzewidziane w testach. W artykule przytoczono przykład, jak tester zauważył, że początkowa wersja systemu dawała się nabrać na SEO i ignorowała bogate w treść artykuły naukowe i osobiste blogi. LLM-as-judge i inne metryki same w sobie nie mogły tego wykryć, ponieważ nie uwzględniały typu źródła jako parametru wejściowego. Po dodaniu tego parametru i pewnych heurystyk do promptu zachowanie modelu poprawiło się, a testy zostały dostosowane, aby uwzględniać ten parametr.\nAgenci mają stan i kumulujący się błąd. Och, to jest właśnie ten problem, z powodu którego wieloetapowi agenci bez sprzężenia zwrotnego się psują. To teoria prawdopodobieństwa i nie da się z nią dyskutować. Jeśli agent ma 99% szans na poprawne ukończenie kroku, to jakie będzie prawdopodobieństwo poprawnego ukończenia 10-etapowego procesu? 90%. A trzydziestoetapowego? 74%. Stuetapowy proces będzie się psuł w 2/3 przypadków. A to jest sytuacja wyidealizowana. U stochastycznego LLM, działającego w chaotycznym realnym świecie, prawdopodobieństwo problemów jest znacznie wyższe. I nie chodzi tu tyle o przewidywalne awarie techniczne (wada programu, zła strona kodowa), co o specyficzne problemy samego modelu: halucynacje, skoki w logice, zaśmiecanie kontekstu itp.\nSytuację pogarsza fakt, że konsekwencje błędów pozostają w stanie agenta i \u0026ldquo;zatruwają\u0026rdquo; wszystkie kolejne kroki. Wyjściem jest albo wprowadzenie pośredniego sprzężenia zwrotnego, co nie zawsze jest możliwe, albo ograniczenie liczby kroków. To właśnie kombinacja tych metod pozwala wzorcowi AdOrc i w szczególności Deep Research normalnie funkcjonować. Liczba kroków orkiestratora jest tutaj mała, za to na każdym kroku uruchamia on wielu workerów, którzy mają prawo do błędu bez poważnego wpływu na końcowy wynik. Jednocześnie otrzymuje on informacje o wszystkich awariach technicznych, co dostarcza mu sprzężenia zwrotnego i pozwala adaptować się i szukać obejść.\nDebugowanie zyskuje dzięki nowym podejściom. W tym punkcie post staje się aż nazbyt lakoniczny, chociaż to właśnie ta informacja jest niezbędna do budowy niezawodnych systemów agentowych. Anthropic wspomina o logowaniu wzorców podejmowania decyzji i struktur interakcji, ale nie wchodzi przy tym w szczegóły. Jednakże, najprawdopodobniej mają zbudowany dość poważny system do observability:\nLogowane są wszystkie metainformacje (spany) o uruchomieniu workerów, dostarczonych im narzędziach, ogólnym przebiegu wykonania i statusie zakończenia. Struktury interakcji orkiestratora i workerów pozwalają na definiowanie wzorców podejmowania decyzji. Na przykład w 70% przypadków system może zrestartować workera, a w 30% \u0026mdash; po prostu kontynuować pracę zgodnie z planem. Statystyczna obróbka śladów (traces) tysięcy wywołań pozwala zidentyfikować i wzmocnić słabe punkty agenta, nie ujawniając samych danych użytkownika. Ciekawie byłoby przeczytać ich artykuł inżynierski właśnie na ten temat. Niemniej jednak, jest całkiem jasne, że zwykłym logowaniem nie da się obejść i od samego początku projektów tej klasy trzeba закладывать systemy takie jak Langfuse czy OpenTelemetry.\nPodsumowując Powiem wprost \u0026mdash; chciałbym serdecznie podziękować zespołowi Anthropic za tak szczegółowy i praktyczny post. W czasach, gdy szczegóły implementacji projektów AI stały się tajemnicą handlową, strzeżoną za siedmioma pieczęciami, wygląda on jak artefakt z innej epoki, kiedy ceniono inżynierską pomysłowość i eleganckie rozwiązania, a wiedza była dobrem publicznym. Kto wie, może jeszcze tam wrócimy.\nA tymczasem \u0026mdash; czytajcie oryginalny post, subskrybujcie ich blog inżynierski i twórzcie. A wszystko będzie.\nKtórego przegląd można przeczytać w części pierwszej i drugiej.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCzasem przychodzi mi do głowy myśl, że przyszłość programowania należy do Haskella, z jego paradygmatem \u0026ldquo;Jeśli program się skompilował — to prawdopodobnie działa\u0026rdquo;.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nTutaj nie będę zbytnio formalizował i sprowadzał do struktury podobnej do tej opisanej w książce \u0026ldquo;Gang of Four\u0026rdquo;.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCzyta się jak \u0026ldquo;a dork\u0026rdquo;, co nie ma absolutnie żadnego związku z charakterem orkiestratora.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nOdpowiednio Large Language Models i Large Multimodal Models.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://meshrefine.com/pl/posts/claude_deep_research_lessons/","summary":"\u003cp\u003eZazwyczaj staram się podchodzić do wszelkich nowych, błyszczących zabawek z pewną dozą sceptycyzmu. Dokładnie taki, do niedawna, był mój stosunek do systemów wieloagentowych. Powiedziałbym, że nie jest to zaskakujące, ponieważ wokół nich jest teraz mnóstwo szumu, a ja nie widziałem prawdziwie udanych przykładów takiego podejścia. Większość realizacji, które faktycznie działały, należała do jednego z następujących typów:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eSystemy agentowe działające według określonego planu\u003c/strong\u003e. Czyli LLM z narzędziami, wytrenowane do automatyzacji konkretnego procesu. Dzięki temu każdy krok można testować osobno i weryfikować jego wyniki. Opisywane są takie systemy zazwyczaj w postaci skierowanego grafu acyklicznego (DAG), czasem dynamicznego, i tworzone przy użyciu już standardowych prymitywów z frameworków typu LangChain i Griptape\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e. Tak funkcjonowała wczesna implementacja Gemini Deep Research, w której najpierw tworzono plan wyszukiwania, następnie wykonywano samo wyszukiwanie, a na końcu składano wynik.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRozwiązania działające w systemach ze sprzężeniem zwrotnym\u003c/strong\u003e. Różne Claude Code, Cursor i inne agenty operujące na kodzie. Im silniejsze sprzężenie zwrotne, czyli im lepszy tooling i surowsza kontrola typów, tym większe szanse, że ostatecznie nie zepsują wam bazy kodu\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModele trenowane za pomocą Reinforcement Learning\u003c/strong\u003e, takie jak modele z \u003ca href=\"https://docs.anthropic.com/en/docs/build-with-claude/extended-thinking#interleaved-thinking\"\u003einterleaved thinking\u003c/a\u003e, na przykład OpenAI o3. To osobna i bardzo ciekawa rozmowa, ale nawet takie modele mają jakieś \u003cem\u003emodus operandi\u003c/em\u003e, określone przez specyfikę ich treningu.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eTymczasem systemy wieloagentowe typu otwartego, ze względu na ich ogólną zawodność, istniały dotychczas głównie w formie \u003cem\u003eproof of concept\u003c/em\u003e. W społeczności brakowało zrozumienia, gdzie je stosować i jak dokładnie je implementować. Aż pojawił się \u003ca href=\"https://www.anthropic.com/engineering/built-multi-agent-research-system\"\u003egłęboki artykuł inżynierski od Anthropic o tym, jak tworzyli swój Deep Research\u003c/a\u003e. Zdefiniowano w nim wystarczająco jasne ramy do budowy takich systemów i to właśnie je dzisiaj przeanalizujemy.\u003c/p\u003e","title":"Claude Deep Research, czyli jak przestałem się martwić i pokochałem systemy wieloagentowe"},{"content":" Radiologia entuzjastycznie przyjęła AI, a mimo to zatrudnienie w niej rośnie. Efekt „augmentacji zamiast automatyzacji” występuje pomimo tego, że — o ile się orientuję — nie zidentyfikowano żadnego „zadania”, w którym ludzcy radiolodzy wygrywają z AI. Może więc model „praca to wiązka zadań” z ekonomii pracy jest niekompletny. [\u0026hellip;]\nCzy potrafisz rozbić własną pracę na zestaw dobrze zdefiniowanych zadań tak, żeby po zautomatyzowaniu każdego z nich dało się zautomatyzować całą twoją pracę? Podejrzewam, że większość ludzi odpowie „nie”. Ale kiedy myślimy o cudzej pracy, której nie rozumiemy tak dobrze jak własnej, model zadań wydaje się wiarygodny, bo nie dostrzegamy wszystkich niuansów.\n— Arvind Narayanan\nNiemniej moje zdanie jest takie, że choć prace nie zostaną w pełni zautomatyzowane, jeden specjalista będzie w stanie wykonać więcej roboty, więc wszystko sprowadza się do klasycznego problemu podaży i popytu. Wierzę, że w większości dziedzin popyt nadal będzie przewyższał podaż, ale nie we wszystkich. Zob. paradoks Jevonsa.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-20-43c9afb5/","summary":"\u003cblockquote\u003e\n\u003cp\u003eRadiologia entuzjastycznie przyjęła AI, a mimo to zatrudnienie w niej rośnie. Efekt „augmentacji zamiast automatyzacji” występuje pomimo tego, że — o ile się orientuję — nie zidentyfikowano żadnego „zadania”, w którym ludzcy radiolodzy wygrywają z AI. Może więc model „praca to wiązka zadań” z ekonomii pracy jest niekompletny. [\u0026hellip;]\u003c/p\u003e\n\u003cp\u003eCzy potrafisz rozbić własną pracę na zestaw dobrze zdefiniowanych zadań tak, żeby po zautomatyzowaniu każdego z nich dało się zautomatyzować całą twoją pracę? Podejrzewam, że większość ludzi odpowie „nie”. Ale kiedy myślimy o \u003cem\u003ecudzej pracy\u003c/em\u003e, której nie rozumiemy tak dobrze jak własnej, model zadań wydaje się wiarygodny, bo nie dostrzegamy wszystkich niuansów.\u003c/p\u003e","title":"2025-06-20"},{"content":"Cato CTRL™ Threat Research: atak PoC wymierzony w Model Context Protocol (MCP) Atlassiana wprowadza nowe ryzyko typu „Living off AI”\nKolejna podatność serwera MCP, tym razem u Atlassiana. Umożliwia prompt injection z zewnętrznych zgłoszeń supportowych, dając atakującemu okazję do eksfiltracji danych i siania spustoszenia w wewnętrznym systemie.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-20-atlassian-mcp-vulnerability/","summary":"\u003cp\u003e\u003ca href=\"https://www.catonetworks.com/blog/cato-ctrl-poc-attack-targeting-atlassians-mcp/\"\u003eCato CTRL™ Threat Research: atak PoC wymierzony w Model Context Protocol (MCP) Atlassiana wprowadza nowe ryzyko typu „Living off AI”\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eKolejna podatność serwera MCP, tym razem u Atlassiana. Umożliwia prompt injection z zewnętrznych zgłoszeń supportowych, dając atakującemu okazję do eksfiltracji danych i siania spustoszenia w wewnętrznym systemie.\u003c/p\u003e","title":"2025-06-20"},{"content":"Tryb agenta z obsługą narzędzi MCP jest już ogólnie dostępny w Visual Studio\nGitHub Copilot udostępnił w wersji ogólnodostępnej obsługę Model Context Protocol w swoim trybie agenta. Typowe problemy bezpieczeństwa z MCP potęguje opcja „Always allow” przy korzystaniu z narzędzi.\n","permalink":"https://meshrefine.com/pl/microposts/github_mcp_support/","summary":"\u003cp\u003e\u003ca href=\"https://github.blog/changelog/2025-06-17-visual-studio-17-14-june-release/\"\u003eTryb agenta z obsługą narzędzi MCP jest już ogólnie dostępny w Visual Studio\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eGitHub Copilot udostępnił w wersji ogólnodostępnej obsługę Model Context Protocol w swoim trybie agenta. \u003ca href=\"https://techcommunity.microsoft.com/blog/microsoft-security-blog/understanding-and-mitigating-security-risks-in-mcp-implementations/4404667\"\u003eTypowe problemy bezpieczeństwa z MCP\u003c/a\u003e potęguje opcja „Always allow” przy korzystaniu z narzędzi.\u003c/p\u003e","title":"2025-06-18"},{"content":"Aktualizacja modelu rozliczania zużycia w GitHub Copilot\nTo koniec nielimitowanego dostępu do najlepszych modeli wszystkich czołowych dostawców w GitHub Copilot Chat. Teraz bez limitu dostępne są tylko GPT-4o i GPT-4.1.\nTo kolejny krok w stronę globalnej rewizji strategii cenowych produktów opartych na AI. Faza agresywnej promocji dobiegła końca. AI staje się kolejnym medium, jak prąd czy woda, i możemy się spodziewać podobnych strategii.\n","permalink":"https://meshrefine.com/pl/microposts/github_copilot_premium_requests/","summary":"\u003cp\u003e\u003ca href=\"https://github.blog/changelog/2025-06-18-update-to-github-copilot-consumptive-billing-experience/\"\u003eAktualizacja modelu rozliczania zużycia w GitHub Copilot\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eTo koniec nielimitowanego dostępu do najlepszych modeli wszystkich czołowych dostawców w GitHub Copilot Chat. Teraz bez limitu dostępne są tylko GPT-4o i GPT-4.1.\u003c/p\u003e\n\u003cp\u003eTo kolejny krok w stronę globalnej rewizji strategii cenowych produktów opartych na AI. Faza agresywnej promocji dobiegła końca. AI staje się kolejnym medium, jak prąd czy woda, i możemy się spodziewać podobnych strategii.\u003c/p\u003e","title":"2025-06-18"},{"content":"https://eugeneyan.com/writing/writing-faq/\nTo FAQ o prowadzeniu bloga całkiem nieźle współgra z moją motywacją\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-18-8218e0a2/","summary":"\u003cp\u003e\u003ca href=\"https://eugeneyan.com/writing/writing-faq/\"\u003ehttps://eugeneyan.com/writing/writing-faq/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eTo FAQ o prowadzeniu bloga całkiem nieźle współgra z moją motywacją\u003c/p\u003e","title":"2025-06-18"},{"content":"AI czyni humanistykę ważniejszą, ale też dużo dziwniejszą\nAI to w edukacji broń obosieczna. Pomaga studentom oszukiwać przy tradycyjnych zadaniach, ale jest też potężnym nowym narzędziem, które potrafi ich naprawdę wciągnąć. Edukacja musi się zmienić, ale wierzę, że ostatecznie wyjdzie jej to na dobre.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-18-4d1e560d/","summary":"\u003cp\u003e\u003ca href=\"https://resobscura.substack.com/p/ai-makes-the-humanities-more-important\"\u003eAI czyni humanistykę ważniejszą, ale też dużo dziwniejszą\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eAI to w edukacji broń obosieczna. Pomaga studentom oszukiwać przy tradycyjnych zadaniach, ale jest też potężnym nowym narzędziem, które potrafi ich naprawdę wciągnąć. Edukacja musi się zmienić, ale wierzę, że ostatecznie wyjdzie jej to na dobre.\u003c/p\u003e","title":"2025-06-18"},{"content":"Akademicy oszukują samych siebie w kwestii AI\nJeśli chcesz krytykować AI, rób to z głową :)\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-18-424531d9/","summary":"\u003cp\u003e\u003ca href=\"https://www.learningfromexamples.com/p/what-academics-get-wrong\"\u003eAkademicy oszukują samych siebie w kwestii AI\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eJeśli chcesz krytykować AI, rób to z głową :)\u003c/p\u003e","title":"2025-06-18"},{"content":"Jak zbudowaliśmy nasz wieloagentowy system badawczy\nŚwietna nowa lektura od Anthropic o tym, jak zbudowali swoje narzędzie Deep Research. Mnóstwo praktycznych porad.\n","permalink":"https://meshrefine.com/pl/microposts/2025-06-16-df4a051d/","summary":"\u003cp\u003e\u003ca href=\"https://www.anthropic.com/engineering/built-multi-agent-research-system\"\u003eJak zbudowaliśmy nasz wieloagentowy system badawczy\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eŚwietna nowa lektura od Anthropic o tym, jak zbudowali swoje narzędzie Deep Research. Mnóstwo praktycznych porad.\u003c/p\u003e","title":"2025-06-16"},{"content":"GitHub Copilot może używać zdefiniowanego przez użytkownika promptu do generowania komunikatów commitów. Żeby to skonfigurować, ustaw github.copilot.chat.commitMessageGeneration.instructions w pliku settings.json w ten sposób:\n{ \u0026#34;github.copilot.chat.commitMessageGeneration.instructions\u0026#34;: [ {\u0026#34;text\u0026#34;: \u0026#34;Write a concise commit message starting with a change tag\u0026#34;}, ] } Możesz też użyć pliku z szablonem. W tym celu utwórz plik, na przykład commit-message-template.md, i skonfiguruj go tak:\n{ \u0026#34;github.copilot.chat.commitMessageGeneration.instructions\u0026#34;: [ {\u0026#34;file\u0026#34;: \u0026#34;commit-message-template.md\u0026#34;} ] } ","permalink":"https://meshrefine.com/pl/microposts/gilhub_copilot_commit_message_template/","summary":"\u003cp\u003eGitHub Copilot może używać zdefiniowanego przez użytkownika promptu do generowania komunikatów commitów. Żeby to skonfigurować, ustaw \u003ccode\u003egithub.copilot.chat.commitMessageGeneration.instructions\u003c/code\u003e w pliku \u003ccode\u003esettings.json\u003c/code\u003e w ten sposób:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;github.copilot.chat.commitMessageGeneration.instructions\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;text\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;Write a concise commit message starting with a change tag\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e},\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eMożesz też użyć pliku z szablonem. W tym celu utwórz plik, na przykład \u003ccode\u003ecommit-message-template.md\u003c/code\u003e, i skonfiguruj go tak:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nt\"\u003e\u0026#34;github.copilot.chat.commitMessageGeneration.instructions\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"p\"\u003e[\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"p\"\u003e{\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026#34;file\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;commit-message-template.md\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"p\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"2025-06-16"},{"content":"W czasach, gdy słowa AI i hype stały się praktycznie synonimami, bardzo ważne jest mądre podejście do wyboru źródeł informacji. Wokół jest teraz zbyt wiele szumu informacyjnego, a wybranie czegoś naprawdę wartościowego z morza artykułów różnych ewangelistów AI i wygenerowanych śmieci jest niezwykle trudne.\nW tym wpisie opowiem, jakie materiały czytam, aby być na bieżąco z najnowszymi wydarzeniami.\nBlogi Dobry blog to sztabka złota. Stosunek sygnału do szumu dąży w nim do nieskończoności. Dlatego zacznę od listy blogów, które uważam za przydatne.\nSimon Willison\u0026rsquo;s Weblog Gdyby zmuszono mnie do rezygnacji ze wszystkich blogów oprócz jednego, zostawiłbym ten. Simon Willison, jeden z twórców frameworka webowego Django, jest wzorem blogera technicznego, skupiającego się na LLM i innych technologiach związanych z AI. I nie bez powodu — stale dodaje do swojego narzędzia llm wszystkie najnowsze osiągnięcia i możliwości, zarówno z API dostawców chmurowych, jak i z lokalnych bibliotek do inferencji, takich jak Ollama. Na jego blogu codziennie pojawiają się recenzje nowych modeli 1, porady dla programistów wykorzystujących AI w swojej pracy, linki do ciekawych wiadomości z innych blogów i wiele więcej.\nOprócz AI, Simon omawia nowości ze świata Pythona, JS i technologii webowych.\nThe Batch The Batch to cotygodniowy newsletter, którego kuratorem jest Andrew Ng, twórca najpopularniejszych i najbardziej przystępnych kursów z zakresu uczenia maszynowego, głębokiego uczenia i Generative AI. Oprócz felietonu autora, maile zawierają analizę najważniejszych wiadomości ze świata sztucznej inteligencji z ostatniego tygodnia.\nDodatkowo, na The Batch publikowane są notatki o zastosowaniu AI w biznesie, o najnowszych publikacjach naukowych, a także o wpływie AI na społeczeństwo.\nAhead of AI i The Sequence Jeśli chcesz zagłębić się w bleeding edge i state of the art, trudno znaleźć lepsze miejsce niż blog Sebastiana Raschki. Autor, doktor nauk, działający na styku przemysłu i akademii, regularnie analizuje najważniejsze publikacje i koncepcje, i przekazuje je publiczności w dość prostym języku, dostępnym dla każdego, kto rozumie algorytmy i kod.\nOczywiście, blog tej jakości nie może być często aktualizowany, a nowe artykuły naukowe pojawiają się codziennie. Osobom, które chcą regularniej otrzymywać aktualizacje dotyczące najnowszych badań, polecam The Sequence. Ich The Sequence Radar zawiera krótkie omówienia najciekawszych publikacji. Pozostała część ich materiałów, dostępna tylko w ramach subskrypcji, zawiera bardziej szczegółowe analizy artykułów i analitykę.\nOne Useful Thing One Useful Thing to spojrzenie na AI ze środowiska akademickiego, ale z innej perspektywy. Doktora Ethana Mollicka, jako profesora zarządzania w Wharton School, interesuje przede wszystkim, jak nowoczesna AI wpływa na procesy w edukacji, biznesie, medycynie i innych dziedzinach. Jego główne przesłanie brzmi: cokolwiek robisz, zaproś AI do stołu. Pozwoli to określić zarysy Jagged Frontier 2 w zadaniach, które są ważne właśnie dla Ciebie.\nOprócz sporadycznie aktualizowanego bloga, dr Mollick napisał książkę \u0026ldquo;Co-Intelligence: Living and Working with AI\u0026rdquo;, która, choć nieco przestarzała w szybko zmieniającym się świecie AI, wciąż jest aktualna, ponieważ porusza ponadczasowe kwestie interakcji człowieka z AI w środowisku pracy.\nSzczególnie polecam obserwowanie go na x.com, jego posty w tej sieci to mieszanka zabawnych eksperymentów z najnowszymi modelami, krótkich recenzji publikacji związanych z jego sferą zainteresowań i ogólnych refleksji na temat postępu.\nImport AI Kolejny cotygodniowy newsletter, tym razem od Jacka Clarka, współzałożyciela firmy Anthropic i byłego dyrektora ds. polityki w OpenAI. Jak można się spodziewać po osobie z takim doświadczeniem, jego maile koncentrują się przede wszystkim na AI Safety, etyce i regulacjach, chociaż pojawiają się również notatki techniczne.\nNa końcu każdego listu można znaleźć dobrze napisany szkic science fiction, często nawiązujący do ogólnego tematu omawianych wiadomości. Czasami nawet żałuję, że nie pisze książek zawodowo.\nAI Snake Oil A teraz coś z zupełnie innej beczki. Profesor Arvind Narayanan i jego współautor, doktorant Sayash Kapoor, uchodzą dziś w oczach wielu za sceptyków AI. Jednak ich podejście jest znacznie głębsze niż u przeciętnego negacjonisty. Autorzy patrzą na AI przez pryzmat klasycznej technologii i podnoszą kwestie jej zastosowania i regulacji właśnie z tej perspektywy. Podkreślają, że podejścia stosowane przy założeniu, że sztuczna inteligencja jest bogiem z maszyny, mogą okazać się szkodliwe, jeśli w rzeczywistości jest to zwykła, choć bardzo potężna, technologia ogólnego przeznaczenia. Jednocześnie akceptują i potwierdzają praktyczne korzyści, jakie AI przynosi już teraz. Ich materiały to swoista czerwona pigułka w świecie hype\u0026rsquo;u i zawyżonych oczekiwań.\nDeep Research Oprócz wspomnianych wyżej blogów, które czytam przez starego, dobrego RSS i, w przypadku materiałów z SubStack, przez newsletter, codziennie generuję sobie osobisty przegląd, używając Gemini 2.5 Pro z Deep Research. Można używać podobnych narzędzi od konkurencji, ale moim zdaniem to właśnie Gemini daje najlepszy stosunek szerokości pokrycia do głębi analizy.\nCzytanie takiego przeglądu pozwala mi rano przejrzeć najważniejsze wiadomości z minionego dnia, jeśli nie zostały jeszcze omówione na jednym z blogów. Jeśli nie mam czasu na czytanie, tworzę podcast za pomocą NotebookLM3 i słucham go w drodze do biura.\nPod linkiem można znaleźć prompt, którego używam, oraz przykład wygenerowanego przeglądu za 14 czerwca 2025 r.\nGdzie nie zaglądam Tutaj po prostu wymienię źródła, które świadomie ignoruję. Moim zdaniem życie jest zbyt krótkie, by tracić na nie czas:\nInfluencerzy AI na LinkedIn i innych portalach społecznościowych. Zazwyczaj jest to absolutny, oślepiająco biały szum. e/acc i AI-doomersi. Spory filozoficzne mogą być interesujące, ale wolę bardziej pragmatyczne podejście. Recenzje na YouTube. Warto obejrzeć, żeby nauczyć się sztuki rozciągania pięciominutowego materiału na godzinę. Kilka słów o FOMO (strachu przed przegapieniem czegoś ciekawego) I na koniec, rada dla tych, którzy ciągle monitorują wszystkie możliwe źródła z obawy przed przegapieniem czegoś ważnego: wyluzujcie. Swego czasu uznałem pojawienie się ChatGPT za kolejny chwyt marketingowy. Było mi przykro, ale nic strasznego się nie stało.\nJeśli pojawi się coś naprawdę ważnego, źródła wymienione powyżej pozwolą wam nie tylko się o tym dowiedzieć, ale także zrozumieć, jak to działa, jak to stosować i jak wpłynie to na nasze życie. A resztą nie warto się przejmować.\nZ obowiązkowymi pelikanami na rowerach.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nNierówna granica. Fraza oznacza, że AI może błyszczeć w jednych zadaniach i jednocześnie fatalnie sobie radzić w innych, przy czym niemożliwe jest logiczne określenie, w których – można to stwierdzić tylko empirycznie.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nJest teraz wygodnie zintegrowany bezpośrednio z interfejsem Gemini.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://meshrefine.com/pl/posts/blogs/","summary":"\u003cp\u003eW czasach, gdy słowa AI i hype stały się praktycznie synonimami, bardzo ważne jest mądre podejście do wyboru źródeł informacji. Wokół jest teraz zbyt wiele szumu informacyjnego, a wybranie czegoś naprawdę wartościowego z morza artykułów różnych ewangelistów AI i wygenerowanych śmieci jest niezwykle trudne.\u003c/p\u003e\n\u003cp\u003eW tym wpisie opowiem, jakie materiały czytam, aby być na bieżąco z najnowszymi wydarzeniami.\u003c/p\u003e\n\u003ch2 id=\"blogi\"\u003eBlogi\u003c/h2\u003e\n\u003cp\u003eDobry blog to sztabka złota. Stosunek sygnału do szumu dąży w nim do nieskończoności. Dlatego zacznę od listy blogów, które uważam za przydatne.\u003c/p\u003e","title":"Blogi, w które piszą ludzie"},{"content":"W poprzednim wpisie omówiłem podstawowe koncepcje frameworka AI Griptape, a teraz nadszedł czas, aby zastosować je w praktyce. Spróbujmy ich użyć do stworzenia małej aplikacji, która pomaga w prowadzeniu link-bloga na Telegramie.\nAplikacja będzie otrzymywać adres URL, pobierać jego zawartość, przepuszczać przez LLM w celu wygenerowania skróconego podsumowania, tłumaczyć to podsumowanie na kilka innych języków, składać wszystko w całość i publikować na Telegramie za pomocą bota. Ogólny przepływ pracy można zobaczyć na poniższym schemacie:\nflowchart LR A[\u0026#34;URL\u0026#34;] A --\u0026gt; Parser[\u0026#34;Parser\u0026#34;] --\u0026gt; LLM1[\u0026#34;Sumaryzator\u0026#34;] LLM1 --\u0026gt; Translator1[\u0026#34;Tłumaczenie na język 1\u0026#34;] LLM1 --\u0026gt; Translator2[\u0026#34;Tłumaczenie na język 2\u0026#34;] Translator1 --\u0026gt; Combiner[\u0026#34;Kombinator\u0026#34;] Translator2 --\u0026gt; Combiner LLM1 --\u0026gt; Combiner Combiner --\u0026gt; Telegram[\u0026#34;Bot telegramowy\u0026#34;] Dla uproszczenia pominę implementację bota telegramowego, a także zostawię w spokoju mój ulubiony Human-in-the-loop, który moim zdaniem obowiązkowo powinien znaleźć się przynajmniej gdzieś w okolicach kombinatora 1.\nW trakcie pracy postaramy się zrozumieć, w jakich przypadkach lepiej używać różnych struktur, a także na ile uzyskane grafy są komponowalne i elastyczne na zmiany.\nNo cóż, zaczynajmy.\nTworzymy projekt Jak wspomniałem w poprzednim poście, Griptape to framework dla Pythona, dlatego użyjemy uv do rozpoczęcia projektu:\n$ uv init . $ uv add \u0026#34;griptape[all]\u0026gt;=1.7.2\u0026#34; python-dotenv Dodatek [all] instaluje wszystkie dostępne sterowniki i loadery, co tworzy środowisko o rozmiarze ~650MB. W rzeczywistej aplikacji warto ograniczyć się tylko do rzeczywiście używanych dodatków, których listę można znaleźć w pliku pyproject.toml projektu. Ogólnie są one podzielone dość granularnie, więc w większości przypadków rzeczywisty rozmiar będzie znacznie mniejszy.\nPodłączamy również python-dotenv, ponieważ sterowniki różnych dostawców LLM używają zmiennych środowiskowych do zarządzania kluczami. W naszym przykładzie będziemy używać openrouter.ai2, który dostarcza API podobne do OpenAI dla ogromnej liczby modeli i dostawców.\nW związku z tym, utwórzmy plik .env i umieśćmy w nim klucz:\nOPENROUTER_API_KEY=sk-or-v1-... A teraz szkielet naszej aplikacji:\n# main.py import argparse import dotenv import os dotenv.load_dotenv() def process_url(url: str): \u0026#34;\u0026#34;\u0026#34;Process the provided URL.\u0026#34;\u0026#34;\u0026#34; key = os.environ.get(\u0026#39;OPENROUTER_API_KEY\u0026#39;, \u0026#39;\u0026#39;) if not key: raise ValueError(\u0026#34;OPENROUTER_API_KEY is not set in the environment variables.\u0026#34;) print(f\u0026#34;Processing URL: {url}\u0026#34;) def main(): parser = argparse.ArgumentParser(description=\u0026#39;Process URLs for link blog\u0026#39;) parser.add_argument(\u0026#39;url\u0026#39;, type=str, help=\u0026#39;URL to process\u0026#39;) args = parser.parse_args() process_url(args.url) if __name__ == \u0026#34;__main__\u0026#34;: main() Sprawdzamy:\n$uv run ./main.py google.com Processing URL: google.com Świetnie. Możemy opisywać graf. Lektura dokumentacji odpowiedziała na jedno z moich pytań, postawionych w poprzednim artykule, w następujący sposób:\nGriptape provides three Structures:\n\u0026hellip;\nOf the three, Workflow is generally the most versatile. Agent and Pipeline can be handy in certain scenarios but are less frequently needed if you’re comfortable just orchestrating Tasks directly.\nŚwietnie, tak jak podejrzewałem, pozostałe prymitywy lepiej nadają się do zupełnie podstawowych zadań, więc po prostu bierzemy Workflow wszędzie i przystępujemy do budowania naszych grafów.\nŁadujemy strony hurtowo Zaczniemy od załadowania zawartości strony. Do tego Griptape dostarcza sterownik WebScraper z kilkoma różnymi implementacjami oraz loader WebLoader. Naszym zadaniem jest opakowanie tego w Task:\nfrom griptape.structures import Workflow from griptape.tasks import CodeExecutionTask from griptape.loaders import WebLoader def load_page(task: CodeExecutionTask) -\u0026gt; str: \u0026#34;\u0026#34;\u0026#34;Load the content of the given URL.\u0026#34;\u0026#34;\u0026#34; print(f\u0026#34;Loading page: {task.input.value}\u0026#34;) return WebLoader().load(task.input.value) def print_result(task: CodeExecutionTask) -\u0026gt; None: \u0026#34;\u0026#34;\u0026#34;Print the result of the task.\u0026#34;\u0026#34;\u0026#34; for parent in task.parents: if parent.output.value: print(f\u0026#34;Output: {parent.output.value}\u0026#34;) def process_url(url: str): \u0026#34;\u0026#34;\u0026#34;Process the provided URL.\u0026#34;\u0026#34;\u0026#34; key = os.environ.get(\u0026#34;OPENROUTER_API_KEY\u0026#34;, \u0026#34;\u0026#34;) if not key: raise ValueError(\u0026#34;OPENROUTER_API_KEY is not set in the environment variables.\u0026#34;) print(f\u0026#34;Processing URL: {url}\u0026#34;) download_task = CodeExecutionTask( on_run=load_page, input=url, id=\u0026#34;download_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;] ) print_task = CodeExecutionTask(on_run=print_result, id=\u0026#34;print_task\u0026#34;) workflow = Workflow(tasks=[download_task, print_task]) workflow.run() Co tu widzimy:\nKilka CodeExecutionTask. Jest to specjalny typ zadania, który pozwala na wykonanie dowolnego kodu. Takie zadanie przyjmuje na wejściu funkcję, do której przekazywany jest sam obiekt tego zadania z ogromną liczbą pól, do których można uzyskać dostęp. W tym przypadku zdefiniowaliśmy dwa zadania, z których jedno pobiera zawartość strony, a drugie – drukuje zawartość swoich zadań-rodziców. Do zdefiniowania samej struktury DAG używane są parametry child_ids lub parent_ids zadań. Sam Workflow przyjmuje po prostu listę tych zadań.\nWorkflow.run uruchamia zadania w grafie i zwraca Workflow, z którego można wyodrębnić wykonane zadania oraz ich wejścia/wyjścia. Nawiasem mówiąc, Workflow można uruchamiać wielokrotnie, a przy użyciu Conversation Memory ta operacja nie będzie idempotentna.\nJeśli skorzystamy z StructureVisualizer, zobaczymy taki oto obrazek:\ngraph TD; Download_Task--\u0026gt; Print_Task; Print_Task; Podsumowujemy Do podsumowywania Griptape ma wiele gotowych prymitywów, w tym TextSummaryTask. Przyjmuje ona na wejściu Summary Engine, za pomocą którego można skonfigurować parametry podsumowania, takie jak sterownik modelu, szablony promptów i pewien Chunker, którego przeznaczenie omówimy nieco później. Spróbujmy użyć tego zadania:\nfrom griptape.tasks import TextSummaryTask from griptape.engines import PromptSummaryEngine from griptape.drivers.prompt.openai import OpenAiChatPromptDriver ... def process_url(url: str): ... download_task = CodeExecutionTask( on_run=load_page, input=url, id=\u0026#34;download_task\u0026#34;, child_ids=[\u0026#34;summary_task\u0026#34;] ) prompt_driver=OpenAiChatPromptDriver( model=\u0026#34;google/gemini-2.5-flash-preview-05-20\u0026#34;, base_url=\u0026#34;https://openrouter.ai/api/v1\u0026#34;, api_key=key, ) summary_task = TextSummaryTask( \u0026#34;Please summarize the following content in a concise manner. {{ parents_output_text }}\u0026#34;, summary_engine=PromptSummaryEngine( prompt_driver=prompt_driver ), id=\u0026#34;summary_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;], ) print_task = CodeExecutionTask(on_run=print_result, id=\u0026#34;print_task\u0026#34;) workflow = Workflow(tasks=[download_task, summary_task, print_task]) workflow.run() Ten kod daje nam na wyjściu następujący wynik:\n$ uv run ./main.py https://docs.griptape.ai/stable/griptape-framework/structures/agents/ Output: Griptape Agents are a quick way to start using the platform. They take tools and input directly, which the agent uses to add a Prompt Task. The final output of the Agent can be accessed using the output attribute. An example demonstrates an Agent using a CalculatorTool to compute 13^7, successfully returning the result 62,748,517. Tutaj natknąłem się na ciekawą osobliwość: aby na wejściu summary_task pojawiło się wyjście download_task, trzeba koniecznie podać instrukcję z użyciem szablonu {parents_output_text} jako input. Chociaż wewnątrz sumaryzatora jest już potrzebny prompt, sam danych z wyjścia zadań-rodziców nie pobiera. O to musimy zadbać sami. Poza tym wszystko wydaje się dość oczywiste.\ngraph TD; Download_Task--\u0026gt; Summary_Task; Summary_Task--\u0026gt; Print_Task; Print_Task Chunker Podczas gdy podsumowywanie działało świetnie na małych stronach, próba uruchomienia go na stronie o objętości 55 000 słów prowadziła do zawieszenia się zadania, niezależnie od używanego modelu. Jawne wskazanie Chunker rozwiązało problem:\nfrom griptape.chunkers import TextChunker ... summary_task = TextSummaryTask( \u0026#34;Please summarize the following content in a concise manner. {{ parents_output_text }}\u0026#34;, summary_engine=PromptSummaryEngine( prompt_driver=prompt_driver, chunker = TextChunker(max_tokens=16000) ), id=\u0026#34;summary_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;, \u0026#34;russian_translate_task\u0026#34;, \u0026#34;polish_translate_task\u0026#34;], ) Jednocześnie, sądząc po logach, chunking w sumaryzatorze jest zaimplementowany iteracyjnie i w pseudokodzie można go wyrazić w następujący sposób:\nchunks = [chunk1, chunk2, ..., chunkN] summary = summarize(f\u0026#34;Summarize this: {chunk1}\u0026#34;) for chunk in chunks[1:]: summary = summarize(f\u0026#34;Update this summary {summary} with the following additional information: {chunk}\u0026#34;) return summary Takie podejście sprawia, że informacje znajdujące się bliżej końca tekstu mają większą wagę niż te na początku, co nie zawsze jest dopuszczalne. Osobiście wolałbym podsumowywanie chunków za pomocą Map-Reduce:\nchunks = [chunk1, chunk2, ..., chunkN] summaries = [summarize(f\u0026#34;Summarize this: {chunk}\u0026#34;) for chunk in chunks] summary = summarize(f\u0026#34;Summarize these chunk summaries: {\u0026#39;\\n---\\n\u0026#39;.join(summaries)}) return summary Przy takim podejściu wszystkie chunki są sobie równe, a dodatkowo pozwoli to na równoległe wykonanie podsumowania, ale będzie wymagało o jedno zapytanie do modelu więcej.\nJednakże, tutaj ujawnia się elastyczność frameworka i silników. Dzięki nim, ten algorytm można zaimplementować we własnym silniku, dziedziczącym po BaseSummaryEngine i używać go niemal bezproblemowo.\nW grupie raźniej Następny krok – przetłumaczyć ten tekst na kilka języków. Oczywiście zadania te można zrównoleglić, a nasz Workflow dostarcza do tego doskonałych narzędzi:\nfrom griptape.tasks import PromptTask ... def process_url(url: str): \u0026#34;\u0026#34;\u0026#34;Process the provided URL.\u0026#34;\u0026#34;\u0026#34; ... summary_task = TextSummaryTask( ... id=\u0026#34;summary_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;, \u0026#34;russian_translate_task\u0026#34;, \u0026#34;polish_translate_task\u0026#34;], ) russian_translate_task = PromptTask( \u0026#34;Please translate the following text to Russian: {{ parents_output_text }}\u0026#34;, prompt_driver=prompt_driver, id=\u0026#34;russian_translate_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;], ) polish_translate_task = PromptTask( \u0026#34;Please translate the following text to Polish: {{ parents_output_text }}\u0026#34;, prompt_driver=prompt_driver, id=\u0026#34;polish_translate_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;], ) print_task = CodeExecutionTask(on_run=print_result, id=\u0026#34;print_task\u0026#34;) workflow = Workflow( tasks=[ download_task, summary_task, russian_translate_task, polish_translate_task, print_task, ] ) To było zaskakująco proste. PromptTask to najbardziej podstawowy prymityw, używany do bezpośrednich zapytań do LLM. Ciekawostką jest to, że w summary_task wskazaliśmy od razu kilku potomków, co pozwala na równoległe wykonywanie kilku zadań. Ale jak możemy sprawdzić, czy zadania rzeczywiście wykonują się równolegle? Twórcy przewidzieli i to, udostępniając w API wsparcie dla hooków. W szczególności, w konstruktorze każdego zadania znajdują się parametry on_before_run i on_after_run, pozwalające na dodanie dowolnego pre- i post-processingu. Skorzystajmy z nich:\nfrom griptape.tasks import BaseTask from datetime import datetime ... def timestamp(task: BaseTask, action: str): print(f\u0026#34;task {task.id} {action} at {datetime.now().isoformat()}\u0026#34;) def process_url(url: str): ... polish_translate_task = PromptTask( \u0026#34;Please translate the following text to Polish: {{ parents_output_text }}\u0026#34;, prompt_driver=prompt_driver, on_before_run=lambda task: timestamp(task, \u0026#34;started\u0026#34;), on_after_run=lambda task: timestamp(task, \u0026#34;finished\u0026#34;), id=\u0026#34;polish_translate_task\u0026#34;, child_ids=[\u0026#34;print_task\u0026#34;], ) # I tak samo dla pozostałych zadań Otrzymujemy następujący wynik, w pełni spełniający nasze oczekiwania:\n$ uv run ./main.py https://docs.griptape.ai/stable/griptape-framework/structures/agents/ task summary_task started at 2025-06-05T22:03:02.272397 task summary_task finished at 2025-06-05T22:03:04.345067 task russian_translate_task started at 2025-06-05T22:03:04.347638 task polish_translate_task started at 2025-06-05T22:03:04.351531 task polish_translate_task finished at 2025-06-05T22:03:05.702819 task russian_translate_task finished at 2025-06-05T22:03:05.947364 Output: Agents in Griptape offer a quick start, directly processing tools and input to generate a Prompt Task. The final output is accessible via the `output` attribute. An example demonstrates an Agent using a `CalculatorTool` to compute 13^7, showing the input, tool action, and the resulting output. Output: Вот перевод текста на русский язык: Агенты в Griptape предлагают быстрый старт, напрямую обрабатывая инструменты и входные данные для генерации задачи (Prompt Task). Конечный результат доступен через атрибут `output`. Пример демонстрирует Агента, использующего `CalculatorTool` для вычисления 13^7, показывая входные данные, действие инструмента и полученный результат. Output: Oto tłumaczenie tekstu na język polski: Agenci w Griptape oferują szybki start, bezpośrednio przetwarzając narzędzia i dane wejściowe w celu wygenerowania Zadania Monitu (Prompt Task). Ostateczny wynik jest dostępny poprzez atrybut `output`. Przykład demonstruje Agenta używającego `CalculatorTool` do obliczenia 13^7, pokazując dane wejściowe, działanie narzędzia i wynik końcowy. Z logów jasno widać, że tłumaczenie na rosyjski i polski działają równolegle.\nI dla porządku, przedstawiam aktualny graf:\ngraph TD; Download_Task--\u0026gt; Summary_Task; Summary_Task--\u0026gt; Print_Task \u0026amp; Russian_Translate_Task \u0026amp; Polish_Translate_Task; Russian_Translate_Task--\u0026gt; Print_Task; Polish_Translate_Task--\u0026gt; Print_Task; Print_Task; Finalizujemy Reszta to w zasadzie kwestia techniki, dlatego poniżej po prostu zamieszczę cały kod programu:\nimport argparse import dotenv import os from griptape.structures import Workflow from griptape.tasks import CodeExecutionTask from griptape.loaders import WebLoader from griptape.utils import StructureVisualizer from griptape.tasks import TextSummaryTask from griptape.engines import PromptSummaryEngine from griptape.drivers.prompt.openai import OpenAiChatPromptDriver from griptape.tasks import PromptTask, BaseTask from griptape.chunkers import TextChunker from griptape.artifacts import TextArtifact from datetime import datetime import logging logging.getLogger(\u0026#34;griptape\u0026#34;).setLevel(logging.WARNING) dotenv.load_dotenv() def load_page(task: CodeExecutionTask) -\u0026gt; str: \u0026#34;\u0026#34;\u0026#34;Load the content of the given URL.\u0026#34;\u0026#34;\u0026#34; return WebLoader().load(task.input.value) def combine_result(task: CodeExecutionTask) -\u0026gt; TextArtifact: \u0026#34;\u0026#34;\u0026#34;Combine results from parent tasks.\u0026#34;\u0026#34;\u0026#34; result = \u0026#34;\u0026#34; for parent in task.parents: if parent.output.value: result += f\u0026#34;{parent.output.value}\\n\\n\u0026#34; return TextArtifact(result) def send_to_telegram(task: CodeExecutionTask) -\u0026gt; None: \u0026#34;\u0026#34;\u0026#34;Send the result to Telegram.\u0026#34;\u0026#34;\u0026#34; # Placeholder for sending to Telegram logic print(f\u0026#34;Sending to Telegram: {task.parents[0].output.value}\u0026#34;) def timestamp(task: BaseTask, action: str): print(f\u0026#34;task {task.id} {action} at {datetime.now().isoformat()}\u0026#34;) def process_url(url: str): \u0026#34;\u0026#34;\u0026#34;Process the provided URL.\u0026#34;\u0026#34;\u0026#34; key = os.environ.get(\u0026#34;OPENROUTER_API_KEY\u0026#34;, \u0026#34;\u0026#34;) if not key: raise ValueError(\u0026#34;OPENROUTER_API_KEY is not set in the environment variables.\u0026#34;) prompt_driver=OpenAiChatPromptDriver( model=\u0026#34;google/gemini-2.5-flash-preview-05-20\u0026#34;, base_url=\u0026#34;https://openrouter.ai/api/v1\u0026#34;, api_key=key, ) download_task = CodeExecutionTask( on_run=load_page, input=url, id=\u0026#34;download_task\u0026#34;, child_ids=[\u0026#34;summary_task\u0026#34;] ) summary_task = TextSummaryTask( \u0026#34;Please summarize the following content in a concise manner. {{ parents_output_text }}\u0026#34;, summary_engine=PromptSummaryEngine( prompt_driver=prompt_driver, chunker = TextChunker(max_tokens=16000) ), on_before_run=lambda task: timestamp(task, \u0026#34;started\u0026#34;), on_after_run=lambda task: timestamp(task, \u0026#34;finished\u0026#34;), id=\u0026#34;summary_task\u0026#34;, child_ids=[\u0026#34;combine_task\u0026#34;, \u0026#34;russian_translate_task\u0026#34;, \u0026#34;polish_translate_task\u0026#34;], ) russian_translate_task = PromptTask( \u0026#34;Please translate the following text to Russian: {{ parents_output_text }}\u0026#34;, prompt_driver=prompt_driver, on_before_run=lambda task: timestamp(task, \u0026#34;started\u0026#34;), on_after_run=lambda task: timestamp(task, \u0026#34;finished\u0026#34;), id=\u0026#34;russian_translate_task\u0026#34;, child_ids=[\u0026#34;combine_task\u0026#34;], ) polish_translate_task = PromptTask( \u0026#34;Please translate the following text to Polish: {{ parents_output_text }}\u0026#34;, prompt_driver=prompt_driver, on_before_run=lambda task: timestamp(task, \u0026#34;started\u0026#34;), on_after_run=lambda task: timestamp(task, \u0026#34;finished\u0026#34;), id=\u0026#34;polish_translate_task\u0026#34;, child_ids=[\u0026#34;combine_task\u0026#34;], ) combine_task = CodeExecutionTask(on_run=combine_result, id=\u0026#34;combine_task\u0026#34;, child_ids=[\u0026#34;send_task\u0026#34;]) send_task = CodeExecutionTask( on_run=send_to_telegram, id=\u0026#34;send_task\u0026#34;, ) workflow = Workflow( tasks=[ download_task, summary_task, russian_translate_task, polish_translate_task, combine_task, send_task ] ) workflow.run()Ładujemy strony hurtowo print(StructureVisualizer(workflow).to_url()) print(\u0026#34;Workflow completed successfully.\u0026#34;) def main(): parser = argparse.ArgumentParser(description=\u0026#34;Process URLs for link blog\u0026#34;) parser.add_argument(\u0026#34;url\u0026#34;, type=str, help=\u0026#34;URL to process\u0026#34;) args = parser.parse_args() process_url(args.url) if __name__ == \u0026#34;__main__\u0026#34;: main() I graf:\ngraph TD; Download_Task--\u0026gt; Summary_Task; Summary_Task--\u0026gt; Combine_Task \u0026amp; Russian_Translate_Task \u0026amp; Polish_Translate_Task; Russian_Translate_Task--\u0026gt; Combine_Task; Polish_Translate_Task--\u0026gt; Combine_Task; Combine_Task--\u0026gt; Send_Task; Send_Task; Uważam, że kod wygląda dość prosto, jest łatwy do czytania i wystarczająco elastyczny do modyfikacji i ponownego wykorzystania. Oczywiście, w rzeczywistych zadaniach cała ta prostota zostanie rozcieńczona obsługą błędów, logowaniem i innymi elementami. Ale o tym warto będzie porozmawiać osobno.\nDodatkowo, Workflow API oferuje jeszcze dwa style kompozycji zadań, które nie wymagają podawania rodziców i potomków przy tworzeniu zadań:\nImperatywny, w którym możemy używać funkcji add_parent i add_child. Tak zwany bit-shift, w którym rodzice i potomkowie mogą być łączeni w następujący sposób: task1 \u0026gt;\u0026gt; task2 \u0026gt;\u0026gt; [task3, task4]. Oba te style pozwalają z łatwością budować różne grafy z gotowych prymitywów, chociaż bit-shift bardziej przypomina osobny DSL niż standardowy Python.\nSkończyliśmy Podsumowując, chciałbym powiedzieć, że na tym etapie framework mi się podoba. Jest dość logiczny, elastyczny i przyjemny w użyciu, chociaż nie jest pozbawiony pewnych niedociągnięć.\nDokumentacja również wydała mi się całkiem niezła, chociaż brakuje jej opisu, jak dokładnie działają niektóre silniki. Na razie, aby zdobyć te informacje, trzeba przeglądać logi lub kod.\nCóż, z podstawową funkcjonalnością się zapoznaliśmy, następnym razem zobaczymy, jakie prymitywy framework dostarcza do budowy RAG.\nw końcu chcemy mieć pewność, że nie będziemy się wstydzić tego, co opublikowaliśmy, prawda?\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nktóry bardzo szanuję i o którym mam nadzieję kiedyś napisać osobny post.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://meshrefine.com/pl/posts/griptape-2/","summary":"\u003cp\u003eW \u003ca href=\"/pl/posts/griptape-1/\"\u003epoprzednim wpisie\u003c/a\u003e omówiłem podstawowe koncepcje frameworka AI \u003ca href=\"https://www.griptape.ai\"\u003eGriptape\u003c/a\u003e, a teraz nadszedł czas, aby zastosować je w praktyce. Spróbujmy ich użyć do stworzenia małej aplikacji, która pomaga w prowadzeniu link-bloga na Telegramie.\u003c/p\u003e\n\u003cp\u003eAplikacja będzie otrzymywać adres URL, pobierać jego zawartość, przepuszczać przez LLM w celu wygenerowania skróconego podsumowania, tłumaczyć to podsumowanie na kilka innych języków, składać wszystko w całość i publikować na Telegramie za pomocą bota. Ogólny przepływ pracy można zobaczyć na poniższym schemacie:\u003c/p\u003e","title":"Griptape, część 2: Budujemy grafy"},{"content":"Co to w ogóle jest ten Codex? Dobre pytanie, prawda? Chodzi o to, że do niedawna OpenAI miało model Codex, który był używany jako podstawa autouzupełniania w GitHub Copilot. Następnie OpenAI wypuściło konsolowego agenta do tworzenia oprogramowania, którego nazwali, żeby nikt nie pomylił, Codex. 1 Wszyscy pośmiali się z umiejętności OpenAI do dobierania nazw 2 i żyli dalej. Aż nadszedł pamiętny dzień, w którym na Twitterze pojawił się taki oto post od Sama Altmana:\nByłem zaintrygowany. Po pierwsze, nakręcaniem hajpu za pomocą frazy \u0026ldquo;low-key research preview\u0026rdquo; 3, a po drugie, właśnie tą nazwą. Jednak nie zawiodłem się:\nWraz z tym postem rodzina bytów o nazwie Codex powiększyła się o dwóch nowych przedstawicieli:\nWariant modelu o3, specjalnie dostosowany do programowania, o nazwie codex-1 Agent chmurowy, zdolny do autonomicznego wykonywania kilku różnych zadań na repozytorium w GitHubie 4. I właśnie o tym ostatnim będzie dzisiaj mowa.\nJak to działa? Sekwencja naszych działań, niezbędnych do korzystania z agenta, jest dość prosta:\nPunkt 1. Wchodzimy na https://chatgpt.com/codex. Tam widzimy listę zadań, które agent wykonuje/wykonał, oraz okno do wprowadzania zadania, w którym możemy wybrać repozytorium, z którym chcemy pracować, oraz gałąź (branch). Są dwa przyciski – Ask, który analizuje kod przed automatycznym zaproponowaniem konkretnych podzadań, oraz Code, który będzie bezpośrednio modyfikował kod.\nPunkt 2. Aby dodać nowe repozytorium, przechodzimy do menu Environments i tworzymy tam nowe środowisko. Tam możemy wskazać samo repo, określić ustawienia środowiska roboczego i wypróbować je w praktyce.\nPunkt 3. Wracamy na główny ekran i wpisujemy nasze życzenie.\nPunkt 4, najciekawszy. Środowisko uruchamia kontener oparty na Ubuntu, instaluje w nim niezbędne pakiety, stosuje niestandardowe ustawienia środowiska i klonuje repozytorium do środka. Następnie internet jest odłączany 5 (już nie zawsze, o tym właśnie jest ten post) i agent rozpoczyna swoją pracę. Robi to długo i starannie, ponieważ planer pochodzi z o3, i jest to dobry planer. Ten proces można obserwować w oknie Logs:\nPunkt 5. Po kilku minutach pracy otrzymujemy diff, który możemy sprawdzić i albo utworzyć pull-request na GitHubie, albo skierować proces na właściwe tory i powtórzyć iterację.\nPunkty 3-5 można uruchamiać równolegle i zajmować się swoimi sprawami, podczas gdy agent pracuje. Co więcej, diffy, które generuje, są bardzo kompaktowe i przyjemnie się je czyta, co zwiększa pewność co do poprawności wyniku.\nDostęp do internetu Jeśli uważnie przyjrzeć się procesowi, można zauważyć pewne ograniczenie. Brak dostępu do internetu podczas wykonywania zadań psuje wiele procesów budowania i testowania, co ogranicza możliwości agenta. Prowadzi to zazwyczaj do poprawnych wyników z dopiskiem \u0026ldquo;Running tests: failed\u0026rdquo;. Dzieje się tak z różnych przyczyn, ale przede wszystkim dlatego, że często podczas budowania konieczne jest pobranie różnych bibliotek. Oczywiście, można to obejść na etapie konfiguracji środowiska, gdy dostęp jeszcze jest, ale proces ten nie zawsze jest trywialny.\nOgraniczenie to było dość dotkliwe, dlatego niedawno OpenAI ogłosiło, że teraz można modelowi zostawić internet. Oczywiście, wpuszczanie modelu do internetu bez żadnych ograniczeń – niczym przysłowiowego lisa do kurnika – jest niebezpieczne, dlatego dano nam wybór trybów dostępu.\nPo pierwsze, możemy zostawić wszystko tak, jak jest, i nie dawać dostępu do internetu. Po drugie, możemy dać dostęp, ale do ograniczonej liczby zasobów 6. Ponadto możemy pozwolić modelowi wykonywać tylko operacje odczytu. Najbardziej zdesperowanym i odważnym pozwala się dać agentowi pełny i nieograniczony dostęp i mieć nadzieję na najlepsze.\nBezpieczeństwo Dlaczego mieć nadzieję? Ponieważ bezpośredni dostęp do niezweryfikowanych zasobów grozi całym szeregiem problemów, o czym OpenAI natrętnie ostrzega.\nPrzy czym w ostrzeżeniu wszystko się pomieszało (taki groch z kapustą) i na jednej liście wymieniono zarówno ataki, jak i ich konsekwencje:\nPrompt injection: Model pobiera stronę internetową, widzi tam tekst podobny do instrukcji i radośnie go wykonuje. Przy tym instrukcja może poprosić o\u0026hellip; Exfiltration of code or secrets: \u0026hellip;przesłanie zawartości repozytorium i sekretów na zewnętrzny zasób; Inclusion of malware or vulnerabilities: \u0026hellip;lub użycie złośliwej biblioteki (malware) zamiast legalnej. Use content with license restriction: Model może jednak sam uznać, że kod znaleziony w repozytorium na licencji GPL to najlepsze, co można dodać do naszego repozytorium, co może prowadzić do pewnych problemów prawnych. Dlatego zdecydowanie zaleca się ograniczanie dostępu modelu tylko do zweryfikowanych zasobów i tylko wtedy, gdy jest to konieczne.\nMały przykład i podsumowanie Oczywiście dostęp do internetu otwiera masę ciekawych możliwości oprócz uproszczenia procesu budowania. Ja na przykład jako pierwsze poprosiłem model o sprawdzenie tej strony pod kątem możliwych problemów z SEO. Wynik można zobaczyć poniżej.\nPodsumowując, mogę powiedzieć, że ogólnie narzędzie mi się podoba. Mały rozmiar diffów i możliwość uruchamiania kilku zadań równolegle pozwalają na dokonywanie małych refaktoryzacji i ulepszeń na zasadzie „fire-and-forget”, bez konieczności zagłębiania się bezpośrednio w kontekst i odrywania się od innych zadań. To znacznie oszczędza czas i zmniejsza obciążenie poznawcze.\nCiekawe będzie zobaczyć, co w odpowiedzi zaproponują konkurenci. 7\nZ dopiskiem CLI, chociaż praktycznie wszędzie odwołują się do niego jako do Codexa\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nOstatecznie, w porównaniu z nazewnictwem ich modeli, taka pomyłka to dziecinada\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nSam jest mistrzem wzajemnie wykluczających się stwierdzeń\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nInne (na razie?) nie są obsługiwane\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nZe względów bezpieczeństwa, o tym będzie mowa dalej\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPrzy czym lista zasobów z różnymi repozytoriami jest już zdefiniowana\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nKilka dni później na Google I/O 2025 zaprezentowano Julesa, działającego na bardzo podobnej zasadzie, ale z powodu dużego rozmiaru diffów generowanych przez Gemini 2.5 Pro, korzystanie z niego jest znacznie trudniejsze.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://meshrefine.com/pl/posts/openai-codex-internet-access/","summary":"\u003ch2 id=\"co-to-w-ogóle-jest-ten-codex\"\u003eCo to w ogóle jest ten Codex?\u003c/h2\u003e\n\u003cp\u003eDobre pytanie, prawda? Chodzi o to, że do niedawna OpenAI miało model Codex, który był używany jako podstawa autouzupełniania w GitHub Copilot. Następnie OpenAI wypuściło konsolowego agenta do tworzenia oprogramowania, którego nazwali, żeby nikt nie pomylił, \u003ca href=\"https://github.com/openai/codex\"\u003eCodex\u003c/a\u003e. \u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e Wszyscy pośmiali się z umiejętności OpenAI do dobierania nazw \u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e i żyli dalej. Aż nadszedł pamiętny dzień, w którym na Twitterze pojawił się taki oto post od Sama Altmana:\u003c/p\u003e","title":"OpenAI Codex zyskał dostęp do internetu: pierwsze wrażenia"},{"content":" Nazywam się Konstantin Meshcheryakov. Jestem Head of AI w firmie inżynierskiej z branży IoT we Wrocławiu, gdzie buduję strategię GenAI, prowadzę program adopcji AI dla całej organizacji inżynierskiej i odpowiadam za zgodność z EU AI Act. Nadal zajmuję się też architekturą w projektach AI, bo porady bez stojącego za nimi wdrożenia szybko się starzeją.\nDroga tutaj zajęła szesnaście lat. Zaczynałem od doktoratu z fizyki i matematyki, pisałem systemy C++/Qt do testowania samolotów, przeszedłem przez systemy wbudowane i architekturę chmurową AWS, a po drodze zająłem się uczeniem maszynowym, od TinyML na mikrokontrolerach po produkcyjne ML i systemy LLM. Przez kilka lat wykładałem też na uczelni: Qt, Pythona i programowanie funkcyjne. Ta droga, od firmware\u0026rsquo;u po strategię GenAI, wciąż kształtuje to, jak oceniam, co przetrwa zderzenie z produkcją. Nazwa bloga jest zapożyczona ze słownika CFD i przy okazji współgra z moim nazwiskiem.\nTen blog to miejsce, w którym dzielę się swoimi przemyśleniami i obserwacjami z \u0026ldquo;okopów\u0026rdquo; AI: praktycznymi przypadkami użycia, niuansami pracy z modelami LLM i agentami, programowaniem wspieranym przez AI oraz pułapkami edge AI. Czasami mogą się tu również pojawić notatki na inne tematy technologiczne, które przyciągną moją uwagę. Wszystko to odzwierciedla moje osobiste doświadczenia i perspektywę, doprawione szczyptą ironii i dążeniem do oddzielenia istoty od hype\u0026rsquo;a.\n","permalink":"https://meshrefine.com/pl/about/","summary":"\u003cimg src=\"/images/konstantin-meshcheryakov.jpg\" alt=\"Konstantin Meshcheryakov\" style=\"float: right; width: 200px; max-width: 45%; height: auto; border-radius: 12px; margin: 0.25rem 0 1rem 1.5rem;\"\u003e\n\u003cp\u003eNazywam się Konstantin Meshcheryakov. Jestem Head of AI w firmie inżynierskiej z branży IoT we Wrocławiu, gdzie buduję strategię GenAI, prowadzę program adopcji AI dla całej organizacji inżynierskiej i odpowiadam za zgodność z EU AI Act. Nadal zajmuję się też architekturą w projektach AI, bo porady bez stojącego za nimi wdrożenia szybko się starzeją.\u003c/p\u003e\n\u003cp\u003eDroga tutaj zajęła szesnaście lat. Zaczynałem od doktoratu z fizyki i matematyki, pisałem systemy C++/Qt do testowania samolotów, przeszedłem przez systemy wbudowane i architekturę chmurową AWS, a po drodze zająłem się uczeniem maszynowym, od TinyML na mikrokontrolerach po produkcyjne ML i systemy LLM. Przez kilka lat wykładałem też na uczelni: Qt, Pythona i programowanie funkcyjne. Ta droga, od firmware\u0026rsquo;u po strategię GenAI, wciąż kształtuje to, jak oceniam, co przetrwa zderzenie z produkcją. Nazwa bloga jest zapożyczona ze słownika CFD i przy okazji współgra z moim nazwiskiem.\u003c/p\u003e","title":"O mnie"},{"content":"Na tej stronie dążę do pełnej przejrzystości w zakresie wykorzystania technologii sztucznej inteligencji (AI). Wszystkie treści są jasno podzielone na następujące kategorie:\nTreści napisane przez autora. Większość materiałów na tej stronie została napisana przeze mnie osobiście. AI może być wykorzystywane wyłącznie do podstawowej pomocy, takiej jak sprawdzanie pisowni i gramatyki.\nOznaczenie: Takie treści nie są dodatkowo oznaczane. Dostęp dla AI: Dozwolone do indeksowania przez wyszukiwarki internetowe oraz do wykorzystania w zbiorach danych treningowych dla modeli AI. Treści tłumaczone przy użyciu AI. Artykuły będące tłumaczeniem moich oryginalnych treści na inny język. Tłumaczenie jest wykonywane przez AI, a następnie osobiście sprawdzam i redaguję tekst, aby zapewnić jego dokładność i spójność stylistyczną.\nOznaczenie: Takie materiały są wyraźnie oznaczone, aby wskazać użycie AI do tłumaczenia (np. \u0026ldquo;Przetłumaczono przy użyciu AI\u0026rdquo;). Dostęp dla AI: Dozwolone do indeksowania i trenowania AI. Uważam, że redakcja ludzka oraz oryginalna baza treści zapewniają wystarczającą jakość, aby nie powodować degradacji modeli. Treści generowane przy użyciu AI. Materiały, w których AI zostało użyte do wygenerowania głównej części tekstu, który następnie został przeze mnie dokładnie sprawdzony, poprawiony i uzupełniony.\nOznaczenie: Takie treści są wyraźnie oznaczone (np. \u0026ldquo;Wygenerowano przy użyciu AI\u0026rdquo;). Dostęp dla AI: Dozwolone do indeksowania przez wyszukiwarki, ale zabronione do wykorzystania w trenowaniu modeli AI (noai). ","permalink":"https://meshrefine.com/pl/ai-content-policy/","summary":"\u003cp\u003eNa tej stronie dążę do pełnej przejrzystości w zakresie wykorzystania technologii sztucznej inteligencji (AI). Wszystkie treści są jasno podzielone na następujące kategorie:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eTreści napisane przez autora. Większość materiałów na tej stronie została napisana przeze mnie osobiście. AI może być wykorzystywane wyłącznie do podstawowej pomocy, takiej jak sprawdzanie pisowni i gramatyki.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOznaczenie: Takie treści nie są dodatkowo oznaczane.\u003c/li\u003e\n\u003cli\u003eDostęp dla AI: Dozwolone do indeksowania przez wyszukiwarki internetowe oraz do wykorzystania w zbiorach danych treningowych dla modeli AI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTreści tłumaczone przy użyciu AI. Artykuły będące tłumaczeniem moich oryginalnych treści na inny język. Tłumaczenie jest wykonywane przez AI, a następnie osobiście sprawdzam i redaguję tekst, aby zapewnić jego dokładność i spójność stylistyczną.\u003c/p\u003e","title":"Polityka treści AI"},{"content":"No dobrze, dziś patrzymy na Griptape. Co to jest? A jest to frameworkiem do budowy aplikacji AI, oferującym czyste pythonowe API dla tych, którzy są zmęczeni poziomami abstrakcji LangChain. Proponuje prymitywy do budowy asystentów, systemów RAG i integracji z zewnętrznymi narzędziami. Szczerze mówiąc, z mojego doświadczenia, większość osób zmęczonych LangChainem przechodzi na własnoręcznie pisane wrappery wokół bibliotek niższego poziomu, takich jak OpenAI czy LiteLLM. Ale kto wie, może niepotrzebnie. Przyjrzyjmy się temu.\nTrochę historii Osobiście o Griptape słyszę już jakieś półtora roku i zaczynał on jako swego rodzaju konkurent LangChain z dość podobnymi prymitywami, ale ich drogi stopniowo się rozeszły. W momencie pisania tego posta ma 2.3k gwiazdek na GitHubie, co jest nieco mniej niż 109k LangChaina, ale wciąż wystarczająco, by uznać projekt za całkiem dojrzały. Oprócz otwartego frameworka, dorobił się też własnej chmury, w której można uruchamiać swoje aplikacje, ETL-ki i RAG-i, oraz graficznego kreatora Griptape Nodes, pozwalającego nieprofesjonalistom wyklikać aplikacje myszką w kilka minut (tak naprawdę nie).\nFramework Przejdźmy więc do samego frameworka. Prezentuje on kilka prymitywów, z którymi warto się zapoznać przed przystąpieniem do pracy.\nDrivery (Drivers): W zasadzie główne narzędzie, abstrahujące konkretne implementacje czegokolwiek i pozwalające zmieniać je w locie, nie psując logiki biznesowej. Istnieją drivery do niemal wszystkiego, czy to asystentów, promptów, modeli, systemów embeddingu czy baz danych. W gruncie rzeczy, klasy abstrakcyjne i ich implementacje.\nSilniki (Engines): Dostarczają gotowe implementacje podstawowych zadań, takich jak RAG i sumaryzacja.\nStruktury (Structures): Podstawowe bloki do budowy aplikacji. Wśród nich można znaleźć:\nZadania (tasks): Abstrakcja nad jakimś działaniem, na przykład zapytaniem do modelu, przetwarzaniem odpowiedzi, ładowaniem danych z pliku itp.\nAgenci (agents): Trochę dziwny wrapper wokół pojedynczego zadania (chociaż istnieje API do tworzenia agenta na bazie listy zadań, sypie się ono przy próbie przekazania więcej niż jednego zadania, co jest bardzo dziwne). Pozwala przekazać do tego zadania dane wejściowe i listę narzędzi, z których może korzystać.\nPipeline\u0026rsquo;y (pipelines): Jak agent, ale może uruchamiać wiele zadań sekwencyjnie, przekazując wynik jednego na wejście drugiego.\nWorkflowy (workflows): Skierowane grafy acykliczne (DAG) składające się z zadań. Pozwalają na optymalne planowanie i uruchamianie zadań równoległych. Dokumentacja wskazuje, że są niesekwencyjne, chociaż później podaje przykłady całkiem sekwencyjnych workflowów. W takim przypadku jest nieco niejasne, po co w ogóle potrzebne są pipeline\u0026rsquo;y.\nOgólnie rzecz biorąc, taka organizacja jest dość elastyczna i pozwala tworzyć całkiem złożone przepływy wykonania. Fakt, że jest to DAG, narzuca pewne ograniczenia w tworzeniu agentów w sensie, jaki zakładają niektórzy futurystycznie nastawieni ludzie, ale za to pozwala budować niezawodne (na ile to możliwe z probabilistycznymi LLM) i przemyślane systemy.\nNarzędzia (Tools): Funkcje dostępne dla LLM. Te funkcje można przekazywać do wyżej wymienionych prymitywów, dając w ten sposób LLM możliwość generowania sekwencji wywołań tych funkcji w celu wykonania jakichś działań. Griptape dostarcza sporo takich narzędzi, ale można też dodawać własne.\nPamięć Zadań (Task Memory): Jedna z ciekawszych funkcji Griptape. Często dane, które trzeba przetworzyć, są albo bardzo wrażliwe, albo bardzo duże, i wysyłanie ich bezpośrednio do LLM może być niepraktyczne. W takim przypadku można poprosić narzędzie, aby nie dostarczało tych danych do LLM, a zwracało pewien deskryptor tych danych, który pozwoli LLM odwoływać się do nich w celu użycia w innych narzędziach.\nPamięć Konwersacji (Conversation Memory): Domyślnie włączona i przekazywana do modelu między kolejnymi uruchomieniami tego samego workflow (lub agenta, lub pipeline\u0026rsquo;u). Można ją wyłączyć, jeśli nie jest potrzebna. W gruncie rzeczy przydatna tylko dla chatbotów i, szczerze mówiąc, szkodliwa dla wszystkiego innego.\nZestawy Reguł (Rulesets): Ustawienia zachowania LLM, które są przekazywane do każdego promptu. Coś w rodzaju promptów systemowych, ale żeby dokładnie zrozumieć, czym są, trzeba głębiej pokopać.\nNa tym kończą się główne prymitywy, jest jeszcze kilka koncepcji, które na tym etapie nie są zbyt ważne, więc je pominę.\nCo dalej? A dalej myślę, żeby głębiej zbadać:\nKiedy i dlaczego używać agentów, pipeline\u0026rsquo;ów i workflowów. Możliwości frameworka w zakresie ETL i RAG. Jak działa Pamięć Poza Promptem (Off-Prompt Memory). Integrację i personalizację. Co można robić w ich chmurze. A także do czego nadaje się Griptape Nodes. No i oczywiście przetestować różne przykłady, które dostarczają. Będę opisywać postępy na bieżąco.\n","permalink":"https://meshrefine.com/pl/posts/griptape-1/","summary":"\u003cp\u003eNo dobrze, dziś patrzymy na \u003ca href=\"www.griptape.ai\"\u003eGriptape\u003c/a\u003e. Co to jest? A jest to frameworkiem do budowy aplikacji AI, oferującym czyste pythonowe API dla tych, którzy są zmęczeni poziomami abstrakcji LangChain. Proponuje prymitywy do budowy asystentów, systemów RAG i integracji z zewnętrznymi narzędziami. Szczerze mówiąc, z mojego doświadczenia, większość osób zmęczonych LangChainem przechodzi na własnoręcznie pisane wrappery wokół bibliotek niższego poziomu, takich jak OpenAI czy LiteLLM. Ale kto wie, może niepotrzebnie. Przyjrzyjmy się temu.\u003c/p\u003e","title":"Griptape: Framework do aplikacji AI, część 1: Wprowadzenie"},{"content":"No to zaczynamy Wpadła mi w ręce Re:Camera od Seeed. W zasadzie to małe pudełeczko (kostka o krawędzi 4 cm), opasane radiatorem. W środku dwurdzeniowy MPU na bazie RISC-V (aktualizacja: w systemie widoczny jest tylko jeden rdzeń, drugi jest najprawdopodobniej zarezerwowany dla operacji specjalnych), wiekowy mikrokontroler 8051, sensor kamery od OmniVision, diody do podświetlenia, Wi-Fi, BT, no i różne peryferia. Pamięci RAM jest malutko, zaledwie 256 megabajtów, więc postawienie Greengrass będzie problematyczne. Można podłączyć Ethernet przez specjalny kabelek-przejściówkę, który ledwo się trzyma, ale do developmentu nie ma to sensu, bo kamera udostępnia sieć po USB typu C i prościej tak pracować. Jeśli brakuje pamięci (a urządzenie jest dostępne w wariantach z 8 GB i 64 GB wbudowanej pamięci), można wsadzić kartę MicroSD. Pudełko można też przyczepić do czegoś metalowego, bo z jednej strony ma magnesiki.\nPo podłączeniu można otworzyć stronę internetową (domyślnie 192.168.42.1), która sama z siebie nic nie potrafi, oprócz udostępnienia konfiguracji Wi-Fi i aktualizacji. Jest tam też konsola, ale kto normalny używa konsoli w przeglądarce, gdy ma się SSH?\nPodejrzewam, że da się z tym coś zrobić i w obecnym stanie, ale instrukcja usilnie sugeruje aktualizację przez OTA, co też uczyniłem (choć to może oczywiste, najpierw trzeba skonfigurować sieć). Po 5 minutach aktywnego migania diodami i podłączania/odłączania się urządzenia od komputera, sprzęt dał mi dostęp do już zaktualizowanej strony i zażądał zmiany domyślnego hasła (recamera/recamera). Zmiana tego hasła zmienia również hasło dostępowe do SSH, więc ostrożnie.\nPo aktualizacji pojawia się dostęp do Node-RED, takiego graficznego środowiska programistycznego, w którym przepływy danych opisuje się grafami z nodami-przetwarzaczami. Domyślnie taki graf jest już załadowany i daje dostęp do prostego dashboardu, który pozwala podejrzeć obraz z kamery i wyniki działania modelu AI YOLOv11. Inne grafy można (teoretycznie) pobrać ze strony SenseCraft AI od Seeed, ale wymaga ona rejestracji, więc olałem temat.\nO kamerze Sensor zamontowany w pudełku jest, szczerze mówiąc, przestarzały. To OmniVision OV5647, 5-megapikselowa kamera z migawką typu rolling shutter. Całkiem niedawno robiłem demko z sensorem BrightSense od STMicro, wyposażonym w global shutter, zbierającym informacje z matrycy jednocześnie, a nie linia po linii, jak tutaj. Przełożyło się to na rozdzielczość (tylko 1,5 megapiksela), ale za to szybko spadające cukierki łapała idealnie. O wszystkich \u0026ldquo;urokach\u0026rdquo; rolling shuttera można poczytać na Wikipedii, ale w dwóch słowach: jeśli widzieliście, jak w filmach pięknie pokazują różne rzeczy wciągane do czarnej dziury, no to właśnie to. Seeed obiecuje, że będzie można podłączać inne sensory i że w przyszłości wypuszczą nowe warianty, w tym z kamerą global shutter, ale na razie jest jak jest.\nThe window should be straight Dlaczego ważne są niezniekształcone obiekty? Ano ze względu na model. Do którego teraz przejdziemy.\nO modelu No, nie do końca. Najpierw o tym, na czym to śmiga. W pudełeczku siedzi NPU o wydajności całego jednego TOPS-a. Przy 8-bitowej kwantyzacji, rzecz jasna, w liczbach zmiennoprzecinkowych (float) to on nie potrafi. Jak coś optymalizować pod to NPU, tego jeszcze nie rozgryzłem, więc na razie o wydajności można wnioskować z danych dostępnych na wbudowanym dashboardzie. Model, który tam siedzi, to Ultralytics YOLOv11 w najmniejszym wariancie (n, czyli nano), potrafi wykrywać i zwracać bounding boxy dla 80 różnych klas obiektów, takich jak żyrafy i szczoteczki do zębów, co średnio pasuje do większości zadań produkcyjnych, więc model trzeba trenować na własnym datasecie. Za to wydajność jest całkiem niezła, demko podaje następujące dane:\nPreprocessing: 0 ms. I to jest super sprawa, widocznie kamera potrafi od razu zwracać wynik w formacie, który model może przyjąć. W demku, o którym wspominałem, nie udało mi się tego uzyskać i musiałem się nieźle nagimnastykować, żeby to zoptymalizować. Sama inferencja: ~50 ms. Nieźle, całkiem nieźle. Postprocessing: 20–25 ms. Tu działa algorytm Non-Maximum Suppression, który jest dość zasobożerny, i wygląda na to, że uruchamia się na CPU, sądząc po obciążeniu w top. W sumie daje nam to jakieś 12–13 inferencji na sekundę, co dla wielu zadań jest całkiem znośne. W UI jednak wizualnie wygląda to na 4–5 klatek na sekundę, co może być spowodowane nieoptymalnym potokiem (pipeline) lub innymi narzutami. Przy tym wszystkim pudełeczko grzeje się konkretnie.\nCo (na razie) zostało za kulisami Jeśli mówimy o użyciu tego do czegoś poważniejszego niż zabawa wbudowanymi demkami, trzeba ogarnąć, jak:\na) Jak złożyć system. Wątpię, żeby Node-RED nadawał się do zadań produkcyjnych, więc trzeba będzie wziąć się za rzeźbienie (Buildroot, tak na marginesie) i wepchnąć potrzebny nam soft. b) Jak optymalizować model i uruchamiać inferencję z własnych programów. Jeśli starczy na to czasu, wrócę do tego w przyszłych odcinkach. A na razie, do usłyszenia.\n","permalink":"https://meshrefine.com/pl/posts/re-camera-1/","summary":"\u003ch2 id=\"no-to-zaczynamy\"\u003eNo to zaczynamy\u003c/h2\u003e\n\u003cp\u003eWpadła mi w ręce Re:Camera od Seeed. W zasadzie to małe pudełeczko (kostka o krawędzi 4 cm), opasane radiatorem. W środku dwurdzeniowy MPU na bazie RISC-V (\u003cstrong\u003eaktualizacja:\u003c/strong\u003e w systemie widoczny jest tylko jeden rdzeń, drugi jest najprawdopodobniej zarezerwowany dla operacji specjalnych), wiekowy mikrokontroler 8051, sensor kamery od OmniVision, diody do podświetlenia, Wi-Fi, BT, no i różne peryferia. Pamięci RAM jest malutko, zaledwie 256 megabajtów, więc postawienie Greengrass będzie problematyczne. Można podłączyć Ethernet przez specjalny kabelek-przejściówkę, który ledwo się trzyma, ale do developmentu nie ma to sensu, bo kamera udostępnia sieć po USB typu C i prościej tak pracować. Jeśli brakuje pamięci (a urządzenie jest dostępne w wariantach z 8 GB i 64 GB wbudowanej pamięci), można wsadzić kartę MicroSD. Pudełko można też przyczepić do czegoś metalowego, bo z jednej strony ma magnesiki.\u003c/p\u003e","title":"Przegląd Seeed Re:Camera, część 1"}]