arize-phoenix 11.32.0__py3-none-any.whl → 11.33.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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

Files changed (55) hide show
  1. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/METADATA +1 -1
  2. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/RECORD +49 -42
  3. phoenix/inferences/inferences.py +1 -2
  4. phoenix/server/api/context.py +20 -0
  5. phoenix/server/api/dataloaders/__init__.py +20 -0
  6. phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +50 -0
  7. phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -1
  8. phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +47 -0
  9. phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +77 -0
  10. phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +59 -0
  11. phoenix/server/api/dataloaders/experiment_repetition_counts.py +39 -0
  12. phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +64 -0
  13. phoenix/server/api/helpers/playground_clients.py +4 -0
  14. phoenix/server/api/helpers/prompts/models.py +16 -18
  15. phoenix/server/api/mutations/prompt_label_mutations.py +67 -58
  16. phoenix/server/api/queries.py +52 -37
  17. phoenix/server/api/routers/v1/experiment_runs.py +1 -1
  18. phoenix/server/api/routers/v1/experiments.py +1 -1
  19. phoenix/server/api/types/DatasetExample.py +49 -1
  20. phoenix/server/api/types/Experiment.py +12 -2
  21. phoenix/server/api/types/ExperimentComparison.py +3 -9
  22. phoenix/server/api/types/ExperimentRepeatedRunGroup.py +146 -0
  23. phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +9 -0
  24. phoenix/server/api/types/ExperimentRun.py +12 -19
  25. phoenix/server/api/types/Prompt.py +11 -0
  26. phoenix/server/api/types/PromptLabel.py +2 -19
  27. phoenix/server/api/types/node.py +10 -0
  28. phoenix/server/app.py +22 -2
  29. phoenix/server/cost_tracking/model_cost_manifest.json +1 -1
  30. phoenix/server/static/.vite/manifest.json +43 -43
  31. phoenix/server/static/assets/components-YTHUASXI.js +5778 -0
  32. phoenix/server/static/assets/{index-D1FDMBMV.js → index-CugQp26L.js} +12 -21
  33. phoenix/server/static/assets/pages-4Qu8GNlt.js +9159 -0
  34. phoenix/server/static/assets/vendor-BGzfc4EU.css +1 -0
  35. phoenix/server/static/assets/vendor-CRRxHwSp.js +903 -0
  36. phoenix/server/static/assets/{vendor-arizeai-DsYDNOqt.js → vendor-arizeai-CUN6lRd9.js} +4 -4
  37. phoenix/server/static/assets/vendor-codemirror-sJXwoqrE.js +25 -0
  38. phoenix/server/static/assets/{vendor-recharts-BTHn5Y2R.js → vendor-recharts-BT_PeGhc.js} +2 -2
  39. phoenix/server/static/assets/{vendor-shiki-BAcocHFl.js → vendor-shiki-1F3op0QC.js} +1 -1
  40. phoenix/session/client.py +55 -1
  41. phoenix/session/data_extractor.py +5 -0
  42. phoenix/session/evaluation.py +8 -4
  43. phoenix/session/session.py +13 -0
  44. phoenix/trace/projects.py +1 -2
  45. phoenix/version.py +1 -1
  46. phoenix/server/static/assets/components-Cs9c4Nxp.js +0 -5698
  47. phoenix/server/static/assets/pages-Cbj9SjBx.js +0 -8928
  48. phoenix/server/static/assets/vendor-CqDb5u4o.css +0 -1
  49. phoenix/server/static/assets/vendor-RdRDaQiR.js +0 -905
  50. phoenix/server/static/assets/vendor-codemirror-BzJDUbEx.js +0 -25
  51. phoenix/utilities/deprecation.py +0 -31
  52. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/WHEEL +0 -0
  53. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/entry_points.txt +0 -0
  54. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/licenses/IP_NOTICE +0 -0
  55. {arize_phoenix-11.32.0.dist-info → arize_phoenix-11.33.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 11.32.0
3
+ Version: 11.33.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -6,7 +6,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
6
6
  phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
7
7
  phoenix/services.py,sha256=ngkyKGVatX3cO2WJdo2hKdaVKP-xJCMvqthvga6kJss,5196
8
8
  phoenix/settings.py,sha256=2kHfT3BNOVd4dAO1bq-syEQbHSG8oX2-7NhOwK2QREk,896
9
- phoenix/version.py,sha256=wTfhUKXJGuW6Cd3BIdlJ2UX7HyglNmvKt33CteybMx8,24
9
+ phoenix/version.py,sha256=xS5dPjVBtFwJKeFvYvMVblVOWUcPzZ-FdUN6AhQ-9K8,24
10
10
  phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
12
12
  phoenix/core/model.py,sha256=qBFraOtmwCCnWJltKNP18DDG0mULXigytlFsa6YOz6k,4837
@@ -70,7 +70,7 @@ phoenix/experiments/evaluators/utils.py,sha256=2YoVyrexiaJSltHKk_ETTsxDB20TUrsNG
70
70
  phoenix/inferences/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
71
  phoenix/inferences/errors.py,sha256=AOsCs-xR1LV469Gygje16EOK3qGheiPGW0Ylg-MakhQ,8282
72
72
  phoenix/inferences/fixtures.py,sha256=fessNJmbx1AUJLdwvf7UhXwzGMRfn7ZkDWK8YNWJSi8,20871
73
- phoenix/inferences/inferences.py,sha256=_DatV-dDaC8GvxwendyPqX5ERqKtfWhjSJfFScwS3DY,31082
73
+ phoenix/inferences/inferences.py,sha256=VO1BpomB5eqXDXna-ZSjmhT53mLQ2HyjlopOLVvJuCc,31041
74
74
  phoenix/inferences/schema.py,sha256=5c5_yNf37P0ZvzYwbMFr0NU5T81zAzoAoEfCJ-aHhTI,6651
75
75
  phoenix/inferences/validation.py,sha256=k34fK5nwz8wBrmDQCySBKDZV2ViFsYLJrr1Jm1GqakQ,8273
76
76
  phoenix/logging/__init__.py,sha256=94Xsv4tcqRghZhpuyCn4kWV7yJ56X52aXjrWU8RM4hY,64
@@ -91,7 +91,7 @@ phoenix/pointcloud/pointcloud.py,sha256=SN_1wXZcwKrtSnHGZLDZGx71orqE1WyVF7E-D58d
91
91
  phoenix/pointcloud/projectors.py,sha256=TQgwc9cJDjJkin1WZyZzgl3HsYrLLiyWD7Czy4jNW3U,1088
92
92
  phoenix/pointcloud/umap_parameters.py,sha256=db_WEPoamuWtopZx7tQfAXPnoE0MS8FkAV0_ThjEx_Q,1735
93
93
  phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- phoenix/server/app.py,sha256=00un2qg4eUmHr37TtZlccmPgRnI1D5FB5r2zwIfI9W4,48047
94
+ phoenix/server/app.py,sha256=LFnFe4GTxeqkGY1Wc6qnmlBchjuG_vKfW_MoIevQVlc,49187
95
95
  phoenix/server/authorization.py,sha256=OxROn7ibpKtCTrcgDkzWuNxVaQcSQ8MAx7zbjZiliK0,3201
96
96
  phoenix/server/bearer_auth.py,sha256=f4v4W94KyTdGGCPsK1tXOe0vouPuvanAEa03XSdCvPE,6650
97
97
  phoenix/server/dml_event.py,sha256=8UciN7W8X_IqQfAnAeAh68BezNmfxSxuTeD6IUerTW8,2911
@@ -110,24 +110,29 @@ phoenix/server/types.py,sha256=j8erl9iRNaR8t0DCQG84-uDVbHy9Qnm7T2EuTtDNNsU,8013
110
110
  phoenix/server/api/README.md,sha256=Pyq1PLPgTzXAswrfIhGXrjI3Skq8it2jTVnanT6Ba4Q,1162
111
111
  phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
112
  phoenix/server/api/auth.py,sha256=AyYhnZIbY9ALVjg2K6aC2UXSa3Pva5GVDBXyaZ3nD3o,2749
113
- phoenix/server/api/context.py,sha256=mqsq_8Ru50e-PxKWNTzh9zptb1PFjYFUf58uW59UYL0,8996
113
+ phoenix/server/api/context.py,sha256=wPwAj5z_sHMOd8PfCzZ2lYkkU6wKZVdjpeAC_MJmteo,9952
114
114
  phoenix/server/api/exceptions.py,sha256=9gB4nBRNX6k4_fsQZ12yxw6Tw53h_915l06DYK-qkPQ,1442
115
115
  phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
116
- phoenix/server/api/queries.py,sha256=oA6UWvd7Ff26JZp0gFujV7F6yZoEbUwdOdZOROWG4nM,64654
116
+ phoenix/server/api/queries.py,sha256=oVtlqmYDyRot5_z9jRITeiyb0iIgIXEVteE2fOp-1uA,65096
117
117
  phoenix/server/api/schema.py,sha256=fcs36xQwFF_Qe41_5cWR8wYpDvOrnbcyTeo5WNMbDsA,1702
118
118
  phoenix/server/api/subscriptions.py,sha256=U7JZl-FGfsaIhRkIFdeSQLqR7xCS7CY1h-21BOAcaqY,25439
119
119
  phoenix/server/api/utils.py,sha256=quCBRcusc6PUq9tJq7M8PgwFZp7nXgVAxtbw8feribY,833
120
- phoenix/server/api/dataloaders/__init__.py,sha256=ddiX1BdbyGkPTzMZNo-hkF_2kqIquelBUFvQejnAJYk,6834
120
+ phoenix/server/api/dataloaders/__init__.py,sha256=wVI-lyHg0XLb2D_Ab53yC5QozSQR8qbd1_tsR1NKMRE,7822
121
121
  phoenix/server/api/dataloaders/annotation_configs_by_project.py,sha256=_Nfiug9o01JimU3Z0LpZJ0uaMCjchXomyt_dYAxPFRY,1178
122
122
  phoenix/server/api/dataloaders/annotation_summaries.py,sha256=0b23-bucBKyL25RWb2QzCNJjQzrq403qMmHKUVD5W4M,14377
123
+ phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py,sha256=BSNyrwuNadQ16-2g0nGixrB5LyDqlTLeM2bKikyIagY,1860
123
124
  phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=_wEcC47zOtLFMYTfyaFWA93TlAVC3kAPZhMnRO-xB24,1809
124
- phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=xF7M2dg3UmjhdCrscnztCIBBI0cg3RF48IIqvilpc18,4623
125
+ phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=MqRBkT3AE6b6A7uucFYfkH86eXMAyYJDFyg3a8tx-GM,4547
125
126
  phoenix/server/api/dataloaders/dataset_example_spans.py,sha256=z_MFquqAcJ9wat7BBp7MVeJ9BYuu2EZEdaog52iWDno,1390
127
+ phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py,sha256=uyq5-WkY_67pzRxX4eCpECjzykKNM6pCC3rjpboXbb8,1771
126
128
  phoenix/server/api/dataloaders/document_evaluation_summaries.py,sha256=9fdROnzp-mymggHwNvpRkCk93LUFxxLy55-j3HP_2HY,5565
127
129
  phoenix/server/api/dataloaders/document_evaluations.py,sha256=1bpBDydd-9YvhgkNoE5w-FGrjtnjUztcnjZTdMAazws,1072
128
130
  phoenix/server/api/dataloaders/document_retrieval_metrics.py,sha256=37EcAW7oYQuWYHMDHb0wcqbWj9lhSskvzDO7NJbT5Js,4136
129
131
  phoenix/server/api/dataloaders/experiment_annotation_summaries.py,sha256=CFVj7DwFYj330FLU5w3zEr12AGUX1e8ZX0X5buxMuEk,5643
130
132
  phoenix/server/api/dataloaders/experiment_error_rates.py,sha256=06IZF07qt2y167DBM49QkSNdnphPArhcsgYFcunaL-U,1992
133
+ phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py,sha256=ubOQ9_ilTRu_H_BwjwMp5lHLPKl7jYRoIYErCthsk6Y,2815
134
+ phoenix/server/api/dataloaders/experiment_repeated_run_groups.py,sha256=3EAN8uKv4hx-ZoGCi6HlZ_7lyLD-k6TgUUSvW78if7k,2015
135
+ phoenix/server/api/dataloaders/experiment_repetition_counts.py,sha256=2fw_dbBlJlHtheOXLXjWwo_YQ7Lv-AhVl0Ld6oVpLkA,1362
131
136
  phoenix/server/api/dataloaders/experiment_run_annotations.py,sha256=uJ--9Ue4tnmZYH9Zy-Cj2Y2t3xzs2xUqN8Y6EGe1MCo,1296
132
137
  phoenix/server/api/dataloaders/experiment_run_counts.py,sha256=j_7229IL705p_TycxIMYylhSgLHsAn91TiGPYXtOuQ8,1617
133
138
  phoenix/server/api/dataloaders/experiment_sequence_number.py,sha256=zM_f78fnqhppLtevrx9iISQSN7w_BNeXT9CoX8jYgAI,1534
@@ -154,6 +159,7 @@ phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py,sha25
154
159
  phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py,sha256=pxgMRFGLQHqf9swuJf7c-n5ONaE7k8NCJaqROa-QK3o,2067
155
160
  phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py,sha256=f8ztQACGfKuf-nigyXiBUnGxXVzhNG9tOsPujxvOoX4,974
156
161
  phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py,sha256=EvivIoLsg1KxlRm4MM-LiInxFsRzqZpLarsvjyQk8e8,2453
162
+ phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py,sha256=pPS6XTVhMsIQXnGuXsYOyDVjzyp-feobSg5D7boUIRI,2831
157
163
  phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py,sha256=IJFirEPeR1UGKTg6Gz3MJQGDigoPy6SaFnUdBibyVac,2539
158
164
  phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py,sha256=Fhp0NPsoSbTBgnE38hregVVeVHEhPw_QANiOfNyaTf8,2295
159
165
  phoenix/server/api/dataloaders/span_cost_summary_by_project.py,sha256=N3cds3ooMU25Xbp9Z5Zlp-3a4AcNwRu0XpqaTgsKOoE,6002
@@ -177,11 +183,11 @@ phoenix/server/api/helpers/__init__.py,sha256=m2-xaSPqUiSs91k62JaRDjFNfl-1byxBfY
177
183
  phoenix/server/api/helpers/annotations.py,sha256=9gMXKpMTfWEChoSCnvdWYuyB0hlSnNOp-qUdar9Vono,262
178
184
  phoenix/server/api/helpers/dataset_helpers.py,sha256=3bdGBoUzqrtg-sr5p2wpQLOU6dhg_3TKFHNeJj8p0TU,9155
179
185
  phoenix/server/api/helpers/experiment_run_filters.py,sha256=DOnVwrmn39eAkk2mwuZP8kIcAnR5jrOgllEwWSjsw94,29893
180
- phoenix/server/api/helpers/playground_clients.py,sha256=DgmDM6ismCwm1GLB4_9DnWsPCZsd2L-vpc0m8-5mjN0,72212
186
+ phoenix/server/api/helpers/playground_clients.py,sha256=fG97GnJPxOYMd0lNHdQfML_ZmSZfLnY2s7_GAiAecOc,72327
181
187
  phoenix/server/api/helpers/playground_registry.py,sha256=n0v4-KnvZJxeaEwOla5qBbnOQjSWznKmMhZnh9ziJt0,2584
182
188
  phoenix/server/api/helpers/playground_spans.py,sha256=QpXwPl_fFNwm_iA1A77XApUyXMl1aDmonw8aXuNZ_4k,17132
183
189
  phoenix/server/api/helpers/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
- phoenix/server/api/helpers/prompts/models.py,sha256=pEPmloU27j5c4dM0dbDSAeIAzxpfsjPtjNRdF99mlhM,23558
190
+ phoenix/server/api/helpers/prompts/models.py,sha256=-uMQcFFsA_UwNxdZv0cZZ0m57rzxf8C9Ke2AYolR730,23522
185
191
  phoenix/server/api/helpers/prompts/conversions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
192
  phoenix/server/api/helpers/prompts/conversions/anthropic.py,sha256=ZT--UqBwoGf7QMusajB6aeB7zyWGttaZigb113kgiY8,3571
187
193
  phoenix/server/api/helpers/prompts/conversions/aws.py,sha256=6vaT8K13r0bMXB9XHA8qY1MCjVsmR9TO0VIwyBMjQoY,2941
@@ -240,7 +246,7 @@ phoenix/server/api/mutations/export_events_mutations.py,sha256=xoDnVWC7eA_8wNQP0
240
246
  phoenix/server/api/mutations/model_mutations.py,sha256=eh-QIKww3EDrDewS3NTWTqnE2bwLJJ5WgRFvSPRksZg,7199
241
247
  phoenix/server/api/mutations/project_mutations.py,sha256=PQCwODI0VXk9Rllxdar4bNEyaYb1rJiMHXTqol-cFYY,4569
242
248
  phoenix/server/api/mutations/project_trace_retention_policy_mutations.py,sha256=AqBe8TBxlXdIL56Afs4FIBqkI0bEgf-v9bHlbc-O6VI,9839
243
- phoenix/server/api/mutations/prompt_label_mutations.py,sha256=uCiVcULtmgaNaav4M08ipPYM68sZv1MVLrCgvW-Xyn8,7317
249
+ phoenix/server/api/mutations/prompt_label_mutations.py,sha256=FP3UWPynWHfSRgHlMliDx9LS3DF7dY3EJGPPV8hVIyY,7254
244
250
  phoenix/server/api/mutations/prompt_mutations.py,sha256=Yg-6L2PiKUZfFyNarptu3OdE0uA2_Nyl3VrLVP8FJ9Y,12114
245
251
  phoenix/server/api/mutations/prompt_version_tag_mutations.py,sha256=t77osYb5he2Am4UeNis7pzY9MnaA9PNEQhsQelRH8k8,5767
246
252
  phoenix/server/api/mutations/span_annotations_mutations.py,sha256=LQPcODp7-ZobXspjmtLaamyQa8UkTONC_va-ST9r-k8,15015
@@ -262,8 +268,8 @@ phoenix/server/api/routers/v1/datasets.py,sha256=9iPORLmbOrPKgUUcRDMs6ZczSIz7hvc
262
268
  phoenix/server/api/routers/v1/documents.py,sha256=iA_vYU6_p2-pazh_Rp930kiOsiHYFIPPqsZSSXwPgVI,5733
263
269
  phoenix/server/api/routers/v1/evaluations.py,sha256=aBrPO-xCAWyTxydaHq7W2wQFm65k89uVR-H3VWsd6WQ,13062
264
270
  phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=DZ3UK9OoYKElpRcEER7559-KiAqWr-1IXpZ27FbfP3k,5249
265
- phoenix/server/api/routers/v1/experiment_runs.py,sha256=H-WSEFuMSr-pDzP9IMsGktqMHMwMAhen6FSfYYu3ZZg,8372
266
- phoenix/server/api/routers/v1/experiments.py,sha256=hIBecGACzGZEgl93ap_JV52pUv-Ij03QJMRxQhBlktI,20611
271
+ phoenix/server/api/routers/v1/experiment_runs.py,sha256=KaQ6EI1qQrIE-q1C22C9sEUnr9aho-23xcDDPIIkwko,8378
272
+ phoenix/server/api/routers/v1/experiments.py,sha256=-xoAh4rTMKkmjDJSICNv3dvlTtMdCGB6ZuxuossHuMY,20617
267
273
  phoenix/server/api/routers/v1/models.py,sha256=p3gJN-9SWiUYTUTft4bZMsZVCBNTb4nN1Foy68eRZzQ,1997
268
274
  phoenix/server/api/routers/v1/projects.py,sha256=XR6uJxHXXtC1q8LNyS9W6iaj440sv1OKCu-OSBfxEys,12824
269
275
  phoenix/server/api/routers/v1/prompts.py,sha256=chRYcLkOYDJdJfVZVukVTUyIRnLPvsJCg41CuPxOIU8,26695
@@ -286,7 +292,7 @@ phoenix/server/api/types/CreateDatasetPayload.py,sha256=R-6zCmuD0f76RU9Giu78xwTH
286
292
  phoenix/server/api/types/CronExpression.py,sha256=R7oxuSSX_eTUHQWaoaSueQqWDmkkHr5dBKRN6q-6ROk,331
287
293
  phoenix/server/api/types/DataQualityMetric.py,sha256=Aieg3bHeBFaAf4mqeRcH1zT04sXAtQD8ATSHJt7FaBQ,1538
288
294
  phoenix/server/api/types/Dataset.py,sha256=OvCgbqqNF-bj0iaQldIeEfZiMjyXGFsozIIBsbJJwq4,12648
289
- phoenix/server/api/types/DatasetExample.py,sha256=_9byxGpXfYb-hmFMUJeG7Bw1wsRKSJaHwF2IPAbFpFw,3115
295
+ phoenix/server/api/types/DatasetExample.py,sha256=uc0RTK6-wB7jZsPvy33tbajWJRO4bqb4EJauRYiydcc,5088
290
296
  phoenix/server/api/types/DatasetExampleRevision.py,sha256=c-jWR6dTguEZTm54IMlFr0Ic84I3nefyDnZb7nF5hnI,874
291
297
  phoenix/server/api/types/DatasetExperimentAnnotationSummary.py,sha256=EVXz6zfbdYsU5SZ6FUrAA_VQqQCnBE_mbKgmAmFoDLI,195
292
298
  phoenix/server/api/types/DatasetValues.py,sha256=7VbCOLlzOXpZN80-zYF2UGuafRcPsZF-8WQNc0YsKFc,1119
@@ -305,10 +311,12 @@ phoenix/server/api/types/EvaluationSummary.py,sha256=vILYejnfPvMwWEXOwhQZsANvYe3
305
311
  phoenix/server/api/types/Event.py,sha256=iYt_Jx1Roioo0vZ0iPeJTHcTu6NSm4ilVMJ-IMUHAKk,3970
306
312
  phoenix/server/api/types/EventMetadata.py,sha256=-J0tYF9eZTHwCjwxQHY7Gckr2_MNW5OoWT1mydweZNM,635
307
313
  phoenix/server/api/types/ExampleRevisionInterface.py,sha256=gV3Gt9-3Oi5wjaVtepC6nOt3FzTzZFD1KebNnqiw56E,294
308
- phoenix/server/api/types/Experiment.py,sha256=ifymI5SGqotIo01yAx-AsUONLzvFvjAKEU8gKi2WOzA,7700
314
+ phoenix/server/api/types/Experiment.py,sha256=URdD3Ow0gTlJRd74duLdGFs-E3gKy2-UAah1AIaFKGk,8230
309
315
  phoenix/server/api/types/ExperimentAnnotationSummary.py,sha256=Uk3JtxIrsMoZT5tqc4nJdUOM3XegVzjUyoV3pkjNotE,256
310
- phoenix/server/api/types/ExperimentComparison.py,sha256=PXFcB0e8aaJ391yRsuRJr9_dvTZI1RAzF93oC_-HtxU,461
311
- phoenix/server/api/types/ExperimentRun.py,sha256=_fcwDLuURV0yviOlkjWAgJJwcCPdz-xGR6VX3UKf73s,6541
316
+ phoenix/server/api/types/ExperimentComparison.py,sha256=fj4KoAPFNJvfrHBMloGkHz_-7Lf403IMe0OwDDJyZWk,383
317
+ phoenix/server/api/types/ExperimentRepeatedRunGroup.py,sha256=a2-C6ZWyFm-THvus6n4WDYGtmapm-ZWFaDahW7A2i28,5434
318
+ phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py,sha256=oNmQQMh09xSgtSg8-CbTIa8njPqz9F5fnrzHnYGFOZs,174
319
+ phoenix/server/api/types/ExperimentRun.py,sha256=XGzHcz_k5qLokrYB_I7K213rF6N_k7qJsymsKsZUApA,6010
312
320
  phoenix/server/api/types/ExperimentRunAnnotation.py,sha256=YGw5zIbjRXUK3zH475DnEeg4SDNGOmdxtuUVkzGw1E8,1734
313
321
  phoenix/server/api/types/ExportedFile.py,sha256=e3GTn7B5LgsTbqiwjhMCQH7VsiqXitrBO4aCMS1lHsg,163
314
322
  phoenix/server/api/types/Functionality.py,sha256=zDDl2bANIqjwfooSOHg-VQk6-wQy05mREwjV_-VbSIg,262
@@ -327,8 +335,8 @@ phoenix/server/api/types/PlaygroundModel.py,sha256=IqJFxsAAJMRyaFI9ryI3GQrpFOJ5L
327
335
  phoenix/server/api/types/Project.py,sha256=XJUVEGCmEgToIyoVNWpNgcgtV1g24DvAKzFHpDNpCJY,72020
328
336
  phoenix/server/api/types/ProjectSession.py,sha256=uwqTsDTfSGz13AvP-cwS_mJR5JZ1lHqu10ungbl7g5s,6245
329
337
  phoenix/server/api/types/ProjectTraceRetentionPolicy.py,sha256=tYy2kgalPDyuaYZr0VUHjH0YpXaiF_QOzg5yfaV_c7c,3782
330
- phoenix/server/api/types/Prompt.py,sha256=ccP4eq1e38xbF0afclGWLOuDpBVpNbJ3AOSRClF8yFQ,4955
331
- phoenix/server/api/types/PromptLabel.py,sha256=g3IDSPYRZwb0qpMAk93R6J96jgYULUYGOciTnpeh3sI,1321
338
+ phoenix/server/api/types/Prompt.py,sha256=ad52KVQ1yJrAWXd3HdOKKHzyaUJqrp2mtFEe1QGEE4E,5455
339
+ phoenix/server/api/types/PromptLabel.py,sha256=kREZ219VB1xJkvOI8W6aeXBJkQx5bOccNa7g7fbRTt0,570
332
340
  phoenix/server/api/types/PromptResponse.py,sha256=Q8HKtpp8GpUOcxPCzZpkkokidDd6u0aZOv_SuPZZd5Q,630
333
341
  phoenix/server/api/types/PromptVersion.py,sha256=hLPwOwj1h0gH4fqpLS-xwcC2TQYLCmvaCiEkyXvTS1g,5494
334
342
  phoenix/server/api/types/PromptVersionTag.py,sha256=dSumwkBv2P-yDLxE0tnu8O87M2ZcuhLrmnBb4CkuyC4,1389
@@ -359,13 +367,13 @@ phoenix/server/api/types/UserRole.py,sha256=yjyVsA9mKo0tYEjK9pjtfDL2MZKvGyh_-Eed
359
367
  phoenix/server/api/types/ValidationResult.py,sha256=pHwdYk4J7SJ5xhlWWHg_6qWkfk4rjOx-bSkGHvkDE3Q,142
360
368
  phoenix/server/api/types/VectorDriftMetricEnum.py,sha256=etiJM5ZjQuD-oE7sY-FbdIKY050jk3IU49IMwmfJbEc,188
361
369
  phoenix/server/api/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
362
- phoenix/server/api/types/node.py,sha256=BLl_IOFr0zrqUxaAtGLGui5aeM5VNVXFTzGeAKrztr0,822
370
+ phoenix/server/api/types/node.py,sha256=ya1kJz6ok0LEiMMJOvV6s6nr_biWBZWAiC9JEtR-ki8,1073
363
371
  phoenix/server/api/types/pagination.py,sha256=BXm46gXZfrBS4hpiLvVSEdsbb29ctUMVJYjKXlOLxUA,9064
364
372
  phoenix/server/cost_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
373
  phoenix/server/cost_tracking/cost_details_calculator.py,sha256=Tt0YcuLhgPuXKWJemWVmYQfG0xQUvH4VziIj6KcDnoA,8945
366
374
  phoenix/server/cost_tracking/cost_model_lookup.py,sha256=jhtVdnQBzrTUHeOGPWgOebk-Io5hpJ1vAgWOu8ojeJ4,6801
367
375
  phoenix/server/cost_tracking/helpers.py,sha256=Pk6ECjnYreTxrldtRwxnwFcxIPVsvDq_yAwDA_spkOc,2122
368
- phoenix/server/cost_tracking/model_cost_manifest.json,sha256=hOe6WLOd4t99iMCwCVbOya9kERKb7Ci_NR2opiNQY5M,65570
376
+ phoenix/server/cost_tracking/model_cost_manifest.json,sha256=5Gyp58YTyEFiA3uE-QF1lRfDo1z2547DnGrbKRFv814,65571
369
377
  phoenix/server/cost_tracking/regex_specificity.py,sha256=9kqWuQ68C-hlwW25hr7BhFlRt5y2Nnpy0Ax3n9UN6Xk,11622
370
378
  phoenix/server/cost_tracking/token_cost_calculator.py,sha256=2JEZnvusx2-xbhp8krp9EarjWuyGH2KO4e-ZwJX-K0s,1598
371
379
  phoenix/server/daemons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -394,24 +402,24 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
394
402
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
395
403
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
396
404
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
397
- phoenix/server/static/.vite/manifest.json,sha256=SftlYsrBTWT-YgHAEYzi01rPZZ4ICS4LX28rKBTiEAs,2328
398
- phoenix/server/static/assets/components-Cs9c4Nxp.js,sha256=5e_FqxJ4cxQ2lSztbWI9bXdUd0tbXNZjOK_basUj_2s,664533
399
- phoenix/server/static/assets/index-D1FDMBMV.js,sha256=sZ5WMvooPARvbjfKW_pMVOlJVuqcBI8tTZ8iVUGU4s8,63396
400
- phoenix/server/static/assets/pages-Cbj9SjBx.js,sha256=Cc1SZLF_HyhwRlxlK_Zsmxmjsb_jFCZeObBG2E6Luns,1272157
401
- phoenix/server/static/assets/vendor-CqDb5u4o.css,sha256=zIyFiNJKxMaQk8AvtLgt1rR01oO10d1MFndSDKH9Clw,5517
402
- phoenix/server/static/assets/vendor-RdRDaQiR.js,sha256=oTxLetZZXJ20yoKNAYExto9V73y8X5zjddWV46K9CWM,2595492
403
- phoenix/server/static/assets/vendor-arizeai-DsYDNOqt.js,sha256=0HIkPJXbKTh85nqphdAXYeStRzdaim0IQxRXiXxa21U,121514
404
- phoenix/server/static/assets/vendor-codemirror-BzJDUbEx.js,sha256=bhTldvpKQzXpFgxi3cdGSFjNupkDYuEKcJzQLCN5WwY,402623
405
- phoenix/server/static/assets/vendor-recharts-BTHn5Y2R.js,sha256=yzTedksGlH1StFC39Tr3K0i86SQHtT2VZls7-2uQWys,231651
406
- phoenix/server/static/assets/vendor-shiki-BAcocHFl.js,sha256=70yCHhKjrYFycTHifz6VT7KsAekW1wA4OX0Op8YhlIY,305160
405
+ phoenix/server/static/.vite/manifest.json,sha256=I1RfIYC-Ma_2QY8DosqhJZM5PRTNeDwIqDUt2iKCFM0,2328
406
+ phoenix/server/static/assets/components-YTHUASXI.js,sha256=o7lPFFwvxIor_Bpckbv5w5hExx6cPajyxqTUDBxrLOQ,675981
407
+ phoenix/server/static/assets/index-CugQp26L.js,sha256=JurvXdTz3puPThXy94Wl3wA1ogRF93oW1EWRdep4rBI,62934
408
+ phoenix/server/static/assets/pages-4Qu8GNlt.js,sha256=Vhbzq1Xxfo0jI8GVyOaBHGhlC5o99VsH2rczS95mljE,1296687
409
+ phoenix/server/static/assets/vendor-BGzfc4EU.css,sha256=Nx5Lmx-bqYR7nsO_O4kEBcrJ8cwknWjZ6seHN3_s4UQ,3171
410
+ phoenix/server/static/assets/vendor-CRRxHwSp.js,sha256=hzYvX7n-hUemSlnmufuzR9u5zx2bbLHSXC5qz_PqcA8,2572316
411
+ phoenix/server/static/assets/vendor-arizeai-CUN6lRd9.js,sha256=W5vabYWQPD5YY7vzrISgQYPmks2i8LUSMZNq3tXBfOI,121519
412
+ phoenix/server/static/assets/vendor-codemirror-sJXwoqrE.js,sha256=O13CkiI3OeAgFPEXPDnk2f1_lRi8qgMMErektFdbwcE,413196
413
+ phoenix/server/static/assets/vendor-recharts-BT_PeGhc.js,sha256=H-ZcKdntQ3IQ21wf58hqD7sqH5Z3cXEdp_hnuo3cRU4,231653
414
+ phoenix/server/static/assets/vendor-shiki-1F3op0QC.js,sha256=M8KLH3pUDvSv68dNETLOk0TFfeHQNtZ2vPj1NPTdJw8,305160
407
415
  phoenix/server/static/assets/vendor-three-BLWp5bic.js,sha256=vfSCVXS20jA0Ceo_O0mDxYBcROinWMdPE6RR4JXmtec,620972
408
416
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
409
417
  phoenix/server/templates/index.html,sha256=QAYh0TG5mg-GvDQUR09aD9ebl9Sfq0fYAcfIa5G7J6E,7148
410
418
  phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- phoenix/session/client.py,sha256=Bl0Ov1tPrKX2-wBr7Kr49hQHgdBtyVfdhlMKcd5tURM,35583
412
- phoenix/session/data_extractor.py,sha256=Y0RzYFaNy9fQj8PEIeQ76TBZ90_E1FW7bXu3K5x0EZY,2782
413
- phoenix/session/evaluation.py,sha256=tMElekWeLKOPHdLm1Pu_sXYWYaSU5rHAc7y8qi3jYhE,5359
414
- phoenix/session/session.py,sha256=PKNeRxo7M1AZRKv4ZdGUS5rXRrQu5XSGV0vtCOfHLRk,27621
419
+ phoenix/session/client.py,sha256=bFw3RzSdCCQBDNDbgxgaao4kCsP9_YWXG1VQfJvNveA,38532
420
+ phoenix/session/data_extractor.py,sha256=y_21QYW5emZ-SFYN9GtpUwDBMPCWtbRk3ZGxfR3k8K0,3178
421
+ phoenix/session/evaluation.py,sha256=l0IMuAmqIqgr_Ye15VCr4Z-_e4g9OCT1XYwsdT7DuGQ,5528
422
+ phoenix/session/session.py,sha256=iIC-Khgs3oQr9McsltInB6oD9hf7cZSqsBvGrrrXDls,28318
415
423
  phoenix/trace/__init__.py,sha256=ujk_uYjM8gmm-YqnyXxF-kekfwid0bcaPMTtNNcaw6U,407
416
424
  phoenix/trace/attributes.py,sha256=hyEKYZWPCP4NRmW7VmiC2voa3TH7FYKUBR9DYiVfXlw,12627
417
425
  phoenix/trace/errors.py,sha256=wB1z8qdPckngdfU-TORToekvg3344oNFAA83_hC2yFY,180
@@ -419,7 +427,7 @@ phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKytt
419
427
  phoenix/trace/exporter.py,sha256=bUXh8fjJIbHurrnt4bAm-cCWqUN5FqNsIc8DZzzklkQ,4695
420
428
  phoenix/trace/fixtures.py,sha256=1c7fsyvmxC53Fib9T_Qxp_Ly3OZdDbkLQ0XpFzikEjk,20298
421
429
  phoenix/trace/otel.py,sha256=RJSbAuzS4KBS0t-fntXQaaYwv7FmIXRMrw65DI67z8k,10622
422
- phoenix/trace/projects.py,sha256=2wVg_UaNiXuhn60qJhgqJiaQ0OnbOWMnB10QeTGZGwQ,2420
430
+ phoenix/trace/projects.py,sha256=rxWH563-AB_UIii9yntoHwbplf_WUSlwBCESkWAVFSQ,2407
423
431
  phoenix/trace/schemas.py,sha256=Su6e567Bei9oo6PsWO2srTcPAj9C2bMgbGtx64Sgqeg,6332
424
432
  phoenix/trace/span_evaluations.py,sha256=x3nye9r2SQk1mrR3N05YbuWsgUKpMWwTRBtJTDBSj3Y,13156
425
433
  phoenix/trace/span_json_decoder.py,sha256=J1_oDViuUoC4vxPg61U4EOZC1uEMcCzoj-kVjOFEE8k,3224
@@ -436,7 +444,6 @@ phoenix/trace/v1/evaluation_pb2.py,sha256=8sXvv2BW_vqD30MOMbmkeE2zpmm7ncik21kl3e
436
444
  phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQdQCXGm8,4500
437
445
  phoenix/utilities/__init__.py,sha256=PCtaszUCo9GZvXewPd09gmXxTJB4WRmfAsEeDwRHV4E,461
438
446
  phoenix/utilities/client.py,sha256=sUiy8FsxzIf6Hmd1rpD6infmijOdM9r24zJokA5RjZM,5595
439
- phoenix/utilities/deprecation.py,sha256=LL1LWfVqnYulceMQw2CggoIv8Uogrj7fAD_85devnoo,1067
440
447
  phoenix/utilities/error_handling.py,sha256=5_ggfwmd0xZPoI3qi1fwm0x1F0i7g5j-gr0ny1TFzPU,1967
441
448
  phoenix/utilities/json.py,sha256=UE8WHZU060NY_8ZKJ97gmtEC2mp60d8tJFXyRqIz51Y,3743
442
449
  phoenix/utilities/logging.py,sha256=NKvX43jWITgSTtHGCi6l5xp8jTjtQ8FQ_irEi9ybOxg,502
@@ -444,9 +451,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
444
451
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
445
452
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
446
453
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
447
- arize_phoenix-11.32.0.dist-info/METADATA,sha256=l937gONO1AEiuhgulspeCuLVxPdy-gmLrzzd_ZdP0Ms,32877
448
- arize_phoenix-11.32.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
449
- arize_phoenix-11.32.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
450
- arize_phoenix-11.32.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
451
- arize_phoenix-11.32.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
452
- arize_phoenix-11.32.0.dist-info/RECORD,,
454
+ arize_phoenix-11.33.0.dist-info/METADATA,sha256=3u7AfNj8jQE1YYnMYyxGZUEuhqO5B-eDJ1PU04hebFw,32877
455
+ arize_phoenix-11.33.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
456
+ arize_phoenix-11.33.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
457
+ arize_phoenix-11.33.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
458
+ arize_phoenix-11.33.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
459
+ arize_phoenix-11.33.0.dist-info/RECORD,,
@@ -13,11 +13,10 @@ from pandas import DataFrame, Series, Timestamp, read_parquet
13
13
  from pandas.api.types import (
14
14
  is_numeric_dtype,
15
15
  )
16
- from typing_extensions import TypeAlias
16
+ from typing_extensions import TypeAlias, deprecated
17
17
 
18
18
  from phoenix.config import GENERATED_INFERENCES_NAME_PREFIX, INFERENCES_DIR
19
19
  from phoenix.datetime_utils import normalize_timestamps
20
- from phoenix.utilities.deprecation import deprecated
21
20
 
22
21
  from . import errors as err
23
22
  from .schema import (
@@ -17,15 +17,20 @@ from phoenix.db import models
17
17
  from phoenix.server.api.dataloaders import (
18
18
  AnnotationConfigsByProjectDataLoader,
19
19
  AnnotationSummaryDataLoader,
20
+ AverageExperimentRepeatedRunGroupLatencyDataLoader,
20
21
  AverageExperimentRunLatencyDataLoader,
21
22
  CacheForDataLoaders,
22
23
  DatasetExampleRevisionsDataLoader,
24
+ DatasetExamplesAndVersionsByExperimentRunDataLoader,
23
25
  DatasetExampleSpansDataLoader,
24
26
  DocumentEvaluationsDataLoader,
25
27
  DocumentEvaluationSummaryDataLoader,
26
28
  DocumentRetrievalMetricsDataLoader,
27
29
  ExperimentAnnotationSummaryDataLoader,
28
30
  ExperimentErrorRatesDataLoader,
31
+ ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
32
+ ExperimentRepeatedRunGroupsDataLoader,
33
+ ExperimentRepetitionCountsDataLoader,
29
34
  ExperimentRunAnnotations,
30
35
  ExperimentRunCountsDataLoader,
31
36
  ExperimentSequenceNumberDataLoader,
@@ -52,6 +57,7 @@ from phoenix.server.api.dataloaders import (
52
57
  SpanCostDetailSummaryEntriesBySpanDataLoader,
53
58
  SpanCostDetailSummaryEntriesByTraceDataLoader,
54
59
  SpanCostSummaryByExperimentDataLoader,
60
+ SpanCostSummaryByExperimentRepeatedRunGroupDataLoader,
55
61
  SpanCostSummaryByExperimentRunDataLoader,
56
62
  SpanCostSummaryByGenerativeModelDataLoader,
57
63
  SpanCostSummaryByProjectDataLoader,
@@ -85,14 +91,25 @@ from phoenix.server.types import (
85
91
  class DataLoaders:
86
92
  annotation_configs_by_project: AnnotationConfigsByProjectDataLoader
87
93
  annotation_summaries: AnnotationSummaryDataLoader
94
+ average_experiment_repeated_run_group_latency: (
95
+ AverageExperimentRepeatedRunGroupLatencyDataLoader
96
+ )
88
97
  average_experiment_run_latency: AverageExperimentRunLatencyDataLoader
89
98
  dataset_example_revisions: DatasetExampleRevisionsDataLoader
90
99
  dataset_example_spans: DatasetExampleSpansDataLoader
100
+ dataset_examples_and_versions_by_experiment_run: (
101
+ DatasetExamplesAndVersionsByExperimentRunDataLoader
102
+ )
91
103
  document_evaluation_summaries: DocumentEvaluationSummaryDataLoader
92
104
  document_evaluations: DocumentEvaluationsDataLoader
93
105
  document_retrieval_metrics: DocumentRetrievalMetricsDataLoader
94
106
  experiment_annotation_summaries: ExperimentAnnotationSummaryDataLoader
95
107
  experiment_error_rates: ExperimentErrorRatesDataLoader
108
+ experiment_repeated_run_group_annotation_summaries: (
109
+ ExperimentRepeatedRunGroupAnnotationSummariesDataLoader
110
+ )
111
+ experiment_repeated_run_groups: ExperimentRepeatedRunGroupsDataLoader
112
+ experiment_repetition_counts: ExperimentRepetitionCountsDataLoader
96
113
  experiment_run_annotations: ExperimentRunAnnotations
97
114
  experiment_run_counts: ExperimentRunCountsDataLoader
98
115
  experiment_sequence_number: ExperimentSequenceNumberDataLoader
@@ -128,6 +145,9 @@ class DataLoaders:
128
145
  span_cost_details_by_span_cost: SpanCostDetailsBySpanCostDataLoader
129
146
  span_cost_fields: TableFieldsDataLoader
130
147
  span_cost_summary_by_experiment: SpanCostSummaryByExperimentDataLoader
148
+ span_cost_summary_by_experiment_repeated_run_group: (
149
+ SpanCostSummaryByExperimentRepeatedRunGroupDataLoader
150
+ )
131
151
  span_cost_summary_by_experiment_run: SpanCostSummaryByExperimentRunDataLoader
132
152
  span_cost_summary_by_generative_model: SpanCostSummaryByGenerativeModelDataLoader
133
153
  span_cost_summary_by_project: SpanCostSummaryByProjectDataLoader
@@ -6,9 +6,15 @@ from phoenix.server.api.dataloaders.span_cost_detail_summary_entries_by_project_
6
6
 
7
7
  from .annotation_configs_by_project import AnnotationConfigsByProjectDataLoader
8
8
  from .annotation_summaries import AnnotationSummaryCache, AnnotationSummaryDataLoader
9
+ from .average_experiment_repeated_run_group_latency import (
10
+ AverageExperimentRepeatedRunGroupLatencyDataLoader,
11
+ )
9
12
  from .average_experiment_run_latency import AverageExperimentRunLatencyDataLoader
10
13
  from .dataset_example_revisions import DatasetExampleRevisionsDataLoader
11
14
  from .dataset_example_spans import DatasetExampleSpansDataLoader
15
+ from .dataset_examples_and_versions_by_experiment_run import (
16
+ DatasetExamplesAndVersionsByExperimentRunDataLoader,
17
+ )
12
18
  from .document_evaluation_summaries import (
13
19
  DocumentEvaluationSummaryCache,
14
20
  DocumentEvaluationSummaryDataLoader,
@@ -17,6 +23,11 @@ from .document_evaluations import DocumentEvaluationsDataLoader
17
23
  from .document_retrieval_metrics import DocumentRetrievalMetricsDataLoader
18
24
  from .experiment_annotation_summaries import ExperimentAnnotationSummaryDataLoader
19
25
  from .experiment_error_rates import ExperimentErrorRatesDataLoader
26
+ from .experiment_repeated_run_group_annotation_summaries import (
27
+ ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
28
+ )
29
+ from .experiment_repeated_run_groups import ExperimentRepeatedRunGroupsDataLoader
30
+ from .experiment_repetition_counts import ExperimentRepetitionCountsDataLoader
20
31
  from .experiment_run_annotations import ExperimentRunAnnotations
21
32
  from .experiment_run_counts import ExperimentRunCountsDataLoader
22
33
  from .experiment_sequence_number import ExperimentSequenceNumberDataLoader
@@ -44,6 +55,9 @@ from .span_cost_detail_summary_entries_by_span import SpanCostDetailSummaryEntri
44
55
  from .span_cost_detail_summary_entries_by_trace import SpanCostDetailSummaryEntriesByTraceDataLoader
45
56
  from .span_cost_details_by_span_cost import SpanCostDetailsBySpanCostDataLoader
46
57
  from .span_cost_summary_by_experiment import SpanCostSummaryByExperimentDataLoader
58
+ from .span_cost_summary_by_experiment_repeated_run_group import (
59
+ SpanCostSummaryByExperimentRepeatedRunGroupDataLoader,
60
+ )
47
61
  from .span_cost_summary_by_experiment_run import SpanCostSummaryByExperimentRunDataLoader
48
62
  from .span_cost_summary_by_generative_model import SpanCostSummaryByGenerativeModelDataLoader
49
63
  from .span_cost_summary_by_project import SpanCostSummaryByProjectDataLoader, SpanCostSummaryCache
@@ -64,15 +78,20 @@ from .users import UsersDataLoader
64
78
  __all__ = [
65
79
  "AnnotationConfigsByProjectDataLoader",
66
80
  "AnnotationSummaryDataLoader",
81
+ "AverageExperimentRepeatedRunGroupLatencyDataLoader",
67
82
  "AverageExperimentRunLatencyDataLoader",
68
83
  "CacheForDataLoaders",
69
84
  "DatasetExampleRevisionsDataLoader",
70
85
  "DatasetExampleSpansDataLoader",
86
+ "DatasetExamplesAndVersionsByExperimentRunDataLoader",
71
87
  "DocumentEvaluationSummaryDataLoader",
72
88
  "DocumentEvaluationsDataLoader",
73
89
  "DocumentRetrievalMetricsDataLoader",
74
90
  "ExperimentAnnotationSummaryDataLoader",
75
91
  "ExperimentErrorRatesDataLoader",
92
+ "ExperimentRepeatedRunGroupsDataLoader",
93
+ "ExperimentRepeatedRunGroupAnnotationSummariesDataLoader",
94
+ "ExperimentRepetitionCountsDataLoader",
76
95
  "ExperimentRunAnnotations",
77
96
  "ExperimentRunCountsDataLoader",
78
97
  "ExperimentSequenceNumberDataLoader",
@@ -99,6 +118,7 @@ __all__ = [
99
118
  "SpanCostDetailSummaryEntriesByTraceDataLoader",
100
119
  "SpanCostDetailsBySpanCostDataLoader",
101
120
  "SpanCostSummaryByExperimentDataLoader",
121
+ "SpanCostSummaryByExperimentRepeatedRunGroupDataLoader",
102
122
  "SpanCostSummaryByExperimentRunDataLoader",
103
123
  "SpanCostSummaryByGenerativeModelDataLoader",
104
124
  "SpanCostSummaryByProjectDataLoader",
@@ -0,0 +1,50 @@
1
+ from typing import Optional
2
+
3
+ from sqlalchemy import func, select, tuple_
4
+ from strawberry.dataloader import DataLoader
5
+ from typing_extensions import TypeAlias
6
+
7
+ from phoenix.db import models
8
+ from phoenix.server.types import DbSessionFactory
9
+
10
+ ExperimentID: TypeAlias = int
11
+ DatasetExampleID: TypeAlias = int
12
+ RunLatency: TypeAlias = float
13
+ Key: TypeAlias = tuple[ExperimentID, DatasetExampleID]
14
+ Result: TypeAlias = Optional[RunLatency]
15
+
16
+
17
+ class AverageExperimentRepeatedRunGroupLatencyDataLoader(DataLoader[Key, Result]):
18
+ def __init__(
19
+ self,
20
+ db: DbSessionFactory,
21
+ ) -> None:
22
+ super().__init__(load_fn=self._load_fn)
23
+ self._db = db
24
+
25
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
26
+ average_latency_query = (
27
+ select(
28
+ models.ExperimentRun.experiment_id.label("experiment_id"),
29
+ models.ExperimentRun.dataset_example_id.label("example_id"),
30
+ func.avg(models.ExperimentRun.latency_ms).label("average_repetition_latency_ms"),
31
+ )
32
+ .select_from(models.ExperimentRun)
33
+ .where(
34
+ tuple_(
35
+ models.ExperimentRun.experiment_id, models.ExperimentRun.dataset_example_id
36
+ ).in_(set(keys))
37
+ )
38
+ .group_by(models.ExperimentRun.experiment_id, models.ExperimentRun.dataset_example_id)
39
+ )
40
+ async with self._db() as session:
41
+ average_run_latencies_ms = {
42
+ (experiment_id, example_id): average_run_latency_ms
43
+ async for experiment_id, example_id, average_run_latency_ms in await session.stream(
44
+ average_latency_query
45
+ )
46
+ }
47
+ return [
48
+ average_run_latencies_ms.get((experiment_id, example_id))
49
+ for experiment_id, example_id in keys
50
+ ]
@@ -91,7 +91,6 @@ class DatasetExampleRevisionsDataLoader(DataLoader[Key, Result]):
91
91
  onclause=revision_ids.c.version_id == models.DatasetVersion.id,
92
92
  isouter=True, # keep rows where the version id is null
93
93
  )
94
- .where(models.DatasetExampleRevision.revision_kind != "DELETE")
95
94
  )
96
95
  async with self._db() as session:
97
96
  results = {
@@ -0,0 +1,47 @@
1
+ from sqlalchemy import select
2
+ from strawberry.dataloader import DataLoader
3
+ from typing_extensions import TypeAlias
4
+
5
+ from phoenix.db import models
6
+ from phoenix.server.types import DbSessionFactory
7
+
8
+ ExperimentRunID: TypeAlias = int
9
+ DatasetExampleID: TypeAlias = int
10
+ DatasetVersionID: TypeAlias = int
11
+ Key: TypeAlias = ExperimentRunID
12
+ Result: TypeAlias = tuple[models.DatasetExample, DatasetVersionID]
13
+
14
+
15
+ class DatasetExamplesAndVersionsByExperimentRunDataLoader(DataLoader[Key, Result]):
16
+ def __init__(self, db: DbSessionFactory) -> None:
17
+ super().__init__(load_fn=self._load_fn)
18
+ self._db = db
19
+
20
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
21
+ experiment_run_ids = set(keys)
22
+ examples_and_versions_query = (
23
+ select(
24
+ models.ExperimentRun.id.label("experiment_run_id"),
25
+ models.DatasetExample,
26
+ models.Experiment.dataset_version_id.label("dataset_version_id"),
27
+ )
28
+ .select_from(models.ExperimentRun)
29
+ .join(
30
+ models.DatasetExample,
31
+ models.DatasetExample.id == models.ExperimentRun.dataset_example_id,
32
+ )
33
+ .join(
34
+ models.Experiment,
35
+ models.Experiment.id == models.ExperimentRun.experiment_id,
36
+ )
37
+ .where(models.ExperimentRun.id.in_(experiment_run_ids))
38
+ )
39
+ async with self._db() as session:
40
+ examples_and_versions = {
41
+ experiment_run_id: (example, version_id)
42
+ for experiment_run_id, example, version_id in (
43
+ await session.execute(examples_and_versions_query)
44
+ ).all()
45
+ }
46
+
47
+ return [examples_and_versions[key] for key in keys]
@@ -0,0 +1,77 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional
3
+
4
+ from sqlalchemy import func, select, tuple_
5
+ from strawberry.dataloader import DataLoader
6
+ from typing_extensions import TypeAlias
7
+
8
+ from phoenix.db import models
9
+ from phoenix.server.types import DbSessionFactory
10
+
11
+ ExperimentID: TypeAlias = int
12
+ DatasetExampleID: TypeAlias = int
13
+ AnnotationName: TypeAlias = str
14
+ MeanAnnotationScore: TypeAlias = float
15
+
16
+
17
+ @dataclass
18
+ class AnnotationSummary:
19
+ annotation_name: AnnotationName
20
+ mean_score: Optional[MeanAnnotationScore]
21
+
22
+
23
+ Key: TypeAlias = tuple[ExperimentID, DatasetExampleID]
24
+ Result: TypeAlias = list[AnnotationSummary]
25
+
26
+
27
+ class ExperimentRepeatedRunGroupAnnotationSummariesDataLoader(DataLoader[Key, Result]):
28
+ def __init__(
29
+ self,
30
+ db: DbSessionFactory,
31
+ ) -> None:
32
+ super().__init__(load_fn=self._load_fn)
33
+ self._db = db
34
+
35
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
36
+ annotation_summaries_query = (
37
+ select(
38
+ models.ExperimentRun.experiment_id.label("experiment_id"),
39
+ models.ExperimentRun.dataset_example_id.label("dataset_example_id"),
40
+ models.ExperimentRunAnnotation.name.label("annotation_name"),
41
+ func.avg(models.ExperimentRunAnnotation.score).label("mean_score"),
42
+ )
43
+ .select_from(models.ExperimentRunAnnotation)
44
+ .join(
45
+ models.ExperimentRun,
46
+ models.ExperimentRunAnnotation.experiment_run_id == models.ExperimentRun.id,
47
+ )
48
+ .where(
49
+ tuple_(
50
+ models.ExperimentRun.experiment_id, models.ExperimentRun.dataset_example_id
51
+ ).in_(set(keys))
52
+ )
53
+ .group_by(
54
+ models.ExperimentRun.experiment_id,
55
+ models.ExperimentRun.dataset_example_id,
56
+ models.ExperimentRunAnnotation.name,
57
+ )
58
+ )
59
+ async with self._db() as session:
60
+ annotation_summaries = (await session.execute(annotation_summaries_query)).all()
61
+ annotation_summaries_by_key: dict[Key, list[AnnotationSummary]] = {}
62
+ for summary in annotation_summaries:
63
+ key = (summary.experiment_id, summary.dataset_example_id)
64
+ gql_summary = AnnotationSummary(
65
+ annotation_name=summary.annotation_name,
66
+ mean_score=summary.mean_score,
67
+ )
68
+ if key not in annotation_summaries_by_key:
69
+ annotation_summaries_by_key[key] = []
70
+ annotation_summaries_by_key[key].append(gql_summary)
71
+ return [
72
+ sorted(
73
+ annotation_summaries_by_key.get(key, []),
74
+ key=lambda summary: summary.annotation_name,
75
+ )
76
+ for key in keys
77
+ ]
@@ -0,0 +1,59 @@
1
+ from dataclasses import dataclass
2
+
3
+ from sqlalchemy import select, tuple_
4
+ from sqlalchemy.orm import joinedload
5
+ from strawberry.dataloader import DataLoader
6
+ from typing_extensions import TypeAlias
7
+
8
+ from phoenix.db import models
9
+ from phoenix.server.types import DbSessionFactory
10
+
11
+ ExperimentID: TypeAlias = int
12
+ DatasetExampleID: TypeAlias = int
13
+ Key: TypeAlias = tuple[ExperimentID, DatasetExampleID]
14
+
15
+
16
+ @dataclass
17
+ class ExperimentRepeatedRunGroup:
18
+ experiment_rowid: int
19
+ dataset_example_rowid: int
20
+ runs: list[models.ExperimentRun]
21
+
22
+
23
+ Result: TypeAlias = ExperimentRepeatedRunGroup
24
+
25
+
26
+ class ExperimentRepeatedRunGroupsDataLoader(DataLoader[Key, Result]):
27
+ def __init__(self, db: DbSessionFactory) -> None:
28
+ super().__init__(load_fn=self._load_fn)
29
+ self._db = db
30
+
31
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
32
+ repeated_run_groups_query = (
33
+ select(models.ExperimentRun)
34
+ .where(
35
+ tuple_(
36
+ models.ExperimentRun.experiment_id,
37
+ models.ExperimentRun.dataset_example_id,
38
+ ).in_(set(keys))
39
+ )
40
+ .order_by(models.ExperimentRun.repetition_number)
41
+ .options(joinedload(models.ExperimentRun.trace).load_only(models.Trace.trace_id))
42
+ )
43
+
44
+ async with self._db() as session:
45
+ runs_by_key: dict[Key, list[models.ExperimentRun]] = {}
46
+ for run in (await session.scalars(repeated_run_groups_query)).all():
47
+ key = (run.experiment_id, run.dataset_example_id)
48
+ if key not in runs_by_key:
49
+ runs_by_key[key] = []
50
+ runs_by_key[key].append(run)
51
+
52
+ return [
53
+ ExperimentRepeatedRunGroup(
54
+ experiment_rowid=experiment_id,
55
+ dataset_example_rowid=dataset_example_id,
56
+ runs=runs_by_key.get((experiment_id, dataset_example_id), []),
57
+ )
58
+ for (experiment_id, dataset_example_id) in keys
59
+ ]