Hoe de configuratie wordt geladen
De configuratie is een gewone dictionary die door een ConfigSource wordt geladen (zie
agent_lab/core/config.py) en aan de DI-container wordt gekoppeld. create_app() kiest een
bron via default_config_source(), in precies deze volgorde — de eerste match wint:
| # | Voorwaarde (omgevingsvariabele ingesteld) | Actieve bron |
|---|---|---|
| 1 | VAULT_K8S_ROLE |
KubernetesVaultConfigSource — Vault via het geprojecteerde ServiceAccount-token van de pod |
| 2 | DOCKER |
YamlConfigSource("config-docker.yml") |
| 3 | TESTING |
YamlConfigSource("config-test.yml") |
| 4 | DEVELOPING |
YamlConfigSource("config-dev.yml") |
| 5 | (geen van bovenstaande) | VaultConfigSource — leest VAULT_URL / VAULT_TOKEN |
Je kunt de keuze per app overschrijven:
app = create_app(config_source=YamlConfigSource("config.yml")) # explicitConfiguratiesleutels
De dictionary die de actieve bron moet teruggeven. De getoonde standaardwaarden komen uit
config-dev.yml (ontwikkeling); de referentie-app bevat config-dev.yml,
config-test.yml en config-docker.yml met precies deze structuur.
| Sleutel | Doel | Voorbeeldwaarde |
|---|---|---|
api_base_url |
Publieke basis-URL van deze API (gebruikt voor links in responses) | http://localhost:8000 |
cdp_url |
Endpoint van headless Chrome (CDP) voor webagents (WebAgentBase) |
http://localhost:9222 |
auth.enabled |
Mount de auth-middleware en de /auth-routes als true |
false |
auth.url |
Basis-URL van Keycloak | https://auth.example.com |
auth.realm |
Naam van de Keycloak-realm | agent-lab |
auth.client_id |
OIDC-client-id | agent-lab-api |
auth.client_secret |
OIDC-client-secret | … |
broker.url |
Redis-URL voor pub/sub-statusupdates bij langdurige bewerkingen | redis://localhost:6379/0 |
db.url |
PostgreSQL — relationele data | postgresql://postgres:postgres@localhost:5432/agent_lab |
db.vectors |
PostgreSQL — database voor pgvector-embeddings | postgresql://postgres:postgres@localhost:5432/agent_lab_vectors |
db.checkpoints |
PostgreSQL — database voor LangGraph-checkpoints (geheugen van de agent) | postgresql://postgres:postgres@localhost:5432/agent_lab_checkpoints |
vault.url |
Vault-adres (ook teruggeschreven zodat services secrets kunnen lezen) | http://localhost:8200 |
vault.token |
Vault-token | dev-only-token |
static.enabled |
Een SPA-build serveren (false als er geen frontend-build is) |
false |
static.directory |
Directory met de SPA-build | static/frontend/browser |
static.index_file |
Fallbackbestand van de SPA | index.html |
static.mount_path |
Mountpunt van de SPA | / |
static is bijzonder: de YAML-bronnen configureren het expliciet, terwijl de Vault-bron
het afleidt uit een codeconventie — ingeschakeld als er een SPA-build bestaat onder STATIC_DIR.
Secret-payload in Vault
VaultConfigSource leest één KV-v2-secret (standaard engine secret, pad app_secrets)
en koppelt het aan de bovenstaande sleutels:
| Secret-sleutel | Wordt gekoppeld aan |
|---|---|
api_base_url |
api_base_url |
cdp_url |
cdp_url |
auth_enabled → auth.enabled |
auth.enabled |
auth_url → auth.url |
auth.url |
auth_realm → auth.realm |
auth.realm |
auth_client_id → auth.client_id |
auth.client_id |
auth_client_secret → auth.client_id |
auth.client_secret |
broker_url |
broker.url |
db_url |
db.url |
db_vectors |
db.vectors |
db_checkpoints |
db.checkpoints |
Hoe je die payload provisiont (Docker Compose voor ontwikkeling, Kubernetes, Terraform) wordt behandeld in Secrets met Vault en de Deploymenthandleiding.
Omgevingsvariabelen
Keuze van de configuratiebron
| Variabele | Standaard | Doel |
|---|---|---|
DEVELOPING |
(niet ingesteld) | Kiest config-dev.yml (debuggen in de IDE) |
TESTING |
(niet ingesteld) | Kiest config-test.yml (testsuite) |
DOCKER |
(niet ingesteld) | Kiest config-docker.yml (Compose) |
VAULT_URL |
(niet ingesteld) | Vault-adres voor de standaardbron |
VAULT_TOKEN |
(niet ingesteld) | Vault-token voor de standaardbron |
VAULT_ENGINE_PATH |
secret |
Mountpunt van KV-v2 |
VAULT_SECRET_PATH |
app_secrets |
Pad van het secret |
VAULT_K8S_ROLE |
(niet ingesteld) | Rol voor Vault Kubernetes-authenticatie; schakelt de K8s-bron in en heeft voorrang |
STATIC_DIR |
static/frontend/browser |
Waar de SPA-build wordt gezocht |
Observability
| Variabele | Standaard | Doel |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
(niet ingesteld — tracing uit) | Basis-URL van de OTLP/HTTP-collector; traces → /v1/traces, metrics → /v1/metrics, logs → /v1/logs |
SERVICE_NAME |
Agent-Lab |
Naam van de OTel-resource |
SERVICE_VERSION |
snapshot |
Versie van de OTel-resource |
LANGFUSE_HOST |
(niet ingesteld) | Basis-URL van Langfuse; schakelt samen met de twee sleutels hieronder de Langfuse-backend in |
LANGFUSE_PUBLIC_KEY |
(niet ingesteld) | Langfuse-sleutel pk-lf-… |
LANGFUSE_SECRET_KEY |
(niet ingesteld) | Langfuse-sleutel sk-lf-… |
LANGWATCH_ENDPOINT |
(niet ingesteld) | LangWatch-endpoint; schakelt samen met de sleutel hieronder de LangWatch-backend in |
LANGWATCH_API_KEY |
(niet ingesteld) | API-sleutel voor LangWatch |
Als een van de Langfuse-variabelen ontbreekt, wordt de Langfuse-backend stilzwijgend uitgeschakeld en start de app gewoon op (hetzelfde geldt voor LangWatch). Details en het uitbreidingspunt: Observability.
Authenticatie en integraties
| Variabele | Standaard | Doel |
|---|---|---|
AZURE_CLIENT_ID / AZURE_CLIENT_SECRET / AZURE_TENANT_ID |
(niet ingesteld) | Microsoft Entra ID-gegevens voor /auth/exchange |
EMBEDDINGS_ENDPOINT |
(niet ingesteld) | Embeddingsservice die door retrieval-agents wordt gebruikt |
OPENAI_API_KEY |
(niet ingesteld) | OpenAI (audio-invoer voor voice memos; standaard voor de simulatie-judge) |
Simulaties (alleen testsuite)
| Variabele | Standaard | Doel |
|---|---|---|
SIMULATION_LLM_MODEL |
(verplicht) | Modeltag waarop de geteste agents draaien (bijv. qwen3:30b) |
SIMULATION_LLM_API_BASE |
(verplicht) | OpenAI-compatibel endpoint dat dat model aanbiedt |
SIMULATION_LLM_API_KEY |
dummy-key |
API-sleutel voor het endpoint, indien vereist |
SIMULATION_JUDGE_MODEL |
openai/gpt-5-nano |
litellm-model-id dat de LLM-as-judge gebruikt |
SIMULATION_JUDGE_API_BASE |
standaard van provider | Eigen OpenAI-compatibel endpoint voor de judge |
SIMULATION_JUDGE_API_KEY |
standaard van provider | API-sleutel voor het eigen judge-endpoint |
Zie Testen & simulaties voor hoe deze worden gebruikt.
Eigen configuratiebronnen
Implementeer de ABC ConfigSource en geef die door aan create_app(config_source=...) —
handig voor AWS Secrets Manager, deployments met alleen omgevingsvariabelen of om een andere
bron te wrappen:
from agent_lab import ConfigSource, create_app
class MyConfigSource(ConfigSource):
def load(self) -> dict:
return {
"api_base_url": "https://api.example.com",
"db": {"url": "postgresql://…", "vectors": "…", "checkpoints": "…"},
"auth": {"enabled": True, "url": "…", "realm": "…", "client_id": "…", "client_secret": "…"},
"broker": {"url": "redis://…"},
# … remaining keys as in the table above
}
app = create_app(config_source=MyConfigSource())De meegeleverde bronnen (YamlConfigSource, VaultConfigSource,
KubernetesVaultConfigSource) en default_config_source() worden allemaal geëxporteerd vanuit het
top-level package agent_lab.