2026-10-24
Na Windows używam Chrome, który jest idealnie ułożony pod moje potrzeby. Loguję się i mam we właściwym miejscu właściwe ulubione.
Na Ubuntu Desktop domyślnie mogę zainstalować Chromium, ale… nie loguje się on na konto Google, więc import ulubionych mogę wykonać conajwyżej ręcznie.
W takim przypadku trzeba zainstalować Chrome ręcznie. Zadziałało takie polecenie
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
Po zalogowaniu się (co jest wbudowanym procesem w Chrome), wszystko pojawiło się na miejscu
2026-10-23
Czasami nowe rozwiązania kłócą się ze starymi aplikacjimi i przyśpieszenie pracy komputera można wykonać wyłączając zbędne opcje lub sterowniki. Oto kilka propozycji:
Wyłączenie automatycznej optymalizacji wielkości okienka w TCP/IP
sudo sysctl -w net.ipv4.tcp_window_scaling=1
Wyłączenie protokołu ip v6
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Wyłączenie oszczędzania energii (zwykle ta opcja pomaga najbardziej)
sudo nano /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
sudo systemctl restart NetworkManager
2026-10-23
Taka prosta czynność, jak utworzenie ikonki na pulpicie może wymagać trochę zachodu…
Najpierw tworzymy plik „desktop”
nano ~/.local/share/applications/onedrive-mount.desktop
Jego zawartość może wygladać tak:
[Desktop Entry]
Version=1.0
Type=Application
Name=OneDrive Mount
Comment=Mount OneDrive
Exec=/home/rafal/start-onedrive.sh
Icon=folder-remote
Terminal=false
Categories=Utility;Network;
Potem taki plik przenosimy/linkujemy lub kopiujemy na desktop
cp ~/.local/share/applications/onedrive-mount.desktop ~/Desktop
i zmieniamy uprawnienia:
chmod +x ~/Pulpit/onedrive-mount.desktop
2026-10-23
Instalacja rclone
sudo apt update
sudo apt install rclone
Konfiguracja rclone
Uruchamia coś w rodzaju kreatora do konfiguracji rclone
rclone config
Montowanie OneDrive
Synchronizuje w trybie ściągnięcia pliku dopiero, kiedy jest potrzebny. Pomija Personal Vault (inaczej na ekranie będą blędy – a po co?):
mkdir OneDrive
rclone mount onedrive: ~/OneDrive --vfs-cache-mode full --exclude="/Personal Vault/**"
Status
Czy rclone działa?
pgrep -l rclone
df tylko w wydaniu OneDrive
df -h | grep OneDrive
Co znajduje się w katalogu głównym OneDrive
clone lsd onedrive:
Wyłączenie synchronizacji
fusermount -u -z ~/OneDrive
2026-10-23
Konfiguracja po stronie Windows
W czasie instalacji Linuxa będą wykonywane czynności na dysku, a to może spowodować, że Windows stwierdzi nieautoryzowane manipulacje na dysku i zablokuje dysk (trzeba będzie wprowadzić klucz bitlocker). Dlatego wcześniej go sobie wyświetl i udokumentuj (nie zapisuj kodu na dysku, bo jak dysk się zabokuje to do tego kodu się nie dostaniesz):
Get-BitLockerVolume -MountPoint "C:"
Nie jest złym pomysłem chwilowe zatrzymanie bitlockera, np tak:
Suspend-BitLocker -MountPoint "C:" -RebootCount 3
Zaleca się też wyłączenie hibernacji:
powercfg /hibernate off
I wyłączenie szybkiego uruchamiania:
Set-ItemProperty
-Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power"
-Name "HiberbootEnabled"
-Value 0
Konfiguracja po stronie Linux
Po zakończeniu insalacji za dualboot odpowiada program grub. Konfigurację wykonuje się tak:
sudo vi /etc/default/grub
Tu można zmienić kilka ustawnień, np. rozmiar czcionki (zwykle domyślnie jest za mały) i domyślny czas wybrania OS przy uruchomieniu (-1 to brak automatycznego uruchomienia):
GRUB_TIMEOUT=60
GRUB_GFXMODE=800x600
Potem zmiany trzeba „zainstalować”:
sudo update-grub
I zrestartować komputer:
sudo reboot
2026-04-26
MLFlow to popularna biblioteka służąca do śledzenia wyników pracy funkcji. Oryginalnie została zaplanowana do śledzenia działania funkcji Machine Learning, stąd jej nazwa, ale z czasem została zaadoptowana do AI i generalnie może służyć do śledzenia czegoklowiek. MLFlow jest rekomendowany do używania w Databricks.
MLFlow może być zainstalowany lokalnie. Tutaj tworzymy środowisko wirtualne, aktywujemy je, instalujemy mlflow i przy okazji openai. Potem startujemy serwer mlflow:
python -m venv venv
venv/scripst/activate.ps1
pip install --upgrade mlflow openai>=1.0.0
mlflow server
Serwer po uruchomieniu nasłuchuje domyślnie na lokalnym komputerze, o czym informuje output tego polecenia:
INFO: Uvicorn running on http://127.0.0.1:5000 (Press CTRL+C to quit)
Od tej pory do serwera można się podłączyć z aplikacji i zacząć coś sobie logować. Zazwyczaj MLFlow służy do zbierania trace ze skomplikowanych aplikacji np. korzystających z OpenAI, stąd i ten przykład do tego nawiązuje:
Czytaj dalej »
2026-04-19
Jak najczęściej spotykamy sie po raz pierwszy z AI? Chyba w ten sposób, że czy to z ciekawości czy z potrzeby napisaliśmy jakiś prompt. Nic więc dziwnego, że szybko zauważamy, że modyfikując prompt uzyskujemy różne odpowiedzi. Pogłębiając wiedzę o AI uczymy się więc, jak pisać dobre prompty, czyli poznajemy Prompt Engineering, tyle tylko, że …
aby odpowiedzieć na pytanie, trzeba coś wiedzieć, tymczasem AI wie tyle ile go nauczono. Można mu trochę pomóc promptem, ale jeśli AI czegoś nie wie, to się nie dowie, co najwyżej pohalucynuje, a to jest jeszcze gorsze niż brak odpowiedzi.
I tak dochodzimy do faktu, że w pewnym momencie nie ma już sensu prompt engineering. Zamist niego skupiamy się jednak na dostarczeniu do AI nowych danych, bo mając te nowe dane AI będzie mógł tworzyć nowe sensowne odpowiedzi. Praca nad zapewnieniem odpowiednich danych to Context Engineering.
Jedną z metod na dostarczenie do AI nowego, lepszego contextu jest Retrieval Augmented Generation (RAG).
Zacznijmy więc od Prompt Engineering.
- pisząc prompt można używać różnych taktyk, np. „Few-Shot Prompting”, które polega na podaniu paru przykładów, wzorca, do którego LLM powinien się dopasować w swojej odpowiedzi. Można też opisać role LLM-a, np. „jesteś pomocnym asystentem, który…” – jest to tzw. „Persona Adoption”.
- modele mogą rozumować lub nie. Non-reasoning model (np. GPT-4o lub Llama) odpowiada na pytania jak „kalkulator słów” – odpowiedź ma brzmieć sensownie, ale niekoniecznie będzie precyzyjna. To właśnie tu są zwracane najśmieszniejsze, logiczne i bezsensowne odpowiedzi. Reasoning models z kolei, budują swój własny tok myślowy i podążając tym tokiem, wykonują pewne zadania ustalając poprawną odpowiedź. Oczywiście takie rozumujące modele są lepsze, bo udzielając odpowiedzi ile to jest 2+2 nie posłużą się statystyką tylko wykonają obliczenia.
Kiedy już jednak Prompt Engineering nie daje rady, trzeba pomóc budować odpowiedni kontekst i dzieje się to przez RAG. RAG to ogólna nazwa na wzorzec projektowy, a sam wzorzec jest implementowany przez Retrieval Agents, czyli po prostu programy, które pobiorą odpowiednie dane i przygotuja je tak, aby LLM mógł z nich korzystać.
- Retrieval – wyszukuje odpowiednie informacje do przedstawienia LLM
- Augmentation – wybiera odpowiednie fragmenty tekstu i wbudowuje je do kontekstu na którym pracuje LLM
- Generation – LLM buduje odpowiedź, tyle tylko że ta odpowiedź jest lepsza jakościowo, bo ma właściwe dane
Kontekst nie jest bez wad i problemów, a te najpopularniejsze to:
- w kontekście mogą się znaleźć również dane nieprzydatne, a wręcz zatruwające odpowiedź (context poisoning)
- duże konteksty mogą tracić część swojej zawartości (bo się nie mieszczą w kontekście), a nawet jeśli się mieszczą, to z bliżej jeszcze nieustalonych przyczyn LLM bardziej zwraca uwagę na początek i koniec kontekstu, jakby gubiąc informacje w środku (lost in the middle)
Definiując właściwy kontekst należy wziąć pod uwagę i odpowiednio skonfigurować:
- instrukcje systemowe (system prompt – definicja roli, czego system nie może robić, w jakim formacie zwracać dane, dopuszczalne dane z jakich można korzystać, np. zezwolenie tylko na dostarczone przez RAG tzw. chunks)
- historię konwersacji, która może urosnąć i trzeba wtedy tworzyc podsumowania, usuwać najstarsze wpisy z historii, albo decydować o tym co jest najważniejsze
- pobrane specyficzne dane (RAG lub korzystanie z Unity Catalog i zarejestrowanych tam źródeł danych)
- inne reguly, policy, user constraints
Z kontekstem jest jak z RAM w komputerach – dobrze by było mieć go maksymalnie dużo (może tylko pomijając proble lost-in-the-middle). Jednak duży kontekst to duży kosze. Każdy model ma własny context window limit (8K, 32K lub 128K). Kontekst składa się z input tokens (czyli tego co jest wysyłane do kontekstu) oraz output tokens (czyli tego, co model generuje). Aby jakoś zarządzać kosztem można: ładować dokumenty w trakcie jak czat się rozwija, nie na początku, korzystać z tool-i które umożliwiają pobieranie brakujących danych, budowanie rankingu przekazywanych do kontekstu dokumentów i przekazywanie tylko tych najważniejszych.