Agentic Evaluations¶
Evaluieren Sie autonome Agenten end-to-end: Tasks, Trajectories, Trace-basierte Criteria und aggregierte Agent-Metriken.
Agentic Evaluations erweitern elluminate über einzelne LLM-Outputs hinaus auf Agenten, die planen, Tools aufrufen und über viele Schritte an einer Aufgabe arbeiten. Sie führen den Agenten extern aus (mit Harbor, einem eigenen Harness oder einem beliebigen Framework, dessen Output sich in das ATIF-Trajectory-Format übersetzen lässt) und laden die Trial-Ergebnisse inklusive der vollständigen Trajectories zu elluminate hoch. elluminate bewertet anschließend jedes Criterion gegen die Trajectory, und die UI zeigt Trace, Ratings pro Criterion und aggregierte Metriken.
Wann Agentic Evaluations verwenden¶
Verwenden Sie diesen Workflow, wenn:
- Ihr System mehrere LLM-Aufrufe pro Task macht (Tool-Use, Plan/Act-Loops, Sub-Agents).
- Die Evaluation anschauen muss, was der Agent gemacht hat, nicht nur seine finale Nachricht.
- Sie bereits einen externen Runner einsetzen (oder einsetzen möchten), z.B. Harbor, LangChain, CrewAI, AutoGen oder eigenen Code.
Für einzelne Outputs oder Tool-Calling-Patterns, bei denen elluminate die Responses selbst generiert, siehe stattdessen das Guide Tool Calling.
elluminate führt Ihren Agenten nicht aus
Agentic Evaluations decken das Hochladen und Bewerten externer Agent-Runs ab. Sie führen den Agenten selbst aus (mit Harbor, einem eigenen Harness oder einem anderen Framework); elluminate speichert die Trial-Ergebnisse, rendert den Trajectory Viewer und bewertet optional jedes Criterion gegen die Trajectory.
Trajectory-Format
elluminate akzeptiert Trajectories ausschließlich im eigenen ATIF-Format (v1.*). Es gibt keinen nativen Importer für LangChain, CrewAI, AutoGen oder andere Frameworks — Sie übersetzen den Output Ihres Runners nach ATIF und laden ihn per SDK hoch. Das Beispiel im Abschnitt SDK Reference zeigt die Übersetzung für einen Harbor-förmigen Per-Task-Output; dasselbe Muster gilt für jedes andere Framework.
UI-Workflow¶

- AGENTIC Collection erstellen. Jede Zeile ist eine Task-Beschreibung. Der
collection_typeder Collection wird aufAGENTICgesetzt, was den Trajectory-Viewer und die agentischen Metriken freischaltet. Da AGENTIC Experimente nie automatisch Responses generieren, nutzt die Collection eine einzelneRAW_INPUT-Column für den Task-Text; ein Prompt Template ist nicht nötig. - Criterion Set erstellen. Jedes Criterion ist eine binäre YES/NO-Frage, die elluminate gegen die Trajectory beantwortet (z.B. "Hat der Agent die richtige Datei bearbeitet?").
- AGENTIC Experiment erstellen, das Template, Collection und Criterion Set verbindet. Der
evaluation_modedes Experiments wird aufAGENTICgesetzt, was die Auto-Generation deaktiviert; die Responses kommen vom externen Runner. - Agent extern ausführen (Harbor, eigenes Script) und ein Ergebnis pro Task einsammeln, inklusive einer ATIF-Trajectory.
- Ergebnisse hochladen über das SDK. Wenn Trajectories vorhanden sind, bewertet elluminate automatisch jedes Criterion gegen die Trajectory.
- Ergebnisse inspizieren in der UI: Trajectory-Viewer, Ratings pro Criterion mit Reasoning und aggregierte Metriken (durchschnittliches Reward, durchschnittliche Execution Time, durchschnittliche Cost).

Konzept-Mapping: Harbor zu elluminate¶
Wenn Sie von Harbor kommen, lassen sich die Konzepte ungefähr wie folgt abbilden:
| Harbor | elluminate |
|---|---|
| Dataset | Collection (collection_type: AGENTIC) |
| Task | Zeile in der Collection (ein TemplateVariables mit einer RAW_INPUT-Task-Column) |
instruction.md |
Task-Text in der RAW_INPUT-Task-Column der Zeile |
task.toml Env-Config |
Collection environment_config (optional) |
| Reward | AgentTrialResult.reward |
| Trajectory | AgentTrialResult.trajectory (ATIF) |
| Test- / Judge-Skripte | Criterion Set (gegen die Trajectory ausgewertet) |
| Agent | Experiment evaluation_mode: AGENTIC |
AgentTrialResult-Payload¶
Jedes Trial, das Ihr Runner produziert, wird auf ein AgentTrialResult abgebildet. Pflicht- und optionale Felder:
| Field | Required | Beschreibung |
|---|---|---|
task_name |
yes | Muss exakt einem Wert in der Collection-Spalte entsprechen, die als task_name_column angegeben ist. |
messages |
no | Finale Messages im OpenAI-Format (wird auf der Response-Seite angezeigt). |
reward |
no | Primärer Reward-Score (0.0–1.0). |
steps |
no | Anzahl der Agent-Steps / LLM-Aufrufe. |
cost_usd |
no | Gesamtkosten in USD für das Trial. |
duration_seconds |
no | Wall-Clock-Dauer. |
input_tokens |
no | Aggregierte Input-Tokens. |
output_tokens |
no | Aggregierte Output-Tokens. |
cached_tokens |
no | Aggregierte Cached-Input-Tokens. |
error |
no | Fehlermeldung, falls das Trial fehlgeschlagen ist. |
metadata |
no | Freier Dict, wird auf der Response-Seite angezeigt. |
trajectory |
no | Rohe ATIF-Trajectory (wird vom Backend validiert; siehe ATIF-Format). |
criterion_ratings |
no | Vorberechnete Ratings. Überspringt die Auswertung durch elluminate (siehe Evaluation-Modi). |
ATIF-Trajectory-Format¶
Trajectories verwenden das Agent Trajectory Interchange Format (ATIF). Das Backend validiert den Payload beim Upload, speichert ihn aber roh, sodass zusätzliche Keys für den Trajectory-Viewer unverändert erhalten bleiben.
Eine minimale ATIF-v1-Trajectory:
{
"schema_version": "ATIF-v1.0",
"session_id": "harbor-run-001/write-hello-world",
"agent": {
"name": "harbor-demo-agent",
"version": "0.1.0",
"model_name": "claude-sonnet-4-6"
},
"steps": [
{
"step_id": 1,
"source": "user",
"message": "Write a Python hello world script to hello.py"
},
{
"step_id": 2,
"source": "agent",
"message": "Writing hello.py.",
"tool_calls": [
{
"tool_call_id": "tc_1",
"function_name": "write_file",
"arguments": {"path": "hello.py", "content": "print('Hello, World!')"}
}
],
"observation": {
"results": [{"source_call_id": "tc_1", "content": "wrote 22 bytes"}]
},
"metrics": {"prompt_tokens": 420, "completion_tokens": 61, "cost_usd": 0.0042}
}
],
"final_metrics": {
"total_steps": 2,
"total_cost_usd": 0.0042,
"total_prompt_tokens": 420,
"total_completion_tokens": 61
}
}
Evaluation-Modi¶
Agentic Evaluations unterstützen zwei komplementäre Pfade, um Ratings zu erzeugen.
Automatische Auswertung (Standard)¶
Laden Sie Trajectories mit evaluate=True hoch (Default). Für jedes Criterion im Criterion Set liest elluminate die Trajectory und erzeugt ein YES/NO-Rating mit Reasoning. Nutzen Sie diesen Pfad, wenn elluminate die Bewertung übernehmen soll.
Vorberechnete Ratings¶
Hängen Sie eigene Ratings pro Trial über criterion_ratings an und setzen Sie evaluate=False. elluminate speichert sie unverändert. Nutzen Sie diesen Pfad, wenn Sie bereits einen externen Judge betreiben oder historische Runs importieren wollen, ohne sie neu zu bewerten. Labels, die noch nicht im Criterion Set des Experiments existieren, werden beim Upload angelegt — so kann dieser Pfad auch neue Criteria seed-en (nützlich für Backfills historischer Runs, deren Criteria nicht vorab deklariert waren).
Modi mischen
Sie können auch evaluate=True lassen und gleichzeitig criterion_ratings liefern. Vorberechnete Ratings werden direkt gespeichert, und elluminate bewertet alle Criteria, die nicht vorab bewertet wurden. Praktisch für partielle Imports.
Einschränkungen¶
- Keine Execution: elluminate führt Ihren Agenten nicht aus. Jeder Runner arbeitet außerhalb von elluminate; dieses Guide deckt das Hochladen der Ergebnisse ab.
- Schema-Version: Trajectories müssen
schema_versionaufATIF-v1.*setzen. Unbekannte Versionen werden abgelehnt.
SDK Reference¶
Das folgende Script deckt den kompletten End-to-End-Flow ab: AGENTIC Collection, AGENTIC Experiment, Konvertierung des Runner-Outputs und Upload mit eingereihter Auswertung durch elluminate. Das Script ist idempotent — Collections, Criterion Sets und Experimente werden über Läufe hinweg wiederverwendet, und Uploads werden übersprungen, wenn ein Experiment bereits Responses enthält.
Das Beispiel ausführen¶
Hinterlegen Sie Ihren API-Key (in der elluminate UI unter Project → Keys anlegen) entweder als Environment Variable oder in einer .env-Datei neben dem Script; das Beispiel ruft load_dotenv() auf:
# Variante 1: Shell
export ELLUMINATE_API_KEY=<your-key>
# optional, falls elluminate auf einem Non-Default-Host läuft:
# export ELLUMINATE_BASE_URL=https://your-instance.example.com
# Variante 2: .env in elluminate_sdk/examples/
echo "ELLUMINATE_API_KEY=<your-key>" > elluminate_sdk/examples/.env
# Ausführen
uv run --directory elluminate_sdk python examples/example_harbor_agentic_upload.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 | |
- SDK-Client initialisieren (nutzt
ELLUMINATE_API_KEY) und einenLLMConfigfürs Experiment auswählen (nur Metadaten; AGENTIC Experimente rufen ihn nie auf). - Stand-in für den On-Disk-Output Ihres Runners. Ersetzen Sie das durch Code, der Harbors
task_result.json+trajectory.jsonpro Task einliest. - Einen Runner-Output in ein
AgentTrialResultübersetzen. Das ist der einzige integrationsspezifische Code, den Sie brauchen;task_namemuss exakt dem Wert in der Task-Column der Collection entsprechen. - Eine AGENTIC Collection mit einer einzelnen
task-Column (RAW_INPUT) anlegen, eine Zeile pro Task. Kein Prompt Template erforderlich. - Das Criterion Set erstellen, das Erfolg definiert. Labels sind explizit, damit vorberechnete Ratings (Option B) sie eindeutig referenzieren können.
- Idempotenter Helper, der ein AGENTIC Experiment zurückgibt und meldet, ob es bereits hochgeladene Responses enthält.
- Das Hauptexperiment per Get-or-Create holen.
evaluation_mode="AGENTIC"deaktiviert die Auto-Generation; Responses werden per Upload geliefert. - Jeden Runner-Output in ein
AgentTrialResultkonvertieren. - Option A, automatische Auswertung: Upload mit
evaluate=True, damit elluminate jedes Criterion gegen die Trajectory bewertet. Wird übersprungen, wenn das Experiment bei einem erneuten Lauf bereits Responses hat. - Option B, vorberechnete Ratings:
criterion_ratingsliefern undevaluate=Falsesetzen, um die Ergebnisse Ihres eigenen Judges unverändert zu speichern. Läuft gegen ein separates Experiment, damit die beiden Pfade unabhängig bleiben. - Das Experiment erneut laden und prüfen, dass die Trajectories über das SDK abrufbar sind.