The metadata field is a free-form JSON object on each decision. Use it for filtering, analytics, and richer evaluation context.
Example
h.observe(
input=messages,
output=response,
agent_id="support-bot",
metadata={
"user_id": "usr_123",
"channel": "web",
"escalated": False,
"resolved": True,
"tags": ["billing", "refund"],
"model": "gpt-4o",
},
)
Recommended fields
| Key | Purpose |
|---|
user_id | Correlate decisions per end user |
channel | web, slack, api, phone |
escalated | Did the agent escalate? |
resolved | Was the issue resolved? |
tags | Domain tags for filtering |
model | Model version for A/B analysis |
prompt_version | Track prompt iterations |
Privacy
Do not send PII, secrets, or raw credentials in metadata unless your compliance review allows it. Prefer opaque IDs over emails or account numbers.