arize-phoenix 4.14.1__py3-none-any.whl → 4.16.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.
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/METADATA +5 -3
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/RECORD +81 -71
- phoenix/db/bulk_inserter.py +131 -5
- phoenix/db/engines.py +2 -1
- phoenix/db/helpers.py +23 -1
- phoenix/db/insertion/constants.py +2 -0
- phoenix/db/insertion/document_annotation.py +157 -0
- phoenix/db/insertion/helpers.py +13 -0
- phoenix/db/insertion/span_annotation.py +144 -0
- phoenix/db/insertion/trace_annotation.py +144 -0
- phoenix/db/insertion/types.py +261 -0
- phoenix/experiments/functions.py +3 -2
- phoenix/experiments/types.py +3 -3
- phoenix/server/api/context.py +7 -9
- phoenix/server/api/dataloaders/__init__.py +2 -0
- phoenix/server/api/dataloaders/average_experiment_run_latency.py +3 -3
- phoenix/server/api/dataloaders/dataset_example_revisions.py +2 -4
- phoenix/server/api/dataloaders/dataset_example_spans.py +2 -4
- phoenix/server/api/dataloaders/document_evaluation_summaries.py +2 -4
- phoenix/server/api/dataloaders/document_evaluations.py +2 -4
- phoenix/server/api/dataloaders/document_retrieval_metrics.py +2 -4
- phoenix/server/api/dataloaders/evaluation_summaries.py +2 -4
- phoenix/server/api/dataloaders/experiment_annotation_summaries.py +2 -4
- phoenix/server/api/dataloaders/experiment_error_rates.py +2 -4
- phoenix/server/api/dataloaders/experiment_run_counts.py +2 -4
- phoenix/server/api/dataloaders/experiment_sequence_number.py +2 -4
- phoenix/server/api/dataloaders/latency_ms_quantile.py +2 -3
- phoenix/server/api/dataloaders/min_start_or_max_end_times.py +2 -4
- phoenix/server/api/dataloaders/project_by_name.py +3 -3
- phoenix/server/api/dataloaders/record_counts.py +2 -4
- phoenix/server/api/dataloaders/span_annotations.py +2 -4
- phoenix/server/api/dataloaders/span_dataset_examples.py +36 -0
- phoenix/server/api/dataloaders/span_descendants.py +2 -4
- phoenix/server/api/dataloaders/span_evaluations.py +2 -4
- phoenix/server/api/dataloaders/span_projects.py +3 -3
- phoenix/server/api/dataloaders/token_counts.py +2 -4
- phoenix/server/api/dataloaders/trace_evaluations.py +2 -4
- phoenix/server/api/dataloaders/trace_row_ids.py +2 -4
- phoenix/server/api/input_types/SpanAnnotationSort.py +17 -0
- phoenix/server/api/input_types/TraceAnnotationSort.py +17 -0
- phoenix/server/api/mutations/span_annotations_mutations.py +8 -3
- phoenix/server/api/mutations/trace_annotations_mutations.py +8 -3
- phoenix/server/api/openapi/main.py +18 -2
- phoenix/server/api/openapi/schema.py +12 -12
- phoenix/server/api/routers/v1/__init__.py +36 -83
- phoenix/server/api/routers/v1/datasets.py +515 -509
- phoenix/server/api/routers/v1/evaluations.py +164 -73
- phoenix/server/api/routers/v1/experiment_evaluations.py +68 -91
- phoenix/server/api/routers/v1/experiment_runs.py +98 -155
- phoenix/server/api/routers/v1/experiments.py +132 -181
- phoenix/server/api/routers/v1/pydantic_compat.py +78 -0
- phoenix/server/api/routers/v1/spans.py +164 -203
- phoenix/server/api/routers/v1/traces.py +134 -159
- phoenix/server/api/routers/v1/utils.py +95 -0
- phoenix/server/api/types/Span.py +27 -3
- phoenix/server/api/types/Trace.py +21 -4
- phoenix/server/api/utils.py +4 -4
- phoenix/server/app.py +172 -192
- phoenix/server/grpc_server.py +2 -2
- phoenix/server/main.py +5 -9
- phoenix/server/static/.vite/manifest.json +31 -31
- phoenix/server/static/assets/components-Ci5kMOk5.js +1175 -0
- phoenix/server/static/assets/{index-CQgXRwU0.js → index-BQG5WVX7.js} +2 -2
- phoenix/server/static/assets/{pages-hdjlFZhO.js → pages-BrevprVW.js} +451 -275
- phoenix/server/static/assets/{vendor-DPvSDRn3.js → vendor-CP0b0YG0.js} +2 -2
- phoenix/server/static/assets/{vendor-arizeai-CkvPT67c.js → vendor-arizeai-DTbiPGp6.js} +27 -27
- phoenix/server/static/assets/vendor-codemirror-DtdPDzrv.js +15 -0
- phoenix/server/static/assets/{vendor-recharts-5jlNaZuF.js → vendor-recharts-A0DA1O99.js} +1 -1
- phoenix/server/thread_server.py +2 -2
- phoenix/server/types.py +18 -0
- phoenix/session/client.py +5 -3
- phoenix/session/session.py +2 -2
- phoenix/trace/dsl/filter.py +2 -6
- phoenix/trace/fixtures.py +17 -23
- phoenix/trace/utils.py +23 -0
- phoenix/utilities/client.py +116 -0
- phoenix/utilities/project.py +1 -1
- phoenix/version.py +1 -1
- phoenix/server/api/routers/v1/dataset_examples.py +0 -178
- phoenix/server/openapi/docs.py +0 -221
- phoenix/server/static/assets/components-DeS0YEmv.js +0 -1142
- phoenix/server/static/assets/vendor-codemirror-Cqwpwlua.js +0 -12
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: arize-phoenix
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.16.0
|
|
4
4
|
Summary: AI Observability and Evaluation
|
|
5
5
|
Project-URL: Documentation, https://docs.arize.com/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -22,6 +22,7 @@ Requires-Dist: aiosqlite
|
|
|
22
22
|
Requires-Dist: alembic<2,>=1.3.0
|
|
23
23
|
Requires-Dist: arize-phoenix-evals>=0.13.1
|
|
24
24
|
Requires-Dist: cachetools
|
|
25
|
+
Requires-Dist: fastapi
|
|
25
26
|
Requires-Dist: grpcio
|
|
26
27
|
Requires-Dist: hdbscan>=0.8.33
|
|
27
28
|
Requires-Dist: httpx
|
|
@@ -40,8 +41,8 @@ Requires-Dist: pandas>=1.0
|
|
|
40
41
|
Requires-Dist: protobuf<6.0,>=3.20
|
|
41
42
|
Requires-Dist: psutil
|
|
42
43
|
Requires-Dist: pyarrow
|
|
44
|
+
Requires-Dist: pydantic!=2.0.*,<3,>=1.0
|
|
43
45
|
Requires-Dist: python-multipart
|
|
44
|
-
Requires-Dist: pyyaml
|
|
45
46
|
Requires-Dist: scikit-learn
|
|
46
47
|
Requires-Dist: scipy
|
|
47
48
|
Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
|
|
@@ -56,9 +57,9 @@ Requires-Dist: uvicorn
|
|
|
56
57
|
Requires-Dist: wrapt
|
|
57
58
|
Provides-Extra: container
|
|
58
59
|
Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
|
|
60
|
+
Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'container'
|
|
59
61
|
Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
|
|
60
62
|
Requires-Dist: opentelemetry-instrumentation-sqlalchemy; extra == 'container'
|
|
61
|
-
Requires-Dist: opentelemetry-instrumentation-starlette; extra == 'container'
|
|
62
63
|
Requires-Dist: opentelemetry-proto>=1.12.0; extra == 'container'
|
|
63
64
|
Requires-Dist: opentelemetry-sdk; extra == 'container'
|
|
64
65
|
Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
|
|
@@ -71,6 +72,7 @@ Requires-Dist: anthropic; extra == 'dev'
|
|
|
71
72
|
Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
|
|
72
73
|
Requires-Dist: asgi-lifespan; extra == 'dev'
|
|
73
74
|
Requires-Dist: asyncpg; extra == 'dev'
|
|
75
|
+
Requires-Dist: faker>=26.0.0; extra == 'dev'
|
|
74
76
|
Requires-Dist: gcsfs; extra == 'dev'
|
|
75
77
|
Requires-Dist: google-cloud-aiplatform>=1.3; extra == 'dev'
|
|
76
78
|
Requires-Dist: hatch; extra == 'dev'
|
|
@@ -5,7 +5,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
|
|
|
5
5
|
phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
6
6
|
phoenix/services.py,sha256=aTxhcOA1pZHB6U-B3TEcp6fqDF5oT0xCUvEUNMZVTUQ,5175
|
|
7
7
|
phoenix/settings.py,sha256=cO-qgis_S27nHirTobYI9hHPfZH18R--WMmxNdsVUwc,273
|
|
8
|
-
phoenix/version.py,sha256=
|
|
8
|
+
phoenix/version.py,sha256=jqZFarxQPRfyIPY1ojpY1Nm-BNzQbn-cIh6gBXR-dN8,23
|
|
9
9
|
phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
|
|
11
11
|
phoenix/core/model.py,sha256=km_a--PBHOuA337ClRw9xqhOHhrUT6Rl9pz_zV0JYkQ,4843
|
|
@@ -14,16 +14,21 @@ phoenix/core/model_schema_adapter.py,sha256=0Tm_Y_gV-WED8fKBCaFXAEFwE3CTEZS1dowq
|
|
|
14
14
|
phoenix/db/README.md,sha256=IvKaZyf9ECbGBYYePaRhBveKZwDbxAc-c7BMxJYZh6Q,595
|
|
15
15
|
phoenix/db/__init__.py,sha256=pDjEFXukHmJBM-1D8RjmXkvLsz85YWNxMQczt81ec3A,118
|
|
16
16
|
phoenix/db/alembic.ini,sha256=p8DjVqGUs_tTx8oU56JP7qj-rMUebNFizItUSv_hPhs,3763
|
|
17
|
-
phoenix/db/bulk_inserter.py,sha256=
|
|
18
|
-
phoenix/db/engines.py,sha256=
|
|
19
|
-
phoenix/db/helpers.py,sha256=
|
|
17
|
+
phoenix/db/bulk_inserter.py,sha256=kBgR-4kr8LnqrN03UfTtXYOhwMf7IxUks4OViGo84h8,16418
|
|
18
|
+
phoenix/db/engines.py,sha256=R3btYTSOSd6BwRA59EmhhojL0HCQ7NnzFIXQrPYS0iU,4812
|
|
19
|
+
phoenix/db/helpers.py,sha256=2zSc4n5IJfu-CaOFoBfqTB35M1nTFcAc8tqLsNtF2Jw,3488
|
|
20
20
|
phoenix/db/migrate.py,sha256=MuhtNWnR24riROvarvKfbRb4_D5xuQi6P760vBUKl1E,2270
|
|
21
21
|
phoenix/db/models.py,sha256=7DBWbxY3cx3ve2P1I0kkDKXzlt04zEFJuRPJWsVpH-I,20422
|
|
22
22
|
phoenix/db/insertion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
phoenix/db/insertion/constants.py,sha256=oLtCd7KxC6nQlGkhUoguF5PlomEVoZTddxc-huD3f2A,70
|
|
23
24
|
phoenix/db/insertion/dataset.py,sha256=_vxy5e6W5jEuvO2fMKbbNCn9JvHkwI4LRKk_10eKFVg,7171
|
|
25
|
+
phoenix/db/insertion/document_annotation.py,sha256=vMP1OkQ0GOC57aHLTErwF6cu6qHdBkjQFXbCwUtYYAs,5409
|
|
24
26
|
phoenix/db/insertion/evaluation.py,sha256=SoI85N3MYUSeNgjKa5WzFw14OfNjNTjExv-2m3sxaR8,6371
|
|
25
|
-
phoenix/db/insertion/helpers.py,sha256=
|
|
27
|
+
phoenix/db/insertion/helpers.py,sha256=z_Wnckhdf-F7xadWgaAV5ScXnLft8EtaYJCuIkma2Vw,3486
|
|
26
28
|
phoenix/db/insertion/span.py,sha256=T9jOW3lyWte-JGD7wlP2ZqtO0-V57d8z6U_TldnuGuk,5527
|
|
29
|
+
phoenix/db/insertion/span_annotation.py,sha256=Aa33nhEsq6NlXbRZ46fl2rVVehityRtxi6NYDXzE9vU,4705
|
|
30
|
+
phoenix/db/insertion/trace_annotation.py,sha256=eIza4k4ImOPu9iwlAt8gv-A0ESw5XLGEa4dKGVqNSxk,4765
|
|
31
|
+
phoenix/db/insertion/types.py,sha256=H9o_LJ1DabMVyVv3NZYtmJ26WusyihwlzV7AA-TOgGY,8272
|
|
27
32
|
phoenix/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
33
|
phoenix/db/migrations/env.py,sha256=QbzB5zrRs6XQQmrYeUpuzeilcMlM-MsbaAgHHYcIHTI,3626
|
|
29
34
|
phoenix/db/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
@@ -31,9 +36,9 @@ phoenix/db/migrations/types.py,sha256=Frq1AKSyBKQQ0FLzON-EmgTqE4kNkOpHMsbWnI-WgC
|
|
|
31
36
|
phoenix/db/migrations/versions/10460e46d750_datasets.py,sha256=l69yZfScFrjfZZpY0gnqwhsDUEctLeo02qMgA_aOGDg,8155
|
|
32
37
|
phoenix/db/migrations/versions/cf03bd6bae1d_init.py,sha256=CbWT3ZTR0CZqeT3zWLoTWhboFmnOy3Ju1z6Ztpq8WIM,8122
|
|
33
38
|
phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
|
|
34
|
-
phoenix/experiments/functions.py,sha256=
|
|
39
|
+
phoenix/experiments/functions.py,sha256=4XaOLE1Co9sW_yjM1sypQClmOLtt9kwoxmhIEJ3f_rk,32209
|
|
35
40
|
phoenix/experiments/tracing.py,sha256=wVpt8Ie9WNPoi1djJdcrkwCokHdTO0bicXViLg3O-1Y,2831
|
|
36
|
-
phoenix/experiments/types.py,sha256=
|
|
41
|
+
phoenix/experiments/types.py,sha256=SQqI-8CqA-bDTVIOUC1NOMi9bjEcDSlcG7o3Li1IBFY,23415
|
|
37
42
|
phoenix/experiments/utils.py,sha256=wLu5Kvt1b4a8rGPRWq5G8RQ9XSiV8fCIVm51zWBI3-g,758
|
|
38
43
|
phoenix/experiments/evaluators/__init__.py,sha256=j63fi3fa3U7-itVPHa82GowhjQRU-wO6yhO34u_lhsA,714
|
|
39
44
|
phoenix/experiments/evaluators/base.py,sha256=jAwJs-V7jCp2UBChL0S3813Xyd9GN4rU4IEhX0nkFGs,5549
|
|
@@ -60,41 +65,43 @@ phoenix/pointcloud/pointcloud.py,sha256=4zAIkKs2xOUbchpj4XDAV-iPMXrfAJ15TG6rlIYG
|
|
|
60
65
|
phoenix/pointcloud/projectors.py,sha256=zO_RrtDYSv2rqVOfIP2_9Cv11Dc8EmcZR94xhFcBYPU,1057
|
|
61
66
|
phoenix/pointcloud/umap_parameters.py,sha256=3UQSjrysVOvq2V4KNpTMqNqNiK0BsTZnPBHWZ4fyJtQ,1708
|
|
62
67
|
phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
phoenix/server/app.py,sha256=
|
|
64
|
-
phoenix/server/grpc_server.py,sha256=
|
|
65
|
-
phoenix/server/main.py,sha256=
|
|
68
|
+
phoenix/server/app.py,sha256=gAmGzOAhGO05IBEnBNfOc8Suw15_0_h0OCp-9RP0udQ,19098
|
|
69
|
+
phoenix/server/grpc_server.py,sha256=jllxDNkpLQxDkvej4RhTokobowbvydF-SU8gSw1MTCc,3378
|
|
70
|
+
phoenix/server/main.py,sha256=dvjv3g8ANpkvSGCUN02S2Yse643Nlwrp_bj4iXBSVTE,11082
|
|
66
71
|
phoenix/server/prometheus.py,sha256=j9DHB2fERuq_ZKmwVaqR-9wx5WcPPuU1Cm5Bhg5241Y,2996
|
|
67
72
|
phoenix/server/telemetry.py,sha256=T_2OKrxNViAeaANlNspEekg_Y5uZIFWvKAnpz8Aoqvk,2762
|
|
68
|
-
phoenix/server/thread_server.py,sha256=
|
|
73
|
+
phoenix/server/thread_server.py,sha256=RwXQGP_QhGD7le6WB7xEygEEuwBl5Ck_Zo8xGIYGi9M,2135
|
|
74
|
+
phoenix/server/types.py,sha256=o3uwy8NvfLO-j86v2Dl3irko6er0hvB_x4Df3S1DveM,460
|
|
69
75
|
phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
-
phoenix/server/api/context.py,sha256=
|
|
76
|
+
phoenix/server/api/context.py,sha256=IZNZB8VMOL_mKzTkvyS5RyIcZcI0gwUt2qZ6jppBDWc,2853
|
|
71
77
|
phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
|
|
72
78
|
phoenix/server/api/queries.py,sha256=eq2xHaQF-x4k6AGSY6b6mU2pie9bj-AJML6P2Mr0_DM,19886
|
|
73
79
|
phoenix/server/api/schema.py,sha256=BcxdqO5CSGqpKd-AAJHMjFlzaK9oJA8GJuxmMfcdjn4,434
|
|
74
|
-
phoenix/server/api/utils.py,sha256=
|
|
75
|
-
phoenix/server/api/dataloaders/__init__.py,sha256=
|
|
76
|
-
phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=
|
|
77
|
-
phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=
|
|
78
|
-
phoenix/server/api/dataloaders/dataset_example_spans.py,sha256
|
|
79
|
-
phoenix/server/api/dataloaders/document_evaluation_summaries.py,sha256=
|
|
80
|
-
phoenix/server/api/dataloaders/document_evaluations.py,sha256=
|
|
81
|
-
phoenix/server/api/dataloaders/document_retrieval_metrics.py,sha256=
|
|
82
|
-
phoenix/server/api/dataloaders/evaluation_summaries.py,sha256=
|
|
83
|
-
phoenix/server/api/dataloaders/experiment_annotation_summaries.py,sha256=
|
|
84
|
-
phoenix/server/api/dataloaders/experiment_error_rates.py,sha256=
|
|
85
|
-
phoenix/server/api/dataloaders/experiment_run_counts.py,sha256=
|
|
86
|
-
phoenix/server/api/dataloaders/experiment_sequence_number.py,sha256=
|
|
87
|
-
phoenix/server/api/dataloaders/latency_ms_quantile.py,sha256=
|
|
88
|
-
phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=
|
|
89
|
-
phoenix/server/api/dataloaders/project_by_name.py,sha256=
|
|
90
|
-
phoenix/server/api/dataloaders/record_counts.py,sha256=
|
|
91
|
-
phoenix/server/api/dataloaders/span_annotations.py,sha256=
|
|
92
|
-
phoenix/server/api/dataloaders/
|
|
93
|
-
phoenix/server/api/dataloaders/
|
|
94
|
-
phoenix/server/api/dataloaders/
|
|
95
|
-
phoenix/server/api/dataloaders/
|
|
96
|
-
phoenix/server/api/dataloaders/
|
|
97
|
-
phoenix/server/api/dataloaders/
|
|
80
|
+
phoenix/server/api/utils.py,sha256=Kl47G-1A7QKTDrc75BU2QK6HupsG6MWuXxy351FOfKQ,858
|
|
81
|
+
phoenix/server/api/dataloaders/__init__.py,sha256=C48-E6wkXSfAweypgH3BE_m0bAOLBVbIVzJxkva6t4g,5038
|
|
82
|
+
phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=q091UmkXx37OBKh7L-GJ5LXHyRXfX2w4XTk1NMHtPpw,1827
|
|
83
|
+
phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=i0g8F4akEf3kQOzAvBjO27QwXNsq-kJEM8dtzduxQgY,3720
|
|
84
|
+
phoenix/server/api/dataloaders/dataset_example_spans.py,sha256=-TjdyyJv2c2JiN1OXu6MMmQ-BEKlHXucEDcuObeRVsU,1416
|
|
85
|
+
phoenix/server/api/dataloaders/document_evaluation_summaries.py,sha256=5XOom2KRAmCwPmtlraiZOSl3vhfaW-eiiYkmetAEalw,5616
|
|
86
|
+
phoenix/server/api/dataloaders/document_evaluations.py,sha256=V6sE34jON_qFxt7eArJbktykAsty-gnBZHlEkORcj0E,1296
|
|
87
|
+
phoenix/server/api/dataloaders/document_retrieval_metrics.py,sha256=JqDqkUuoeG6WfcmWSrmQptfF6IPX8XgzYzyECXTAjgg,4202
|
|
88
|
+
phoenix/server/api/dataloaders/evaluation_summaries.py,sha256=FEfUMKgk0uqQlJCS5ynmjkBoJVkqW9EVQ8vhgQ2ReKY,5656
|
|
89
|
+
phoenix/server/api/dataloaders/experiment_annotation_summaries.py,sha256=qDEBRo0XKJMYBYlXBgJ-69jwPK-0r4pi9ZhbjC_vx6M,2813
|
|
90
|
+
phoenix/server/api/dataloaders/experiment_error_rates.py,sha256=wWTFOO2UxGIYUu53nnzzLk04-mJxw-BQgJELA9gT5bY,1949
|
|
91
|
+
phoenix/server/api/dataloaders/experiment_run_counts.py,sha256=8VlKRaXwD56-7q_uonRr7L6QlEkyEQubkFKmKx6vuz0,1661
|
|
92
|
+
phoenix/server/api/dataloaders/experiment_sequence_number.py,sha256=hSpKyOz3ES4UTfOzOfHeQ1ZXat-bzcdKybVSbYmhrBw,1563
|
|
93
|
+
phoenix/server/api/dataloaders/latency_ms_quantile.py,sha256=5Y2OQ_GeH1My2573eOm7zPbqpwDZ_WeMLoZMq3KDoNQ,7403
|
|
94
|
+
phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=k82jVllBWkGI6xu2MAltqxdIqyw3DqoVCQcKbi-JsmM,2834
|
|
95
|
+
phoenix/server/api/dataloaders/project_by_name.py,sha256=9p6DW_zXrsB9YGILFV0wkRwiapyHbZ1IgWK9HuHxl30,1105
|
|
96
|
+
phoenix/server/api/dataloaders/record_counts.py,sha256=64OsyiQRDZASlibpQAXtRkzyA_ch89A3TvhSUByxoTI,4215
|
|
97
|
+
phoenix/server/api/dataloaders/span_annotations.py,sha256=QsbAGPFitFxOCI9yJPPlueuMh0LqN18hMo-Vx2P8EsI,1194
|
|
98
|
+
phoenix/server/api/dataloaders/span_dataset_examples.py,sha256=BtLZp11fyyeaWGGBPZj2StzFM0m5jxt52zB2nFMVybo,1306
|
|
99
|
+
phoenix/server/api/dataloaders/span_descendants.py,sha256=b7jGTn0Hi22gv2yskloLnf3BG3upS9z5hnKLMT9Sxac,2094
|
|
100
|
+
phoenix/server/api/dataloaders/span_evaluations.py,sha256=IfwXW23GQaWti8F49wSJocWf7Tklf2ZJ0F6aB4cSVHs,1248
|
|
101
|
+
phoenix/server/api/dataloaders/span_projects.py,sha256=LbQWiboCFqq4CHS18OzvRUwL9yORqP26fh5p7JbpFdg,1244
|
|
102
|
+
phoenix/server/api/dataloaders/token_counts.py,sha256=riJC3jGRJv2eyenk8Gkx7xwDaulb9SWla58wfcXZeCE,4947
|
|
103
|
+
phoenix/server/api/dataloaders/trace_evaluations.py,sha256=vraPehNsausR4dbdvq-HudRVNARJUbep3T-Ud9jwWYY,1262
|
|
104
|
+
phoenix/server/api/dataloaders/trace_row_ids.py,sha256=RODX4NULlBzMxHMrsq0dp1ij6ZlLH4ZzQBnafGdxOvU,1100
|
|
98
105
|
phoenix/server/api/dataloaders/cache/__init__.py,sha256=SYoOM9n8FJaMdQarma5d1blu-jIg2GB8Shqg5ezSzZ8,106
|
|
99
106
|
phoenix/server/api/dataloaders/cache/two_tier_cache.py,sha256=I38L1RsOis98OQftE7n1Q9QBZfFJO6OW_qIINkuJllo,2295
|
|
100
107
|
phoenix/server/api/helpers/__init__.py,sha256=_V1eVkchZmTkhOfRC4QqR1sUB2xtIxdsMJkDouZq_IE,251
|
|
@@ -122,8 +129,10 @@ phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=NWhkcbcGNPwfOYsN3w
|
|
|
122
129
|
phoenix/server/api/input_types/PatchDatasetExamplesInput.py,sha256=E86aBGXDBC83jiEGwV5rilnoeQf6eqCfZ0aAVeIt2VI,890
|
|
123
130
|
phoenix/server/api/input_types/PatchDatasetInput.py,sha256=OURtTVY8Z_oFEDtKwT1LCMaOK5D4QYo5TVQ6mDrex-g,328
|
|
124
131
|
phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=fElsLTSEYYgGFGMYTEGcYid39tXUKFdV_JkdHavMcbA,591
|
|
132
|
+
phoenix/server/api/input_types/SpanAnnotationSort.py,sha256=T5pAGzmh4MiJp9JMAzNDByFVTczfw02FH4WFWwFezyI,361
|
|
125
133
|
phoenix/server/api/input_types/SpanSort.py,sha256=BqV0DjI4m3RKFbzsHN47XNhJfFmErFIYg64c8EJAVMo,6312
|
|
126
134
|
phoenix/server/api/input_types/TimeRange.py,sha256=yzx-gxj8mDeGLft1FzU_x1MVEgIG5Pt6-f8PUVDgipQ,522
|
|
135
|
+
phoenix/server/api/input_types/TraceAnnotationSort.py,sha256=BzwiUnMh2VsgQYnhDlbJ6ljHugqIS4YDUlYzvq_tl3o,365
|
|
127
136
|
phoenix/server/api/input_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
137
|
phoenix/server/api/mutations/__init__.py,sha256=UKUAhD5NY-ZI7XONnRRkaHoFuuU3idmE4fk6Sjgy18M,776
|
|
129
138
|
phoenix/server/api/mutations/auth.py,sha256=vPRFoj7J6PV6QeODewG4K0PhoOebS5AfMRpbi_wuhyQ,311
|
|
@@ -131,22 +140,23 @@ phoenix/server/api/mutations/dataset_mutations.py,sha256=CuKhxsYfvwVcdN_9EXhKxB6
|
|
|
131
140
|
phoenix/server/api/mutations/experiment_mutations.py,sha256=vV2lbJ7ccXZqe-LY7nXx6QxWqhKQE4UNZAFcML-KQ8I,3011
|
|
132
141
|
phoenix/server/api/mutations/export_events_mutations.py,sha256=t_wYBxaqvBJYRoHslh3Bmoxmwlzoy0u8SsBKWIKN5hE,4028
|
|
133
142
|
phoenix/server/api/mutations/project_mutations.py,sha256=d_xtYkYfZ5flpVgEkGknKB8rsEux-zZraczzqAs4e8A,2255
|
|
134
|
-
phoenix/server/api/mutations/span_annotations_mutations.py,sha256=
|
|
135
|
-
phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=
|
|
143
|
+
phoenix/server/api/mutations/span_annotations_mutations.py,sha256=DJ1wLlvx7zZJZclw9cFHzrBFtSf98a7grHBb0rd-Hyc,5339
|
|
144
|
+
phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=GtI_kDpzLDBFjh0CkYjCgVfdBCog7aKHlIVsEM2x92k,5379
|
|
136
145
|
phoenix/server/api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
137
|
-
phoenix/server/api/openapi/main.py,sha256=
|
|
138
|
-
phoenix/server/api/openapi/schema.py,sha256=
|
|
146
|
+
phoenix/server/api/openapi/main.py,sha256=KNutA_7AvV_WlGX8cOkvvDujcJKQ7AD1HT6rTpCpR8A,616
|
|
147
|
+
phoenix/server/api/openapi/schema.py,sha256=oVZoflWMfzOrLKMIrjr3iLnJ13rmN-t_DOe9g6KoN5s,471
|
|
139
148
|
phoenix/server/api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
149
|
phoenix/server/api/routers/utils.py,sha256=M41BoH-fl37izhRuN2aX7lWm7jOC20A_3uClv9TVUUY,583
|
|
141
|
-
phoenix/server/api/routers/v1/__init__.py,sha256=
|
|
142
|
-
phoenix/server/api/routers/v1/
|
|
143
|
-
phoenix/server/api/routers/v1/
|
|
144
|
-
phoenix/server/api/routers/v1/
|
|
145
|
-
phoenix/server/api/routers/v1/
|
|
146
|
-
phoenix/server/api/routers/v1/
|
|
147
|
-
phoenix/server/api/routers/v1/
|
|
148
|
-
phoenix/server/api/routers/v1/spans.py,sha256
|
|
149
|
-
phoenix/server/api/routers/v1/traces.py,sha256=
|
|
150
|
+
phoenix/server/api/routers/v1/__init__.py,sha256=nb49zcOdAi3DSGuC9gUubN9Yri-o7-WFdlGak4jGuFw,1462
|
|
151
|
+
phoenix/server/api/routers/v1/datasets.py,sha256=QG6QeyfPi1tfBvVoa3jpNOcwtR5ntNfd3IW9rzP735Q,36920
|
|
152
|
+
phoenix/server/api/routers/v1/evaluations.py,sha256=FSfz9MTi8s65F07abDXlb9-y97fDZSYbqsCXpimwO7g,12628
|
|
153
|
+
phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=xoVhU71U3c1QJSXiKsAa4yiH-UAqkyVc7uKPyIHjrYY,4682
|
|
154
|
+
phoenix/server/api/routers/v1/experiment_runs.py,sha256=7qvLYgqH58nxqhTnJ0hPf0PBfVmZnbxquodSnEGoQxk,6059
|
|
155
|
+
phoenix/server/api/routers/v1/experiments.py,sha256=AFJb8Pi6SDKbIbkDRWUtPjikZIoRhc7cFLWm40l3mPk,9817
|
|
156
|
+
phoenix/server/api/routers/v1/pydantic_compat.py,sha256=FeK8oe2brqu-djsoqRxiKL4tw5cHmi89OHVfCFxYsAo,2890
|
|
157
|
+
phoenix/server/api/routers/v1/spans.py,sha256=-nDcr0AjynS-0U6A2nxEQiUTLoNyfzE-3NiFObyfyVQ,8516
|
|
158
|
+
phoenix/server/api/routers/v1/traces.py,sha256=4k_57UICPfRcyQsdPBK-Xo_n6oZ1p41XUwXhZEQpXwE,7568
|
|
159
|
+
phoenix/server/api/routers/v1/utils.py,sha256=xvl2v-BKUkqmFVMmgmmWGFKuRBTrUdoiAeT3mCYEE68,3086
|
|
150
160
|
phoenix/server/api/types/Annotation.py,sha256=7Ym7iuVcbwHlw2yIRylz4nATAF_Cm-Z17qcjiooj1cc,751
|
|
151
161
|
phoenix/server/api/types/AnnotatorKind.py,sha256=rPgGdbN1Gvc109sGQ_ZH-gfJbp93V9wlarzTEJNtUwI,236
|
|
152
162
|
phoenix/server/api/types/Cluster.py,sha256=ac4YfT1OH3xLVmex7EUmB6b9IpULnhLTt554LR0jglE,5689
|
|
@@ -190,10 +200,10 @@ phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSF
|
|
|
190
200
|
phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
|
|
191
201
|
phoenix/server/api/types/Segments.py,sha256=m2yoegrxA1Tn7ZAy1rMjjD1isc752MaAXMoffkBlvrM,2921
|
|
192
202
|
phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
|
|
193
|
-
phoenix/server/api/types/Span.py,sha256=
|
|
203
|
+
phoenix/server/api/types/Span.py,sha256=PRVjcC79qyxz8FW-YT90rDgcW8dkVO9_5pXxUXeH31g,15448
|
|
194
204
|
phoenix/server/api/types/SpanAnnotation.py,sha256=6b5G-b_OoRvDL2ayWk7MkbqarLK-F-pQMx21CpUuNGY,1168
|
|
195
205
|
phoenix/server/api/types/TimeSeries.py,sha256=wjzuxHFqCey0O7Ys25qiXyuqXK8an-osyNWUE8A_8G4,5227
|
|
196
|
-
phoenix/server/api/types/Trace.py,sha256
|
|
206
|
+
phoenix/server/api/types/Trace.py,sha256=-nh3A-S_BlQK1VSSOTWqM85l-WwJsRHifxeDi0sFWZE,3246
|
|
197
207
|
phoenix/server/api/types/TraceAnnotation.py,sha256=OW6A2zr1gomOuG0XQe55dk15XXX2DSM0DzatRbHWH5A,1256
|
|
198
208
|
phoenix/server/api/types/UMAPPoints.py,sha256=5sOuruzM8saXa8C2XiyUfk2XPrkVGmhqKpclMYRw1dk,1656
|
|
199
209
|
phoenix/server/api/types/ValidationResult.py,sha256=pHwdYk4J7SJ5xhlWWHg_6qWkfk4rjOx-bSkGHvkDE3Q,142
|
|
@@ -202,7 +212,6 @@ phoenix/server/api/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
202
212
|
phoenix/server/api/types/node.py,sha256=V0Xh9U4cGkz3iMg-vzEXtcs6cumU29JFPiU-JuGzjWI,848
|
|
203
213
|
phoenix/server/api/types/pagination.py,sha256=PcaJ0s4exsTKgCZC4aFm1cgZNrGpHSdo6PbkWzPcweg,9077
|
|
204
214
|
phoenix/server/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
205
|
-
phoenix/server/openapi/docs.py,sha256=fTb9q2oOSKC5bLVQy2Dsg3Bs0mGkCOKX1ypX7731sE0,7044
|
|
206
215
|
phoenix/server/static/apple-touch-icon-114x114.png,sha256=xtFVXAYQnJkpUApg2D1hltSTuyO4Is4sD4A0ZkikiVU,9486
|
|
207
216
|
phoenix/server/static/apple-touch-icon-120x120.png,sha256=iqZVAk634BbjJMozA8aHYyw15JjhIlIrG41FA2DFFaE,9957
|
|
208
217
|
phoenix/server/static/apple-touch-icon-144x144.png,sha256=VgARtkHKoU8zikb3_G83h_cb02kpPcoJqO78yRh1AfU,10047
|
|
@@ -213,29 +222,29 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
|
|
|
213
222
|
phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
|
|
214
223
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
215
224
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
216
|
-
phoenix/server/static/.vite/manifest.json,sha256=
|
|
217
|
-
phoenix/server/static/assets/components-
|
|
218
|
-
phoenix/server/static/assets/index-
|
|
219
|
-
phoenix/server/static/assets/pages-
|
|
220
|
-
phoenix/server/static/assets/vendor-
|
|
225
|
+
phoenix/server/static/.vite/manifest.json,sha256=Y5Vxm1VUdmt2c5ANmtD1Z0r2Q1mnApb-UhzLnyJxtU0,1929
|
|
226
|
+
phoenix/server/static/assets/components-Ci5kMOk5.js,sha256=WxnZ4voqivS6S9USAF9zhC5Q2AdvhaJTGFbkTwDLiUI,165385
|
|
227
|
+
phoenix/server/static/assets/index-BQG5WVX7.js,sha256=7RjUXpSAeTK-Q_mLrs4cWscpGyhtSIMI0RhsNn6SwMg,6347
|
|
228
|
+
phoenix/server/static/assets/pages-BrevprVW.js,sha256=GZiR--twaLN-wYV1jvIM-pJiuPbae-HReCjkXNZ5O_U,441239
|
|
229
|
+
phoenix/server/static/assets/vendor-CP0b0YG0.js,sha256=hoxXvVgcHofQrVahK5Q4hAMDaQiH6GygbQvdiXlhQAo,1355423
|
|
221
230
|
phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
|
|
222
|
-
phoenix/server/static/assets/vendor-arizeai-
|
|
223
|
-
phoenix/server/static/assets/vendor-codemirror-
|
|
224
|
-
phoenix/server/static/assets/vendor-recharts-
|
|
231
|
+
phoenix/server/static/assets/vendor-arizeai-DTbiPGp6.js,sha256=-o-2f0ByoAbbFXyNrOogVNfdqmXKVMsuxhnuwTJqVLc,296355
|
|
232
|
+
phoenix/server/static/assets/vendor-codemirror-DtdPDzrv.js,sha256=ngcX7xxWUANIvplBuEqkDowqRkknIoX3gXUeQk-jtMQ,503031
|
|
233
|
+
phoenix/server/static/assets/vendor-recharts-A0DA1O99.js,sha256=Zp6oIbsFZPDN-M7VNovxGfJkg9XUISg1fM7eRMtHCaw,282859
|
|
225
234
|
phoenix/server/static/assets/vendor-three-DwGkEfCM.js,sha256=0D12ZgKzfKCTSdSTKJBFR2RZO_xxeMXrqDp0AszZqHY,620972
|
|
226
235
|
phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
227
236
|
phoenix/server/templates/index.html,sha256=gVpjB8pCMiubdMh2DA9mTCtV5AVTXJH_9u5PmG2t7Vk,4238
|
|
228
237
|
phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
229
|
-
phoenix/session/client.py,sha256=
|
|
238
|
+
phoenix/session/client.py,sha256=RSaEALbFu-En5oJLv7K4BmwdkrsIC5ZbjMX7Mlny8_Y,32665
|
|
230
239
|
phoenix/session/data_extractor.py,sha256=gkEM3WWZAlWGMfRgQopAQlid4cSi6GNco-sdrGir0qc,2788
|
|
231
240
|
phoenix/session/evaluation.py,sha256=aKeV8UVOyq3b7CYOwt3cWuLz0xzvMjX7vlEPILJ_fcs,5311
|
|
232
|
-
phoenix/session/session.py,sha256=
|
|
241
|
+
phoenix/session/session.py,sha256=RstuZpkdZcuyZXhWdY59YOr46wjGsRJObIC5Rr5QRO0,26733
|
|
233
242
|
phoenix/trace/__init__.py,sha256=ujk_uYjM8gmm-YqnyXxF-kekfwid0bcaPMTtNNcaw6U,407
|
|
234
243
|
phoenix/trace/attributes.py,sha256=B_OrzVaxZwFkrAFXZyicYoIti1UdUysURsvUS2GyW1U,12488
|
|
235
244
|
phoenix/trace/errors.py,sha256=wB1z8qdPckngdfU-TORToekvg3344oNFAA83_hC2yFY,180
|
|
236
245
|
phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKyttYdw-ddvPOk,1048
|
|
237
246
|
phoenix/trace/exporter.py,sha256=eAYemdvDCHMugDJiaR29BFFMTQBdf3oerdkz34Cl3hE,4736
|
|
238
|
-
phoenix/trace/fixtures.py,sha256=
|
|
247
|
+
phoenix/trace/fixtures.py,sha256=LABY-H6BdDA-fS9dZ13uTovXCPTdfWcvU8HsJ_qPspc,14106
|
|
239
248
|
phoenix/trace/otel.py,sha256=WA720jvRadiZBAKjsYoPyXzypHwbyEK2OZRVUwtbjB8,9976
|
|
240
249
|
phoenix/trace/projects.py,sha256=2BwlNjFE-uwpqYtCu5YyBiYZk9wRPpM13vh3-Cv7GkA,2157
|
|
241
250
|
phoenix/trace/schemas.py,sha256=HpWSyzec0yDHEQXEDuwyLbhpvKrqkGps8BJqGiIFj8Y,5978
|
|
@@ -243,10 +252,10 @@ phoenix/trace/span_evaluations.py,sha256=GaADtJLi2njra4aYaie0BIwkSgdxPB_SNseglI4
|
|
|
243
252
|
phoenix/trace/span_json_decoder.py,sha256=jkpYSmOUsSptvahOvetrPjVkPIuI4h6b87eizL8wHp8,3230
|
|
244
253
|
phoenix/trace/span_json_encoder.py,sha256=tzSCIQJbeFBm33K68G8A5M12n_86tCDyuU0WAobxEz4,2010
|
|
245
254
|
phoenix/trace/trace_dataset.py,sha256=Wq89jJ4hYQ1Qt-Uj11ZNzKQYQeKmGY6NqWStQiiTlMw,14351
|
|
246
|
-
phoenix/trace/utils.py,sha256=
|
|
255
|
+
phoenix/trace/utils.py,sha256=1SEQr37cdHOM0P3BdL1dszArj3Zm-VJQyb1BcJs_qO8,1833
|
|
247
256
|
phoenix/trace/dsl/README.md,sha256=ihmP9zGUC5V-TDbzKla76LuyDqPDQIBUH2BORwxNI68,2902
|
|
248
257
|
phoenix/trace/dsl/__init__.py,sha256=WIQIjJg362XD3s50OsPJJ0xbDsGp41bSv7vDllLrPuA,144
|
|
249
|
-
phoenix/trace/dsl/filter.py,sha256=
|
|
258
|
+
phoenix/trace/dsl/filter.py,sha256=9NwATCUOgJ4Pms8XsEcinROUuxZ9UW-ISV09o65Ms70,32600
|
|
250
259
|
phoenix/trace/dsl/helpers.py,sha256=ULAhqWULPqYWCSNX7y50DVKIqfySx86nqb6hDvZPnVk,3896
|
|
251
260
|
phoenix/trace/dsl/query.py,sha256=W0t-tiXh2WIVb96lzFAGQOQ-U46uKux78d4KL3rW-PE,30316
|
|
252
261
|
phoenix/trace/langchain/__init__.py,sha256=F37GfD1pd5Kuw7R7iRUM1zXXpO8xEcycNZh5dwqBXNk,109
|
|
@@ -259,15 +268,16 @@ phoenix/trace/v1/__init__.py,sha256=-IbAD0ruESMjvQLvGAg9CTfjBUATFDx1OXseDPis6-0,
|
|
|
259
268
|
phoenix/trace/v1/evaluation_pb2.py,sha256=8sXvv2BW_vqD30MOMbmkeE2zpmm7ncik21kl3e-HzeQ,2254
|
|
260
269
|
phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQdQCXGm8,4500
|
|
261
270
|
phoenix/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
271
|
+
phoenix/utilities/client.py,sha256=6Swxe4TVA481eKnmkCox83WY52b2nA-DWIzkkGu6wwo,4935
|
|
262
272
|
phoenix/utilities/deprecation.py,sha256=cFuTVvjSYyRlrdxdJewjJVieIEHPk30BukSRGRydQ3k,1046
|
|
263
273
|
phoenix/utilities/error_handling.py,sha256=7b5rpGFj9EWZ8yrZK1IHvxB89suWk3lggDayUQcvZds,1946
|
|
264
274
|
phoenix/utilities/json.py,sha256=y_w-McDfvlTeGJT28sCtyjzVkwFicakxERG-sGRc8Ak,1948
|
|
265
275
|
phoenix/utilities/logging.py,sha256=lDXd6EGaamBNcQxL4vP1au9-i_SXe0OraUDiJOcszSw,222
|
|
266
|
-
phoenix/utilities/project.py,sha256=
|
|
276
|
+
phoenix/utilities/project.py,sha256=8IJuMM4yUMoooPi37sictGj8Etu9rGmq6RFtc9848cQ,436
|
|
267
277
|
phoenix/utilities/re.py,sha256=PDve_OLjRTM8yQQJHC8-n3HdIONi7aNils3ZKRZ5uBM,2045
|
|
268
278
|
phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
269
|
-
arize_phoenix-4.
|
|
270
|
-
arize_phoenix-4.
|
|
271
|
-
arize_phoenix-4.
|
|
272
|
-
arize_phoenix-4.
|
|
273
|
-
arize_phoenix-4.
|
|
279
|
+
arize_phoenix-4.16.0.dist-info/METADATA,sha256=GEUUxZhBhXAU_6ikOQlpm6SN8-ECGptFZtdWKUQ553Y,11820
|
|
280
|
+
arize_phoenix-4.16.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
281
|
+
arize_phoenix-4.16.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
282
|
+
arize_phoenix-4.16.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
283
|
+
arize_phoenix-4.16.0.dist-info/RECORD,,
|
phoenix/db/bulk_inserter.py
CHANGED
|
@@ -1,28 +1,36 @@
|
|
|
1
1
|
import asyncio
|
|
2
2
|
import logging
|
|
3
|
-
from asyncio import Queue
|
|
3
|
+
from asyncio import Queue, as_completed
|
|
4
|
+
from collections import defaultdict
|
|
4
5
|
from dataclasses import dataclass, field
|
|
5
6
|
from datetime import datetime, timezone
|
|
7
|
+
from functools import singledispatchmethod
|
|
6
8
|
from itertools import islice
|
|
7
9
|
from time import perf_counter
|
|
8
10
|
from typing import (
|
|
9
11
|
Any,
|
|
10
|
-
AsyncContextManager,
|
|
11
12
|
Awaitable,
|
|
12
13
|
Callable,
|
|
14
|
+
DefaultDict,
|
|
15
|
+
Dict,
|
|
13
16
|
Iterable,
|
|
14
17
|
List,
|
|
18
|
+
Mapping,
|
|
15
19
|
Optional,
|
|
16
20
|
Set,
|
|
17
21
|
Tuple,
|
|
22
|
+
Type,
|
|
18
23
|
cast,
|
|
19
24
|
)
|
|
20
25
|
|
|
21
26
|
from cachetools import LRUCache
|
|
22
|
-
from sqlalchemy
|
|
27
|
+
from sqlalchemy import Select, select
|
|
23
28
|
from typing_extensions import TypeAlias
|
|
24
29
|
|
|
25
30
|
import phoenix.trace.v1 as pb
|
|
31
|
+
from phoenix.db import models
|
|
32
|
+
from phoenix.db.insertion.constants import DEFAULT_RETRY_ALLOWANCE, DEFAULT_RETRY_DELAY_SEC
|
|
33
|
+
from phoenix.db.insertion.document_annotation import DocumentAnnotationQueueInserter
|
|
26
34
|
from phoenix.db.insertion.evaluation import (
|
|
27
35
|
EvaluationInsertionEvent,
|
|
28
36
|
InsertEvaluationError,
|
|
@@ -30,7 +38,11 @@ from phoenix.db.insertion.evaluation import (
|
|
|
30
38
|
)
|
|
31
39
|
from phoenix.db.insertion.helpers import DataManipulation, DataManipulationEvent
|
|
32
40
|
from phoenix.db.insertion.span import SpanInsertionEvent, insert_span
|
|
41
|
+
from phoenix.db.insertion.span_annotation import SpanAnnotationQueueInserter
|
|
42
|
+
from phoenix.db.insertion.trace_annotation import TraceAnnotationQueueInserter
|
|
43
|
+
from phoenix.db.insertion.types import Insertables, Precursors
|
|
33
44
|
from phoenix.server.api.dataloaders import CacheForDataLoaders
|
|
45
|
+
from phoenix.server.types import DbSessionFactory
|
|
34
46
|
from phoenix.trace.schemas import Span
|
|
35
47
|
|
|
36
48
|
logger = logging.getLogger(__name__)
|
|
@@ -46,7 +58,7 @@ class TransactionResult:
|
|
|
46
58
|
class BulkInserter:
|
|
47
59
|
def __init__(
|
|
48
60
|
self,
|
|
49
|
-
db:
|
|
61
|
+
db: DbSessionFactory,
|
|
50
62
|
*,
|
|
51
63
|
cache_for_dataloaders: Optional[CacheForDataLoaders] = None,
|
|
52
64
|
initial_batch_of_operations: Iterable[DataManipulation] = (),
|
|
@@ -56,6 +68,8 @@ class BulkInserter:
|
|
|
56
68
|
max_ops_per_transaction: int = 1000,
|
|
57
69
|
max_queue_size: int = 1000,
|
|
58
70
|
enable_prometheus: bool = False,
|
|
71
|
+
retry_delay_sec: float = DEFAULT_RETRY_DELAY_SEC,
|
|
72
|
+
retry_allowance: int = DEFAULT_RETRY_ALLOWANCE,
|
|
59
73
|
) -> None:
|
|
60
74
|
"""
|
|
61
75
|
:param db: A function to initiate a new database session.
|
|
@@ -82,6 +96,9 @@ class BulkInserter:
|
|
|
82
96
|
self._last_updated_at_by_project: LRUCache[ProjectRowId, datetime] = LRUCache(maxsize=100)
|
|
83
97
|
self._cache_for_dataloaders = cache_for_dataloaders
|
|
84
98
|
self._enable_prometheus = enable_prometheus
|
|
99
|
+
self._retry_delay_sec = retry_delay_sec
|
|
100
|
+
self._retry_allowance = retry_allowance
|
|
101
|
+
self._queue_inserters = _QueueInserters(db, self._retry_delay_sec, self._retry_allowance)
|
|
85
102
|
|
|
86
103
|
def last_updated_at(self, project_rowid: Optional[ProjectRowId] = None) -> Optional[datetime]:
|
|
87
104
|
if isinstance(project_rowid, ProjectRowId):
|
|
@@ -91,6 +108,7 @@ class BulkInserter:
|
|
|
91
108
|
async def __aenter__(
|
|
92
109
|
self,
|
|
93
110
|
) -> Tuple[
|
|
111
|
+
Callable[[Any], Awaitable[None]],
|
|
94
112
|
Callable[[Span, str], Awaitable[None]],
|
|
95
113
|
Callable[[pb.Evaluation], Awaitable[None]],
|
|
96
114
|
Callable[[DataManipulation], None],
|
|
@@ -99,6 +117,7 @@ class BulkInserter:
|
|
|
99
117
|
self._operations = Queue(maxsize=self._max_queue_size)
|
|
100
118
|
self._task = asyncio.create_task(self._bulk_insert())
|
|
101
119
|
return (
|
|
120
|
+
self._enqueue,
|
|
102
121
|
self._queue_span,
|
|
103
122
|
self._queue_evaluation,
|
|
104
123
|
self._enqueue_operation,
|
|
@@ -110,6 +129,9 @@ class BulkInserter:
|
|
|
110
129
|
self._task.cancel()
|
|
111
130
|
self._task = None
|
|
112
131
|
|
|
132
|
+
async def _enqueue(self, *items: Any) -> None:
|
|
133
|
+
await self._queue_inserters.enqueue(*items)
|
|
134
|
+
|
|
113
135
|
def _enqueue_operation(self, operation: DataManipulation) -> None:
|
|
114
136
|
cast("Queue[DataManipulation]", self._operations).put_nowait(operation)
|
|
115
137
|
|
|
@@ -125,7 +147,17 @@ class BulkInserter:
|
|
|
125
147
|
assert isinstance(self._operations, Queue)
|
|
126
148
|
spans_buffer, evaluations_buffer = None, None
|
|
127
149
|
# start first insert immediately if the inserter has not run recently
|
|
128
|
-
while
|
|
150
|
+
while (
|
|
151
|
+
self._running
|
|
152
|
+
or not self._queue_inserters.empty
|
|
153
|
+
or not self._operations.empty()
|
|
154
|
+
or self._spans
|
|
155
|
+
or self._evaluations
|
|
156
|
+
):
|
|
157
|
+
if not self._queue_inserters.empty:
|
|
158
|
+
if inserted_ids := await self._queue_inserters.insert():
|
|
159
|
+
for project_rowid in await self._get_project_rowids(inserted_ids):
|
|
160
|
+
self._last_updated_at_by_project[project_rowid] = datetime.now(timezone.utc)
|
|
129
161
|
if self._operations.empty() and not (self._spans or self._evaluations):
|
|
130
162
|
await asyncio.sleep(self._sleep)
|
|
131
163
|
continue
|
|
@@ -245,3 +277,97 @@ class BulkInserter:
|
|
|
245
277
|
BULK_LOADER_EXCEPTIONS.inc()
|
|
246
278
|
logger.exception("Failed to insert evaluations")
|
|
247
279
|
return transaction_result
|
|
280
|
+
|
|
281
|
+
async def _get_project_rowids(
|
|
282
|
+
self,
|
|
283
|
+
inserted_ids: Mapping[Type[models.Base], List[int]],
|
|
284
|
+
) -> Set[int]:
|
|
285
|
+
ans: Set[int] = set()
|
|
286
|
+
if not inserted_ids:
|
|
287
|
+
return ans
|
|
288
|
+
stmt: Select[Tuple[int]]
|
|
289
|
+
for table, ids in inserted_ids.items():
|
|
290
|
+
if not ids:
|
|
291
|
+
continue
|
|
292
|
+
if issubclass(table, models.SpanAnnotation):
|
|
293
|
+
stmt = (
|
|
294
|
+
select(models.Project.id)
|
|
295
|
+
.join(models.Trace)
|
|
296
|
+
.join_from(models.Trace, models.Span)
|
|
297
|
+
.join_from(models.Span, models.SpanAnnotation)
|
|
298
|
+
.where(models.SpanAnnotation.id.in_(ids))
|
|
299
|
+
)
|
|
300
|
+
elif issubclass(table, models.DocumentAnnotation):
|
|
301
|
+
stmt = (
|
|
302
|
+
select(models.Project.id)
|
|
303
|
+
.join(models.Trace)
|
|
304
|
+
.join_from(models.Trace, models.Span)
|
|
305
|
+
.join_from(models.Span, models.DocumentAnnotation)
|
|
306
|
+
.where(models.DocumentAnnotation.id.in_(ids))
|
|
307
|
+
)
|
|
308
|
+
elif issubclass(table, models.TraceAnnotation):
|
|
309
|
+
stmt = (
|
|
310
|
+
select(models.Project.id)
|
|
311
|
+
.join(models.Trace)
|
|
312
|
+
.join_from(models.Trace, models.TraceAnnotation)
|
|
313
|
+
.where(models.TraceAnnotation.id.in_(ids))
|
|
314
|
+
)
|
|
315
|
+
else:
|
|
316
|
+
continue
|
|
317
|
+
async with self._db() as session:
|
|
318
|
+
project_rowids = [_ async for _ in await session.stream_scalars(stmt)]
|
|
319
|
+
ans.update(project_rowids)
|
|
320
|
+
return ans
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
class _QueueInserters:
|
|
324
|
+
def __init__(
|
|
325
|
+
self,
|
|
326
|
+
db: DbSessionFactory,
|
|
327
|
+
retry_delay_sec: float = DEFAULT_RETRY_DELAY_SEC,
|
|
328
|
+
retry_allowance: int = DEFAULT_RETRY_ALLOWANCE,
|
|
329
|
+
) -> None:
|
|
330
|
+
self._db = db
|
|
331
|
+
args = (db, retry_delay_sec, retry_allowance)
|
|
332
|
+
self._span_annotations = SpanAnnotationQueueInserter(*args)
|
|
333
|
+
self._trace_annotations = TraceAnnotationQueueInserter(*args)
|
|
334
|
+
self._document_annotations = DocumentAnnotationQueueInserter(*args)
|
|
335
|
+
self._queues = (
|
|
336
|
+
self._span_annotations,
|
|
337
|
+
self._trace_annotations,
|
|
338
|
+
self._document_annotations,
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
async def insert(self) -> Dict[Type[models.Base], List[int]]:
|
|
342
|
+
ans: DefaultDict[Type[models.Base], List[int]] = defaultdict(list)
|
|
343
|
+
for coro in as_completed([q.insert() for q in self._queues]):
|
|
344
|
+
table, inserted_ids = await coro
|
|
345
|
+
if inserted_ids:
|
|
346
|
+
ans[table].extend(inserted_ids)
|
|
347
|
+
return ans
|
|
348
|
+
|
|
349
|
+
@property
|
|
350
|
+
def empty(self) -> bool:
|
|
351
|
+
return all(q.empty for q in self._queues)
|
|
352
|
+
|
|
353
|
+
async def enqueue(self, *items: Any) -> None:
|
|
354
|
+
for item in items:
|
|
355
|
+
await self._enqueue(item)
|
|
356
|
+
|
|
357
|
+
@singledispatchmethod
|
|
358
|
+
async def _enqueue(self, item: Any) -> None: ...
|
|
359
|
+
|
|
360
|
+
@_enqueue.register(Precursors.SpanAnnotation)
|
|
361
|
+
@_enqueue.register(Insertables.SpanAnnotation)
|
|
362
|
+
async def _(self, item: Precursors.SpanAnnotation) -> None:
|
|
363
|
+
await self._span_annotations.enqueue(item)
|
|
364
|
+
|
|
365
|
+
@_enqueue.register(Precursors.TraceAnnotation)
|
|
366
|
+
@_enqueue.register(Insertables.TraceAnnotation)
|
|
367
|
+
async def _(self, item: Precursors.TraceAnnotation) -> None:
|
|
368
|
+
await self._trace_annotations.enqueue(item)
|
|
369
|
+
|
|
370
|
+
@_enqueue.register(Precursors.DocumentAnnotation)
|
|
371
|
+
@_enqueue.register(Insertables.DocumentAnnotation)
|
|
372
|
+
async def _(self, item: Precursors.DocumentAnnotation) -> None:
|
|
373
|
+
await self._document_annotations.enqueue(item)
|
phoenix/db/engines.py
CHANGED
|
@@ -8,7 +8,7 @@ from typing import Any
|
|
|
8
8
|
import aiosqlite
|
|
9
9
|
import numpy as np
|
|
10
10
|
import sqlean
|
|
11
|
-
from sqlalchemy import URL, event, make_url
|
|
11
|
+
from sqlalchemy import URL, StaticPool, event, make_url
|
|
12
12
|
from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
|
|
13
13
|
from typing_extensions import assert_never
|
|
14
14
|
|
|
@@ -105,6 +105,7 @@ def aio_sqlite_engine(
|
|
|
105
105
|
echo=echo,
|
|
106
106
|
json_serializer=_dumps,
|
|
107
107
|
async_creator=async_creator,
|
|
108
|
+
poolclass=StaticPool,
|
|
108
109
|
)
|
|
109
110
|
event.listen(engine.sync_engine, "connect", set_sqlite_pragma)
|
|
110
111
|
if not migrate:
|
phoenix/db/helpers.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import Any, Optional, Tuple
|
|
2
|
+
from typing import Any, Callable, Hashable, Iterable, List, Optional, Set, Tuple, TypeVar
|
|
3
3
|
|
|
4
4
|
from openinference.semconv.trace import (
|
|
5
5
|
OpenInferenceSpanKindValues,
|
|
@@ -80,3 +80,25 @@ def get_project_names_for_experiments(*experiment_ids: int) -> Select[Tuple[Opti
|
|
|
80
80
|
.where(models.Experiment.id.in_(set(experiment_ids)))
|
|
81
81
|
.where(models.Experiment.project_name.isnot(None))
|
|
82
82
|
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
_AnyT = TypeVar("_AnyT")
|
|
86
|
+
_KeyT = TypeVar("_KeyT", bound=Hashable)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def dedup(
|
|
90
|
+
items: Iterable[_AnyT],
|
|
91
|
+
key: Callable[[_AnyT], _KeyT],
|
|
92
|
+
) -> List[_AnyT]:
|
|
93
|
+
"""
|
|
94
|
+
Discard subsequent duplicates after the first appearance in `items`.
|
|
95
|
+
"""
|
|
96
|
+
ans = []
|
|
97
|
+
seen: Set[_KeyT] = set()
|
|
98
|
+
for item in items:
|
|
99
|
+
if (k := key(item)) in seen:
|
|
100
|
+
continue
|
|
101
|
+
else:
|
|
102
|
+
ans.append(item)
|
|
103
|
+
seen.add(k)
|
|
104
|
+
return ans
|