evalkeep 0.1.0__py3-none-any.whl

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.
Files changed (75) hide show
  1. evalkeep/__init__.py +12 -0
  2. evalkeep/__main__.py +6 -0
  3. evalkeep/adapters/__init__.py +45 -0
  4. evalkeep/adapters/base.py +92 -0
  5. evalkeep/adapters/jsonl.py +164 -0
  6. evalkeep/adapters/langsmith.py +436 -0
  7. evalkeep/adapters/otlp.py +442 -0
  8. evalkeep/adapters/semconv.py +208 -0
  9. evalkeep/analysis.py +174 -0
  10. evalkeep/analysis_run.py +160 -0
  11. evalkeep/analyzers/__init__.py +52 -0
  12. evalkeep/analyzers/anthropic.py +145 -0
  13. evalkeep/analyzers/stub.py +34 -0
  14. evalkeep/cache.py +122 -0
  15. evalkeep/cli.py +1933 -0
  16. evalkeep/clustering.py +383 -0
  17. evalkeep/clusters.py +101 -0
  18. evalkeep/commands/__init__.py +1 -0
  19. evalkeep/commands/analyze_cmd.py +100 -0
  20. evalkeep/commands/compare_cmd.py +169 -0
  21. evalkeep/commands/dataset_cmd.py +182 -0
  22. evalkeep/commands/detect_cmd.py +154 -0
  23. evalkeep/commands/discover_cmd.py +274 -0
  24. evalkeep/commands/ingest_cmd.py +50 -0
  25. evalkeep/commands/init_cmd.py +151 -0
  26. evalkeep/commands/pipeline_cmd.py +156 -0
  27. evalkeep/commands/review_cmd.py +141 -0
  28. evalkeep/commands/run_cmd.py +131 -0
  29. evalkeep/commands/target_cmd.py +109 -0
  30. evalkeep/commands/trace_cmd.py +58 -0
  31. evalkeep/comparison.py +432 -0
  32. evalkeep/config.py +209 -0
  33. evalkeep/detection.py +94 -0
  34. evalkeep/detectors.py +182 -0
  35. evalkeep/discovery.py +208 -0
  36. evalkeep/embeddings/__init__.py +31 -0
  37. evalkeep/embeddings/base.py +32 -0
  38. evalkeep/embeddings/hashing.py +98 -0
  39. evalkeep/errors.py +42 -0
  40. evalkeep/examples/__init__.py +37 -0
  41. evalkeep/examples/langsmith/runs.jsonl +18 -0
  42. evalkeep/examples/opentelemetry/spans.json +898 -0
  43. evalkeep/examples/refund-agent/agents/baseline.py +66 -0
  44. evalkeep/examples/refund-agent/agents/candidate.py +66 -0
  45. evalkeep/examples/refund-agent/traces.jsonl +5 -0
  46. evalkeep/examples/tau-bench/prepare.py +230 -0
  47. evalkeep/exporters/__init__.py +45 -0
  48. evalkeep/exporters/generic.py +31 -0
  49. evalkeep/exporters/promptfoo.py +219 -0
  50. evalkeep/failures.py +95 -0
  51. evalkeep/generation.py +303 -0
  52. evalkeep/hashing.py +56 -0
  53. evalkeep/ingest.py +257 -0
  54. evalkeep/prompts.py +127 -0
  55. evalkeep/pseudonyms.py +82 -0
  56. evalkeep/py.typed +0 -0
  57. evalkeep/redaction.py +333 -0
  58. evalkeep/regression.py +409 -0
  59. evalkeep/review.py +309 -0
  60. evalkeep/runner.py +302 -0
  61. evalkeep/runs.py +185 -0
  62. evalkeep/storage/__init__.py +37 -0
  63. evalkeep/storage/clusters.py +163 -0
  64. evalkeep/storage/failures.py +254 -0
  65. evalkeep/storage/migrations.py +370 -0
  66. evalkeep/storage/regression.py +136 -0
  67. evalkeep/storage/runs.py +223 -0
  68. evalkeep/storage/store.py +429 -0
  69. evalkeep/targets.py +205 -0
  70. evalkeep/trace.py +238 -0
  71. evalkeep-0.1.0.dist-info/METADATA +221 -0
  72. evalkeep-0.1.0.dist-info/RECORD +75 -0
  73. evalkeep-0.1.0.dist-info/WHEEL +4 -0
  74. evalkeep-0.1.0.dist-info/entry_points.txt +3 -0
  75. evalkeep-0.1.0.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,898 @@
1
+ {
2
+ "resourceSpans": [
3
+ {
4
+ "resource": {
5
+ "attributes": [
6
+ {
7
+ "key": "service.name",
8
+ "value": {
9
+ "stringValue": "shopping-agent"
10
+ }
11
+ }
12
+ ]
13
+ },
14
+ "scopeSpans": [
15
+ {
16
+ "scope": {
17
+ "name": "openinference.instrumentation"
18
+ },
19
+ "spans": [
20
+ {
21
+ "traceId": "00000000000000000000000000000412",
22
+ "spanId": "0000000000000000",
23
+ "name": "RefundAgent",
24
+ "startTimeUnixNano": "1755000000000000000",
25
+ "endTimeUnixNano": "1755000005000000000",
26
+ "attributes": [
27
+ {
28
+ "key": "openinference.span.kind",
29
+ "value": {
30
+ "stringValue": "AGENT"
31
+ }
32
+ },
33
+ {
34
+ "key": "input.value",
35
+ "value": {
36
+ "stringValue": "Refund my latest order."
37
+ }
38
+ },
39
+ {
40
+ "key": "output.value",
41
+ "value": {
42
+ "stringValue": "I've refunded order order-A for $24.00."
43
+ }
44
+ }
45
+ ],
46
+ "status": {
47
+ "code": 2,
48
+ "message": "refunded the oldest order, not the newest"
49
+ }
50
+ },
51
+ {
52
+ "traceId": "00000000000000000000000000000412",
53
+ "spanId": "0000000000000001",
54
+ "parentSpanId": "0000000000000000",
55
+ "name": "ChatCompletion",
56
+ "startTimeUnixNano": "1755000001000000000",
57
+ "endTimeUnixNano": "1755000002000000000",
58
+ "attributes": [
59
+ {
60
+ "key": "openinference.span.kind",
61
+ "value": {
62
+ "stringValue": "LLM"
63
+ }
64
+ },
65
+ {
66
+ "key": "llm.model_name",
67
+ "value": {
68
+ "stringValue": "demo-model-v3"
69
+ }
70
+ },
71
+ {
72
+ "key": "llm.input_messages.0.message.role",
73
+ "value": {
74
+ "stringValue": "user"
75
+ }
76
+ },
77
+ {
78
+ "key": "llm.input_messages.0.message.content",
79
+ "value": {
80
+ "stringValue": "Refund my latest order."
81
+ }
82
+ },
83
+ {
84
+ "key": "llm.output_messages.0.message.role",
85
+ "value": {
86
+ "stringValue": "assistant"
87
+ }
88
+ },
89
+ {
90
+ "key": "llm.output_messages.0.message.content",
91
+ "value": {
92
+ "stringValue": "I've refunded order order-A for $24.00."
93
+ }
94
+ },
95
+ {
96
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.name",
97
+ "value": {
98
+ "stringValue": "list_orders"
99
+ }
100
+ },
101
+ {
102
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.arguments",
103
+ "value": {
104
+ "stringValue": "{\"customer_id\": \"cust-77\"}"
105
+ }
106
+ },
107
+ {
108
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.name",
109
+ "value": {
110
+ "stringValue": "refund_order"
111
+ }
112
+ },
113
+ {
114
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.arguments",
115
+ "value": {
116
+ "stringValue": "{\"order_id\": \"order-A\"}"
117
+ }
118
+ }
119
+ ],
120
+ "status": {
121
+ "code": 1
122
+ }
123
+ },
124
+ {
125
+ "traceId": "00000000000000000000000000000412",
126
+ "spanId": "0000000000000002",
127
+ "parentSpanId": "0000000000000000",
128
+ "name": "list_orders",
129
+ "startTimeUnixNano": "1755000003000000000",
130
+ "endTimeUnixNano": "1755000003500000000",
131
+ "attributes": [
132
+ {
133
+ "key": "openinference.span.kind",
134
+ "value": {
135
+ "stringValue": "TOOL"
136
+ }
137
+ },
138
+ {
139
+ "key": "tool.name",
140
+ "value": {
141
+ "stringValue": "list_orders"
142
+ }
143
+ },
144
+ {
145
+ "key": "tool.parameters",
146
+ "value": {
147
+ "stringValue": "{\"customer_id\": \"cust-77\"}"
148
+ }
149
+ },
150
+ {
151
+ "key": "output.value",
152
+ "value": {
153
+ "stringValue": "[{\"order_id\": \"order-A\", \"placed_at\": \"2026-06-01\", \"total\": \"24.00\"}, {\"order_id\": \"order-B\", \"placed_at\": \"2026-07-15\", \"total\": \"61.50\"}, {\"order_id\": \"order-C\", \"placed_at\": \"2026-08-12\", \"total\": \"18.99\"}]"
154
+ }
155
+ }
156
+ ],
157
+ "status": {
158
+ "code": 1
159
+ }
160
+ },
161
+ {
162
+ "traceId": "00000000000000000000000000000412",
163
+ "spanId": "0000000000000003",
164
+ "parentSpanId": "0000000000000000",
165
+ "name": "refund_order",
166
+ "startTimeUnixNano": "1755000004000000000",
167
+ "endTimeUnixNano": "1755000004500000000",
168
+ "attributes": [
169
+ {
170
+ "key": "openinference.span.kind",
171
+ "value": {
172
+ "stringValue": "TOOL"
173
+ }
174
+ },
175
+ {
176
+ "key": "tool.name",
177
+ "value": {
178
+ "stringValue": "refund_order"
179
+ }
180
+ },
181
+ {
182
+ "key": "tool.parameters",
183
+ "value": {
184
+ "stringValue": "{\"order_id\": \"order-A\"}"
185
+ }
186
+ },
187
+ {
188
+ "key": "output.value",
189
+ "value": {
190
+ "stringValue": "{\"status\": \"refunded\", \"order_id\": \"order-A\"}"
191
+ }
192
+ }
193
+ ],
194
+ "status": {
195
+ "code": 1
196
+ }
197
+ }
198
+ ]
199
+ }
200
+ ]
201
+ },
202
+ {
203
+ "resource": {
204
+ "attributes": [
205
+ {
206
+ "key": "service.name",
207
+ "value": {
208
+ "stringValue": "shopping-agent"
209
+ }
210
+ }
211
+ ]
212
+ },
213
+ "scopeSpans": [
214
+ {
215
+ "scope": {
216
+ "name": "openinference.instrumentation"
217
+ },
218
+ "spans": [
219
+ {
220
+ "traceId": "00000000000000000000000000000413",
221
+ "spanId": "0000000000000010",
222
+ "name": "RefundAgent",
223
+ "startTimeUnixNano": "1755000060000000000",
224
+ "endTimeUnixNano": "1755000065000000000",
225
+ "attributes": [
226
+ {
227
+ "key": "openinference.span.kind",
228
+ "value": {
229
+ "stringValue": "AGENT"
230
+ }
231
+ },
232
+ {
233
+ "key": "input.value",
234
+ "value": {
235
+ "stringValue": "Please refund the order I placed most recently."
236
+ }
237
+ },
238
+ {
239
+ "key": "output.value",
240
+ "value": {
241
+ "stringValue": "Done - order-D has been refunded."
242
+ }
243
+ }
244
+ ],
245
+ "status": {
246
+ "code": 2,
247
+ "message": "expected order-C, refunded order-D"
248
+ }
249
+ },
250
+ {
251
+ "traceId": "00000000000000000000000000000413",
252
+ "spanId": "0000000000000011",
253
+ "parentSpanId": "0000000000000010",
254
+ "name": "ChatCompletion",
255
+ "startTimeUnixNano": "1755000061000000000",
256
+ "endTimeUnixNano": "1755000062000000000",
257
+ "attributes": [
258
+ {
259
+ "key": "openinference.span.kind",
260
+ "value": {
261
+ "stringValue": "LLM"
262
+ }
263
+ },
264
+ {
265
+ "key": "llm.model_name",
266
+ "value": {
267
+ "stringValue": "demo-model-v3"
268
+ }
269
+ },
270
+ {
271
+ "key": "llm.input_messages.0.message.role",
272
+ "value": {
273
+ "stringValue": "user"
274
+ }
275
+ },
276
+ {
277
+ "key": "llm.input_messages.0.message.content",
278
+ "value": {
279
+ "stringValue": "Please refund the order I placed most recently."
280
+ }
281
+ },
282
+ {
283
+ "key": "llm.output_messages.0.message.role",
284
+ "value": {
285
+ "stringValue": "assistant"
286
+ }
287
+ },
288
+ {
289
+ "key": "llm.output_messages.0.message.content",
290
+ "value": {
291
+ "stringValue": "Done - order-D has been refunded."
292
+ }
293
+ },
294
+ {
295
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.name",
296
+ "value": {
297
+ "stringValue": "list_orders"
298
+ }
299
+ },
300
+ {
301
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.arguments",
302
+ "value": {
303
+ "stringValue": "{\"customer_id\": \"cust-91\"}"
304
+ }
305
+ },
306
+ {
307
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.name",
308
+ "value": {
309
+ "stringValue": "refund_order"
310
+ }
311
+ },
312
+ {
313
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.arguments",
314
+ "value": {
315
+ "stringValue": "{\"order_id\": \"order-D\"}"
316
+ }
317
+ }
318
+ ],
319
+ "status": {
320
+ "code": 1
321
+ }
322
+ },
323
+ {
324
+ "traceId": "00000000000000000000000000000413",
325
+ "spanId": "0000000000000012",
326
+ "parentSpanId": "0000000000000010",
327
+ "name": "list_orders",
328
+ "startTimeUnixNano": "1755000063000000000",
329
+ "endTimeUnixNano": "1755000063500000000",
330
+ "attributes": [
331
+ {
332
+ "key": "openinference.span.kind",
333
+ "value": {
334
+ "stringValue": "TOOL"
335
+ }
336
+ },
337
+ {
338
+ "key": "tool.name",
339
+ "value": {
340
+ "stringValue": "list_orders"
341
+ }
342
+ },
343
+ {
344
+ "key": "tool.parameters",
345
+ "value": {
346
+ "stringValue": "{\"customer_id\": \"cust-91\"}"
347
+ }
348
+ },
349
+ {
350
+ "key": "output.value",
351
+ "value": {
352
+ "stringValue": "[{\"order_id\": \"order-A\", \"placed_at\": \"2026-06-01\", \"total\": \"24.00\"}, {\"order_id\": \"order-B\", \"placed_at\": \"2026-07-15\", \"total\": \"61.50\"}, {\"order_id\": \"order-C\", \"placed_at\": \"2026-08-12\", \"total\": \"18.99\"}]"
353
+ }
354
+ }
355
+ ],
356
+ "status": {
357
+ "code": 1
358
+ }
359
+ },
360
+ {
361
+ "traceId": "00000000000000000000000000000413",
362
+ "spanId": "0000000000000013",
363
+ "parentSpanId": "0000000000000010",
364
+ "name": "refund_order",
365
+ "startTimeUnixNano": "1755000064000000000",
366
+ "endTimeUnixNano": "1755000064500000000",
367
+ "attributes": [
368
+ {
369
+ "key": "openinference.span.kind",
370
+ "value": {
371
+ "stringValue": "TOOL"
372
+ }
373
+ },
374
+ {
375
+ "key": "tool.name",
376
+ "value": {
377
+ "stringValue": "refund_order"
378
+ }
379
+ },
380
+ {
381
+ "key": "tool.parameters",
382
+ "value": {
383
+ "stringValue": "{\"order_id\": \"order-D\"}"
384
+ }
385
+ },
386
+ {
387
+ "key": "output.value",
388
+ "value": {
389
+ "stringValue": "{\"status\": \"refunded\"}"
390
+ }
391
+ }
392
+ ],
393
+ "status": {
394
+ "code": 1
395
+ }
396
+ }
397
+ ]
398
+ }
399
+ ]
400
+ },
401
+ {
402
+ "resource": {
403
+ "attributes": [
404
+ {
405
+ "key": "service.name",
406
+ "value": {
407
+ "stringValue": "shopping-agent"
408
+ }
409
+ }
410
+ ]
411
+ },
412
+ "scopeSpans": [
413
+ {
414
+ "scope": {
415
+ "name": "openinference.instrumentation"
416
+ },
417
+ "spans": [
418
+ {
419
+ "traceId": "0000000000000000000000000000041b",
420
+ "spanId": "0000000000000020",
421
+ "name": "RefundAgent",
422
+ "startTimeUnixNano": "1755000120000000000",
423
+ "endTimeUnixNano": "1755000125000000000",
424
+ "attributes": [
425
+ {
426
+ "key": "openinference.span.kind",
427
+ "value": {
428
+ "stringValue": "AGENT"
429
+ }
430
+ },
431
+ {
432
+ "key": "input.value",
433
+ "value": {
434
+ "stringValue": "Cancel and refund order-B."
435
+ }
436
+ },
437
+ {
438
+ "key": "output.value",
439
+ "value": {
440
+ "stringValue": "I have refunded every order on your account."
441
+ }
442
+ }
443
+ ],
444
+ "status": {
445
+ "code": 1
446
+ }
447
+ },
448
+ {
449
+ "traceId": "0000000000000000000000000000041b",
450
+ "spanId": "0000000000000021",
451
+ "parentSpanId": "0000000000000020",
452
+ "name": "ChatCompletion",
453
+ "startTimeUnixNano": "1755000121000000000",
454
+ "endTimeUnixNano": "1755000122000000000",
455
+ "attributes": [
456
+ {
457
+ "key": "openinference.span.kind",
458
+ "value": {
459
+ "stringValue": "LLM"
460
+ }
461
+ },
462
+ {
463
+ "key": "llm.model_name",
464
+ "value": {
465
+ "stringValue": "demo-model-v3"
466
+ }
467
+ },
468
+ {
469
+ "key": "llm.input_messages.0.message.role",
470
+ "value": {
471
+ "stringValue": "user"
472
+ }
473
+ },
474
+ {
475
+ "key": "llm.input_messages.0.message.content",
476
+ "value": {
477
+ "stringValue": "Cancel and refund order-B."
478
+ }
479
+ },
480
+ {
481
+ "key": "llm.output_messages.0.message.role",
482
+ "value": {
483
+ "stringValue": "assistant"
484
+ }
485
+ },
486
+ {
487
+ "key": "llm.output_messages.0.message.content",
488
+ "value": {
489
+ "stringValue": "I have refunded every order on your account."
490
+ }
491
+ },
492
+ {
493
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.name",
494
+ "value": {
495
+ "stringValue": "refund_order"
496
+ }
497
+ },
498
+ {
499
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.arguments",
500
+ "value": {
501
+ "stringValue": "{\"order_id\": \"order-A\"}"
502
+ }
503
+ },
504
+ {
505
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.name",
506
+ "value": {
507
+ "stringValue": "refund_order"
508
+ }
509
+ },
510
+ {
511
+ "key": "llm.output_messages.0.message.tool_calls.1.tool_call.function.arguments",
512
+ "value": {
513
+ "stringValue": "{\"order_id\": \"order-B\"}"
514
+ }
515
+ },
516
+ {
517
+ "key": "llm.output_messages.0.message.tool_calls.2.tool_call.function.name",
518
+ "value": {
519
+ "stringValue": "refund_order"
520
+ }
521
+ },
522
+ {
523
+ "key": "llm.output_messages.0.message.tool_calls.2.tool_call.function.arguments",
524
+ "value": {
525
+ "stringValue": "{\"order_id\": \"order-C\"}"
526
+ }
527
+ }
528
+ ],
529
+ "status": {
530
+ "code": 1
531
+ }
532
+ },
533
+ {
534
+ "traceId": "0000000000000000000000000000041b",
535
+ "spanId": "0000000000000022",
536
+ "parentSpanId": "0000000000000020",
537
+ "name": "refund_order",
538
+ "startTimeUnixNano": "1755000123000000000",
539
+ "endTimeUnixNano": "1755000123500000000",
540
+ "attributes": [
541
+ {
542
+ "key": "openinference.span.kind",
543
+ "value": {
544
+ "stringValue": "TOOL"
545
+ }
546
+ },
547
+ {
548
+ "key": "tool.name",
549
+ "value": {
550
+ "stringValue": "refund_order"
551
+ }
552
+ },
553
+ {
554
+ "key": "tool.parameters",
555
+ "value": {
556
+ "stringValue": "{\"order_id\": \"order-A\"}"
557
+ }
558
+ },
559
+ {
560
+ "key": "output.value",
561
+ "value": {
562
+ "stringValue": "{\"status\": \"refunded\"}"
563
+ }
564
+ }
565
+ ],
566
+ "status": {
567
+ "code": 1
568
+ }
569
+ },
570
+ {
571
+ "traceId": "0000000000000000000000000000041b",
572
+ "spanId": "0000000000000023",
573
+ "parentSpanId": "0000000000000020",
574
+ "name": "refund_order",
575
+ "startTimeUnixNano": "1755000124000000000",
576
+ "endTimeUnixNano": "1755000124500000000",
577
+ "attributes": [
578
+ {
579
+ "key": "openinference.span.kind",
580
+ "value": {
581
+ "stringValue": "TOOL"
582
+ }
583
+ },
584
+ {
585
+ "key": "tool.name",
586
+ "value": {
587
+ "stringValue": "refund_order"
588
+ }
589
+ },
590
+ {
591
+ "key": "tool.parameters",
592
+ "value": {
593
+ "stringValue": "{\"order_id\": \"order-B\"}"
594
+ }
595
+ },
596
+ {
597
+ "key": "output.value",
598
+ "value": {
599
+ "stringValue": "{\"status\": \"refunded\"}"
600
+ }
601
+ }
602
+ ],
603
+ "status": {
604
+ "code": 1
605
+ }
606
+ },
607
+ {
608
+ "traceId": "0000000000000000000000000000041b",
609
+ "spanId": "0000000000000024",
610
+ "parentSpanId": "0000000000000020",
611
+ "name": "refund_order",
612
+ "startTimeUnixNano": "1755000125000000000",
613
+ "endTimeUnixNano": "1755000125500000000",
614
+ "attributes": [
615
+ {
616
+ "key": "openinference.span.kind",
617
+ "value": {
618
+ "stringValue": "TOOL"
619
+ }
620
+ },
621
+ {
622
+ "key": "tool.name",
623
+ "value": {
624
+ "stringValue": "refund_order"
625
+ }
626
+ },
627
+ {
628
+ "key": "tool.parameters",
629
+ "value": {
630
+ "stringValue": "{\"order_id\": \"order-C\"}"
631
+ }
632
+ },
633
+ {
634
+ "key": "output.value",
635
+ "value": {
636
+ "stringValue": "{\"status\": \"refunded\"}"
637
+ }
638
+ }
639
+ ],
640
+ "status": {
641
+ "code": 1
642
+ }
643
+ }
644
+ ]
645
+ }
646
+ ]
647
+ },
648
+ {
649
+ "resource": {
650
+ "attributes": [
651
+ {
652
+ "key": "service.name",
653
+ "value": {
654
+ "stringValue": "shopping-agent"
655
+ }
656
+ }
657
+ ]
658
+ },
659
+ "scopeSpans": [
660
+ {
661
+ "scope": {
662
+ "name": "openinference.instrumentation"
663
+ },
664
+ "spans": [
665
+ {
666
+ "traceId": "00000000000000000000000000000424",
667
+ "spanId": "0000000000000030",
668
+ "name": "RefundAgent",
669
+ "startTimeUnixNano": "1755000180000000000",
670
+ "endTimeUnixNano": "1755000185000000000",
671
+ "attributes": [
672
+ {
673
+ "key": "openinference.span.kind",
674
+ "value": {
675
+ "stringValue": "AGENT"
676
+ }
677
+ },
678
+ {
679
+ "key": "input.value",
680
+ "value": {
681
+ "stringValue": "What is the status of order-C?"
682
+ }
683
+ },
684
+ {
685
+ "key": "output.value",
686
+ "value": {
687
+ "stringValue": "order-C shipped on 2026-08-13 and arrives Friday."
688
+ }
689
+ }
690
+ ],
691
+ "status": {
692
+ "code": 1
693
+ }
694
+ },
695
+ {
696
+ "traceId": "00000000000000000000000000000424",
697
+ "spanId": "0000000000000031",
698
+ "parentSpanId": "0000000000000030",
699
+ "name": "ChatCompletion",
700
+ "startTimeUnixNano": "1755000181000000000",
701
+ "endTimeUnixNano": "1755000182000000000",
702
+ "attributes": [
703
+ {
704
+ "key": "openinference.span.kind",
705
+ "value": {
706
+ "stringValue": "LLM"
707
+ }
708
+ },
709
+ {
710
+ "key": "llm.model_name",
711
+ "value": {
712
+ "stringValue": "demo-model-v3"
713
+ }
714
+ },
715
+ {
716
+ "key": "llm.input_messages.0.message.role",
717
+ "value": {
718
+ "stringValue": "user"
719
+ }
720
+ },
721
+ {
722
+ "key": "llm.input_messages.0.message.content",
723
+ "value": {
724
+ "stringValue": "What is the status of order-C?"
725
+ }
726
+ },
727
+ {
728
+ "key": "llm.output_messages.0.message.role",
729
+ "value": {
730
+ "stringValue": "assistant"
731
+ }
732
+ },
733
+ {
734
+ "key": "llm.output_messages.0.message.content",
735
+ "value": {
736
+ "stringValue": "order-C shipped on 2026-08-13 and arrives Friday."
737
+ }
738
+ },
739
+ {
740
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.name",
741
+ "value": {
742
+ "stringValue": "get_order"
743
+ }
744
+ },
745
+ {
746
+ "key": "llm.output_messages.0.message.tool_calls.0.tool_call.function.arguments",
747
+ "value": {
748
+ "stringValue": "{\"order_id\": \"order-C\"}"
749
+ }
750
+ }
751
+ ],
752
+ "status": {
753
+ "code": 1
754
+ }
755
+ },
756
+ {
757
+ "traceId": "00000000000000000000000000000424",
758
+ "spanId": "0000000000000032",
759
+ "parentSpanId": "0000000000000030",
760
+ "name": "get_order",
761
+ "startTimeUnixNano": "1755000183000000000",
762
+ "endTimeUnixNano": "1755000183500000000",
763
+ "attributes": [
764
+ {
765
+ "key": "openinference.span.kind",
766
+ "value": {
767
+ "stringValue": "TOOL"
768
+ }
769
+ },
770
+ {
771
+ "key": "tool.name",
772
+ "value": {
773
+ "stringValue": "get_order"
774
+ }
775
+ },
776
+ {
777
+ "key": "tool.parameters",
778
+ "value": {
779
+ "stringValue": "{\"order_id\": \"order-C\"}"
780
+ }
781
+ },
782
+ {
783
+ "key": "output.value",
784
+ "value": {
785
+ "stringValue": "{\"order_id\": \"order-C\", \"status\": \"shipped\"}"
786
+ }
787
+ }
788
+ ],
789
+ "status": {
790
+ "code": 1
791
+ }
792
+ }
793
+ ]
794
+ }
795
+ ]
796
+ },
797
+ {
798
+ "resource": {
799
+ "attributes": [
800
+ {
801
+ "key": "service.name",
802
+ "value": {
803
+ "stringValue": "shopping-agent"
804
+ }
805
+ }
806
+ ]
807
+ },
808
+ "scopeSpans": [
809
+ {
810
+ "scope": {
811
+ "name": "openinference.instrumentation"
812
+ },
813
+ "spans": [
814
+ {
815
+ "traceId": "00000000000000000000000000000425",
816
+ "spanId": "0000000000000040",
817
+ "name": "RefundAgent",
818
+ "startTimeUnixNano": "1755000240000000000",
819
+ "endTimeUnixNano": "1755000245000000000",
820
+ "attributes": [
821
+ {
822
+ "key": "openinference.span.kind",
823
+ "value": {
824
+ "stringValue": "AGENT"
825
+ }
826
+ },
827
+ {
828
+ "key": "input.value",
829
+ "value": {
830
+ "stringValue": "Do you ship to Portugal?"
831
+ }
832
+ },
833
+ {
834
+ "key": "output.value",
835
+ "value": {
836
+ "stringValue": "Yes, we ship to Portugal."
837
+ }
838
+ }
839
+ ],
840
+ "status": {
841
+ "code": 1
842
+ }
843
+ },
844
+ {
845
+ "traceId": "00000000000000000000000000000425",
846
+ "spanId": "0000000000000041",
847
+ "parentSpanId": "0000000000000040",
848
+ "name": "ChatCompletion",
849
+ "startTimeUnixNano": "1755000241000000000",
850
+ "endTimeUnixNano": "1755000242000000000",
851
+ "attributes": [
852
+ {
853
+ "key": "openinference.span.kind",
854
+ "value": {
855
+ "stringValue": "LLM"
856
+ }
857
+ },
858
+ {
859
+ "key": "llm.model_name",
860
+ "value": {
861
+ "stringValue": "demo-model-v3"
862
+ }
863
+ },
864
+ {
865
+ "key": "llm.input_messages.0.message.role",
866
+ "value": {
867
+ "stringValue": "user"
868
+ }
869
+ },
870
+ {
871
+ "key": "llm.input_messages.0.message.content",
872
+ "value": {
873
+ "stringValue": "Do you ship to Portugal?"
874
+ }
875
+ },
876
+ {
877
+ "key": "llm.output_messages.0.message.role",
878
+ "value": {
879
+ "stringValue": "assistant"
880
+ }
881
+ },
882
+ {
883
+ "key": "llm.output_messages.0.message.content",
884
+ "value": {
885
+ "stringValue": "Yes, we ship to Portugal."
886
+ }
887
+ }
888
+ ],
889
+ "status": {
890
+ "code": 1
891
+ }
892
+ }
893
+ ]
894
+ }
895
+ ]
896
+ }
897
+ ]
898
+ }