@uipath/skills 1.204.0 → 1.204.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/CODEOWNERS +12 -14
- package/package.json +1 -1
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -3
- package/skills/uipath-agents/references/coded/quickstart.md +0 -2
- package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +10 -8
- package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
- package/skills/uipath-human-in-the-loop/SKILL.md +1 -3
- package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +0 -2
- package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +0 -2
- package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +2 -2
- package/skills/uipath-maestro-flow/.maintenance/README.md +265 -0
- package/skills/uipath-maestro-flow/.maintenance/check-all.sh +40 -0
- package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +101 -0
- package/skills/uipath-maestro-flow/.maintenance/check-depth.sh +132 -0
- package/skills/uipath-maestro-flow/.maintenance/check-link-text.sh +123 -0
- package/skills/uipath-maestro-flow/.maintenance/check-links.sh +73 -0
- package/skills/uipath-maestro-flow/.maintenance/check-orphans.sh +93 -0
- package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +39 -0
- package/skills/uipath-maestro-flow/.maintenance/check-template.sh +42 -0
- package/skills/uipath-maestro-flow/.maintenance/check-uip-commands.sh +270 -0
- package/skills/uipath-maestro-flow/.maintenance/check-versions.sh +160 -0
- package/skills/uipath-maestro-flow/SKILL.md +69 -886
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +207 -0
- package/skills/uipath-maestro-flow/references/author/brownfield.md +91 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations-cli.md +190 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +374 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations.md +104 -0
- package/skills/uipath-maestro-flow/references/author/greenfield.md +420 -0
- package/skills/uipath-maestro-flow/references/author/planning-arch.md +364 -0
- package/skills/uipath-maestro-flow/references/author/planning-impl.md +291 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +237 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agent/planning.md +97 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/impl.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/planning.md +61 -0
- package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/impl.md +108 -0
- package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/planning.md +60 -0
- package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
- package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/planning.md +72 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/impl-inline.md +120 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +463 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/planning.md +186 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/impl.md +517 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/planning.md +115 -0
- package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/impl.md +309 -0
- package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/planning.md +133 -0
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +428 -0
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +188 -0
- package/skills/uipath-maestro-flow/references/author/plugins/decision/impl.md +83 -0
- package/skills/uipath-maestro-flow/references/author/plugins/decision/planning.md +38 -0
- package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
- package/skills/uipath-maestro-flow/references/author/plugins/delay/planning.md +53 -0
- package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
- package/skills/uipath-maestro-flow/references/author/plugins/end/planning.md +28 -0
- package/skills/uipath-maestro-flow/references/author/plugins/flow/impl.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/flow/planning.md +58 -0
- package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +181 -0
- package/skills/uipath-maestro-flow/references/author/plugins/hitl/planning.md +166 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl-connector.md +86 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/planning.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/impl.md +540 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/planning.md +115 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/impl.md +269 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/planning.md +128 -0
- package/skills/uipath-maestro-flow/references/author/plugins/ixp/impl.md +424 -0
- package/skills/uipath-maestro-flow/references/author/plugins/ixp/planning.md +95 -0
- package/skills/uipath-maestro-flow/references/author/plugins/loop/impl.md +403 -0
- package/skills/uipath-maestro-flow/references/author/plugins/loop/planning.md +60 -0
- package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
- package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
- package/skills/uipath-maestro-flow/references/author/plugins/queue/impl.md +82 -0
- package/skills/uipath-maestro-flow/references/author/plugins/queue/planning.md +44 -0
- package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
- package/skills/uipath-maestro-flow/references/author/plugins/rpa/planning.md +61 -0
- package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/impl.md +56 -0
- package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/planning.md +93 -0
- package/skills/uipath-maestro-flow/references/author/plugins/script/impl.md +98 -0
- package/skills/uipath-maestro-flow/references/author/plugins/script/planning.md +42 -0
- package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
- package/skills/uipath-maestro-flow/references/author/plugins/subflow/planning.md +35 -0
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
- package/skills/uipath-maestro-flow/references/author/plugins/switch/impl.md +72 -0
- package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
- package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
- package/skills/uipath-maestro-flow/references/author/plugins/terminate/planning.md +29 -0
- package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +252 -0
- package/skills/uipath-maestro-flow/references/author/plugins/transform/planning.md +47 -0
- package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +73 -0
- package/skills/uipath-maestro-flow/references/diagnose/failure-modes.md +353 -0
- package/skills/uipath-maestro-flow/references/diagnose/troubleshooting-guide.md +174 -0
- package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +134 -0
- package/skills/uipath-maestro-flow/references/evaluate/commands-reference.md +376 -0
- package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
- package/skills/uipath-maestro-flow/references/evaluate/evaluators-guide.md +143 -0
- package/skills/uipath-maestro-flow/references/evaluate/running-guide.md +215 -0
- package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
- package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +77 -0
- package/skills/uipath-maestro-flow/references/operate/manage.md +39 -0
- package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
- package/skills/uipath-maestro-flow/references/operate/ship.md +57 -0
- package/skills/uipath-maestro-flow/references/shared/action-nodes.md +100 -0
- package/skills/uipath-maestro-flow/references/shared/cli-commands.md +269 -0
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +178 -0
- package/skills/uipath-maestro-flow/references/shared/file-format.md +582 -0
- package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +86 -0
- package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +113 -0
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +787 -0
- package/skills/uipath-platform/references/integration-service/activities.md +2 -2
- package/skills/uipath-platform/references/integration-service/activity-generation.md +8 -1
- package/skills/uipath-platform/references/integration-service/triggers.md +1 -3
- package/version-manifest.json +1 -1
- package/skills/uipath-maestro-flow/examples/AquariumSafetyStop.flow.ts +0 -26
- package/skills/uipath-maestro-flow/examples/ArchiveCardExtract.flow.ts +0 -38
- package/skills/uipath-maestro-flow/examples/BakeOffEntryForm.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/BeeHiveLedger.flow.ts +0 -61
- package/skills/uipath-maestro-flow/examples/BeltProgression.flow.ts +0 -53
- package/skills/uipath-maestro-flow/examples/BirdCountLookup.flow.ts +0 -24
- package/skills/uipath-maestro-flow/examples/ClubDirectory.flow.ts +0 -56
- package/skills/uipath-maestro-flow/examples/ConcertSoundcheck.flow.ts +0 -59
- package/skills/uipath-maestro-flow/examples/DoorbellLog.flow.ts +0 -45
- package/skills/uipath-maestro-flow/examples/FestivalMapScaffold.flow.ts +0 -22
- package/skills/uipath-maestro-flow/examples/FieldTripQuickForm.flow.ts +0 -45
- package/skills/uipath-maestro-flow/examples/FossilCatalogEnrich.flow.ts +0 -26
- package/skills/uipath-maestro-flow/examples/GallerySubmission.flow.ts +0 -67
- package/skills/uipath-maestro-flow/examples/GreenhouseWatering.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/HarbourRadioLine.flow.ts +0 -31
- package/skills/uipath-maestro-flow/examples/HerbariumDispatch.flow.ts +0 -34
- package/skills/uipath-maestro-flow/examples/KilnReview.flow.ts +0 -38
- package/skills/uipath-maestro-flow/examples/LibraryDeskChat.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/LighthouseSignal.flow.ts +0 -30
- package/skills/uipath-maestro-flow/examples/MeteorShowerPages.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/NeighborhoodWalkPlanner.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/ObservatorySeeing.flow.ts +0 -51
- package/skills/uipath-maestro-flow/examples/OralHistoryDigest.flow.ts +0 -31
- package/skills/uipath-maestro-flow/examples/PlanetariumConfirmation.flow.ts +0 -34
- package/skills/uipath-maestro-flow/examples/PlantNameAdvisor.flow.ts +0 -28
- package/skills/uipath-maestro-flow/examples/PostcardCaption.flow.ts +0 -44
- package/skills/uipath-maestro-flow/examples/PotteryStudioCallback.flow.ts +0 -41
- package/skills/uipath-maestro-flow/examples/RecipeScaler.flow.ts +0 -62
- package/skills/uipath-maestro-flow/examples/SeedPacketReader.flow.ts +0 -49
- package/skills/uipath-maestro-flow/examples/TideTableConverter.flow.ts +0 -35
- package/skills/uipath-maestro-flow/examples/TrailLogSummary.flow.ts +0 -75
- package/skills/uipath-maestro-flow/examples/WorkshopInventory.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/bindings.json +0 -85
- package/skills/uipath-maestro-flow/references/CLI-LOOP.md +0 -309
- package/skills/uipath-maestro-flow/references/agent-resources.md +0 -74
- package/skills/uipath-maestro-flow/references/agent.md +0 -175
- package/skills/uipath-maestro-flow/references/agentic-process.md +0 -41
- package/skills/uipath-maestro-flow/references/api-workflow.md +0 -29
- package/skills/uipath-maestro-flow/references/author.md +0 -178
- package/skills/uipath-maestro-flow/references/batch-transform.md +0 -23
- package/skills/uipath-maestro-flow/references/bindings.md +0 -178
- package/skills/uipath-maestro-flow/references/branch.md +0 -18
- package/skills/uipath-maestro-flow/references/brownfield.md +0 -152
- package/skills/uipath-maestro-flow/references/connector-params.md +0 -624
- package/skills/uipath-maestro-flow/references/conversational.md +0 -77
- package/skills/uipath-maestro-flow/references/data-fabric.md +0 -268
- package/skills/uipath-maestro-flow/references/delay.md +0 -26
- package/skills/uipath-maestro-flow/references/diagnose.md +0 -141
- package/skills/uipath-maestro-flow/references/document-pipeline.md +0 -47
- package/skills/uipath-maestro-flow/references/error-handling.md +0 -75
- package/skills/uipath-maestro-flow/references/evaluate.md +0 -168
- package/skills/uipath-maestro-flow/references/event-trigger.md +0 -155
- package/skills/uipath-maestro-flow/references/form-trigger.md +0 -41
- package/skills/uipath-maestro-flow/references/hitl.md +0 -169
- package/skills/uipath-maestro-flow/references/http.md +0 -105
- package/skills/uipath-maestro-flow/references/inline-agent.md +0 -132
- package/skills/uipath-maestro-flow/references/ixp.md +0 -167
- package/skills/uipath-maestro-flow/references/loops.md +0 -77
- package/skills/uipath-maestro-flow/references/manual-trigger.md +0 -39
- package/skills/uipath-maestro-flow/references/operate.md +0 -204
- package/skills/uipath-maestro-flow/references/or-processes.md +0 -91
- package/skills/uipath-maestro-flow/references/parallel-merge.md +0 -21
- package/skills/uipath-maestro-flow/references/placeholder.md +0 -70
- package/skills/uipath-maestro-flow/references/published-function.md +0 -66
- package/skills/uipath-maestro-flow/references/queue.md +0 -53
- package/skills/uipath-maestro-flow/references/return.md +0 -20
- package/skills/uipath-maestro-flow/references/rpa-workflow.md +0 -27
- package/skills/uipath-maestro-flow/references/scheduled-trigger.md +0 -34
- package/skills/uipath-maestro-flow/references/script.md +0 -52
- package/skills/uipath-maestro-flow/references/subflow.md +0 -33
- package/skills/uipath-maestro-flow/references/summarize.md +0 -20
- package/skills/uipath-maestro-flow/references/switch.md +0 -20
- package/skills/uipath-maestro-flow/references/terminate.md +0 -22
- package/skills/uipath-maestro-flow/references/transform.md +0 -32
- package/skills/uipath-maestro-flow/references/voice.md +0 -70
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Eval Sets and Data Points
|
|
2
|
+
|
|
3
|
+
An eval set is a JSON file containing test cases (data points) and evaluators. A Flow project may have multiple sets, typically one per scenario.
|
|
4
|
+
|
|
5
|
+
## Eval Set Lifecycle
|
|
6
|
+
|
|
7
|
+
Run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uip maestro flow eval set add "<set_name>" \
|
|
11
|
+
[--evaluators <ref1>,<ref2>] \
|
|
12
|
+
[--entry-point <node_id>] \
|
|
13
|
+
--path <flow_project> --output json
|
|
14
|
+
|
|
15
|
+
uip maestro flow eval set list --path <flow_project> --output json
|
|
16
|
+
|
|
17
|
+
uip maestro flow eval set remove "<id_or_name>" --path <flow_project> --output json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`--evaluators` accepts comma-separated evaluator IDs or generated file base names. If omitted, the set links to all evaluators present at creation and writes generated evaluator file refs such as `greeting-match-62c0793a.json`; prefer omission when using every current evaluator. Do not pass an evaluator display name such as `greeting-match`: this writes the display name into `evaluatorRefs`, which Studio Web eval runs cannot resolve. For an explicit list, run `uip maestro flow eval evaluator add/list --output json` and pass the generated ID/file ref. Evaluators added later are not auto-attached; rerun `set add` with explicit generated refs or carefully repair `evaluatorRefs` using CLI-created evaluator file refs.
|
|
21
|
+
|
|
22
|
+
`--entry-point` is stored as `selectedEntrypoint` and accepts `/Main.bpmn#start` or a start node ID such as `start_a1b2c3d4`. `eval run start` uses it unless overridden with `--entry-point`. Pin it when multiple entry points exist; otherwise the first start node found is used.
|
|
23
|
+
|
|
24
|
+
## Data Point Lifecycle
|
|
25
|
+
|
|
26
|
+
Data points live inline in the eval set JSON. Run:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
uip maestro flow eval add "<data_point_name>" \
|
|
30
|
+
--set "<set_name>" \
|
|
31
|
+
--inputs '{"...":"..."}' \
|
|
32
|
+
[--expected '{"...":"..."}'] \
|
|
33
|
+
[--criteria '{"<evaluator_id>": {...}}'] \
|
|
34
|
+
[--input-file <key>=<path>] \
|
|
35
|
+
[--search-text "<text>"] \
|
|
36
|
+
--path <flow_project> --output json
|
|
37
|
+
|
|
38
|
+
uip maestro flow eval list --set "<set_name>" --path <flow_project> --output json
|
|
39
|
+
|
|
40
|
+
uip maestro flow eval remove "<id_or_name>" --set "<set_name>" --path <flow_project> --output json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
<a id="--criteria"></a>
|
|
44
|
+
<a id="--input-file-keypath"></a>
|
|
45
|
+
### Inputs, Expected Values, and Criteria
|
|
46
|
+
|
|
47
|
+
`--inputs` must contain only keys matching the chosen entry point's declared input variables. If a variable is missing, add it or change the input JSON. To add a string input named `name`, run:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uip maestro flow variable add ./MySolution/MyFlow/MyFlow.flow name \
|
|
51
|
+
--direction in --type string --output json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Evaluator behavior:
|
|
55
|
+
|
|
56
|
+
- `exact-match`: compares output verbatim, or `expected[targetKey]` when the evaluator has `--target-key`.
|
|
57
|
+
- `json-similarity`: tree-compares with tolerance.
|
|
58
|
+
- `contains`: does not use `--expected`; use `--search-text`.
|
|
59
|
+
- `llm-judge-output`: substitutes `--expected` into `{{ExpectedOutput}}`.
|
|
60
|
+
- `llm-judge-strict-json`: substitutes it per key into `{{ExpectedOutput}}`.
|
|
61
|
+
- `llm-judge-trajectory`: uses it with `--expected-agent-behavior` set through `--criteria`.
|
|
62
|
+
- `llm-judge-trajectory-simulation`: behaves like `trajectory`, with simulation context.
|
|
63
|
+
|
|
64
|
+
`--criteria` contains per-evaluator overrides keyed by evaluator ID. Use it when evaluators in one set need different criteria:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"<evaluator_ref_for_trajectory>": {
|
|
69
|
+
"expectedAgentBehavior": "Agent calls the weather tool with the user's location, then returns a one-sentence summary."
|
|
70
|
+
},
|
|
71
|
+
"<evaluator_ref_for_output>": {
|
|
72
|
+
"expectedOutput": {"summary": "Sunny in NYC, 72°F"}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
When omitted, output evaluators fall back to `--expected` and trajectory evaluators use defaults. Always provide `expectedAgentBehavior` for trajectory evaluators; scoring against an empty `{{ExpectedAgentBehavior}}` is meaningless.
|
|
78
|
+
|
|
79
|
+
### File and Contains Inputs
|
|
80
|
+
|
|
81
|
+
`--input-file <key>=<path>` is repeatable and attaches a staged file under the specified key for runtime use, including PDFs, CSVs, and images. Do not delete the source before the run completes.
|
|
82
|
+
|
|
83
|
+
`--search-text` is for `contains` evaluators. It attaches the substring to test and is equivalent to writing `criteria` for that evaluator.
|
|
84
|
+
|
|
85
|
+
## Eval Set JSON Shape
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"id": "<uuid>",
|
|
90
|
+
"name": "Smoke Tests",
|
|
91
|
+
"version": "1.0",
|
|
92
|
+
"evaluatorRefs": ["<evaluator-file-ref-1>.json", "<evaluator-file-ref-2>.json"],
|
|
93
|
+
"selectedEntrypoint": "/Main.bpmn#start",
|
|
94
|
+
"evaluations": [
|
|
95
|
+
{
|
|
96
|
+
"id": "<uuid>",
|
|
97
|
+
"name": "hello-test",
|
|
98
|
+
"inputs": {"message": "hello"},
|
|
99
|
+
"expectedOutput": {"reply": "Hello! How can I help you?"},
|
|
100
|
+
"evaluationCriterias": {
|
|
101
|
+
"<evaluator-ref-2>": {
|
|
102
|
+
"expectedAgentBehavior": "Agent responds with a friendly greeting."
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Keep `version: "1.0"`; it identifies the new eval format. <!-- version-check-skip --> (eval-set file schema version, CLI-emitted by `eval set add` — not a `.flow` version)
|
|
111
|
+
|
|
112
|
+
- `evaluatorRefs` references CLI-generated evaluator files; prefer CLI commands over hand-editing.
|
|
113
|
+
- `selectedEntrypoint` pins the set's entry point; override it per run with `eval run start --entry-point`.
|
|
114
|
+
- `evaluations[]` is the inline data-point list; order is informational.
|
|
115
|
+
- `evaluationCriterias` (plural) maps per-data-point, per-evaluator overrides.
|
|
116
|
+
|
|
117
|
+
## Aligning Inputs with the Flow Schema
|
|
118
|
+
|
|
119
|
+
The data point's `inputs` must match the chosen entry point's input schema. Mismatches produce errors such as `Input "name" is not declared as an input variable in the flow`. Before adding data points, inspect `<flow>.flow` for `variables` entries with `direction: "in"`, or run:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
uip maestro flow variable list <flow_file> --output json
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Simulations on Data Points
|
|
126
|
+
|
|
127
|
+
Simulations replace selected nodes during an eval run with controlled outputs. Target a component by its `.flow` node `id`. Run:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
uip maestro flow eval simulation add <component-id> \
|
|
131
|
+
--set "<set_name>" \
|
|
132
|
+
--data-point "<data_point_name>" \
|
|
133
|
+
--strategy Llm \
|
|
134
|
+
--component-type connector \
|
|
135
|
+
--simulation-instructions "Pretend to send the email and return success." \
|
|
136
|
+
--path <flow_project> --output json
|
|
137
|
+
|
|
138
|
+
uip maestro flow eval simulation add <component-id> \
|
|
139
|
+
--set "<set_name>" \
|
|
140
|
+
--data-point "<data_point_name>" \
|
|
141
|
+
--strategy Static \
|
|
142
|
+
--component-type agent \
|
|
143
|
+
--mock-value '{"status":"ok"}' \
|
|
144
|
+
--path <flow_project> --output json
|
|
145
|
+
|
|
146
|
+
uip maestro flow eval simulation list \
|
|
147
|
+
--set "<set_name>" \
|
|
148
|
+
--data-point "<data_point_name>" \
|
|
149
|
+
--path <flow_project> --output json
|
|
150
|
+
|
|
151
|
+
uip maestro flow eval simulation remove <component-id> \
|
|
152
|
+
--set "<set_name>" \
|
|
153
|
+
--data-point "<data_point_name>" \
|
|
154
|
+
--path <flow_project> --output json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
| Strategy | Use | Required or relevant flags |
|
|
158
|
+
|---|---|---|
|
|
159
|
+
| `Llm` | Plausible, non-deterministic output | `--simulation-instructions` (output schema auto-resolved) |
|
|
160
|
+
| `Static` | Identical output every run | `--mock-value <json>` |
|
|
161
|
+
|
|
162
|
+
The output schema is always auto-resolved — for both top-level and child (`--parent`) simulations. Top-level reads the `.flow` node outputs; child simulations resolve from the `.flow` edges (inline agents), `agent.json` resources (same-solution agents), or the platform API (published agents, requires `uip login`).
|
|
163
|
+
|
|
164
|
+
Simulations are stored inline in the data point's `simulations` array. Adding one for an existing `<component-id>` and data point replaces the existing simulation.
|
|
165
|
+
|
|
166
|
+
### Child Simulations (Agent Tool Simulation)
|
|
167
|
+
|
|
168
|
+
When a flow has an agent node, you can simulate individual tools inside that agent instead of mocking the whole agent as one unit. Use `--parent <agent-component-id>` to target a child tool. The child's `<component-id>` is the tool's runtime name (e.g. `Web_Search`, `Send_Email`), not a workflow node ID.
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# Add a child tool simulation (Static — fixed output).
|
|
172
|
+
# If no parent simulation exists for <agent-node-id>, one is auto-created
|
|
173
|
+
# (type: agent, strategy: Llm).
|
|
174
|
+
uip maestro flow eval simulation add Web_Search \
|
|
175
|
+
--parent <agent-node-id> \
|
|
176
|
+
--set "<set_name>" \
|
|
177
|
+
--data-point "<data_point_name>" \
|
|
178
|
+
--strategy Static \
|
|
179
|
+
--mock-value '{"results": [{"title": "Example", "url": "https://example.com"}]}' \
|
|
180
|
+
--path <flow_project> --output json
|
|
181
|
+
|
|
182
|
+
# Add a child tool simulation (Llm — prompt-guided).
|
|
183
|
+
# Output schema is auto-resolved from the agent's tool definitions
|
|
184
|
+
# (inline, same-solution, or published agents).
|
|
185
|
+
uip maestro flow eval simulation add Send_Email \
|
|
186
|
+
--parent <agent-node-id> \
|
|
187
|
+
--set "<set_name>" \
|
|
188
|
+
--data-point "<data_point_name>" \
|
|
189
|
+
--strategy Llm \
|
|
190
|
+
--simulation-instructions "Return a success status with a generated messageId." \
|
|
191
|
+
--path <flow_project> --output json
|
|
192
|
+
|
|
193
|
+
# List child simulations on an agent node
|
|
194
|
+
uip maestro flow eval simulation list \
|
|
195
|
+
--parent <agent-node-id> \
|
|
196
|
+
--set "<set_name>" \
|
|
197
|
+
--data-point "<data_point_name>" \
|
|
198
|
+
--path <flow_project> --output json
|
|
199
|
+
|
|
200
|
+
# Remove a child simulation
|
|
201
|
+
uip maestro flow eval simulation remove Web_Search \
|
|
202
|
+
--parent <agent-node-id> \
|
|
203
|
+
--set "<set_name>" \
|
|
204
|
+
--data-point "<data_point_name>" \
|
|
205
|
+
--path <flow_project> --output json
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
No separate parent simulation step is needed — passing `--parent` auto-creates the parent simulation (type `agent`, strategy `Llm`) if it does not exist yet. This means a single command is enough to add a child tool simulation.
|
|
209
|
+
|
|
210
|
+
When `--parent` is used, `--component-type` defaults to `Node` (the convention for child tool simulations). You can override it if needed.
|
|
211
|
+
|
|
212
|
+
The output schema is auto-resolved for child simulations on all agent types:
|
|
213
|
+
- **Inline canvas agents** (`uipath.agent.*`): resolved from the child tool node's outputs in the `.flow` file.
|
|
214
|
+
- **Same-solution agents** (with `inputs.source`): resolved from the inline agent's `agent.json` resources.
|
|
215
|
+
- **Published agents** (`uipath.core.agent.*`): resolved via the platform API (`simulatableComponents`). Requires `uip login`.
|
|
216
|
+
|
|
217
|
+
For `Static` strategy, the CLI also validates that `--mock-value` keys match the resolved schema properties, catching shape mismatches before the eval run.
|
|
218
|
+
|
|
219
|
+
Child simulations are stored in the parent's `childSimulations` array in the eval set JSON. Running `simulation add` with `--parent` twice for the same child `<component-id>` replaces the existing child simulation.
|
|
220
|
+
|
|
221
|
+
## Anti-patterns
|
|
222
|
+
|
|
223
|
+
- Do not hand-write data-point `id` UUIDs. Run `uip maestro flow eval add`; the CLI generates fresh UUIDs and maintains `evalSetId`.
|
|
224
|
+
- Do not pass `--inputs` keys absent from the flow input schema; the CLI rejects them.
|
|
225
|
+
- Do not set `--expected '{}'` while omitting `--criteria` for trajectory evaluators; both placeholders are empty and scoring is meaningless.
|
|
226
|
+
- Do not delete attached input files before the run completes; the CLI references them until upload to Studio Web finishes.
|
|
227
|
+
- Do not expect `--evaluators` on `set add` to update automatically; later evaluators are not retroactively linked.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Flow Evaluators Guide
|
|
2
|
+
|
|
3
|
+
The seven evaluator types for `uip maestro flow eval evaluator add --type <type>`. Flow uses the same `uipath-*` evaluator type IDs as the coded evaluator engine (NOT the legacy IDs the low-code `uipath-agents` skill uses). Each `--type` kebab-case value maps to a `uipath-*` evaluator under the hood:
|
|
4
|
+
|
|
5
|
+
| `--type` flag | Internal `evaluatorTypeId` | LLM-based | Score scale |
|
|
6
|
+
|---------------|---------------------------|-----------|-------------|
|
|
7
|
+
| `exact-match` | `uipath-exact-match` | No | Binary (0/1) |
|
|
8
|
+
| `json-similarity` | `uipath-json-similarity` | No | Continuous (0–1) |
|
|
9
|
+
| `contains` | `uipath-contains` | No | Binary (0/1) |
|
|
10
|
+
| `llm-judge-output` | `uipath-llm-judge-output-semantic-similarity` | Yes | Continuous (0–1) |
|
|
11
|
+
| `llm-judge-strict-json` | `uipath-llm-judge-output-strict-json-similarity` | Yes | Continuous (0–1) |
|
|
12
|
+
| `llm-judge-trajectory` | `uipath-llm-judge-trajectory-similarity` | Yes | Continuous (0–1) |
|
|
13
|
+
| `llm-judge-trajectory-simulation` | `uipath-llm-judge-trajectory-simulation` | Yes | Continuous (0–1) |
|
|
14
|
+
|
|
15
|
+
The four classification and tool-call evaluators (`uipath-binary-classification`, `uipath-multiclass-classification`, `uipath-tool-call-*`) that exist in the coded SDK are **not** exposed by `uip maestro flow eval evaluator add`. Use the seven listed above.
|
|
16
|
+
|
|
17
|
+
## When to Pick Each Type
|
|
18
|
+
|
|
19
|
+
| Goal | Type | Notes |
|
|
20
|
+
|------|------|-------|
|
|
21
|
+
| Strict equality of a known output value | `exact-match` | Binary; no LLM. Cheapest. Use for deterministic agents. |
|
|
22
|
+
| Compare structured JSON outputs with tolerance for ordering / minor diffs | `json-similarity` | Tree-based; numeric tolerance ~1%, string Levenshtein. |
|
|
23
|
+
| Pass/fail on whether a substring appears | `contains` | Use `--search-text` on the data point, not the evaluator. |
|
|
24
|
+
| Score natural-language similarity between expected and actual | `llm-judge-output` | Default LLM judge. Set `--model`. |
|
|
25
|
+
| Per-key strict JSON scoring with LLM judgment on differences | `llm-judge-strict-json` | LLM penalizes per-field. Use when each output key matters independently. |
|
|
26
|
+
| Score whether the agent's reasoning path matches expected behavior | `llm-judge-trajectory` | Reads agent run history. Use `--expected-agent-behavior` on data points. |
|
|
27
|
+
| As above but with simulated tool calls / inputs | `llm-judge-trajectory-simulation` | Use when the flow can't safely execute real tools during eval. |
|
|
28
|
+
|
|
29
|
+
## Adding an Evaluator (CLI)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Deterministic — no model needed
|
|
33
|
+
uip maestro flow eval evaluator add exact-greeting \
|
|
34
|
+
--type exact-match \
|
|
35
|
+
--target-key "greeting" \
|
|
36
|
+
--path ./MySolution/MyFlow --output json
|
|
37
|
+
|
|
38
|
+
# LLM-judge — model is effectively required
|
|
39
|
+
uip maestro flow eval evaluator add greeting-quality \
|
|
40
|
+
--type llm-judge-output \
|
|
41
|
+
--model gpt-4.1-2025-04-14 \
|
|
42
|
+
--description "Score greeting tone and completeness" \
|
|
43
|
+
--path ./MySolution/MyFlow --output json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Critical: pass `--model` on every `llm-judge-*` evaluator. Empty `model` triggers a 500 from the LLM gateway only after retries — unfriendly to debug.
|
|
47
|
+
|
|
48
|
+
## `--target-key`
|
|
49
|
+
|
|
50
|
+
Defaults to `*` (the entire output object). Set a specific key when only one field of the output should be scored:
|
|
51
|
+
|
|
52
|
+
- Output: `{"greeting": "Hello!", "metadata": {"latencyMs": 12}}`
|
|
53
|
+
- `--target-key "greeting"` scores only the greeting string, ignoring metadata noise.
|
|
54
|
+
- `--target-key "*"` (default) scores the whole object.
|
|
55
|
+
|
|
56
|
+
## Evaluator JSON Shape
|
|
57
|
+
|
|
58
|
+
The CLI writes evaluator JSON files into the project's evaluator directory. Filenames follow `<name>-<suffix>.json` for CLI-created files; hand-written files can use any descriptive name. Let `eval set add` write `evaluatorRefs` instead of hand-editing them.
|
|
59
|
+
|
|
60
|
+
### Deterministic example (`exact-match`)
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"id": "<generate-uuid>",
|
|
65
|
+
"name": "exact-greeting",
|
|
66
|
+
"description": "Strict greeting match",
|
|
67
|
+
"version": "1.0",
|
|
68
|
+
"evaluatorTypeId": "uipath-exact-match",
|
|
69
|
+
"evaluatorConfig": {
|
|
70
|
+
"name": "exact-greeting",
|
|
71
|
+
"targetOutputKey": "greeting",
|
|
72
|
+
"caseSensitive": false,
|
|
73
|
+
"negated": false
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
`exact-match`, `json-similarity`, and `contains` do NOT carry a `model` or `prompt`.
|
|
79
|
+
|
|
80
|
+
### LLM-judge example (`llm-judge-output`)
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"id": "<generate-uuid>",
|
|
85
|
+
"name": "greeting-quality",
|
|
86
|
+
"description": "Score greeting tone and completeness",
|
|
87
|
+
"version": "1.0",
|
|
88
|
+
"evaluatorTypeId": "uipath-llm-judge-output-semantic-similarity",
|
|
89
|
+
"evaluatorConfig": {
|
|
90
|
+
"name": "greeting-quality",
|
|
91
|
+
"model": "gpt-4.1-2025-04-14",
|
|
92
|
+
"temperature": 0,
|
|
93
|
+
"maxTokens": 4096,
|
|
94
|
+
"targetOutputKey": "*",
|
|
95
|
+
"prompt": "Score 0-1 the semantic similarity of {{ActualOutput}} vs {{ExpectedOutput}}. Return JSON {\"score\": N, \"reason\": \"...\"}."
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Template variables per type:
|
|
101
|
+
|
|
102
|
+
| Type | Placeholders |
|
|
103
|
+
|------|-------------|
|
|
104
|
+
| `llm-judge-output` | `{{ExpectedOutput}}`, `{{ActualOutput}}` |
|
|
105
|
+
| `llm-judge-strict-json` | `{{ExpectedOutput}}`, `{{ActualOutput}}` |
|
|
106
|
+
| `llm-judge-trajectory` | `{{AgentRunHistory}}`, `{{ExpectedAgentBehavior}}`, `{{UserOrSyntheticInput}}` |
|
|
107
|
+
| `llm-judge-trajectory-simulation` | `{{AgentRunHistory}}`, `{{ExpectedAgentBehavior}}`, `{{UserOrSyntheticInput}}`, `{{SimulationInstructions}}` |
|
|
108
|
+
|
|
109
|
+
When `--prompt` is omitted, the CLI inserts a built-in default for each type. Override with `--prompt` only when you need different wording or scoring criteria — keep the same placeholders.
|
|
110
|
+
|
|
111
|
+
## Custom Prompts
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
uip maestro flow eval evaluator add strict-match \
|
|
115
|
+
--type llm-judge-output \
|
|
116
|
+
--model gpt-4.1-2025-04-14 \
|
|
117
|
+
--prompt 'Score 0-1 how closely {{ActualOutput}} matches {{ExpectedOutput}}. Return JSON {"score": N, "reason": "..."}.' \
|
|
118
|
+
--path ./MySolution/MyFlow --output json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Unknown placeholders are passed through to the LLM as literal text — they are not silent errors but they will not be substituted with run data.
|
|
122
|
+
|
|
123
|
+
## Removing an Evaluator
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
uip maestro flow eval evaluator remove greeting-quality \
|
|
127
|
+
--path ./MySolution/MyFlow --output json
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Removing an evaluator does NOT auto-clean `evaluatorRefs` arrays in eval sets that reference it. After removing, re-list eval sets and reconcile any stale refs:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
uip maestro flow eval set list --path ./MySolution/MyFlow --output json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Anti-patterns
|
|
137
|
+
|
|
138
|
+
- **Don't pass `--type` in PascalCase.** `ExactMatch` fails; only `exact-match` is accepted.
|
|
139
|
+
- **Don't omit `--model` on `llm-judge-*`.** The cloud worker fail-fasts before calling the LLM gateway; the resulting 500 is unhelpful.
|
|
140
|
+
- **Don't hand-write evaluator refs unless you are repairing an eval set.** Omit `--evaluators` so the CLI links all current evaluators, or use `eval set add --evaluators <generated_id_or_file_base>`. Do not pass the evaluator display name.
|
|
141
|
+
- **Don't copy evaluator JSON across projects without regenerating UUIDs.** `id` collisions silently corrupt resolution.
|
|
142
|
+
- **Don't use deterministic evaluators (`exact-match`, `json-similarity`, `contains`) for natural-language outputs.** They will fail almost every test that paraphrases.
|
|
143
|
+
- **Don't mix trajectory and output evaluators on the same data point unless the data point provides both `--expected` and `--expected-agent-behavior`.** Otherwise one of them scores against an empty placeholder.
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Running Flow Evaluations
|
|
2
|
+
|
|
3
|
+
`uip maestro flow eval run *` — start, monitor, inspect, and compare evaluation runs. All run commands require `uip login` and a Flow solution that already exists in Studio Web.
|
|
4
|
+
|
|
5
|
+
> **Before running any of these:** read [upload-safety.md](upload-safety.md). The skill must NOT auto-run `uip solution upload` to satisfy the "solution must be in Studio Web" prerequisite. If the solution isn't in Studio Web, ask the user.
|
|
6
|
+
|
|
7
|
+
## Start a Run
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uip maestro flow eval run start \
|
|
11
|
+
--set "<set_name>" \
|
|
12
|
+
--path <flow_project> \
|
|
13
|
+
[--entry-point <entry>] \
|
|
14
|
+
[--solution-id <id>] \
|
|
15
|
+
[--project-id <id>] \
|
|
16
|
+
[--folder-key <key>] \
|
|
17
|
+
[--debug-mode <mode>] \
|
|
18
|
+
[--wait [--timeout <seconds>]] \
|
|
19
|
+
--output json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Resolution order for `--solution-id` / `--project-id`
|
|
23
|
+
|
|
24
|
+
The CLI auto-resolves these from project metadata in the working tree (typically `SolutionStorage.json` and the parent `.uipx`). Pass `--solution-id` or `--project-id` explicitly only when the working tree does not have those IDs (e.g., a freshly scaffolded local project that has never been uploaded).
|
|
25
|
+
|
|
26
|
+
If the auto-resolution fails AND you have not passed explicit IDs, the start command will error. Do NOT respond by running `uip solution upload` automatically — see [upload-safety.md](upload-safety.md) for the right action.
|
|
27
|
+
|
|
28
|
+
### `--folder-key`
|
|
29
|
+
|
|
30
|
+
The Orchestrator folder key that scopes the run. Defaults to the user's personal workspace. Pass an explicit folder key when the eval should run in a shared/team folder.
|
|
31
|
+
|
|
32
|
+
### `--wait` and `--timeout`
|
|
33
|
+
|
|
34
|
+
Without `--wait`, the command returns immediately with `EvalSetRunId`. With `--wait`, the CLI blocks until the run reaches a terminal state (`Completed` or `Failed`) or `--timeout` elapses (default 600s, hardcoded by the CLI).
|
|
35
|
+
|
|
36
|
+
`--timeout` only stops the local CLI from blocking. The server-side run continues regardless. Query progress with:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
uip maestro flow eval run status <eval_set_run_id> \
|
|
40
|
+
--set "<set_name>" --path <flow_project> --output json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Polling cadence is not part of the public CLI contract — do not depend on a specific interval.
|
|
44
|
+
|
|
45
|
+
### Output (no `--wait`)
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"Code": "FlowEvalRunStarted",
|
|
50
|
+
"Data": {
|
|
51
|
+
"EvalSetRunId": "a1b2c3d4-...",
|
|
52
|
+
"EvalSetName": "Smoke Tests",
|
|
53
|
+
"DataPoints": 3,
|
|
54
|
+
"Evaluators": 2
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Output (`--wait`, on completion)
|
|
60
|
+
|
|
61
|
+
The CLI emits a summary plus per-data-point results. Use `run results` for the same data on a completed run.
|
|
62
|
+
|
|
63
|
+
## Check Status
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
uip maestro flow eval run status <eval_set_run_id> \
|
|
67
|
+
--set "<set_name>" \
|
|
68
|
+
--path <flow_project> \
|
|
69
|
+
--output json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"Code": "FlowEvalRunStatus",
|
|
75
|
+
"Data": {
|
|
76
|
+
"EvalSetRunId": "a1b2c3d4-...",
|
|
77
|
+
"Status": "Completed",
|
|
78
|
+
"Score": 0.86,
|
|
79
|
+
"Duration": "42.5s"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Status values: `Pending`, `Running`, `Completed`, `Failed`. `Completed` and `Failed` are terminal.
|
|
85
|
+
|
|
86
|
+
## Detailed Results
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
uip maestro flow eval run results <eval_set_run_id> \
|
|
90
|
+
--set "<set_name>" \
|
|
91
|
+
--path <flow_project> \
|
|
92
|
+
[--only-failed] \
|
|
93
|
+
[--verbose] \
|
|
94
|
+
[--export-format json|csv] \
|
|
95
|
+
--output json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Per-data-point fields: `DataPoint`, `Status`, `EvaluatorScores`, `Duration`, `Error` (plus `Justifications` when `--verbose`).
|
|
99
|
+
|
|
100
|
+
### `--only-failed`
|
|
101
|
+
|
|
102
|
+
Filter to data points that errored or scored a hard failure. Triage faster on large sets.
|
|
103
|
+
|
|
104
|
+
### `--verbose`
|
|
105
|
+
|
|
106
|
+
Include the LLM judge's free-text justification per evaluator. Essential when a score is surprising.
|
|
107
|
+
|
|
108
|
+
### `--export-format <json|csv>`
|
|
109
|
+
|
|
110
|
+
Write results to a file alongside the project (e.g., `eval-results-<timestamp>.json` or `.csv`). Useful for archiving or feeding into a dashboard.
|
|
111
|
+
|
|
112
|
+
### Filtering with `--output-filter`
|
|
113
|
+
|
|
114
|
+
`--output-filter` takes a JMESPath expression and applies it to the JSON payload before printing. Useful for triage:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Show only data points named "checkout-flow"
|
|
118
|
+
uip maestro flow eval run results <run_id> \
|
|
119
|
+
--set "Smoke Tests" --path ./MySolution/MyFlow --output json \
|
|
120
|
+
--output-filter '[?DataPoint==`checkout-flow`]'
|
|
121
|
+
|
|
122
|
+
# Show only score and name per row
|
|
123
|
+
uip maestro flow eval run results <run_id> \
|
|
124
|
+
--set "Smoke Tests" --path ./MySolution/MyFlow --output json \
|
|
125
|
+
--output-filter '[*].{name: DataPoint, score: EvaluatorScores}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## List Past Runs
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
uip maestro flow eval run list \
|
|
132
|
+
--set "<set_name>" \
|
|
133
|
+
--path <flow_project> \
|
|
134
|
+
--output json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Per-row: `EvalSetRunId`, `Status`, `Score`, `DataPoints`, `Duration`, `CreatedAt`.
|
|
138
|
+
|
|
139
|
+
## Compare Two Runs
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
uip maestro flow eval run compare <run_id_a> \
|
|
143
|
+
--compare-to <run_id_b> \
|
|
144
|
+
--set "<set_name>" \
|
|
145
|
+
--path <flow_project> \
|
|
146
|
+
--output json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Output:
|
|
150
|
+
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"Code": "FlowEvalRunComparison",
|
|
154
|
+
"Data": {
|
|
155
|
+
"RunA": { "Id": "...", "Score": 0.86, "Status": "Completed" },
|
|
156
|
+
"RunB": { "Id": "...", "Score": 0.80, "Status": "Completed" },
|
|
157
|
+
"ScoreDelta": 0.06,
|
|
158
|
+
"DataPoints": [
|
|
159
|
+
{
|
|
160
|
+
"DataPoint": "hello-test",
|
|
161
|
+
"ScoreA": 1.0, "ScoreB": 0.9, "Delta": "+0.1",
|
|
162
|
+
"StatusA": "Completed", "StatusB": "Completed"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`compare` aligns by data point `name` within the eval set. Comparing runs from different eval sets is not supported — the deltas would be meaningless.
|
|
170
|
+
|
|
171
|
+
Use `compare` after each prompt or flow change to verify the change improved scores without regressing other data points.
|
|
172
|
+
|
|
173
|
+
## Workflow Example
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# 1. Verify the solution is in Studio Web (do NOT auto-upload — see upload-safety.md)
|
|
177
|
+
# If unsure, list runs first; absence of any error here implies the solution exists.
|
|
178
|
+
uip maestro flow eval run list --set "Smoke Tests" --path ./MySolution/MyFlow --output json
|
|
179
|
+
|
|
180
|
+
# 2. Start the run, block on completion
|
|
181
|
+
uip maestro flow eval run start \
|
|
182
|
+
--set "Smoke Tests" \
|
|
183
|
+
--path ./MySolution/MyFlow \
|
|
184
|
+
--wait --timeout 600 --output json
|
|
185
|
+
|
|
186
|
+
# 3. Inspect failures with justifications
|
|
187
|
+
uip maestro flow eval run results <run_id> \
|
|
188
|
+
--set "Smoke Tests" \
|
|
189
|
+
--only-failed --verbose \
|
|
190
|
+
--path ./MySolution/MyFlow --output json
|
|
191
|
+
|
|
192
|
+
# 4. After fixing the flow, re-run and compare
|
|
193
|
+
uip maestro flow eval run start --set "Smoke Tests" --path ./MySolution/MyFlow --wait --output json
|
|
194
|
+
uip maestro flow eval run compare <new_run_id> --compare-to <old_run_id> \
|
|
195
|
+
--set "Smoke Tests" --path ./MySolution/MyFlow --output json
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Failure Detection
|
|
199
|
+
|
|
200
|
+
A data point is considered failed when any of these are true:
|
|
201
|
+
|
|
202
|
+
- `Status` is `Failed`
|
|
203
|
+
- `Error` is non-null
|
|
204
|
+
- Any evaluator score type is `error`
|
|
205
|
+
- An exact-match evaluator returned `false`
|
|
206
|
+
|
|
207
|
+
Use `--only-failed` to filter to these rows. Use `--verbose` to read the justifications.
|
|
208
|
+
|
|
209
|
+
## Anti-patterns
|
|
210
|
+
|
|
211
|
+
- **Don't auto-run `uip solution upload`** when `eval run start` errors with a missing-solution error. Stop and ask the user — see [upload-safety.md](upload-safety.md).
|
|
212
|
+
- **Don't depend on `--wait`'s polling cadence.** Treat as a black-box block.
|
|
213
|
+
- **Don't compare runs from different eval sets.** `compare` aligns by data point name; cross-set deltas are meaningless.
|
|
214
|
+
- **Don't rely on aggregate `Score` alone.** Inspect per-evaluator scores. A 0.86 aggregate can mask a high-similarity-but-wrong-trajectory failure.
|
|
215
|
+
- **Don't keep retrying `eval run status` while `--wait` is still blocking from another shell.** Pick one — either `--wait` or polling status — to avoid race conditions on the same run ID.
|