Jak zadat AI chybu v kódu, aby ji opravila napoprvé
Šablona hlášení chyby pro AI asistenta – co přiložit, jak popsat očekávané a skutečné chování a jak se vyhnout kolečku nefunkčních oprav.
„Nefunguje mi to, oprav to“ a k tomu 400 řádků kódu. AI odpoví sebevědomou opravou, ta nefunguje, následuje další pokus a další. Po pěti kolech je kód horší než na začátku. Příčinou obvykle není hloupý asistent, ale chybějící informace. AI nevidí váš monitor, nespustí si váš kód a nezná vaše data. Co jí neřeknete, musí odhadnout.
Šablona, která funguje
## Co se děje
Při odeslání formuláře registrace vrací endpoint POST /api/register
HTTP 500.
## Co očekávám
Vytvoření uživatele a odpověď 201 s JSON {"id": ...}.
## Chybová hláška (celá)
Traceback (most recent call last):
File "/app/api/users.py", line 42, in register
user = User(email=data["email"].lower(), ...)
AttributeError: 'NoneType' object has no attribute 'lower'
## Jak to vyvolat
curl -X POST localhost:8000/api/register \
-H "Content-Type: application/json" \
-d '{"name": "Jana", "password": "x"}'
## Prostředí
Python 3.12, Flask 3.0, Ubuntu 24.04, lokálně i na serveru.
## Co už jsem zkusil
- Se zadaným e-mailem to funguje.
- Na frontendu je pole e-mail nepovinné (to je záměr).
## Relevantní kód
[soubor api/users.py celý, models.py jen třída User]
Každá sekce má důvod. Projděme je.
1. Očekávané vs. skutečné chování
„Nefunguje“ může znamenat chybu, špatný výsledek, pomalost nebo nic. Napište obojí: co se má stát a co se děje. U špatných výsledků uveďte konkrétní hodnoty: „pro vstup 1500 Kč vrací slevu 0, čekám 75“.
2. Celá chybová hláška
Ne „hází to AttributeError“, ale celý výpis včetně stack trace. Řádky a názvy souborů jsou pro diagnostiku klíčové. Totéž platí pro výstup konzole v prohlížeči, logy serveru (journalctl -u app -n 50) nebo výstup buildu.
Pokud chybová hláška neexistuje, řekněte to – i to je informace („žádná chyba v konzoli ani v logu, jen se nic nestane“).
3. Reprodukce
Nejlepší je příkaz, který chybu vyvolá: curl, test, krátký skript. AI pak vidí přesný vstup. U chyb v UI popište kroky: „1. přihlásit se, 2. otevřít košík, 3. smazat poslední položku → stránka zbělá“.
4. Správný kontext kódu
Moc málo kódu je stejný problém jako moc kódu.
- Pošlete: soubor, kde chyba vzniká, a soubory, které se ve stack trace objevují (vaše, ne knihovny). Definice datových struktur, se kterými kód pracuje.
- Nepošlete: celý projekt bez vysvětlení,
node_modules, vygenerované soubory. - Nezkracujte kód tak, že zmizí podstatné. Pokud nahradíte část komentářem „… tady nic důležitého …“, chyba tam bývá.
Velmi pomáhá i ukázka dat: pár řádků JSON odpovědi, schéma tabulky, ukázka vstupního CSV. Citlivé údaje (hesla, tokeny, osobní data) nahraďte smyšlenými.
5. Prostředí a verze
„Django 5.1“ a „Django 3.2“ jsou jiné světy. Uveďte jazyk, framework, hlavní knihovny a jejich verze, OS, a jestli chyba nastává lokálně, na serveru, nebo jen na jednom z nich. Rychlé zjištění verzí:
python3 --version && pip freeze | grep -iE "flask|sqlalchemy"
node --version && npm ls --depth=0
6. Co jste zkusili a co platí
Ušetříte kolo návrhů, které už jste vyloučili. A přidejte omezení: „nechci měnit databázové schéma“, „řešení musí fungovat v Pythonu 3.9“, „nepřidávej nové závislosti“.
Jak se vyhnout kolečku nefunkčních oprav
Chtějte diagnózu před opravou
Neopravuj zatím kód. Nejdřív mi vysvětli, co je podle tebe příčina,
a navrhni, jak tu hypotézu ověřit.
Když AI musí nejdřív zdůvodnit příčinu, je mnohem méně pravděpodobné, že jen „přidá try/except“ a chybu zakryje.
Po neúspěšné opravě pošlete nový výstup
Ne „pořád to nefunguje“, ale: „Použil jsem tvou opravu. Teď je chyba jiná: [nový výpis].“ Změna chybové hlášky je cenná informace – často znamená posun dál.
Po třech neúspěšných pokusech začněte znovu
Dlouhá konverzace plná nefunkčních návrhů asistenta mate. Otevřete novou konverzaci s aktuálním kódem, shrnutím zjištění a seznamem toho, co nefungovalo.
Zmenšete problém
Pokud chyba nastává v komplexní aplikaci, zkuste ji izolovat do minimálního skriptu. Často na příčinu přijdete už při tom – a pokud ne, AI dostane čistý, jednoznačný příklad.
Pozor na „opravy“, které jen schovávají chybu
U navržené opravy se zeptejte, zda řeší příčinu, nebo jen symptom:
try/except: passkolem padajícího kódu,if x is not Nonebez otázky, proč jexprázdné,- zvýšení timeoutu u pomalé operace,
// @ts-ignorenebo# type: ignore.
Někdy je to správné řešení, ale mělo by jít o vědomé rozhodnutí.
V ColdHost AI
Zvolte režim Řešení problémů, který postupuje od diagnózy k opravě. Soubory, logy i ZIP s projektem můžete přiložit přímo ke zprávě. Pokud aplikace běží na vašem VPS připojeném přes SSH, asistent si může navrhnout diagnostické příkazy (logy, stav služby) – vy je schválíte jedním kliknutím a výstup dostane rovnou k analýze.