AI automation: praktický sprievodca

Každý týždeň mi niekto ukáže 20-minútové video, kde AI agent autonómne stavia SaaS. Video sa vždy zastaví predtým, než sa niekto pozrie na kód. Tu je to, čo skutočne ship-uje — tri produkčné vzory, reálny kód, reálne cost čísla, žiadne demá.

Publikované
02. marca 2026
Aktualizované
16. mája 2026
Čas čítania
8 min
Slov
1 219
Tagy
ai · automation · mcp
AI automation: praktický sprievodca — cover
AI automation: praktický sprievodcaAI & automatizácia

Každý kvartál mi niekto ukáže video, kde AI agent autonómne stavia kompletný SaaS produkt za dvadsať minút. Zvyčajne sa video zastaví tesne predtým, než sa niekto pozrie na kód.

Toto nie je esej proti AI automation. Stavám produkčné AI systémy pre klientov a bežím tri svoje vlastné — Conseto používa Claude na týždenné briefy, moje MCP servery (lead-scout, trend-intel, social-posts) ship-ujú denne proti reálnym workloadom, Kovrin je open-source agent safety framework, ktorý som napísal špecificky preto, že príliš veľa tohto priestoru drží pokope optimizmus.

Toto je esej o tom, čo skutočne ship-uje. Tri vzory, ktoré v klientskej práci opakovane používam. Code samples. Cost čísla. Žiadne demá.

Čo oddeľuje demo od systému

Demá v roku 2026 sú skutočne impresívne. Realita je pokornejšia. Funkčný AI automation systém má tri vlastnosti, ktoré demá takmer nikdy nedemonštrujú:

  • Štruktúrované hranice. Output modelu sa validuje proti schéme predtým, než na ňom čokoľvek ďalšie koná.
  • Idempotencia na side effects. Pipeline sa môže crashnúť uprostred exekúcie a re-runnúť bez produkovania duplicitných outcomov.
  • Human checkpointy. Čokoľvek high-stakes smeruje do review queue pred exekúciou.

Tieto tri vlastnosti sú to, čo mení "model niečo povedal" na "systém niečo správne urobil". Vynechajte ktorúkoľvek z nich a ship-nete pipeline, ktorý produkuje ticho zlé outputy o 3 ráno v nedeľu. Čo je vtedy, keď to zistíte, lebo vtedy príde nahnevaný emailový dopyt zákazníka.

Vzory, ktoré ship-ujú do produkcie, vyzerajú nudne v porovnaní s demami. Nudné je tá pointa.

PROCESS — tri inžinierske schématické boxy označené Ø 05 INTAKE, ± 0.1 REVIEW, ⌀ 12 OUTPUT s fialovým kruhom okolo REVIEW
Vzor pod každým ship-ujúcim AI systémom: intake, validovaný review, output. Disciplína je to, čo je renderované ako tolerančné značky.

Vzor 1 — Audit a summarize pipelines

Problém. Klient generuje alebo prijíma veľa dokumentov a niekto ich musí čítať. Právne zmluvy, compliance reporty, customer support tickety, výskumné papiere, meeting transkripty. Objem je dosť vysoký na to, aby ich nikto poriadne nečítal; stakes sú dosť vysoké na to, aby zmeškanie niečoho stálo veľa.

Tvar riešenia.

async function auditDocument(doc: { id: string; text: string }) {
  const result = await claude.messages.create({
    model: "claude-sonnet-4-5",
    max_tokens: 2048,
    system: AUDIT_SYSTEM_PROMPT,
    messages: [
      {
        role: "user",
        content: `Audit this document. Output JSON matching the schema. Document:\n\n${doc.text}`,
      },
    ],
  });
 
  const parsed = AuditSchema.parse(JSON.parse(result.content[0].text));
 
  await db.insert(audits).values({
    documentId: doc.id,
    summary: parsed.summary,
    concerns: parsed.concerns,
    risk: parsed.risk,
    confidence: parsed.confidence,
  });
 
  if (parsed.risk >= "HIGH" || parsed.confidence < 0.7) {
    await notifyReviewer(doc.id, parsed);
  }
}

Tri veci, ktoré si treba všimnúť.

1 · Štruktúrovaný output cez Zod schému. Nie "Claude vráti angličtinu, ty ju parsuješ regexom". Zod validuje, takže drift od schémy je tvrdý error, ktorý vieš ošetriť.

2 · Automatická eskalácia pri nízkej confidence. Model sám reportuje confidence (promptnutý je naň) a čokoľvek pod 0.7 smeruje k ľudskému revízorovi. Nemusí byť všetko 100% rozhodnuté modelom.

3 · Idempotentný DB zápis. Ak sa pipeline crashne uprostred dokumentu, môžete bezpečne re-runnúť. Esenciálne pre produkciu — retry-e sa dejú.

Cost realita. Pre Claude Sonnet 4.5 je 2,000-token input + 2,048-token output zhruba €0.012 per dokument. Desaťtisíc dokumentov = €120. Pri tých číslach sa caching stáva kritickým. Anthropic prompt caching reže opakované system-prompt náklady o ~90%, čo má zmysel, lebo system prompt je zvyčajne najväčší token chunk.

PIPE — ETL pipeline diagram s INGEST, TRANSFORM, EMIT inputmi vstupujúcimi do jednej rúry s OUT výstupom, šrafované pozadie
Audit vzor vo vyššej altitude: dokumenty vstupujú, model klasifikuje, štruktúrované záznamy vystupujú. Rúra je to, čo to robí idempotentným.

Vzor 2 — Štruktúrovaná extrakcia dát

Problém. Klient má neporiadne inputy — PDF faktúry, freeform emaily, scrapenuté webové stránky, ručne písané formuláre naskenované ako obrázky — a potrebuje ich ako čisté typované záznamy v Postgrese.

Tvar.

const InvoiceSchema = z.object({
  vendor: z.string(),
  invoice_number: z.string(),
  date: z.string().regex(/^\d{4}-\d{2}-\d{2}$/),
  subtotal: z.number(),
  tax: z.number(),
  total: z.number(),
  line_items: z.array(z.object({
    description: z.string(),
    quantity: z.number(),
    unit_price: z.number(),
  })),
});
 
async function extractInvoice(pdfBuffer: Buffer) {
  const imageData = await renderPdfToImage(pdfBuffer);
 
  const result = await claude.messages.create({
    model: "claude-sonnet-4-5",
    max_tokens: 4096,
    messages: [{
      role: "user",
      content: [
        { type: "image", source: { type: "base64", media_type: "image/png", data: imageData } },
        { type: "text", text: `Extract invoice data as JSON matching this schema: ${JSON.stringify(zodToJsonSchema(InvoiceSchema))}` },
      ],
    }],
  });
 
  const json = extractJsonFromClaudeResponse(result);
  return InvoiceSchema.parse(json);
}

Dve veci, ktoré stojí za zmienku.

1 · Multimodálny input — PDF sa stane obrázkom, ktorý sa stane štruktúrovaným JSON. Toto nahrádza celý OCR + regex + manual-review pipeline, ktorý zvykol troch inžinierov zaberať kvartál na postavenie.

2 · Schema validation na boundary. Ak Claude vráti "€1,234.56" namiesto očakávaného čísla 1234.56, Zod hodí. Vy to ošetríte explicitne — buď retry s cielenejším promptom, alebo smerujete na ľudský review. Čo nerobíte, je ticho akceptovať.

Kedy tento vzor zlyháva. Naozaj zlé inputy. Skenované ručne písané formuláre zo 70. rokov, viacjazyčné formuláre, kde model zle preloží menu, duplicate-headed faktúry, kde sa polovica polí opakuje. Pre tie nie je vzor "lepší prompt engineering" — je to "human-in-the-loop queue s confidence routingom". Štruktúrovaná extrakcia vám spoľahlivo dá 85% pokrytie. Tých 15% stále potrebuje človeka a UI pre toho človeka postavíte predtým, než pipeline deploynete.

Vzor 3 — Choreografia workflow

Problém. Viacero krokov sa musí stať v sekvencii, niektoré potrebujú model judgment, niektoré potrebujú externé API cally, niektoré potrebujú human checkpointy. Toto je miesto, kde ľudia siahnu po "autonomous agents" a zvyčajne to ľutujú.

Tvar — čo skutočne ship-uje.

async function processLead(leadId: string) {
  const lead = await db.select().from(leads).where(eq(leads.id, leadId));
 
  // Step 1: Enrich via external APIs (deterministic, no model)
  const enriched = await enrichLead(lead);
  await db.update(leads).set({ enrichment: enriched }).where(eq(leads.id, leadId));
 
  // Step 2: Model judgment — is this lead qualified?
  const qualification = await claude.messages.create({
    model: "claude-sonnet-4-5",
    max_tokens: 1024,
    system: QUALIFICATION_SYSTEM_PROMPT,
    messages: [{ role: "user", content: JSON.stringify(enriched) }],
  });
  const parsed = QualificationSchema.parse(extractJson(qualification));
 
  if (!parsed.qualified) {
    await db.update(leads).set({ status: "rejected", reason: parsed.reason });
    return;
  }
 
  // Step 3: Human checkpoint — queue for review before outbound
  await db.insert(reviewQueue).values({
    leadId,
    suggestedTemplate: parsed.suggestedTemplate,
    confidence: parsed.confidence,
  });
 
  await notifyReviewer({ leadId, context: parsed });
  // Execution stops here. Human reviews, then triggers step 4 manually.
}
 
async function sendApprovedOutbound(leadId: string, overrides: OutboundOverrides) {
  // Step 4 — runs only after human approval in the review UI
  const lead = await db.select().from(leads).where(eq(leads.id, leadId));
  const draft = await claude.messages.create({
    model: "claude-sonnet-4-5",
    max_tokens: 2048,
    messages: [{ role: "user", content: buildDraftPrompt(lead, overrides) }],
  });
 
  await sendEmail({ to: lead.email, body: draft.content[0].text });
  await db.update(leads).set({ status: "contacted", contactedAt: new Date() });
}

Čo je iné od narácie "autonomous agent":

1 · Explicitné hranice krokov. Každý krok je vlastná funkcia, idempotentná, logovaná. Žiadne nekonečné retry loopy, žiadne runaway context accumulation.

2 · Deterministická práca zostáva deterministická. Externé API cally (enrichment) nejdú cez model. Databázové updaty nejdú cez model. Model sa používa iba pre judgment cally.

3 · Human checkpoint je tvrdá brána. Krok 4 sa neauto-spustí. Exekúcia doslova zastaví, kým človek neotvorí review UI a neschváli. Model navrhuje, nekoná.

4 · State žije v Postgrese. Nie v agent's working memory. Agenti crashnú. Postgres nie. Každý krok commitne state.

Ak scopujete AI automation projekt a chcete pomoc s mapovaním na tento druh štruktúry predtým, než začnete stavať, to je presne to, čo produkuje discovery sprint.

CONSTRAIN — centrálny štvorec so štyrmi vnútornými šípkami označenými COST, TIME, SCOPE, TEAM, blueprint mriežkové pozadie
Štyri hranice, ktoré robia autonomous-agent demo ship-ovateľnými. Bez všetkých štyroch systém buď loopuje, alebo halucinuje.

Vzor, ktorý tu nie je

Plne autonómni agenti, ktorí "to vyriešia" naprieč multi-hodinovými úlohami.

Postavil som ich ako prototypy. Mal som ich ship-nuté do demošov. Nikdy som žiadneho neship-ol do produkcie pre klienta, kde sú v hre reálne peniaze alebo reálni ľudia. Failure modes — loopy, context pollution, ticho zlé outputy — sú pri súčasných model capabilities príliš časté a monitoring story je príliš nezrelá.

Ak chcete ship-núť AI do produkcie, čestný vzor je: úzke, štruktúrované, human-checkpointed, idempotent. Demá sú v poriadku. Ship-ujúce systémy vyzerajú nudne.

Cost control

Tri praktiky, ktoré šetria reálne peniaze:

1 · Prompt cachuj agresívne. Anthropic cache reže opakovaný-context cost o 90%. System prompty, schema definície, dlhé príklady — všetko cachuje. Merajte hit rate v produkcii.

2 · Fallback-ujte na menšie modely, kde je to vhodné. Claude Haiku za zhruba 1/10 ceny je v poriadku pre jednoduchú klasifikáciu. Rezervujte Sonnet (alebo Opus) pre skutočný judgment.

3 · Tvrdé spend capy. V Anthropic konzole môžete nastaviť daily spend limity. Nastavte ich. Jedna z tisíca runaway loop je €12,000-bill email od vášho ops tímu.

Takeaways — váš AI automation playbook pre rok 2026

  • Vyberajte úzke problémy. Audit, extract, choreograph — nie "postav mi autonomous marketing agent".
  • Validujte na boundary. Zod schema na každom model outpute. Tvrdý error, nie ticho drift.
  • Držte ľudí v loope. Čokoľvek user-facing, high-stakes alebo drahé na reverse ide cez review queue.
  • State v Postgrese. Agent memory nie je databáza.
  • Cachuj, fallback-uj, cap-uj. Peniaze sa o seba nestarajú samé.
  • Postavte ľudské UI najprv. Tých 15%, ktoré potrebuje revízora, je časť, na ktorú väčšina tímov zabudne navrhnúť. Spravte to predtým, než pipeline ship-ne.
  • Inštrumentujte každý krok. Trace logy, confidence skóre, eskalačné miery. Budete ich potrebovať v druhom mesiaci.

Nič z toho nie je také zábavné ako Twitter demá. Všetko z toho ship-uje.


Súvisiace: Ako AI agenti transformujú podnikové workflow · AI chatboty pre malý biznis · Porovnanie AI coding toolov 2026

Zdieľať túto esejPostni na XZdieľať na LinkedIn
Norbert Kovalčín
Napísal Norbert KovalčínNezávislý architekt · Európa · CETPomáham firmám vlastniť svoj stack, namiesto toho aby si ho prenajímali. Jeden klient za druhým.
Páčilo sa?

Nová esej každých pár týždňov.

Prihláste sa na ďalšiu. Double opt-in, odhlásenie jedným klikom, žiadne tracking pixely.