> For the complete documentation index, see [llms.txt](https://docs.artific.nl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.artific.nl/voor-beheerders/kwaliteitscontrole/scenarios.md).

# Scenario's en controles

Vastleggen wat je test. Te vinden op het tabblad **Scenario's** van een kwaliteitscontrole.

## Scenario's

Een scenario is één situatie. Het heeft een **Titel** en een **Beschrijving**, en bevat een of meer stappen.

Gebruik één scenario per onderwerp in plaats van één enorm scenario met twintig stappen. Mislukkingen zijn veel makkelijker te duiden als de naam van het scenario je vertelt welk gebied stukging.

Goede scenariotitels beschrijven de situatie: *Verlofregeling (dagen meenemen naar volgend jaar)*, *Weigert juridisch advies te geven*, *Bestelling opzoeken met een geldig bestelnummer*.

## Stappen

Een stap is een vraag plus de controles waaraan het antwoord moet voldoen. Met **Stap toevoegen** maak je er een aan.

**Als de gebruiker vraagt** bevat de vraag, geformuleerd zoals een echte gebruiker hem zou stellen. Gebruik hun woorden, ook de onhandige. Dit is een test van wat er in de praktijk gebeurt, niet van jouw ideale formulering.

Stappen in een scenario lopen op volgorde en bouwen op elkaar voort, zodat je een gesprek kunt testen in plaats van één uitwisseling: stel een vraag, en daarna een vervolgvraag die alleen in die context betekenis heeft.

## Controles

Elke stap heeft een of meer controles. Elke controle heeft een vakje **Verplicht om te slagen**: mislukken verplichte controles, dan levert dat **Problemen** op, optionele leveren een **Waarschuwing** op.

| Controle                         | Wat het nagaat                                                                     | Wat je meegeeft                    |
| -------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------- |
| **Exacte overeenkomst**          | Het antwoord komt exact overeen.                                                   | Het verwachte antwoord.            |
| **Vergelijkbare overeenkomst**   | Het antwoord zegt hetzelfde, met ruimte voor andere bewoording.                    | Het verwachte antwoord.            |
| **Bevat tekst**                  | Een bepaalde zinsnede komt voor.                                                   | De tekst die erin moet staan.      |
| **Bevat tekst niet**             | Een zinsnede komt niet voor.                                                       | De tekst die er niet in mag staan. |
| **Juiste opmaak**                | Het antwoord heeft de vereiste vorm.                                               | Een beschrijving van de opmaak.    |
| **Geen hallucinatie**            | Het antwoord is onderbouwd, niet verzonnen.                                        | Niets.                             |
| **Geldige URL's**                | Links die worden gegeven, werken ook echt.                                         | Niets.                             |
| **Beleefde toon**                | De toon is passend.                                                                | Niets.                             |
| **Moet tool gebruiken**          | De assistent heeft een tool gebruikt in plaats van uit het geheugen te antwoorden. | Niets.                             |
| **Antwoordt binnen tijdslimiet** | Het antwoord kwam op tijd.                                                         | Maximaal aantal seconden.          |
| **LLM Judge**                    | Al het andere, beoordeeld door het beoordelingsmodel.                              | Een beoordelingsprompt.            |

Met **Bijlagen** upload je bestanden waar de controle naar kan verwijzen.

## De juiste controle kiezen

**Vergelijkbare overeenkomst** in plaats van **Exacte overeenkomst**, vrijwel altijd. Modellen formuleren dingen anders. Exacte overeenkomst faalt op een komma en levert alarmen op die niemand vertrouwt.

**Bevat tekst** voor feiten die er moeten staan: het werkelijke aantal dagen, de juiste deadline, het telefoonnummer.

**Bevat tekst niet** voor dingen die er nooit in mogen staan: de naam van een concurrent, de naam van een verouderde regeling, een zin als "ik ben een AI-taalmodel" als je hebt gezegd dat hij dat niet moet zeggen.

**Moet tool gebruiken** voor alles wat uit een actuele opzoeking moet komen in plaats van uit het geheugen van het model. Dit vangt een hele categorie stille fouten af.

**LLM Judge** voor alles wat de mechanische controles niet kunnen uitdrukken. Schrijf de beoordelingsprompt als een criterium, niet als een vraag:

> *Beoordeel of het antwoord correct vermeldt dat niet-opgenomen verlof aan het eind van maart vervalt, benoemt dat er bij HR om verlenging kan worden gevraagd, en geen advies geeft over individuele contracten.*

Wees specifiek over wat er aanwezig moet zijn. Een vage beoordelingsprompt geeft vage, onstabiele scores.

## Praktische tips

* **Eén ding per controle.** Een stap met één duidelijke controle vertelt je wat er stukging. Een stap met zes niet.
* **Maak kritieke controles verplicht en stilistische optioneel.** Anders is elke run rood en stoppen mensen met lezen.
* **Test ook weigeringen, niet alleen antwoorden.** *"Mag geen vragen over individuele salarissen beantwoorden"* is precies zo belangrijk als de vragen die hij wél moet beantwoorden.
* **Voeg een scenario toe zodra er in de praktijk iets misgaat.** Zo groeit de set uit tot iets waardevols.
