Agenti a vlastní AI · Vaše data · Díl 08 · Pokročilé · 4 min čtení
Kontrola textu, která není AI: pravidla, která platí vždy
Model se pravidly řídí většinou. Kontrola napsaná jako obyčejný kód se jimi řídí pokaždé. Co do ní patří, co ne, jak ji nabídnout agentovi jako nástroj a proč má stát na konci každého textu, který jde ven.
Naposledy ověřeno:
#MCP#Řízení#Bezpečnost#Vaše data
Obsah článku
Do pravidel pro agenta napíšete: „Nikdy netvrď, že produkt léčí.“ Agent to dodržuje. Týden, měsíc. Pak jednou zpracuje starou brožuru, kde to slovo je, a přenese ho do nového textu, protože v tu chvíli vážil dvě věci proti sobě a pravidlo prohrálo.
Není to chyba agenta. Je to vlastnost modelů: řídí se pokyny pravděpodobnostně. U většiny práce to nevadí. U vět, za které se platí pokuty, ano.
Dva druhy pravidel
Užitečné je pravidla rozdělit podle toho, kdo je umí vynutit.
| Pravidlo | Kdo ho hlídá |
|---|---|
| „Piš klidně a bez superlativů.“ | model, a po něm člověk |
| „Text má znít jako my.“ | model, a po něm člověk |
| „Nepoužívej slova léčí, vyléčí, zaručeně.“ | kód |
| „Název produktu piš vždy přesně takhle.“ | kód |
| „U ceny musí být uvedena platnost.“ | kód |
| „Web piš bez www.“ | kód |
Horní polovina vyžaduje úsudek. Dolní se dá ověřit hledáním v textu — a co se dá ověřit hledáním, nemá smysl svěřovat úsudku.
Co kontrola umí
Pět druhů pravidel pokryje většinu potřeb:
- Zakázané výrazy. Seznam slov a spojení, s výjimkami.
- Povinné tvary. Názvy produktů, firmy, lidí: přesný zápis a běžné zkomoleniny, které se mají opravit.
- Povinné součásti. Když text obsahuje cenu, musí obsahovat i platnost. Když zdravotní tvrzení, musí být na seznamu schválených.
- Čísla a formát. Tvar telefonu, data, měny; délka titulku; počet znaků příspěvku.
- Shoda s bází. Cena v textu se rovná ceně v znalostní bázi.
Poslední druh je nejcennější. Kontrola, která najde v textu číslo s měnou a porovná ho s ceníkem, chytí přesně tu chybu, kterou člověk při čtení přehlédne.
Jak vypadá
Pravidla leží v souboru, který umí upravit i neprogramátor:
zakazane:
- vzor: "\\b(vy)?léč\\w*"
duvod: "Zdravotní tvrzení bez schválení."
vyjimky: ["léčebna", "Léčebné lázně"]
- vzor: "\\bzaručen[ěý]\\w*"
duvod: "Nelze doložit."
nazvy:
- spravne: "Pražírna Na Rohu"
spatne: ["Pražírna na rohu", "pražírna Na rohu", "Prazirna Na Rohu"]
povinne:
- kdyz: "\\d+\\s?Kč"
musi_byt: "(platí|platnost|do \\d)"
duvod: "U ceny chybí platnost."
A program, který je použije, je krátký:
import re, yaml
from pathlib import Path
from mcp.server import MCPServer
PRAVIDLA = yaml.safe_load(Path("/data/pravidla.yaml").read_text(encoding="utf-8"))
mcp = MCPServer("Kontrola textu")
def je_vyjimka(text: str, zacatek: int, konec: int, vyjimky: list[str]) -> bool:
"""Výjimka platí jen tehdy, když nalezený výraz leží uvnitř ní."""
for v in vyjimky:
for m in re.finditer(re.escape(v), text, re.IGNORECASE):
if m.start() <= zacatek and konec <= m.end():
return True
return False
@mcp.tool()
def zkontroluj_text(text: str) -> list[dict]:
"""Zkontroluje text proti firemním pravidlům. Zavolej na každý
text, který má jít ven. Prázdný seznam znamená bez nálezu."""
nalezy = []
for p in PRAVIDLA["zakazane"]:
for m in re.finditer(p["vzor"], text, re.IGNORECASE):
if not je_vyjimka(text, m.start(), m.end(), p.get("vyjimky", [])):
nalezy.append({"misto": m.start(), "nalez": m.group(0),
"duvod": p["duvod"]})
for n in PRAVIDLA["nazvy"]:
for s in n["spatne"]:
if s in text:
nalezy.append({"nalez": s, "duvod": f"Správně: {n['spravne']}"})
for p in PRAVIDLA["povinne"]:
if re.search(p["kdyz"], text) and not re.search(p["musi_byt"], text):
nalezy.append({"nalez": "chybí povinná součást", "duvod": p["duvod"]})
return nalezy
Kostra je vyzkoušená na několika větách a dělá, co má; do provozu ji nechte Clauda dopsat podle vašich pravidel. Podstatné jsou tři vlastnosti, které má mít každá verze: vrací místo a důvod, ne jen ano/ne; prázdný seznam je jednoznačný výsledek; a pravidla jsou mimo kód, takže je mění ten, kdo jim rozumí.
Kde v řetězci stojí
Na konci. Vždy.
- 1Model píšePodle pravidel značky a faktů z báze.
- 2Kontrola kódemStejný vstup, stejný výsledek. Vrací nálezy s místem a důvodem.
- 3Model opravíJen to, co kontrola našla. A pošle text znovu ke kontrole.
- 4Člověk čteTón, smysl a všechno, co kód posoudit neumí.
Třetí krok má jednu past: model po opravě rád prohlásí, že je hotovo. Trvejte na tom, že hotovo je až po druhé kontrole s prázdným výsledkem.
Co kontrola neumí
Tohle je stejně důležité jako to, co umí.
- Nepozná význam. „Uleví od bolesti“ projde, i když je to totéž co zakázané „léčí“. Seznam je vždy o krok za vynalézavostí textu.
- Nepozná tón. Text může splnit všechna pravidla a být nepoužitelný.
- Nepozná pravdu. Ověří, že cena odpovídá bázi. Ne že je báze správně.
- Dává falešné poplachy. „Léčebna“ není zdravotní tvrzení. Bez výjimek začnou lidé nálezy ignorovat, a pak ignorují i ty pravé. Výjimka přitom smí omluvit jen výraz, který leží přímo v ní; kdyby platila pro celé okolí, propustila by větu „Léčebna: náš čaj léčí.“
Proto zelená kontrola neznamená „text je v pořádku“. Znamená „text neporušil nic z toho, co umíme zapsat“. Zbytek je práce pro čtenáře.
Jak pravidla udržovat
- Každé pravidlo má důvod a autora. Pravidlo, u kterého nikdo neví proč, se při první překážce vypne.
- Každý falešný poplach se řeší týž den. Výjimkou, ne vypnutím pravidla.
- Každá chyba, která prošla, je nové pravidlo. Když se do textu dostalo něco, co nemělo, první otázka je, jestli se to dalo zachytit vzorem.
- Pravidla testujte. K souboru patří pár vět, které projít mají, a pár, které nemají. Po každé úpravě je pusťte.
Na co si dát pozor
- Čeština se skloňuje. Zakázat „léčí“ nestačí; potřebujete kořen slova a jeho tvary. Vzory si nechte navrhnout a vyzkoušejte je na skutečných textech.
- Právní pravidla ověřte u právníka. Co je povolené zdravotní tvrzení, neurčuje váš seznam, ale předpisy. Seznam je jen jejich otisk.
- Kontrola nesmí text sama opravovat. Vrací nálezy. Opravu dělá model nebo člověk, a je vidět.
- Neobcházejte ji „jen tentokrát“. Nástroj, který se smí přeskočit, se přeskočí právě tehdy, kdy se spěchá — tedy tehdy, kdy vznikají chyby.
V celém řetězci od zadání po zveřejnění je spousta chytrých částí a každá z nich se občas splete. Tahle je hloupá, a když se splete, splete se pokaždé stejně — takže to jednou opravíte a je to opravené. Proto na ni můžete postavit ostatní.
Zdroje
Pomohlo vám to?
Další díl vám dojde
Nové díly seriálu a to podstatné ze světa agentů posílám v týdenním newsletteru.
E-book Top 30 tipů zdarma — pošlu vám ho hned.
Pak 1 tip týdně · žádný spam · odhlášení jedním klikem
Radši systém než jednotlivé tipy? E-mailový kurz zdarma — sedm dní, sedm e-mailů, každý den jedna dovednost.