Voor wie deze handleiding is
AI-onderzoekers en ontwikkelaars die experimenten in Agent-Lab willen verkennen, reproduceren en uitbreiden. Als je Python schrijft, Jupyter gebruikt en denkt in termen van experimenten, agents en pipelines, voel je je hier meteen thuis. Kennis van LLM's, RAG en de basis van containers is handig, maar niet vereist.
Agent-Lab biedt herbruikbare componenten (agenttypen, tools, integraties) plus een verzameling Jupyter-notebooks met stapsgewijze voorbeelden, zodat je snel productief bent.
Snelstart — voer de voorbeelden uit
Vereisten: Python 3.12+, een werkende Jupyter-omgeving (JupyterLab of Notebook) en optioneel een lokale Docker-installatie voor end-to-end-integraties. Werkend in een clone van de repository:
uv sync --group notebooks # runtime + notebook dependencies in one virtualenv
jupyter lab # from the repository rootOpen notebooks/ en begin met 01_…; werk daarna de notebooks door die je
interesseren.
Opmerkingen:
- Notebooks zijn grotendeels op zichzelf staand; de kop van elk notebook vermeldt de vereiste omgevingsvariabelen en externe services (API-sleutels, endpoints).
- De vereiste sleutels staan in
.env— kopieer.env.exampleen vul het in (zie de Configuratiereferentie). - Wil je vanuit je eigen project met Agent-Lab experimenteren in plaats van vanuit de repository,
voer dan
pip install btech-agent-labuit en stel de app samen metcreate_app()— zie Het framework uitbreiden in de Handleiding voor ontwikkelaars.
Projectstructuur — een korte rondleiding
notebooks/— interactieve voorbeelden van agenttypen, evaluatie en integraties. Begin hier.agent_lab/— het package van het framework:app_factory.py— de composition root:create_app().core/— configuratiebronnen, DI-container, resolutie vanextra_deps.domain/— modellen, repository-interfaces, exceptions (het Domeinmodel van entiteiten).services/— businesslogica en de implementaties inagent_types/.interface/—api/(HTTP-routers) enmcp/(de MCP-server).infrastructure/— adapters voor database, authenticatie, metrics/tracing.
tests/— de suitesunit/,integration/,template/ensimulation/(zie Testen & simulaties).doc/— de documentatie die je nu leest.
Als je deze lagen begrijpt, weet je waar gedrag zit: voorbeelden in notebooks,
kerncontracten in core/ en domain/, en adapters in infrastructure/.
Notebooks — de belangrijkste leerroute
Gebruikelijke volgorde:
| Notebook | Laat zien |
|---|---|
| 01_setup_embeddings_service.ipynb | Je embeddingsprovider configureren en valideren (begin hier) |
| 02_test_agent_type-adaptive_rag.ipynb | Adaptive RAG: retrieval grader, query rewriter, answer grader |
| 03_test_agent_type-react_rag.ipynb | ReAct-patroon met retrieval en toolgebruik |
| 04_test_agent_type-vision_document.ipynb | Vision + retrieval van documenten |
| 05_test_agent_type-multiagent-coder.ipynb | Samenwerking tussen meerdere agents voor codetaken |
| 06_test_agent_type-multiagent-researcher.ipynb | Onderzoeksworkflows met meerdere agents |
| 07_test_agent_type-multiagent-browser.ipynb | Agents die op het web browsen |
| 08_test_agent_type-multiagent-voice-assistant.ipynb | Spraakagent (en varianten 09/10: Azure Entra ID, fast) |
| 11_mcp_client-openai-responses.ipynb | Met de MCP-server praten vanuit de OpenAI Responses API |
Elk notebook bevat: een korte beschrijving van het doel van het experiment, de vereiste omgevingsvariabelen en secrets, hulpfuncties en geprinte/visuele uitvoer om beslissingen en metrics van de agent te inspecteren.
Tip: doorloop de notebooks op volgorde voor een geleidelijke leercurve. Gebruik kleinere datasets en steekproeven tijdens het itereren, zodat runs snel blijven.
Kernbegrippen
- Agent — een geregistreerde implementatie onder
agent_lab/services/agent_types/(@discoverable_agent). Het register resolvet deze lazy via de DI-container en injecteert de gedeclareerdeextra_deps. - Tools — afzonderlijke vaardigheden die een agent kan aanroepen (zoeken, browsen, TTS/ASR),
geïmplementeerd als adapters in
agent_lab/infrastructure/ofagent_lab/interface/. - Container — het DI-compositieobject (
agent_lab/core/container.py); maak er een subklasse van om providers voor je experimenten toe te voegen. - Repositories — interfaces voor datatoegang in
agent_lab/domain/repositories/. - ConfigSource — waar de configuratie vandaan komt; gebruik de YAML-bronnen bij experimenten en Vault in productie.
Als je gedrag wilt aanpassen, bepaal dan of de wijziging experimenteel is
(alleen notebook), architectureel (core/domain/services) of
op integratieniveau (adapter in infrastructure). Geef de voorkeur aan kleine, testbare wijzigingen —
en voeg een notebook toe of werk er een bij om het nieuwe gedrag te laten zien.
Experimenten uitvoeren en resultaten vastleggen
Notebooks printen tussenstappen; voor robuustere experimenten:
Gebruik deterministische seeds waar willekeur ertoe doet.
Leg de metrics vast die relevant zijn voor je vraag — latency, tokengebruik, aantal toolaanroepen, scores van de judge. De observability-laag exporteert alles als OpenTelemetry (zie Observability); het simulatieharness logt de scores van de judge naar Langfuse/LangWatch (zie Testen & simulaties).
Exporteer voor herhaalbare runs notebookcellen naar scripts en voer ze uit in CI of op rekennodes:
jupyter nbconvert --to script notebooks/02_test_agent_type-adaptive_rag.ipynbHet bestand
docker/app/Dockerfilebouwt een runtime-image met vastgezette versies voor reproduceerbare uitvoering.
Nieuw gedrag prototypen
- Een nieuw agenttype toevoegen: maak de klasse aan onder
agent_lab/services/agent_types/, voorzie die van de decorator@discoverable_agent("your_type")en voeg een notebook toe dat de klasse via de DI-container mount en met een klein scenario test. De volledige walkthrough staat in Agentische workflows bouwen. - Een embeddingsprovider vervangen: implementeer een compatibele adapter onder
agent_lab/infrastructure/en valideer die met notebook 01. - Een retrieval-store of vectordatabase toevoegen: implementeer repository-methoden in
agent_lab/domain/repositories/en een adapter inagent_lab/infrastructure/database/; vul die met een klein loader-notebook en demonstreer retrieval in een query-notebook.
Ontwerptip: houd adapterinterfaces smal en test ze geïsoleerd met kleine unittests.
Testen en evalueren
make test_unit # unit tests — no infrastructure needed
make test # unit + integration with coverage
make test_simulations # LLM-as-judge agent simulations (live LLMs)Als je kerngedrag wijzigt, voeg dan een unittest toe en een kort notebook dat de wijziging demonstreert — die combinatie maakt onderzoek hier reproduceerbaar. Het volledige harness, de configuratie van de judge en de evaluatieplatforms worden behandeld in Testen & simulaties.
Checklist voor reproduceerbaarheid
- Zet je omgeving vast (uv +
pyproject.toml/uv.lock). - Leg seeds en configuratiebestanden vast (
config-dev.yml,config-test.yml). - Bewaar de notebook-checkpoint en eventuele uitvoerartefacten (CSV/JSON) bij je experiment.
- Noteer naar welke tracing-endpoints je hebt geëxporteerd — traces zijn het logboek van je experiment.