Never trust AI — part 1: uv i repozytorium bez dat

Konfiguracja Pythonowego menadżera pakietów uv wydawała się prosta. Chciałem zwiększyć bezpieczeństwo projektu, dodając regułę wymuszającą korzystanie wyłącznie z pakietów, które mają co najmniej 7 dni „na karku”:

[tool.uv]
exclude-newer = "7 days"

Cel: blokowanie świeżo opublikowanych pakietów (potencjalne supply-chain attacks). Logika prosta — ale zderzyłem się z problemem. Niektóre repozytoria pakietów — jak Google Cloud Repository — nie podają metadanych upload-time dla pakietów. Z perspektywy uv brak daty = brak możliwości weryfikacji reguły. Efekt: pakiety z takich źródeł są blokowane.

Gdzie był AI?

Zapytałem kilku asystentów AI. Żaden nie znał rozwiązania. Powody:

  • Problem jest zbyt rzadki — nie ma go w danych treningowych
  • Wyszukiwanie internetowe przez narzędzia AI nie potrafiło poprawnie przeanalizować odpowiedniej strony (lub jej nawet znaleźć)

Nota na marginesie: gdy pisałem ten post z pomocą AI, asystent zaproponował przykład z pakietem google-cloud-storage. Pakiet ten nie miał żadnego związku z moim problemem — AI go po prostu wymyśliło. Klasyczny hallucination. Pasuje do tematu.

Rozwiązanie znalazłem ręcznie, w GitHubie — issue #16813 projektu astral-sh/uv.

Rozwiązanie: exclude-newer-package

W moim przypadku problem dotyczył pakietu pytorch. Rozwiązanie — wyłączenie konkretnego pakietu z globalnej reguły:

[tool.uv]
exclude-newer = "7 days"
exclude-newer-package = { pytorch = false }

Flaga false oznacza: dla tego pakietu nie stosuj reguły exclude-newer. Reszta pakietów nadal podlega weryfikacji.

Wniosek

AI jest świetne przy popularnych problemach. Przy edge-case’ach — szczególnie nowych, rzadkich, słabo udokumentowanych — zawodzi. Nie dlatego, że jest głupie. Dlatego, że nie miało szansy się nauczyć.

Never trust AI — weryfikuj, szczególnie gdy problem jest specyficzny i mało popularny.

Zostaw odpowiedź