Už dlouho používám ChatGPT pro psaní různorodých skriptů. Před nedávnem jsem přidal do výbavy ChatGPT API a řešil pár dalších skriptů. A opět mi to připomnělo pár věcí, které se hodí.
To první zásadní, rovnou instruujte ChatGPT aby
- přidala logování do souboru toho co se děje, respektive alespoň všech chyb. A aby ten soubor při spuštění skriptu promazala, aby nerostl napořád
- Tohle ladění je možné později vypnout, takže si o to rovnou můžete říct, aby to bylo “vypínatelné” (ideálně přímo v kódu, ale u věcí co spouštíte ručně jako parametr). Prostě můžete mít skript co umí verbose / dry-run / debug módy.
- hodí se, ať do skriptu přidá “beep”, tedy zvukovou signalizaci že úspěšně proběhl (jedno pípnutí) či že došlo k chybě (tři pípnutí
- A pochopitelně i exit kódy a jednotná chybová hlášení pro skriptování v CI.
Proč? Protože běžně ty skripty často poběží “na pozadí” a nebudete vědět co se děje.
Bývá užitečné dát modelu specifikaci prostředí: OS, verze Pythonu/Node, dostupné knihovny, omezení (proxy, firewally). Proč? Protože u Pythonu je to často kritické a vy nejspíš v systému prostě něco máte a s tím co vymyslí ChatGPT to nemusí fungovat.
ChatGPT hodně pomůže při ladění, stačí když ji budete říkat jaké chybové hlášky se objevují, prakticky vždy má nápad co s tím.
Změny v kódu vám umí říct dílčí (tedy nahraď “tohle” “tímhle”) nebo prostě pokaždé generovat znovu celý skript. Můžete žádat nejmenší nutnou změnu („minimal patch“), ne vždy celý soubor, ale občas bývá efektivnější si říct znovu o celý a pak udělat copy-paste.
Píše občas dost “na prasáka”, ale to vám na domácí či pracovní skripty moc nemusí vadit. Nečekejte optimalizovaný kód. Ale možná když ji o to později požádáte, dokáže to.
Ale pozor, občas vám bude říkat nesmysly, zejména pokud začnete k běžnému kódu ještě míchat nějaké další věci. Občas se ukáže, že některé věci nezná správně, ale když ji trochu navedete, probere se a pak už to dělá jak má.
K tomu předchozímu se určitě hodí verzování/changelog. Je prostě dobré se mít možnost vrátit alespoň k poslednímu dobře fungujícímu skriptu.
Hodí se požadovat komentáře k designovým volbám (proč X, ne Y).
Pokud si něco píšete jen pro vlastní lokální použití, bezpečnost vás moc trápit nemusí, ale pokud to bude použité i jinde a vstupy do toho půjdou jiné než čistě vaše, tak se s ChatGPT vždy pobavte o tom že musí řešit bezpečnost.
Pobavte se o tom s AI
Výše uvedené jsem psal postupně, současně s řešením některý věcí. Ale můžete se o tom bavit s AI. Velmi dobře vám poradí – což jsem udělal a výsledek vidíte níže.Pár věci jsem odtamtud přidal do mého přehledu, ale ten je více pro laiky a začátečniky. To od AI jde daleko více do hloubky.
—
Tady je stručný check-list témat, která by v článku ještě měla být, aby byl pro „psaní skriptů s pomocí ChatGPT (i API)“ kompletní:
Jak zadávat požadavky ChatGPT
- Dát modelu specifikaci prostředí: OS, verze Pythonu/Node, dostupné knihovny, omezení (proxy, firewally).
- Požadovat strukturovaný výstup (JSON/patch/diff), aby se dal snadno aplikovat.
- Žádat nejmenší nutnou změnu („minimal patch“), ne vždy celý soubor.
- Nechat si vypsat edge cases a generovat k nim testy.
- Požadovat komentáře k designovým volbám (proč X, ne Y).
Spouštění & konfigurace
- Konfigurační vrstva: .env / YAML / CLI přepínače; precedence (ENV > CLI > config).
- Verbose / dry-run / debug módy.
- Exit kódy a jednotná chybová hlášení pro skriptování v CI.
Logování & pozorovatelnost (navázat na tvé body)
- Úrovně logů (INFO/DEBUG/WARN/ERROR) + strukturované logy (JSON).
- Rotace logů (size/time-based), ne jen „promazat při startu“.
- Notifikace: při pádu/úspěchu (e-mail, webhook, systémové upozornění), nejen „beep“.
- Měření doby běhu, počty zpracovaných položek, jednoduché metriky.
Spolehlivost & odolnost
- Timeouty na IO/HTTP a retry s exponenciálním backoffem + jitter.
- Idempotence (bezpečné opakování po pádu).
- Dočasné soubory a atomické zápisy (write-temp → rename).
- Zámky/file locking u souběžných běhů.
- Graceful shutdown (SIGINT/SIGTERM).
Bezpečnost
- Správa tajemství (API klíče jen z ENV/secret manageru; nikdy do repo).
- Sanitizace vstupů; pozor na shell injection u subprocess.
- Omezení přístupů (práce jen v určeném adresáři, práva souborů).
- Redakce logů (nevypisovat PII/klíče).
Testování & kvalita
- Nechat ChatGPT vygenerovat unit testy (pytest/unittest) a falešná data.
- Lint/format (ruff/flake8, black, prettier) + type hints (mypy/pyright).
- CI kontrola: testy, lint, bezpečnostní skeny (např. bandit).
Závislosti & prostředí
- Reproducibilita: requirements.txt/poetry.lock, pipx pro CLI, verze nástrojů.
- Virtuální prostředí/containers (Docker) pro izolaci.
- Kompatibilita napříč OS (cesty, kódování, CRLF/LF, lokály).
Vstup/Výstup & data
- Kódování (UTF-8), normalizace konců řádků.
- Validace vstupních souborů (CSV/JSON schéma).
- Streamování velkých dat, batching, caching (např. HTTP etag/If-Modified-Since).
- Progres (tqdm) u dlouhých běhů.
Paralelizace & výkon
- Volba mezi asyncio / threads / multiprocessing (IO vs CPU bound).
- Omezení souběhu (semafory, rate-limit), aby se nezahltily API/disky.
- Profilace (time/perf counter) a základní optimalizace paměti.
Integrace ChatGPT API (pokud používáš)
- Volba modelu a determinismus (seed), temperature pro stabilnější kód.
- JSON/structured output a tools/function calling (schémata, Pydantic).
- Kontrola nákladů: logování tokenů, metriky, rozumné promptování.
- Fallback modelů, rate-limit handling, streaming vs. celé odpovědi.
- Chunking delších souborů, kontextová okna, cache odpovědí.
Síť & provoz
- Proxy podpora (HTTP/HTTPS), timeouts, retry politiky.
- Plánování: cron/Systemd/Task Scheduler, watchdog, restart po chybě.
- Zdravotní kontrola (health-check) pro dlouho běžící služby.
Dokumentace & údržba
- Krátké README: jak spustit, požadavky, příklady.
- Verzování skriptu a changelog.
- Licence/poznámky ke třetím knihovnám.
UX drobnosti
- Barevný/čistý CLI výstup (ale s přepínačem –no-color).
- Interaktivní potvrzení u nevratných operací, –yes pro automatizaci.
- Sensible defaults + jasná nápověda –help.
Co si nechat od ChatGPT rovnou vygenerovat
- Skeleton projektu (struktura adresářů).
- Konfig šablony (.env.example, YAML).
- Makefile/Taskfile pro běžné úlohy (test, lint, run).
- CI workflow (GitHub Actions/GitLab CI).
- Migrační plán/refactor diff a rollback instrukce.
