Przejdź do treści
TSTom Smialowski

Cześć, jestem Tomek

Buduję systemy oparte na dużych modelach językowych.Takie, które działają na produkcji.

Od ponad piętnastu lat jestem backend developerem (prawie cały ten czas w Pythonie), a od kilku lat prowadzę projekty oparte na AI. Mam doświadczenie zarówno z modelami dostępnymi w chmurze, jak i z tymi uruchamianymi lokalnie (kilka z nich utrzymuję na własnym sprzęcie w domu).

Czym się zajmuję

Wszystko wokół modelu, żeby system działał.

Model to zwykle najmniejszy problem. Trudniejsze jest to, co go otacza: dane wejściowe, kontrola wyników, koszty i to, czy ludzie mogą im ufać. Tym się zajmuję.

Przetwarzanie dokumentów i obrazów

Ekstrakcja danych, klasyfikacja i uzupełnianie informacji na dużą skalę. Każdy wynik ma ocenę pewności, niepewne przypadki trafiają do weryfikacji, a do systemu źródłowego nic nie jest zapisywane bez potwierdzenia. Najwięcej pracy jest nie w prompcie, tylko w tym, co dzieje się przed nim i po nim: w sprawdzaniu, wykrywaniu duplikatów i w śladzie, który pokazuje, skąd wziął się dany rekord.

Asystenci znający firmowe dokumenty

Asystenci, którzy odpowiadają na pytania na podstawie materiałów firmy i wskazują źródło każdej odpowiedzi. Pracuję z modelami OpenAI i Anthropic, a tam, gdzie dane nie mogą opuścić firmy, z otwartymi modelami uruchamianymi na własnej infrastrukturze. Więcej czasu poświęcam jakości wyszukiwania i testom odpowiedzi niż samemu interfejsowi.

Agenci i automatyzacje

Cotygodniowy raport, uzgadnianie danych, przenoszenie informacji między systemami. Agent działa według harmonogramu, ma ustalony budżet, zapisuje, co zrobił, i daje znać, gdy coś się nie uda. Każda operacja, która coś zmienia w zewnętrznym systemie, wymaga wcześniejszego zatwierdzenia.

Od prototypu do produkcji

Prototyp, który dobrze wypadł na pokazie, ale nie nadaje się jeszcze do codziennej pracy, to częsty punkt wyjścia. Zostawiam to, co działa, dokładam testy, monitoring i obsługę błędów, i zamieniam go w usługę, którą może utrzymywać ktoś inny.

Realizacje

Kilka systemów, które zbudowałem.

Konkretne rzeczy i skala, w jakiej działają.

Odczyt danych z dokumentów

6 500+ pozycji cenowych z 2 100+ stron

Dwa systemy do przetwarzania dokumentów. Pierwszy czyta gazetki promocyjne: każda strona jest wstępnie klasyfikowana, pozycje z cenami odczytuje model wizyjny, a konflikty między nakładającymi się stronami trafiają do weryfikacji przez człowieka. Z 2 100+ stron powstało 6 500+ pozycji z cenami, każda z odniesieniem do strony źródłowej.

Drugi zamienia zdjęcie etykiety produktu w rekord wartości odżywczych: dwa przebiegi OCR, model wypełniający ustalony schemat, walidator z regułami wiarygodności, wykrywanie duplikatów i zatwierdzenie przez człowieka przed zapisem.

Produkcja treści dla trzech marek

100+ postów zaplanowanych i wyprodukowanych

Kolejkowane generowanie tekstów, grafik i krótkich wideo dla trzech marek, każda z własnym stylem i własnymi etapami zatwierdzania. Post przechodzi od szkicu przez akceptację do produkcji, a renderowanie rusza dopiero po niej.

Każdy materiał powstały z udziałem AI dostaje przy renderowaniu odpowiednie oznaczenie, więc wymóg informowania o tym jest wbudowany w proces, a nie sprawdzany na końcu.

Własna infrastruktura AI

3 węzły GPU, otwarty model klasy 280B

Trzy węzły GPU, dwa z nich spięte w tensor parallel przez 200 GbE, serwują otwarty model mixture-of-experts klasy 280B przez vLLM za API zgodnym z OpenAI, a do tego generowanie obrazów, upscaling i usuwanie tła.

Zastępuje to rozliczanie za każde wywołanie API dla ponad dziesięciu wewnętrznych aplikacji. Nocami przetwarza 800+ stron OCR-em wizyjnym. Bramka API zapisuje każde żądanie, więc wiadomo, do czego infrastruktura jest naprawdę używana.

Agenci analityczni

Budżety, logi, zatwierdzanie operacji

Agenci, którzy o ustalonej porze czytają dane z tego dnia i piszą raport. Każdy ma budżet tokenów, log wykonanych kroków i etap zatwierdzenia dla każdej zmiany w zewnętrznym systemie: agent może zaproponować zmianę, ale nie wykona jej sam.

Zachowanie w razie awarii jest zaprojektowane z góry: gdy wywołania modelu się nie powiodą, raport i tak przychodzi, z informacją o tym, czego zabrakło.