@intentius/chant-lexicon-grafana 0.100.0 → 0.101.0

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.
@@ -0,0 +1,1581 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`AgentDashboard output without rules > a preset with the conventions' client metrics and provider dimensions 1`] = `
4
+ {
5
+ "dashboards/genai-agents.json": "{
6
+ "annotations": {
7
+ "list": []
8
+ },
9
+ "description": "Calls, errors and latency per model and tool, and token usage per model, from the genai GenAI metrics.",
10
+ "editable": true,
11
+ "fiscalYearStartMonth": 0,
12
+ "graphTooltip": 1,
13
+ "links": [],
14
+ "panels": [
15
+ {
16
+ "type": "row",
17
+ "collapsed": false,
18
+ "title": "Models",
19
+ "gridPos": {
20
+ "h": 1,
21
+ "w": 24,
22
+ "x": 0,
23
+ "y": 0
24
+ },
25
+ "id": 1,
26
+ "panels": []
27
+ },
28
+ {
29
+ "type": "timeseries",
30
+ "id": 2,
31
+ "title": "Calls by model",
32
+ "description": "GenAI operations per second, from genai_calls_total.",
33
+ "gridPos": {
34
+ "h": 8,
35
+ "w": 8,
36
+ "x": 0,
37
+ "y": 1
38
+ },
39
+ "datasource": {
40
+ "type": "prometheus",
41
+ "uid": "prometheus"
42
+ },
43
+ "targets": [
44
+ {
45
+ "datasource": {
46
+ "type": "prometheus",
47
+ "uid": "prometheus"
48
+ },
49
+ "refId": "A",
50
+ "expr": "sum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
51
+ "legendFormat": "{{gen_ai_request_model}}"
52
+ }
53
+ ],
54
+ "options": {},
55
+ "fieldConfig": {
56
+ "defaults": {
57
+ "unit": "reqps"
58
+ },
59
+ "overrides": []
60
+ }
61
+ },
62
+ {
63
+ "type": "timeseries",
64
+ "id": 3,
65
+ "title": "Errors by model",
66
+ "description": "Share of operations that ended with status_code=\\"STATUS_CODE_ERROR\\".",
67
+ "gridPos": {
68
+ "h": 8,
69
+ "w": 8,
70
+ "x": 8,
71
+ "y": 1
72
+ },
73
+ "datasource": {
74
+ "type": "prometheus",
75
+ "uid": "prometheus"
76
+ },
77
+ "targets": [
78
+ {
79
+ "datasource": {
80
+ "type": "prometheus",
81
+ "uid": "prometheus"
82
+ },
83
+ "refId": "A",
84
+ "expr": "(\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
85
+ "legendFormat": "{{gen_ai_request_model}}"
86
+ }
87
+ ],
88
+ "options": {},
89
+ "fieldConfig": {
90
+ "defaults": {
91
+ "unit": "percentunit",
92
+ "min": 0
93
+ },
94
+ "overrides": []
95
+ }
96
+ },
97
+ {
98
+ "type": "timeseries",
99
+ "id": 4,
100
+ "title": "Latency p95 by model",
101
+ "description": "From genai_duration_seconds.",
102
+ "gridPos": {
103
+ "h": 8,
104
+ "w": 8,
105
+ "x": 16,
106
+ "y": 1
107
+ },
108
+ "datasource": {
109
+ "type": "prometheus",
110
+ "uid": "prometheus"
111
+ },
112
+ "targets": [
113
+ {
114
+ "datasource": {
115
+ "type": "prometheus",
116
+ "uid": "prometheus"
117
+ },
118
+ "refId": "A",
119
+ "expr": "histogram_quantile(0.95, sum by (le, gen_ai_request_model) (rate(genai_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])))",
120
+ "legendFormat": "{{gen_ai_request_model}}"
121
+ }
122
+ ],
123
+ "options": {},
124
+ "fieldConfig": {
125
+ "defaults": {
126
+ "unit": "s"
127
+ },
128
+ "overrides": []
129
+ }
130
+ },
131
+ {
132
+ "type": "row",
133
+ "collapsed": false,
134
+ "title": "Tools",
135
+ "gridPos": {
136
+ "h": 1,
137
+ "w": 24,
138
+ "x": 0,
139
+ "y": 9
140
+ },
141
+ "id": 5,
142
+ "panels": []
143
+ },
144
+ {
145
+ "type": "timeseries",
146
+ "id": 6,
147
+ "title": "Tool calls",
148
+ "description": "Operations with a gen_ai.tool.name, per second.",
149
+ "gridPos": {
150
+ "h": 8,
151
+ "w": 8,
152
+ "x": 0,
153
+ "y": 10
154
+ },
155
+ "datasource": {
156
+ "type": "prometheus",
157
+ "uid": "prometheus"
158
+ },
159
+ "targets": [
160
+ {
161
+ "datasource": {
162
+ "type": "prometheus",
163
+ "uid": "prometheus"
164
+ },
165
+ "refId": "A",
166
+ "expr": "sum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
167
+ "legendFormat": "{{gen_ai_tool_name}}"
168
+ }
169
+ ],
170
+ "options": {},
171
+ "fieldConfig": {
172
+ "defaults": {
173
+ "unit": "reqps"
174
+ },
175
+ "overrides": []
176
+ }
177
+ },
178
+ {
179
+ "type": "timeseries",
180
+ "id": 7,
181
+ "title": "Errors by tool",
182
+ "gridPos": {
183
+ "h": 8,
184
+ "w": 8,
185
+ "x": 8,
186
+ "y": 10
187
+ },
188
+ "datasource": {
189
+ "type": "prometheus",
190
+ "uid": "prometheus"
191
+ },
192
+ "targets": [
193
+ {
194
+ "datasource": {
195
+ "type": "prometheus",
196
+ "uid": "prometheus"
197
+ },
198
+ "refId": "A",
199
+ "expr": "(\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
200
+ "legendFormat": "{{gen_ai_tool_name}}"
201
+ }
202
+ ],
203
+ "options": {},
204
+ "fieldConfig": {
205
+ "defaults": {
206
+ "unit": "percentunit",
207
+ "min": 0
208
+ },
209
+ "overrides": []
210
+ }
211
+ },
212
+ {
213
+ "type": "timeseries",
214
+ "id": 8,
215
+ "title": "Latency p95 by tool",
216
+ "gridPos": {
217
+ "h": 8,
218
+ "w": 8,
219
+ "x": 16,
220
+ "y": 10
221
+ },
222
+ "datasource": {
223
+ "type": "prometheus",
224
+ "uid": "prometheus"
225
+ },
226
+ "targets": [
227
+ {
228
+ "datasource": {
229
+ "type": "prometheus",
230
+ "uid": "prometheus"
231
+ },
232
+ "refId": "A",
233
+ "expr": "histogram_quantile(0.95, sum by (le, gen_ai_tool_name) (rate(genai_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])))",
234
+ "legendFormat": "{{gen_ai_tool_name}}"
235
+ }
236
+ ],
237
+ "options": {},
238
+ "fieldConfig": {
239
+ "defaults": {
240
+ "unit": "s"
241
+ },
242
+ "overrides": []
243
+ }
244
+ },
245
+ {
246
+ "type": "row",
247
+ "collapsed": false,
248
+ "title": "Errors",
249
+ "gridPos": {
250
+ "h": 1,
251
+ "w": 24,
252
+ "x": 0,
253
+ "y": 18
254
+ },
255
+ "id": 9,
256
+ "panels": []
257
+ },
258
+ {
259
+ "type": "timeseries",
260
+ "id": 10,
261
+ "title": "Errors by type",
262
+ "description": "Failed operations per second by error.type.",
263
+ "gridPos": {
264
+ "h": 8,
265
+ "w": 24,
266
+ "x": 0,
267
+ "y": 19
268
+ },
269
+ "datasource": {
270
+ "type": "prometheus",
271
+ "uid": "prometheus"
272
+ },
273
+ "targets": [
274
+ {
275
+ "datasource": {
276
+ "type": "prometheus",
277
+ "uid": "prometheus"
278
+ },
279
+ "refId": "A",
280
+ "expr": "sum by (error_type) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))",
281
+ "legendFormat": "{{error_type}}"
282
+ }
283
+ ],
284
+ "options": {},
285
+ "fieldConfig": {
286
+ "defaults": {
287
+ "unit": "reqps"
288
+ },
289
+ "overrides": []
290
+ }
291
+ },
292
+ {
293
+ "type": "row",
294
+ "collapsed": false,
295
+ "title": "Tokens",
296
+ "gridPos": {
297
+ "h": 1,
298
+ "w": 24,
299
+ "x": 0,
300
+ "y": 27
301
+ },
302
+ "id": 11,
303
+ "panels": []
304
+ },
305
+ {
306
+ "type": "timeseries",
307
+ "id": 12,
308
+ "title": "Input tokens by model",
309
+ "description": "Tokens per second by model, from genai_tokens_input_total.",
310
+ "gridPos": {
311
+ "h": 8,
312
+ "w": 8,
313
+ "x": 0,
314
+ "y": 28
315
+ },
316
+ "datasource": {
317
+ "type": "prometheus",
318
+ "uid": "prometheus"
319
+ },
320
+ "targets": [
321
+ {
322
+ "datasource": {
323
+ "type": "prometheus",
324
+ "uid": "prometheus"
325
+ },
326
+ "refId": "A",
327
+ "expr": "sum by (gen_ai_request_model) (rate(genai_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
328
+ "legendFormat": "{{gen_ai_request_model}}"
329
+ }
330
+ ],
331
+ "options": {
332
+ "tooltip": {
333
+ "mode": "multi"
334
+ }
335
+ },
336
+ "fieldConfig": {
337
+ "defaults": {
338
+ "unit": "short"
339
+ },
340
+ "overrides": []
341
+ }
342
+ },
343
+ {
344
+ "type": "timeseries",
345
+ "id": 13,
346
+ "title": "Output tokens by model",
347
+ "description": "Tokens per second by model, from genai_tokens_output_total.",
348
+ "gridPos": {
349
+ "h": 8,
350
+ "w": 8,
351
+ "x": 8,
352
+ "y": 28
353
+ },
354
+ "datasource": {
355
+ "type": "prometheus",
356
+ "uid": "prometheus"
357
+ },
358
+ "targets": [
359
+ {
360
+ "datasource": {
361
+ "type": "prometheus",
362
+ "uid": "prometheus"
363
+ },
364
+ "refId": "A",
365
+ "expr": "sum by (gen_ai_request_model) (rate(genai_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
366
+ "legendFormat": "{{gen_ai_request_model}}"
367
+ }
368
+ ],
369
+ "options": {
370
+ "tooltip": {
371
+ "mode": "multi"
372
+ }
373
+ },
374
+ "fieldConfig": {
375
+ "defaults": {
376
+ "unit": "short"
377
+ },
378
+ "overrides": []
379
+ }
380
+ },
381
+ {
382
+ "type": "stat",
383
+ "id": 14,
384
+ "title": "Input tokens",
385
+ "description": "Over the dashboard's time range.",
386
+ "gridPos": {
387
+ "h": 8,
388
+ "w": 4,
389
+ "x": 16,
390
+ "y": 28
391
+ },
392
+ "datasource": {
393
+ "type": "prometheus",
394
+ "uid": "prometheus"
395
+ },
396
+ "targets": [
397
+ {
398
+ "datasource": {
399
+ "type": "prometheus",
400
+ "uid": "prometheus"
401
+ },
402
+ "refId": "A",
403
+ "expr": "sum(increase(genai_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
404
+ "legendFormat": "Input tokens",
405
+ "instant": true,
406
+ "range": false
407
+ }
408
+ ],
409
+ "options": {
410
+ "graphMode": "none",
411
+ "colorMode": "none",
412
+ "reduceOptions": {
413
+ "calcs": [
414
+ "lastNotNull"
415
+ ]
416
+ }
417
+ },
418
+ "fieldConfig": {
419
+ "defaults": {
420
+ "unit": "short",
421
+ "decimals": 0
422
+ },
423
+ "overrides": []
424
+ }
425
+ },
426
+ {
427
+ "type": "stat",
428
+ "id": 15,
429
+ "title": "Output tokens",
430
+ "description": "Over the dashboard's time range.",
431
+ "gridPos": {
432
+ "h": 8,
433
+ "w": 4,
434
+ "x": 20,
435
+ "y": 28
436
+ },
437
+ "datasource": {
438
+ "type": "prometheus",
439
+ "uid": "prometheus"
440
+ },
441
+ "targets": [
442
+ {
443
+ "datasource": {
444
+ "type": "prometheus",
445
+ "uid": "prometheus"
446
+ },
447
+ "refId": "A",
448
+ "expr": "sum(increase(genai_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
449
+ "legendFormat": "Output tokens",
450
+ "instant": true,
451
+ "range": false
452
+ }
453
+ ],
454
+ "options": {
455
+ "graphMode": "none",
456
+ "colorMode": "none",
457
+ "reduceOptions": {
458
+ "calcs": [
459
+ "lastNotNull"
460
+ ]
461
+ }
462
+ },
463
+ "fieldConfig": {
464
+ "defaults": {
465
+ "unit": "short",
466
+ "decimals": 0
467
+ },
468
+ "overrides": []
469
+ }
470
+ }
471
+ ],
472
+ "refresh": "1m",
473
+ "schemaVersion": 42,
474
+ "tags": [
475
+ "genai",
476
+ "agents"
477
+ ],
478
+ "templating": {
479
+ "list": [
480
+ {
481
+ "type": "query",
482
+ "name": "service",
483
+ "label": "Service",
484
+ "datasource": {
485
+ "type": "prometheus",
486
+ "uid": "prometheus"
487
+ },
488
+ "query": "label_values(genai_calls_total, service_name)",
489
+ "definition": "label_values(genai_calls_total, service_name)",
490
+ "refresh": 2,
491
+ "sort": 1,
492
+ "multi": true,
493
+ "includeAll": true,
494
+ "allValue": ".*",
495
+ "options": []
496
+ },
497
+ {
498
+ "type": "query",
499
+ "name": "model",
500
+ "label": "Model",
501
+ "datasource": {
502
+ "type": "prometheus",
503
+ "uid": "prometheus"
504
+ },
505
+ "query": "label_values(genai_calls_total, gen_ai_request_model)",
506
+ "definition": "label_values(genai_calls_total, gen_ai_request_model)",
507
+ "refresh": 2,
508
+ "sort": 1,
509
+ "multi": true,
510
+ "includeAll": true,
511
+ "allValue": ".*",
512
+ "options": []
513
+ }
514
+ ]
515
+ },
516
+ "time": {
517
+ "from": "now-6h",
518
+ "to": "now"
519
+ },
520
+ "timepicker": {},
521
+ "timezone": "browser",
522
+ "title": "Agents: models, tools and tokens",
523
+ "uid": "genai-agents",
524
+ "weekStart": ""
525
+ }
526
+ ",
527
+ }
528
+ `;
529
+
530
+ exports[`AgentDashboard output without rules > another namespace, quantile and dashboard options 1`] = `
531
+ {
532
+ "dashboards/AI/agents-agents.json": "{
533
+ "annotations": {
534
+ "list": []
535
+ },
536
+ "description": "Calls, errors and latency per model and tool, and token usage per model, from the agents GenAI metrics.",
537
+ "editable": true,
538
+ "fiscalYearStartMonth": 0,
539
+ "graphTooltip": 1,
540
+ "links": [],
541
+ "panels": [
542
+ {
543
+ "type": "row",
544
+ "collapsed": false,
545
+ "title": "Models",
546
+ "gridPos": {
547
+ "h": 1,
548
+ "w": 24,
549
+ "x": 0,
550
+ "y": 0
551
+ },
552
+ "id": 1,
553
+ "panels": []
554
+ },
555
+ {
556
+ "type": "timeseries",
557
+ "id": 2,
558
+ "title": "Calls by model",
559
+ "description": "GenAI operations per second, from agents_calls_total.",
560
+ "gridPos": {
561
+ "h": 8,
562
+ "w": 8,
563
+ "x": 0,
564
+ "y": 1
565
+ },
566
+ "datasource": {
567
+ "type": "prometheus",
568
+ "uid": "prometheus"
569
+ },
570
+ "targets": [
571
+ {
572
+ "datasource": {
573
+ "type": "prometheus",
574
+ "uid": "prometheus"
575
+ },
576
+ "refId": "A",
577
+ "expr": "sum by (gen_ai_request_model) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
578
+ "legendFormat": "{{gen_ai_request_model}}"
579
+ }
580
+ ],
581
+ "options": {},
582
+ "fieldConfig": {
583
+ "defaults": {
584
+ "unit": "reqps"
585
+ },
586
+ "overrides": []
587
+ }
588
+ },
589
+ {
590
+ "type": "timeseries",
591
+ "id": 3,
592
+ "title": "Errors by model",
593
+ "description": "Share of operations that ended with status_code=\\"STATUS_CODE_ERROR\\".",
594
+ "gridPos": {
595
+ "h": 8,
596
+ "w": 8,
597
+ "x": 8,
598
+ "y": 1
599
+ },
600
+ "datasource": {
601
+ "type": "prometheus",
602
+ "uid": "prometheus"
603
+ },
604
+ "targets": [
605
+ {
606
+ "datasource": {
607
+ "type": "prometheus",
608
+ "uid": "prometheus"
609
+ },
610
+ "refId": "A",
611
+ "expr": "(\\nsum by (gen_ai_request_model) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_request_model) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_request_model) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
612
+ "legendFormat": "{{gen_ai_request_model}}"
613
+ }
614
+ ],
615
+ "options": {},
616
+ "fieldConfig": {
617
+ "defaults": {
618
+ "unit": "percentunit",
619
+ "min": 0
620
+ },
621
+ "overrides": []
622
+ }
623
+ },
624
+ {
625
+ "type": "timeseries",
626
+ "id": 4,
627
+ "title": "Latency p99 by model",
628
+ "description": "From agents_duration_seconds.",
629
+ "gridPos": {
630
+ "h": 8,
631
+ "w": 8,
632
+ "x": 16,
633
+ "y": 1
634
+ },
635
+ "datasource": {
636
+ "type": "prometheus",
637
+ "uid": "prometheus"
638
+ },
639
+ "targets": [
640
+ {
641
+ "datasource": {
642
+ "type": "prometheus",
643
+ "uid": "prometheus"
644
+ },
645
+ "refId": "A",
646
+ "expr": "histogram_quantile(0.99, sum by (le, gen_ai_request_model) (rate(agents_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])))",
647
+ "legendFormat": "{{gen_ai_request_model}}"
648
+ }
649
+ ],
650
+ "options": {},
651
+ "fieldConfig": {
652
+ "defaults": {
653
+ "unit": "s"
654
+ },
655
+ "overrides": []
656
+ }
657
+ },
658
+ {
659
+ "type": "row",
660
+ "collapsed": false,
661
+ "title": "Tools",
662
+ "gridPos": {
663
+ "h": 1,
664
+ "w": 24,
665
+ "x": 0,
666
+ "y": 9
667
+ },
668
+ "id": 5,
669
+ "panels": []
670
+ },
671
+ {
672
+ "type": "timeseries",
673
+ "id": 6,
674
+ "title": "Tool calls",
675
+ "description": "Operations with a gen_ai.tool.name, per second.",
676
+ "gridPos": {
677
+ "h": 8,
678
+ "w": 8,
679
+ "x": 0,
680
+ "y": 10
681
+ },
682
+ "datasource": {
683
+ "type": "prometheus",
684
+ "uid": "prometheus"
685
+ },
686
+ "targets": [
687
+ {
688
+ "datasource": {
689
+ "type": "prometheus",
690
+ "uid": "prometheus"
691
+ },
692
+ "refId": "A",
693
+ "expr": "sum by (gen_ai_tool_name) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
694
+ "legendFormat": "{{gen_ai_tool_name}}"
695
+ }
696
+ ],
697
+ "options": {},
698
+ "fieldConfig": {
699
+ "defaults": {
700
+ "unit": "reqps"
701
+ },
702
+ "overrides": []
703
+ }
704
+ },
705
+ {
706
+ "type": "timeseries",
707
+ "id": 7,
708
+ "title": "Errors by tool",
709
+ "gridPos": {
710
+ "h": 8,
711
+ "w": 8,
712
+ "x": 8,
713
+ "y": 10
714
+ },
715
+ "datasource": {
716
+ "type": "prometheus",
717
+ "uid": "prometheus"
718
+ },
719
+ "targets": [
720
+ {
721
+ "datasource": {
722
+ "type": "prometheus",
723
+ "uid": "prometheus"
724
+ },
725
+ "refId": "A",
726
+ "expr": "(\\nsum by (gen_ai_tool_name) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_tool_name) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_tool_name) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
727
+ "legendFormat": "{{gen_ai_tool_name}}"
728
+ }
729
+ ],
730
+ "options": {},
731
+ "fieldConfig": {
732
+ "defaults": {
733
+ "unit": "percentunit",
734
+ "min": 0
735
+ },
736
+ "overrides": []
737
+ }
738
+ },
739
+ {
740
+ "type": "timeseries",
741
+ "id": 8,
742
+ "title": "Latency p99 by tool",
743
+ "gridPos": {
744
+ "h": 8,
745
+ "w": 8,
746
+ "x": 16,
747
+ "y": 10
748
+ },
749
+ "datasource": {
750
+ "type": "prometheus",
751
+ "uid": "prometheus"
752
+ },
753
+ "targets": [
754
+ {
755
+ "datasource": {
756
+ "type": "prometheus",
757
+ "uid": "prometheus"
758
+ },
759
+ "refId": "A",
760
+ "expr": "histogram_quantile(0.99, sum by (le, gen_ai_tool_name) (rate(agents_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])))",
761
+ "legendFormat": "{{gen_ai_tool_name}}"
762
+ }
763
+ ],
764
+ "options": {},
765
+ "fieldConfig": {
766
+ "defaults": {
767
+ "unit": "s"
768
+ },
769
+ "overrides": []
770
+ }
771
+ },
772
+ {
773
+ "type": "row",
774
+ "collapsed": false,
775
+ "title": "Errors",
776
+ "gridPos": {
777
+ "h": 1,
778
+ "w": 24,
779
+ "x": 0,
780
+ "y": 18
781
+ },
782
+ "id": 9,
783
+ "panels": []
784
+ },
785
+ {
786
+ "type": "timeseries",
787
+ "id": 10,
788
+ "title": "Errors by type",
789
+ "description": "Failed operations per second by error.type.",
790
+ "gridPos": {
791
+ "h": 8,
792
+ "w": 24,
793
+ "x": 0,
794
+ "y": 19
795
+ },
796
+ "datasource": {
797
+ "type": "prometheus",
798
+ "uid": "prometheus"
799
+ },
800
+ "targets": [
801
+ {
802
+ "datasource": {
803
+ "type": "prometheus",
804
+ "uid": "prometheus"
805
+ },
806
+ "refId": "A",
807
+ "expr": "sum by (error_type) (rate(agents_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))",
808
+ "legendFormat": "{{error_type}}"
809
+ }
810
+ ],
811
+ "options": {},
812
+ "fieldConfig": {
813
+ "defaults": {
814
+ "unit": "reqps"
815
+ },
816
+ "overrides": []
817
+ }
818
+ },
819
+ {
820
+ "type": "row",
821
+ "collapsed": false,
822
+ "title": "Tokens",
823
+ "gridPos": {
824
+ "h": 1,
825
+ "w": 24,
826
+ "x": 0,
827
+ "y": 27
828
+ },
829
+ "id": 11,
830
+ "panels": []
831
+ },
832
+ {
833
+ "type": "timeseries",
834
+ "id": 12,
835
+ "title": "Input tokens by model",
836
+ "description": "Tokens per second by model, from agents_tokens_input_total.",
837
+ "gridPos": {
838
+ "h": 8,
839
+ "w": 8,
840
+ "x": 0,
841
+ "y": 28
842
+ },
843
+ "datasource": {
844
+ "type": "prometheus",
845
+ "uid": "prometheus"
846
+ },
847
+ "targets": [
848
+ {
849
+ "datasource": {
850
+ "type": "prometheus",
851
+ "uid": "prometheus"
852
+ },
853
+ "refId": "A",
854
+ "expr": "sum by (gen_ai_request_model) (rate(agents_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
855
+ "legendFormat": "{{gen_ai_request_model}}"
856
+ }
857
+ ],
858
+ "options": {
859
+ "tooltip": {
860
+ "mode": "multi"
861
+ }
862
+ },
863
+ "fieldConfig": {
864
+ "defaults": {
865
+ "unit": "short"
866
+ },
867
+ "overrides": []
868
+ }
869
+ },
870
+ {
871
+ "type": "timeseries",
872
+ "id": 13,
873
+ "title": "Output tokens by model",
874
+ "description": "Tokens per second by model, from agents_tokens_output_total.",
875
+ "gridPos": {
876
+ "h": 8,
877
+ "w": 8,
878
+ "x": 8,
879
+ "y": 28
880
+ },
881
+ "datasource": {
882
+ "type": "prometheus",
883
+ "uid": "prometheus"
884
+ },
885
+ "targets": [
886
+ {
887
+ "datasource": {
888
+ "type": "prometheus",
889
+ "uid": "prometheus"
890
+ },
891
+ "refId": "A",
892
+ "expr": "sum by (gen_ai_request_model) (rate(agents_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
893
+ "legendFormat": "{{gen_ai_request_model}}"
894
+ }
895
+ ],
896
+ "options": {
897
+ "tooltip": {
898
+ "mode": "multi"
899
+ }
900
+ },
901
+ "fieldConfig": {
902
+ "defaults": {
903
+ "unit": "short"
904
+ },
905
+ "overrides": []
906
+ }
907
+ },
908
+ {
909
+ "type": "stat",
910
+ "id": 14,
911
+ "title": "Input tokens",
912
+ "description": "Over the dashboard's time range.",
913
+ "gridPos": {
914
+ "h": 8,
915
+ "w": 4,
916
+ "x": 16,
917
+ "y": 28
918
+ },
919
+ "datasource": {
920
+ "type": "prometheus",
921
+ "uid": "prometheus"
922
+ },
923
+ "targets": [
924
+ {
925
+ "datasource": {
926
+ "type": "prometheus",
927
+ "uid": "prometheus"
928
+ },
929
+ "refId": "A",
930
+ "expr": "sum(increase(agents_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
931
+ "legendFormat": "Input tokens",
932
+ "instant": true,
933
+ "range": false
934
+ }
935
+ ],
936
+ "options": {
937
+ "graphMode": "none",
938
+ "colorMode": "none",
939
+ "reduceOptions": {
940
+ "calcs": [
941
+ "lastNotNull"
942
+ ]
943
+ }
944
+ },
945
+ "fieldConfig": {
946
+ "defaults": {
947
+ "unit": "short",
948
+ "decimals": 0
949
+ },
950
+ "overrides": []
951
+ }
952
+ },
953
+ {
954
+ "type": "stat",
955
+ "id": 15,
956
+ "title": "Output tokens",
957
+ "description": "Over the dashboard's time range.",
958
+ "gridPos": {
959
+ "h": 8,
960
+ "w": 4,
961
+ "x": 20,
962
+ "y": 28
963
+ },
964
+ "datasource": {
965
+ "type": "prometheus",
966
+ "uid": "prometheus"
967
+ },
968
+ "targets": [
969
+ {
970
+ "datasource": {
971
+ "type": "prometheus",
972
+ "uid": "prometheus"
973
+ },
974
+ "refId": "A",
975
+ "expr": "sum(increase(agents_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
976
+ "legendFormat": "Output tokens",
977
+ "instant": true,
978
+ "range": false
979
+ }
980
+ ],
981
+ "options": {
982
+ "graphMode": "none",
983
+ "colorMode": "none",
984
+ "reduceOptions": {
985
+ "calcs": [
986
+ "lastNotNull"
987
+ ]
988
+ }
989
+ },
990
+ "fieldConfig": {
991
+ "defaults": {
992
+ "unit": "short",
993
+ "decimals": 0
994
+ },
995
+ "overrides": []
996
+ }
997
+ }
998
+ ],
999
+ "refresh": "30s",
1000
+ "schemaVersion": 42,
1001
+ "tags": [
1002
+ "ai"
1003
+ ],
1004
+ "templating": {
1005
+ "list": [
1006
+ {
1007
+ "type": "query",
1008
+ "name": "service",
1009
+ "label": "Service",
1010
+ "datasource": {
1011
+ "type": "prometheus",
1012
+ "uid": "prometheus"
1013
+ },
1014
+ "query": "label_values(agents_calls_total, service_name)",
1015
+ "definition": "label_values(agents_calls_total, service_name)",
1016
+ "refresh": 2,
1017
+ "sort": 1,
1018
+ "multi": true,
1019
+ "includeAll": true,
1020
+ "allValue": ".*",
1021
+ "options": []
1022
+ },
1023
+ {
1024
+ "type": "query",
1025
+ "name": "model",
1026
+ "label": "Model",
1027
+ "datasource": {
1028
+ "type": "prometheus",
1029
+ "uid": "prometheus"
1030
+ },
1031
+ "query": "label_values(agents_calls_total, gen_ai_request_model)",
1032
+ "definition": "label_values(agents_calls_total, gen_ai_request_model)",
1033
+ "refresh": 2,
1034
+ "sort": 1,
1035
+ "multi": true,
1036
+ "includeAll": true,
1037
+ "allValue": ".*",
1038
+ "options": []
1039
+ }
1040
+ ]
1041
+ },
1042
+ "time": {
1043
+ "from": "now-6h",
1044
+ "to": "now"
1045
+ },
1046
+ "timepicker": {},
1047
+ "timezone": "browser",
1048
+ "title": "Agents",
1049
+ "uid": "agents-agents",
1050
+ "weekStart": ""
1051
+ }
1052
+ ",
1053
+ }
1054
+ `;
1055
+
1056
+ exports[`AgentDashboard output without rules > default preset 1`] = `
1057
+ {
1058
+ "dashboards/genai-agents.json": "{
1059
+ "annotations": {
1060
+ "list": []
1061
+ },
1062
+ "description": "Calls, errors and latency per model and tool, and token usage per model, from the genai GenAI metrics.",
1063
+ "editable": true,
1064
+ "fiscalYearStartMonth": 0,
1065
+ "graphTooltip": 1,
1066
+ "links": [],
1067
+ "panels": [
1068
+ {
1069
+ "type": "row",
1070
+ "collapsed": false,
1071
+ "title": "Models",
1072
+ "gridPos": {
1073
+ "h": 1,
1074
+ "w": 24,
1075
+ "x": 0,
1076
+ "y": 0
1077
+ },
1078
+ "id": 1,
1079
+ "panels": []
1080
+ },
1081
+ {
1082
+ "type": "timeseries",
1083
+ "id": 2,
1084
+ "title": "Calls by model",
1085
+ "description": "GenAI operations per second, from genai_calls_total.",
1086
+ "gridPos": {
1087
+ "h": 8,
1088
+ "w": 8,
1089
+ "x": 0,
1090
+ "y": 1
1091
+ },
1092
+ "datasource": {
1093
+ "type": "prometheus",
1094
+ "uid": "prometheus"
1095
+ },
1096
+ "targets": [
1097
+ {
1098
+ "datasource": {
1099
+ "type": "prometheus",
1100
+ "uid": "prometheus"
1101
+ },
1102
+ "refId": "A",
1103
+ "expr": "sum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
1104
+ "legendFormat": "{{gen_ai_request_model}}"
1105
+ }
1106
+ ],
1107
+ "options": {},
1108
+ "fieldConfig": {
1109
+ "defaults": {
1110
+ "unit": "reqps"
1111
+ },
1112
+ "overrides": []
1113
+ }
1114
+ },
1115
+ {
1116
+ "type": "timeseries",
1117
+ "id": 3,
1118
+ "title": "Errors by model",
1119
+ "description": "Share of operations that ended with status_code=\\"STATUS_CODE_ERROR\\".",
1120
+ "gridPos": {
1121
+ "h": 8,
1122
+ "w": 8,
1123
+ "x": 8,
1124
+ "y": 1
1125
+ },
1126
+ "datasource": {
1127
+ "type": "prometheus",
1128
+ "uid": "prometheus"
1129
+ },
1130
+ "targets": [
1131
+ {
1132
+ "datasource": {
1133
+ "type": "prometheus",
1134
+ "uid": "prometheus"
1135
+ },
1136
+ "refId": "A",
1137
+ "expr": "(\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_request_model) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
1138
+ "legendFormat": "{{gen_ai_request_model}}"
1139
+ }
1140
+ ],
1141
+ "options": {},
1142
+ "fieldConfig": {
1143
+ "defaults": {
1144
+ "unit": "percentunit",
1145
+ "min": 0
1146
+ },
1147
+ "overrides": []
1148
+ }
1149
+ },
1150
+ {
1151
+ "type": "timeseries",
1152
+ "id": 4,
1153
+ "title": "Latency p95 by model",
1154
+ "description": "From genai_duration_seconds.",
1155
+ "gridPos": {
1156
+ "h": 8,
1157
+ "w": 8,
1158
+ "x": 16,
1159
+ "y": 1
1160
+ },
1161
+ "datasource": {
1162
+ "type": "prometheus",
1163
+ "uid": "prometheus"
1164
+ },
1165
+ "targets": [
1166
+ {
1167
+ "datasource": {
1168
+ "type": "prometheus",
1169
+ "uid": "prometheus"
1170
+ },
1171
+ "refId": "A",
1172
+ "expr": "histogram_quantile(0.95, sum by (le, gen_ai_request_model) (rate(genai_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\"}[$__rate_interval])))",
1173
+ "legendFormat": "{{gen_ai_request_model}}"
1174
+ }
1175
+ ],
1176
+ "options": {},
1177
+ "fieldConfig": {
1178
+ "defaults": {
1179
+ "unit": "s"
1180
+ },
1181
+ "overrides": []
1182
+ }
1183
+ },
1184
+ {
1185
+ "type": "row",
1186
+ "collapsed": false,
1187
+ "title": "Tools",
1188
+ "gridPos": {
1189
+ "h": 1,
1190
+ "w": 24,
1191
+ "x": 0,
1192
+ "y": 9
1193
+ },
1194
+ "id": 5,
1195
+ "panels": []
1196
+ },
1197
+ {
1198
+ "type": "timeseries",
1199
+ "id": 6,
1200
+ "title": "Tool calls",
1201
+ "description": "Operations with a gen_ai.tool.name, per second.",
1202
+ "gridPos": {
1203
+ "h": 8,
1204
+ "w": 8,
1205
+ "x": 0,
1206
+ "y": 10
1207
+ },
1208
+ "datasource": {
1209
+ "type": "prometheus",
1210
+ "uid": "prometheus"
1211
+ },
1212
+ "targets": [
1213
+ {
1214
+ "datasource": {
1215
+ "type": "prometheus",
1216
+ "uid": "prometheus"
1217
+ },
1218
+ "refId": "A",
1219
+ "expr": "sum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
1220
+ "legendFormat": "{{gen_ai_tool_name}}"
1221
+ }
1222
+ ],
1223
+ "options": {},
1224
+ "fieldConfig": {
1225
+ "defaults": {
1226
+ "unit": "reqps"
1227
+ },
1228
+ "overrides": []
1229
+ }
1230
+ },
1231
+ {
1232
+ "type": "timeseries",
1233
+ "id": 7,
1234
+ "title": "Errors by tool",
1235
+ "gridPos": {
1236
+ "h": 8,
1237
+ "w": 8,
1238
+ "x": 8,
1239
+ "y": 10
1240
+ },
1241
+ "datasource": {
1242
+ "type": "prometheus",
1243
+ "uid": "prometheus"
1244
+ },
1245
+ "targets": [
1246
+ {
1247
+ "datasource": {
1248
+ "type": "prometheus",
1249
+ "uid": "prometheus"
1250
+ },
1251
+ "refId": "A",
1252
+ "expr": "(\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))\\nor\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])) * 0\\n)\\n/\\nsum by (gen_ai_tool_name) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval]))",
1253
+ "legendFormat": "{{gen_ai_tool_name}}"
1254
+ }
1255
+ ],
1256
+ "options": {},
1257
+ "fieldConfig": {
1258
+ "defaults": {
1259
+ "unit": "percentunit",
1260
+ "min": 0
1261
+ },
1262
+ "overrides": []
1263
+ }
1264
+ },
1265
+ {
1266
+ "type": "timeseries",
1267
+ "id": 8,
1268
+ "title": "Latency p95 by tool",
1269
+ "gridPos": {
1270
+ "h": 8,
1271
+ "w": 8,
1272
+ "x": 16,
1273
+ "y": 10
1274
+ },
1275
+ "datasource": {
1276
+ "type": "prometheus",
1277
+ "uid": "prometheus"
1278
+ },
1279
+ "targets": [
1280
+ {
1281
+ "datasource": {
1282
+ "type": "prometheus",
1283
+ "uid": "prometheus"
1284
+ },
1285
+ "refId": "A",
1286
+ "expr": "histogram_quantile(0.95, sum by (le, gen_ai_tool_name) (rate(genai_duration_seconds_bucket{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", gen_ai_tool_name!=\\"\\"}[$__rate_interval])))",
1287
+ "legendFormat": "{{gen_ai_tool_name}}"
1288
+ }
1289
+ ],
1290
+ "options": {},
1291
+ "fieldConfig": {
1292
+ "defaults": {
1293
+ "unit": "s"
1294
+ },
1295
+ "overrides": []
1296
+ }
1297
+ },
1298
+ {
1299
+ "type": "row",
1300
+ "collapsed": false,
1301
+ "title": "Errors",
1302
+ "gridPos": {
1303
+ "h": 1,
1304
+ "w": 24,
1305
+ "x": 0,
1306
+ "y": 18
1307
+ },
1308
+ "id": 9,
1309
+ "panels": []
1310
+ },
1311
+ {
1312
+ "type": "timeseries",
1313
+ "id": 10,
1314
+ "title": "Errors by type",
1315
+ "description": "Failed operations per second by error.type.",
1316
+ "gridPos": {
1317
+ "h": 8,
1318
+ "w": 24,
1319
+ "x": 0,
1320
+ "y": 19
1321
+ },
1322
+ "datasource": {
1323
+ "type": "prometheus",
1324
+ "uid": "prometheus"
1325
+ },
1326
+ "targets": [
1327
+ {
1328
+ "datasource": {
1329
+ "type": "prometheus",
1330
+ "uid": "prometheus"
1331
+ },
1332
+ "refId": "A",
1333
+ "expr": "sum by (error_type) (rate(genai_calls_total{service_name=~\\"$service\\", gen_ai_request_model=~\\"$model\\", status_code=\\"STATUS_CODE_ERROR\\"}[$__rate_interval]))",
1334
+ "legendFormat": "{{error_type}}"
1335
+ }
1336
+ ],
1337
+ "options": {},
1338
+ "fieldConfig": {
1339
+ "defaults": {
1340
+ "unit": "reqps"
1341
+ },
1342
+ "overrides": []
1343
+ }
1344
+ },
1345
+ {
1346
+ "type": "row",
1347
+ "collapsed": false,
1348
+ "title": "Tokens",
1349
+ "gridPos": {
1350
+ "h": 1,
1351
+ "w": 24,
1352
+ "x": 0,
1353
+ "y": 27
1354
+ },
1355
+ "id": 11,
1356
+ "panels": []
1357
+ },
1358
+ {
1359
+ "type": "timeseries",
1360
+ "id": 12,
1361
+ "title": "Input tokens by model",
1362
+ "description": "Tokens per second by model, from genai_tokens_input_total.",
1363
+ "gridPos": {
1364
+ "h": 8,
1365
+ "w": 8,
1366
+ "x": 0,
1367
+ "y": 28
1368
+ },
1369
+ "datasource": {
1370
+ "type": "prometheus",
1371
+ "uid": "prometheus"
1372
+ },
1373
+ "targets": [
1374
+ {
1375
+ "datasource": {
1376
+ "type": "prometheus",
1377
+ "uid": "prometheus"
1378
+ },
1379
+ "refId": "A",
1380
+ "expr": "sum by (gen_ai_request_model) (rate(genai_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
1381
+ "legendFormat": "{{gen_ai_request_model}}"
1382
+ }
1383
+ ],
1384
+ "options": {
1385
+ "tooltip": {
1386
+ "mode": "multi"
1387
+ }
1388
+ },
1389
+ "fieldConfig": {
1390
+ "defaults": {
1391
+ "unit": "short"
1392
+ },
1393
+ "overrides": []
1394
+ }
1395
+ },
1396
+ {
1397
+ "type": "timeseries",
1398
+ "id": 13,
1399
+ "title": "Output tokens by model",
1400
+ "description": "Tokens per second by model, from genai_tokens_output_total.",
1401
+ "gridPos": {
1402
+ "h": 8,
1403
+ "w": 8,
1404
+ "x": 8,
1405
+ "y": 28
1406
+ },
1407
+ "datasource": {
1408
+ "type": "prometheus",
1409
+ "uid": "prometheus"
1410
+ },
1411
+ "targets": [
1412
+ {
1413
+ "datasource": {
1414
+ "type": "prometheus",
1415
+ "uid": "prometheus"
1416
+ },
1417
+ "refId": "A",
1418
+ "expr": "sum by (gen_ai_request_model) (rate(genai_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__rate_interval]))",
1419
+ "legendFormat": "{{gen_ai_request_model}}"
1420
+ }
1421
+ ],
1422
+ "options": {
1423
+ "tooltip": {
1424
+ "mode": "multi"
1425
+ }
1426
+ },
1427
+ "fieldConfig": {
1428
+ "defaults": {
1429
+ "unit": "short"
1430
+ },
1431
+ "overrides": []
1432
+ }
1433
+ },
1434
+ {
1435
+ "type": "stat",
1436
+ "id": 14,
1437
+ "title": "Input tokens",
1438
+ "description": "Over the dashboard's time range.",
1439
+ "gridPos": {
1440
+ "h": 8,
1441
+ "w": 4,
1442
+ "x": 16,
1443
+ "y": 28
1444
+ },
1445
+ "datasource": {
1446
+ "type": "prometheus",
1447
+ "uid": "prometheus"
1448
+ },
1449
+ "targets": [
1450
+ {
1451
+ "datasource": {
1452
+ "type": "prometheus",
1453
+ "uid": "prometheus"
1454
+ },
1455
+ "refId": "A",
1456
+ "expr": "sum(increase(genai_tokens_input_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
1457
+ "legendFormat": "Input tokens",
1458
+ "instant": true,
1459
+ "range": false
1460
+ }
1461
+ ],
1462
+ "options": {
1463
+ "graphMode": "none",
1464
+ "colorMode": "none",
1465
+ "reduceOptions": {
1466
+ "calcs": [
1467
+ "lastNotNull"
1468
+ ]
1469
+ }
1470
+ },
1471
+ "fieldConfig": {
1472
+ "defaults": {
1473
+ "unit": "short",
1474
+ "decimals": 0
1475
+ },
1476
+ "overrides": []
1477
+ }
1478
+ },
1479
+ {
1480
+ "type": "stat",
1481
+ "id": 15,
1482
+ "title": "Output tokens",
1483
+ "description": "Over the dashboard's time range.",
1484
+ "gridPos": {
1485
+ "h": 8,
1486
+ "w": 4,
1487
+ "x": 20,
1488
+ "y": 28
1489
+ },
1490
+ "datasource": {
1491
+ "type": "prometheus",
1492
+ "uid": "prometheus"
1493
+ },
1494
+ "targets": [
1495
+ {
1496
+ "datasource": {
1497
+ "type": "prometheus",
1498
+ "uid": "prometheus"
1499
+ },
1500
+ "refId": "A",
1501
+ "expr": "sum(increase(genai_tokens_output_total{gen_ai_request_model=~\\"$model\\"}[$__range]))",
1502
+ "legendFormat": "Output tokens",
1503
+ "instant": true,
1504
+ "range": false
1505
+ }
1506
+ ],
1507
+ "options": {
1508
+ "graphMode": "none",
1509
+ "colorMode": "none",
1510
+ "reduceOptions": {
1511
+ "calcs": [
1512
+ "lastNotNull"
1513
+ ]
1514
+ }
1515
+ },
1516
+ "fieldConfig": {
1517
+ "defaults": {
1518
+ "unit": "short",
1519
+ "decimals": 0
1520
+ },
1521
+ "overrides": []
1522
+ }
1523
+ }
1524
+ ],
1525
+ "refresh": "1m",
1526
+ "schemaVersion": 42,
1527
+ "tags": [
1528
+ "genai",
1529
+ "agents"
1530
+ ],
1531
+ "templating": {
1532
+ "list": [
1533
+ {
1534
+ "type": "query",
1535
+ "name": "service",
1536
+ "label": "Service",
1537
+ "datasource": {
1538
+ "type": "prometheus",
1539
+ "uid": "prometheus"
1540
+ },
1541
+ "query": "label_values(genai_calls_total, service_name)",
1542
+ "definition": "label_values(genai_calls_total, service_name)",
1543
+ "refresh": 2,
1544
+ "sort": 1,
1545
+ "multi": true,
1546
+ "includeAll": true,
1547
+ "allValue": ".*",
1548
+ "options": []
1549
+ },
1550
+ {
1551
+ "type": "query",
1552
+ "name": "model",
1553
+ "label": "Model",
1554
+ "datasource": {
1555
+ "type": "prometheus",
1556
+ "uid": "prometheus"
1557
+ },
1558
+ "query": "label_values(genai_calls_total, gen_ai_request_model)",
1559
+ "definition": "label_values(genai_calls_total, gen_ai_request_model)",
1560
+ "refresh": 2,
1561
+ "sort": 1,
1562
+ "multi": true,
1563
+ "includeAll": true,
1564
+ "allValue": ".*",
1565
+ "options": []
1566
+ }
1567
+ ]
1568
+ },
1569
+ "time": {
1570
+ "from": "now-6h",
1571
+ "to": "now"
1572
+ },
1573
+ "timepicker": {},
1574
+ "timezone": "browser",
1575
+ "title": "Agents: models, tools and tokens",
1576
+ "uid": "genai-agents",
1577
+ "weekStart": ""
1578
+ }
1579
+ ",
1580
+ }
1581
+ `;