AI web: bouw een slimme website met Agents en API’s

Geschreven door

in

AI web betekent: je webapp koppelt een AI-model aan je frontend en backend, plus tools (zoeken, data ophalen, eigen functies), met veiligheid, rate limiting en tests. Als je vandaag wilt bouwen: gebruik de Responses API voor modelaanroepen, voeg tools toe voor echte acties, cap je requests met rate limits, en bouw een kleine test-suite voor prompts, edge cases en tool-fouten.

1. Wat is “ai web”, technisch gezien

“AI web” is geen specifieke technologie, maar een architectuurpatroon. Je krijgt een webinterface (UI) die via een backend met een AI-model communiceert. Het model doet niet “magie” in je browser, maar stelt een plan op en roept vervolgens tools aan, zodat je applicatie data kan opvragen of acties kan uitvoeren.

Minimale systeemonderdelen

  • Frontend: chat UI, formulier, workflow, streaming output.
  • Backend: proxy naar de AI API, auth, tool-executie, logging.
  • Modelaanroep: Responses API (of equivalent) met instructies en context.
  • Tools: function tools en/of programmatic tool calling, waarmee het model waarden en beslissingen kan doorgeven.
  • Veiligheid: input validatie, output filtering waar nodig, sandboxing waar mogelijk, key management.
  • Observability: request IDs, traces, kosten en rate-limit status.

Waarom Responses API in de praktijk werkt

De Responses API is opgezet om in één request zowel tekstgeneratie als tool usage goed te laten werken. OpenAI beschrijft in de API reference dat je je eigen custom code kunt laten aanroepen of built-in tools kunt gebruiken, en dat responses een gestructureerde output kunnen bevatten. (developers.openai.com)

Voor tool calling staan ook richtlijnen over function tools en programmatic tool calling. (developers.openai.com)

2. Bouw een AI web backend: Responses API + tools

Doel: een endpoint dat een chatbericht accepteert, de AI aanroept, tool calls afhandelt, en het eindantwoord terugstuurt. Onderstaande code is voorbeeld-eerst, met de kern: modelrequest, tool schema, tool uitvoering, en respons terug naar de client.

2.1 Request skeleton (Node, fetch)

Je werkt idealiter server-side, zodat API keys niet naar de browser lekken. OpenAI adviseert ook expliciet over key safety, deel je keys niet. (help.openai.com)

  1. Installeer: geen SDK nodig om het te begrijpen, maar je kunt later overschakelen.
  2. Maak een server endpoint: POST /api/ai-web.
import express from 'express';

const app = express();
app.use(express.json());

app.post('/api/ai-web', async (req, res) => {
  const { message, userId } = req.body;

  if (typeof message !== 'string' || message.length > 4000) {
    return res.status(400).json({ error: 'invalid message' });
  }

  const tools = [
    {
      type: 'function',
      name: 'lookup_order_status',
      description: 'Geef de status van een order op basis van order_id.',
      parameters: {
        type: 'object',
        additionalProperties: false,
        properties: {
          order_id: { type: 'string', pattern: '^[A-Z0-9-]{6,}$' }
        },
        required: ['order_id']
      }
    }
  ];

  const payload = {
    model: 'gpt-4.1-mini',
    input: [
      {
        role: 'user',
        content: message
      }
    ],
    tools,
    // Zet hier je verdere instructies, system context, etc.
  };

  const r = await fetch('https://api.openai.com/v1/responses', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`
    },
    body: JSON.stringify(payload)
  });

  if (!r.ok) {
    const text = await r.text();
    return res.status(502).json({ error: 'ai upstream error', detail: text });
  }

  const data = await r.json();
  // Hier moeten we tool execution afhandelen als de response tool calls bevat.
  res.json(data);
});

app.listen(3000);

2.2 Tool execution: laat het model niet zomaar in je database

Function tools werken als een contract: het model vult argumenten in, jouw code valideert en voert vervolgens uit. OpenAI beschrijft tool calling als een multi-step interactie waarbij de tool calls tussen applicatie en model gaan. (developers.openai.com)

Praktische regels:

  • Valideer argumenten (types, patronen, limieten).
  • Authoriseer op userId bij elke data lookup.
  • Log welke tool is aangeroepen, met geanonimiseerde inputs.
  • Fail dicht: bij twijfel geen data, wel een foutmelding aan de gebruiker.

2.3 Tool-call loop schets (pseudocode)

Omdat de tool-call informatie in de respons zit, heb je meestal een loop: (1) krijg initial response, (2) detecteer tool calls, (3) voer tools uit, (4) stuur resultaten terug voor het eindantwoord.

// pseudocode, conceptueel
const data1 = await callResponses(payload);

if (containsToolCalls(data1)) {
  const toolResults = [];

  for (const call of toolCalls(data1)) {
    if (call.name === 'lookup_order_status') {
      const args = call.arguments;
      const { order_id } = args;

      // 1) server-side validate
      if (!/^[A-Z0-9-]{6,}$/.test(order_id)) {
        toolResults.push({ error: 'invalid order_id' });
        continue;
      }

      // 2) authZ
      const status = await lookupStatusForUser(userId, order_id);
      toolResults.push({ order_id, status });
    }
  }

  const data2 = await callResponses({
    model: payload.model,
    input: [/* voeg user + prior context */],
    // stuur toolResults mee volgens jouw tool message formaat
  });

  return res.json(data2);
}

return res.json(data1);

Je exacte response shape kan per SDK verschillen. De kern blijft: tool calls zijn gestructureerd, en jij beslist welke tools beschikbaar zijn en hoe je ze uitvoert.

3. Veiligheid en governance in AI web: wat je moet doen

Als je AI web bouwt, is je grootste risico niet de prompt, maar de combinatie van tool execution, data toegang, en misbruik van API endpoints. OpenAI publiceert safety best practices, inclusief gebruik van moderatie en safeguards in je applicatie. (developers.openai.com)

3.1 API security checklist

  • API keys alleen server-side. Nooit in frontend of client bundles. (help.openai.com)
  • Rate limiting op je backend, plus afhandeling van 429’s. OpenAI behandelt rate limits en het bekijken van info uit headers. (developers.openai.com)
  • AuthZ bij elke tool: zelfs als het model “lijkt te weten” wat mag.
  • Beperk tool surface: expose minder tools dan je denkt nodig te hebben.
  • Input sanitization: lengte, type, schema, en content filters.

3.2 Rate limit afhandeling die niet breakt

OpenAI documenteert rate limits en dat je informatie kunt zien in HTTP headers. (developers.openai.com) Daarnaast legt OpenAI uit dat 429’s verschillende oorzaken kunnen hebben (tijdelijke rate limit, prepaid balance, usage limits) en dat SDK’s retry gedrag kunnen hebben met Retry-After. (help.openai.com)

Praktijkpattern:

  • Gebruik exponential backoff met jitter.
  • Stop bij een max retry count, geef een duidelijke foutcode terug.
  • Cache waar het kan, vooral bij niet-persoonsgebonden requests.

3.3 Safety by design, niet achteraf

OpenAI noemt safeguards en verwijst naar moderatie als manier om onveilige content te reduceren. (developers.openai.com) De truc is dat je je eigen policy engine bouwt rond tools:

  • Sta geen tools toe die “write” doen zonder extra checks.
  • Vraag bij gevoelige acties altijd bevestiging en log intent.
  • Beperk web search of file search tot wat je nodig hebt.

3.4 Kleine verwijzingen naar diepere resources

Als je tool calling en setup verder wilt uitwerken, zijn dit nuttige interne links:

4. Agent patterns voor AI web: van chat naar workflows

Wanneer je “ai web” uitbreidt, ga je van een chat die antwoord geeft naar een workflow die taken uitvoert. Dit kan met tools, maar ook met agent-achtige patterns. Voor programmatic tool calling legt OpenAI uit dat je als applicatie bepaalt of programmatic tool calling beschikbaar is en welke tools eligible zijn. (developers.openai.com)

4.1 Pattern A, RAG light (zonder fancy infrastructuur)

Gebruik bijv. je eigen index of file search tools, en geef de AI enkel de relevante passages. Minimaliseer prompt length. Wat je doet:

  • Chunk en indexeer je docs.
  • Zoek server-side op de query.
  • Voeg top-k snippets toe aan de model input.
  • Zet bronnen expliciet in de prompt zodat het model minder gaat gokken.

4.2 Pattern B, “Plan, tool, verify”

Je dwingt de AI niet om perfect te plannen, maar je forceert een check. Concreet:

  • Stap 1: model produceert tool parameters (geen uitvoer).
  • Stap 2: backend execute tool en geeft gestructureerde data terug.
  • Stap 3: model maakt eindantwoord en moet impliciet of expliciet verifiëren dat de output overeenkomt met tool data.

4.3 Pattern C, Human-in-the-loop voor write acties

Voor acties zoals “maak een factuur”, “verstuur e-mail”, “wijzig rolrechten”: zet altijd een approval stap in je UI of een server-side guardrail. Het model mag de intent voorstellen, maar jouw backend voert pas uit na bevestiging.

4.4 Pattern D, Tool economy en kostenbeheer

Laat het model niet elke turn dezelfde tool opnieuw aanroepen. Techniques:

  • Tool cache per user en input key.
  • Beperk tool calls tot max per request.
  • Voorkom “ping-pong” door het model output te laten samenvatten en vervolgens te stoppen.

5. Tests, evals en performance voor AI web (wat echt helpt)

Je kunt geen “we vertrouwen het model”-strategie draaien in productie. Je hebt een test suite nodig rond de integratie, niet alleen de prompt.

5.1 Unit tests voor tool executors

  • Test je input validation: invalid order_id, te grote payload, missing velden.
  • Test authZ: userId mag geen status van andere users zien.
  • Test error paths: database timeout, tool handler exceptions.

5.2 Contract tests voor tool schema

Als je tool schema wijzigt, breekt je prompt logica soms stil. Zet een contract test op:

  • Schema JSON validatie
  • Vergelijk model argument types met expected types
  • Check dat alle required velden bestaan

5.3 Prompt regression met golden sets

Maak een lijst met voorbeelden, inclusief edge cases. Voor elk geval test je:

  • Moet de AI een tool oproepen of niet?
  • Levert het eindantwoord correcte verwijzingen naar tool data?
  • Foutafhandeling: als tool faalt, geeft de AI een correcte fallback?

5.4 Logging die je later helpt

OpenAI API reference stelt dat je rate limit details in headers kunt zien en dat je request IDs kunt inspecteren. (developers.openai.com) Gebruik dat voor:

  • Debuggen: welke request leidde tot welke tool action?
  • Kosten: tokens per endpoint
  • Incident response: correlatie tussen user en AI request

5.5 Interne verdieping

6. Snelle startgids: maak je eerste AI web feature in uren

Hier is een directe route. Je hebt geen maanden nodig, je hebt een goede integratie discipline nodig.

Stap 1, kies één tool

Kies één functie die duidelijk en testbaar is, bijvoorbeeld:

  • Order status lookup
  • Product prijs berekenen
  • Ticket status ophalen

Stap 2, maak schema, valideer server-side

Werk je tool schema af en valideer argumenten streng. Geen vertrouwen in wat het model invult.

Stap 3, bouw een minimale tool-call loop

Start met: initial model response, detecteer tool calls, voer tools uit, maak final response. Pas daarna streaming en meer tools toe.

Stap 4, voeg rate limit afhandeling toe

Houd rekening met 429 oorzaken en volg OpenAI’s rate limit guidance, inclusief header info en Retry-After waar relevant. (developers.openai.com)

Stap 5, zet testcases voor edge situations

  • Geen input
  • Te lange input
  • Tool arguments onvolledig
  • Tool runtime error
  • Data mismatch: order_id bestaat wel, maar hoort niet bij user

Conclusie: AI web in één zin, en wat je nu moet doen

AI web is een webapp waarbij je AI-modellen aan echte backend tools koppelt, met strikte veiligheid, rate limiting, en tests rond tool execution. Als je vandaag begint, doe dit volgorde:

  1. Kies één tool, definieer schema en valideer server-side.
  2. Gebruik Responses API voor je modelaanroep en verwerk tool calls als een gecontroleerde loop.
  3. Implementeer rate limit afhandeling, inclusief 429 scenario’s.
  4. Schrijf contract tests en golden prompt set cases voor regressie.

Daarna pas je uit naar meerdere tools, RAG, workflows en agent patterns. Voor de praktische uitwerking van Responses API en tool setup kun je direct starten met de interne gidsen via de links hierboven.

Reacties

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *