Claude Architect · Les

Deterministische afdwinging versus prompts

Hooks zijn 100% zeker; prompts zijn ongeveer 90% waarschijnlijk effectief

Les 2 van 413 stappen

Deterministische afdwinging versus prompts is een gratis Claude Architect-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Claude Architect. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Claude Architect bevat in totaal 4 lessen.

Twee manieren om een regel af te dwingen

Wanneer je wilt dat een agent een regel altijd volgt, heb je twee fundamenteel verschillende hulpmiddelen.

  • Prompts vragen het model om zich op een bepaalde manier te gedragen. Het model werkt meestal mee — maar het blijft een probabilistisch systeem dat zelf een oordeel velt.
  • Hooks zijn deterministische code die rond aanroepen van hulpmiddelen draait. Ze vragen niets — ze dwingen af.

Deze les leert je het belangrijkste getal bij het afdwingen van regels in workflows: een goed geschreven prompt levert ongeveer ~90% naleving op; een hook levert 100%.

Prompts zijn probabilistisch

Een systeemprompt is een richtlijn. Zelfs een uitstekende prompt — met expliciete criteria en few-shot-voorbeelden — stuurt het model naar het juiste gedrag, maar biedt nooit een garantie.

Over duizenden verzoeken komt die resterende ~10% aan het licht: een randgeval, een ongebruikelijke formulering of een lange context waarin de regel in de lost-in-the-middle-zone staat. Het model generaliseert vanuit je instructies, en precies daarom kan het ook verkeerd generaliseren.

Voor het meeste gedrag is dat prima. Voor regels waarbij één overtreding onaanvaardbaar is, vormt ~90% een risico.

system = (
    "You are a refund agent. "
    "NEVER issue a refund above $500 without manager approval."
)
# This is guidance. The model will *usually* obey —
# but 'usually' is not 'always'. There is no code path
# that physically blocks a $501 refund.

Hooks zijn deterministisch

Een hook is gewone code die in de levenscyclus van de agent is aangesloten. De hook wordt elke keer uitgevoerd, evalueert een voorwaarde elke keer op dezelfde manier en de beslissing ervan hangt niet af van de redenering van het model.

  • PostToolUse-hooks onderscheppen het resultaat van een hulpmiddel voordat het model het ooit ziet.
  • Hooks voor uitgaande aanroepen blokkeren acties die het beleid schenden voordat ze worden uitgevoerd.

Omdat de logica hard gecodeerd is, is de garantie absoluut: 100% deterministische handhaving. Een geblokkeerde actie blijft geblokkeerd — ongeacht wat het model beslist.

def block_large_refund(tool_name, tool_input):
    if tool_name == "process_refund" and tool_input["amount"] > 500:
        return {"allow": False,
                "reason": "Refunds over $500 require manager approval"}
    return {"allow": True}
# Runs on EVERY process_refund call. $501 is blocked, every time.

De beslisregel

Dit is de regel die je moet onthouden voor het examen en voor echte architectuur:

Gebruik hooks wanneer een fout financiële, juridische of veiligheidsgevolgen heeft.

Als één overtreding geld kost, de wet breekt of iemand in gevaar brengt, is ~90% niet acceptabel — je hebt 100% nodig. Dat is de taak van een hook. Prompts zijn bedoeld voor richtlijnen, toon, voorkeuren en de talloze zachte gedragingen waarbij een incidentele fout kan worden hersteld.

Dwing een kritieke bedrijfsregel niet alleen met prompts af. Dat is een van de meest voorkomende foute antwoorden bij scenariovragen.

Programmatische voorwaarden vooraf

Hetzelfde deterministische principe geldt voor precondities — regels over wat er moet gebeuren voordat een actie is toegestaan.

Een voorbeeld uit het scenario Klantenondersteuning: voer process_refund nooit uit voordat get_customer een geverifieerde klant-ID heeft geretourneerd. Je kunt dat als instructie in een prompt schrijven... of je kunt het in code afdwingen, zodat het fysiek niet kan worden overgeslagen.

Een programmatische preconditie biedt een deterministische garantie die promptinstructies niet kunnen bieden. De identiteitscontrole vindt 100% van de tijd plaats, niet 90%.

def require_verified_identity(tool_name, tool_input, state):
    if tool_name == "process_refund" and not state.get("verified_customer_id"):
        return {"allow": False,
                "reason": "Block refund until get_customer returns a verified ID"}
    return {"allow": True}

Waarom niet gewoon een strengere prompt gebruiken?

Een verleidelijke valkuil: "Ik schrijf gewoon een echt sterke prompt — volledig in hoofdletters, drie keer herhaald en met voorbeelden." Dit verbetert de naleving, maar verandert de categorie niet. Je bevindt je nog steeds aan de probabilistische kant van de grens.

Voorbeelden met weinig voorbeelden en expliciete criteria zijn krachtig — ze verhogen de kwaliteit, verminderen hallucinaties en leggen het uitvoerformaat vast. Maar ze verhogen het plafond van ongeveer 90%; ze bereiken nooit de deterministische 100% die financiële, juridische en veiligheidsregels vereisen.

Als de vereiste een garantie is, kan geen enkele hoeveelheid prompt engineering code vervangen.

Hooks vervangen modelbeslissingen niet

Belangrijke nuance: hooks zijn geen vrijbrief om alles hard te coderen. De agentische lus is modelgestuurd — het model bepaalt welke tools wanneer worden aangeroepen, op basis van stopredenen.

Je gebruikt harde code voor garanties, niet voor routinematige besluitvorming. Zie het als een dunne, deterministische veiligheidsgrens rond een intelligente, flexibele kern.

Diezelfde wijsheid geldt voor limieten op iteraties: een limiet is een veiligheidsnet, nooit het primaire stopmechanisme. Beëindig op stop_reason en gebruik deterministische code alleen waar daadwerkelijk een harde garantie vereist is.

PostToolUse: invoer voor het model beveiligen

Een PostToolUse-hook onderschept het resultaat van een tool voordat het model het ziet. Dit is meer dan blokkeren — het is een deterministisch controlepunt voor gegevens die terugvloeien naar het gesprek.

Gebruik deze hook om zaken af te dwingen zoals: geheimen uit de uitvoer verwijderen, controleren of een verplicht veld aanwezig is of weigeren een resultaat zichtbaar te maken dat in strijd is met beleid. Omdat de hook deterministisch op elk resultaat wordt uitgevoerd, krijgt het model nooit de kans om gegevens verkeerd te verwerken waarvan je hebt bepaald dat het die niet onbewerkt mag zien.

def post_tool_use(tool_name, result):
    if tool_name == "lookup_order":
        # Deterministically strip PII before the model sees it
        result.pop("raw_credit_card", None)
    return result

Hooks voor uitgaande aanroepen: acties beveiligen

Het spiegelbeeld van PostToolUse is de hook voor uitgaande aanroepen: die bevindt zich tussen de beslissing van het model om te handelen en het daadwerkelijk uitvoeren van de actie.

Hier blokkeer je acties die in strijd zijn met beleid — de terugbetaling van meer dan $500, de e-mail naar een niet-goedgekeurd domein of het verwijderen van een beveiligde bron. Het model kan de actie aanvragen; de hook bepaalt of deze wordt uitgevoerd.

Deze scheiding vormt de architectuur: het model doet een voorstel, deterministische code beslist — maar alleen voor de kleine set regels waarvoor echt een garantie nodig is.

def on_outgoing_call(action):
    if action.type == "refund" and action.amount > 500:
        raise PolicyViolation("Refund exceeds $500 ceiling")
    if action.type == "refund" and not action.customer_verified:
        raise PolicyViolation("Customer identity not verified")

Het signaal in een scenario herkennen

Examenscenario's geven het antwoord vaak weg met hun formulering. Train jezelf om het te herkennen:

  • Woorden als "mag nooit," "financieel," "naleving," "veiligheid," "regelgeving," of een harde geldgrens → het antwoord omvat een hook / deterministische afdwinging.
  • Woorden als "bij voorkeur," "toon," "stijl," "meestal," "wanneer passend" → een prompt volstaat.

Als een optie voorstelt om een harde, kostbare regel af te dwingen met "een sterkere systeemprompt", is dat vrijwel zeker een afleider.

Combineer beide lagen

De sterkste ontwerpen gebruiken beide. De prompt zorgt ervoor dat het model 90% van de tijd het juiste wil doen — minder geblokkeerde pogingen, soepelere gesprekken en een betere gebruikerservaring. De hook vangt de resterende 10% op met een harde garantie.

Gebruik een prompt voor goed standaardgedrag en een hook voor de niet-onderhandelbare grens. Zo krijg je een systeem dat zowel intelligent als aantoonbaar veilig is — begeleiding voor het normale geval en deterministische afdwinging voor het catastrofale geval.

# Layer 1 (prompt, ~90%): set the right default behavior
system = "Confirm customer identity before any refund, and keep refunds under $500."

# Layer 2 (hook, 100%): the guarantee the prompt can't make
hooks = [require_verified_identity, block_large_refund]

Korte controle: terugbetalingsbeleid afdwingen

Pas de beslisregel toe op een echt scenario.

Samenvatting: 100% versus ongeveer 90%

Belangrijkste punten:

  • Prompts bieden ongeveer 90% probabilistische begeleiding; hooks zorgen voor 100% deterministische afdwinging.
  • Gebruik hooks wanneer fouten financiële, juridische of veiligheidsgevolgen hebben; gebruik prompts voor toon, voorkeuren en zacht gedrag.
  • PostToolUse-hooks beveiligen resultaten voordat het model ze ziet; hooks voor uitgaande aanroepen blokkeren acties die in strijd zijn met beleid voordat ze worden uitgevoerd.
  • Programmatische precondities (een terugbetaling blokkeren totdat de identiteit is geverifieerd) bieden garanties die prompts niet kunnen bieden.
  • Reserveer harde code voor garanties — houd de lus modelgestuurd en combineer een goede prompt (standaardgedrag) met een hook (harde grens).
  • Wantrouw elk antwoord dat een kritieke, kostbare regel alleen met "een sterkere prompt" probeert af te dwingen.
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
26
Lessen
104

Veelgestelde vragen

Is de les “Deterministische afdwinging versus prompts” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Claude Architect, waaronder “Deterministische afdwinging versus prompts”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Claude Architect bevat in totaal 4 lessen.

Wat leer ik in “Deterministische afdwinging versus prompts”?

Hooks zijn 100% zeker; prompts zijn ongeveer 90% waarschijnlijk effectief Je oefent met Claude Architect door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Claude Architect te beginnen?

Ervaring vooraf is niet nodig. Claude Architect op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Deterministische afdwinging versus prompts”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Claude Architect?

Ja. Elke les over Claude Architect bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. PostToolUse- en outgoing-call-hooks
  2. Deterministische afdwinging versus prompts
  3. Programmatische randvoorwaarden
  4. Gestructureerde overdrachtsprotocollen
← Terug naar Claude Architect