arize-phoenix 4.12.1rc1__py3-none-any.whl → 4.15.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 (73) hide show
  1. {arize_phoenix-4.12.1rc1.dist-info → arize_phoenix-4.15.0.dist-info}/METADATA +10 -6
  2. {arize_phoenix-4.12.1rc1.dist-info → arize_phoenix-4.15.0.dist-info}/RECORD +70 -68
  3. phoenix/db/bulk_inserter.py +5 -4
  4. phoenix/db/engines.py +2 -1
  5. phoenix/experiments/evaluators/base.py +4 -0
  6. phoenix/experiments/evaluators/code_evaluators.py +80 -0
  7. phoenix/experiments/evaluators/llm_evaluators.py +77 -1
  8. phoenix/experiments/evaluators/utils.py +70 -21
  9. phoenix/experiments/functions.py +17 -16
  10. phoenix/server/api/context.py +5 -3
  11. phoenix/server/api/dataloaders/__init__.py +2 -0
  12. phoenix/server/api/dataloaders/average_experiment_run_latency.py +25 -25
  13. phoenix/server/api/dataloaders/dataset_example_revisions.py +2 -4
  14. phoenix/server/api/dataloaders/dataset_example_spans.py +2 -4
  15. phoenix/server/api/dataloaders/document_evaluation_summaries.py +2 -4
  16. phoenix/server/api/dataloaders/document_evaluations.py +2 -4
  17. phoenix/server/api/dataloaders/document_retrieval_metrics.py +2 -4
  18. phoenix/server/api/dataloaders/evaluation_summaries.py +2 -4
  19. phoenix/server/api/dataloaders/experiment_annotation_summaries.py +2 -4
  20. phoenix/server/api/dataloaders/experiment_error_rates.py +32 -14
  21. phoenix/server/api/dataloaders/experiment_run_counts.py +20 -9
  22. phoenix/server/api/dataloaders/experiment_sequence_number.py +2 -4
  23. phoenix/server/api/dataloaders/latency_ms_quantile.py +2 -3
  24. phoenix/server/api/dataloaders/min_start_or_max_end_times.py +2 -4
  25. phoenix/server/api/dataloaders/project_by_name.py +3 -3
  26. phoenix/server/api/dataloaders/record_counts.py +2 -4
  27. phoenix/server/api/dataloaders/span_annotations.py +2 -4
  28. phoenix/server/api/dataloaders/span_dataset_examples.py +36 -0
  29. phoenix/server/api/dataloaders/span_descendants.py +2 -4
  30. phoenix/server/api/dataloaders/span_evaluations.py +2 -4
  31. phoenix/server/api/dataloaders/span_projects.py +3 -3
  32. phoenix/server/api/dataloaders/token_counts.py +2 -4
  33. phoenix/server/api/dataloaders/trace_evaluations.py +2 -4
  34. phoenix/server/api/dataloaders/trace_row_ids.py +2 -4
  35. phoenix/server/api/input_types/{CreateSpanAnnotationsInput.py → CreateSpanAnnotationInput.py} +4 -2
  36. phoenix/server/api/input_types/{CreateTraceAnnotationsInput.py → CreateTraceAnnotationInput.py} +4 -2
  37. phoenix/server/api/input_types/{PatchAnnotationsInput.py → PatchAnnotationInput.py} +4 -2
  38. phoenix/server/api/mutations/span_annotations_mutations.py +20 -9
  39. phoenix/server/api/mutations/trace_annotations_mutations.py +20 -9
  40. phoenix/server/api/routers/v1/datasets.py +132 -10
  41. phoenix/server/api/routers/v1/evaluations.py +3 -5
  42. phoenix/server/api/routers/v1/experiments.py +1 -1
  43. phoenix/server/api/types/Experiment.py +2 -2
  44. phoenix/server/api/types/Inferences.py +1 -2
  45. phoenix/server/api/types/Model.py +1 -2
  46. phoenix/server/api/types/Span.py +5 -0
  47. phoenix/server/api/utils.py +4 -4
  48. phoenix/server/app.py +21 -18
  49. phoenix/server/grpc_server.py +2 -2
  50. phoenix/server/main.py +5 -9
  51. phoenix/server/static/.vite/manifest.json +31 -31
  52. phoenix/server/static/assets/{components-C8sm_r1F.js → components-kGgeFkHp.js} +150 -110
  53. phoenix/server/static/assets/index-BctFO6S7.js +100 -0
  54. phoenix/server/static/assets/{pages-bN7juCjh.js → pages-DabDCmVd.js} +432 -255
  55. phoenix/server/static/assets/{vendor-CUDAPm8e.js → vendor-CP0b0YG0.js} +2 -2
  56. phoenix/server/static/assets/{vendor-arizeai-Do2HOmcL.js → vendor-arizeai-B5Hti8OB.js} +27 -27
  57. phoenix/server/static/assets/vendor-codemirror-DtdPDzrv.js +15 -0
  58. phoenix/server/static/assets/{vendor-recharts-PKRvByVe.js → vendor-recharts-A0DA1O99.js} +1 -1
  59. phoenix/server/types.py +18 -0
  60. phoenix/session/client.py +9 -6
  61. phoenix/session/session.py +2 -2
  62. phoenix/trace/dsl/filter.py +40 -25
  63. phoenix/trace/fixtures.py +17 -23
  64. phoenix/trace/utils.py +23 -0
  65. phoenix/utilities/client.py +116 -0
  66. phoenix/utilities/project.py +1 -1
  67. phoenix/version.py +1 -1
  68. phoenix/server/api/routers/v1/dataset_examples.py +0 -157
  69. phoenix/server/static/assets/index-BEKPzgQs.js +0 -100
  70. phoenix/server/static/assets/vendor-codemirror-CrdxOlMs.js +0 -12
  71. {arize_phoenix-4.12.1rc1.dist-info → arize_phoenix-4.15.0.dist-info}/WHEEL +0 -0
  72. {arize_phoenix-4.12.1rc1.dist-info → arize_phoenix-4.15.0.dist-info}/licenses/IP_NOTICE +0 -0
  73. {arize_phoenix-4.12.1rc1.dist-info → arize_phoenix-4.15.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.12.1rc1
3
+ Version: 4.15.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
@@ -48,7 +48,7 @@ Requires-Dist: scipy
48
48
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
49
49
  Requires-Dist: sqlean-py>=3.45.1
50
50
  Requires-Dist: starlette
51
- Requires-Dist: strawberry-graphql==0.235.0
51
+ Requires-Dist: strawberry-graphql==0.236.0
52
52
  Requires-Dist: tqdm
53
53
  Requires-Dist: typing-extensions>=4.5; python_version < '3.12'
54
54
  Requires-Dist: typing-extensions>=4.6; python_version >= '3.12'
@@ -65,11 +65,12 @@ Requires-Dist: opentelemetry-sdk; extra == 'container'
65
65
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
66
66
  Requires-Dist: prometheus-client; extra == 'container'
67
67
  Requires-Dist: py-grpc-prometheus; extra == 'container'
68
- Requires-Dist: strawberry-graphql[opentelemetry]==0.235.0; extra == 'container'
68
+ Requires-Dist: strawberry-graphql[opentelemetry]==0.236.0; extra == 'container'
69
69
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
70
70
  Provides-Extra: dev
71
71
  Requires-Dist: anthropic; extra == 'dev'
72
72
  Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
73
+ Requires-Dist: asgi-lifespan; extra == 'dev'
73
74
  Requires-Dist: asyncpg; extra == 'dev'
74
75
  Requires-Dist: gcsfs; extra == 'dev'
75
76
  Requires-Dist: google-cloud-aiplatform>=1.3; extra == 'dev'
@@ -78,6 +79,7 @@ Requires-Dist: jupyter; extra == 'dev'
78
79
  Requires-Dist: langchain>=0.0.334; extra == 'dev'
79
80
  Requires-Dist: litellm>=1.0.3; extra == 'dev'
80
81
  Requires-Dist: llama-index>=0.10.3; extra == 'dev'
82
+ Requires-Dist: mypy==1.11.0; extra == 'dev'
81
83
  Requires-Dist: nbqa; extra == 'dev'
82
84
  Requires-Dist: pandas-stubs==2.0.3.230814; (python_version < '3.9') and extra == 'dev'
83
85
  Requires-Dist: pandas-stubs==2.2.2.240603; (python_version >= '3.9') and extra == 'dev'
@@ -88,9 +90,9 @@ Requires-Dist: psycopg[binary]; extra == 'dev'
88
90
  Requires-Dist: pytest-asyncio; extra == 'dev'
89
91
  Requires-Dist: pytest-cov; extra == 'dev'
90
92
  Requires-Dist: pytest-postgresql; extra == 'dev'
91
- Requires-Dist: pytest==8.2.2; extra == 'dev'
92
- Requires-Dist: ruff==0.4.9; extra == 'dev'
93
- Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.235.0; extra == 'dev'
93
+ Requires-Dist: pytest==8.3.1; extra == 'dev'
94
+ Requires-Dist: ruff==0.5.4; extra == 'dev'
95
+ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.236.0; extra == 'dev'
94
96
  Requires-Dist: tabulate; extra == 'dev'
95
97
  Requires-Dist: types-tabulate; extra == 'dev'
96
98
  Provides-Extra: evals
@@ -138,6 +140,8 @@ Phoenix is an open-source AI observability platform designed for experimentation
138
140
 
139
141
  - **_Tracing_** - Trace your LLM application's runtime using OpenTelemetry-based instrumentation.
140
142
  - **_Evaluation_** - Leverage LLMs to benchmark your application's performance using response and retrieval evals.
143
+ - **_Datasets_** - Create versioned datasets of examples for experimentation, evaluation, and fine-tuning.
144
+ - **_Experiments_** - Track and evaluate changes to prompts, LLMs, and retrieval.
141
145
  - **_Inference Analysis_** - Visualize inferences and embeddings using dimensionality reduction and clustering to identify drift and performance degradation.
142
146
 
143
147
  Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙LlamaIndex, 🦜⛓LangChain, 🧩DSPy) and LLM providers (OpenAI, Bedrock, and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
@@ -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=C3HccMWHAx9lnG5eI9Z6SvQ8MEwqYKi1vrfgajsjMXM,26
8
+ phoenix/version.py,sha256=n9j59G6rZwNZUyNaaFWTiRnQ1XtoroCAMfk4OtFuagc,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,8 +14,8 @@ 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=zbZGWZFDybKaGLGzpxgLwxAS5sC0_wXcvM0be4kUhh8,11286
18
- phoenix/db/engines.py,sha256=vLWaZlToMtDI7rJDxSidYkfOoojamxaZxaz8ND3zTus,4770
17
+ phoenix/db/bulk_inserter.py,sha256=Hagqne0MiHXi9Y1uVsXpzIqNF9HpSZcmqv00TuHChTc,11285
18
+ phoenix/db/engines.py,sha256=R3btYTSOSd6BwRA59EmhhojL0HCQ7NnzFIXQrPYS0iU,4812
19
19
  phoenix/db/helpers.py,sha256=mTBhPzdy_aU9gD7hNzUZJkAnV77ko5CdaXyoWH3snPA,2982
20
20
  phoenix/db/migrate.py,sha256=MuhtNWnR24riROvarvKfbRb4_D5xuQi6P760vBUKl1E,2270
21
21
  phoenix/db/models.py,sha256=7DBWbxY3cx3ve2P1I0kkDKXzlt04zEFJuRPJWsVpH-I,20422
@@ -31,15 +31,15 @@ phoenix/db/migrations/types.py,sha256=Frq1AKSyBKQQ0FLzON-EmgTqE4kNkOpHMsbWnI-WgC
31
31
  phoenix/db/migrations/versions/10460e46d750_datasets.py,sha256=l69yZfScFrjfZZpY0gnqwhsDUEctLeo02qMgA_aOGDg,8155
32
32
  phoenix/db/migrations/versions/cf03bd6bae1d_init.py,sha256=CbWT3ZTR0CZqeT3zWLoTWhboFmnOy3Ju1z6Ztpq8WIM,8122
33
33
  phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
34
- phoenix/experiments/functions.py,sha256=2ZWCcIs0dh_UNB21t0J_PzWcYhu_32Ai3J6sEMjbBGE,32310
34
+ phoenix/experiments/functions.py,sha256=4XaOLE1Co9sW_yjM1sypQClmOLtt9kwoxmhIEJ3f_rk,32209
35
35
  phoenix/experiments/tracing.py,sha256=wVpt8Ie9WNPoi1djJdcrkwCokHdTO0bicXViLg3O-1Y,2831
36
36
  phoenix/experiments/types.py,sha256=VuvDCcvUGeHIQuXS_xpz7Jq5xHdt3qu-O_C7IQ3DvF8,23397
37
37
  phoenix/experiments/utils.py,sha256=wLu5Kvt1b4a8rGPRWq5G8RQ9XSiV8fCIVm51zWBI3-g,758
38
38
  phoenix/experiments/evaluators/__init__.py,sha256=j63fi3fa3U7-itVPHa82GowhjQRU-wO6yhO34u_lhsA,714
39
- phoenix/experiments/evaluators/base.py,sha256=ani0F2TN7DMN0KLhV89LIr9-W4g-ccEl2YQJgfp44Js,5325
40
- phoenix/experiments/evaluators/code_evaluators.py,sha256=0qIKQS14Knze50ziJEPVEnNeV3QIs4g1IXtCmaWZu7o,3923
41
- phoenix/experiments/evaluators/llm_evaluators.py,sha256=EFce6LKZwUZDBa5ZozvcdqeZpdWM6n6bmq7_oIzM2Nw,9211
42
- phoenix/experiments/evaluators/utils.py,sha256=SroMoxmPZIFCi2MbEOvXlBAFJbEZY2IWgQvNFp3JP3A,6978
39
+ phoenix/experiments/evaluators/base.py,sha256=jAwJs-V7jCp2UBChL0S3813Xyd9GN4rU4IEhX0nkFGs,5549
40
+ phoenix/experiments/evaluators/code_evaluators.py,sha256=O7ZtFk7ZEf3OjgrZeJTIDKeYfcQet8omlGG0s9vEywQ,6683
41
+ phoenix/experiments/evaluators/llm_evaluators.py,sha256=zyGhxXBDNi1qoj_8I95PRSwjfVaCzpFoAVUQeFT0XSM,13176
42
+ phoenix/experiments/evaluators/utils.py,sha256=XYqB0bOljyR0GewmR_mm9Ndl_q95EkjjDqfXd7YVqTk,9303
43
43
  phoenix/inferences/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
44
  phoenix/inferences/errors.py,sha256=cGp9vxnw4SewFoWBV3ZGMkhE0Kh73lPIv3Ppz_H_RoA,8261
45
45
  phoenix/inferences/fixtures.py,sha256=FC2eRL4dpobKQHYOilFtDexUWFkMZ_w6jun_4WkbMk0,20792
@@ -60,41 +60,43 @@ phoenix/pointcloud/pointcloud.py,sha256=4zAIkKs2xOUbchpj4XDAV-iPMXrfAJ15TG6rlIYG
60
60
  phoenix/pointcloud/projectors.py,sha256=zO_RrtDYSv2rqVOfIP2_9Cv11Dc8EmcZR94xhFcBYPU,1057
61
61
  phoenix/pointcloud/umap_parameters.py,sha256=3UQSjrysVOvq2V4KNpTMqNqNiK0BsTZnPBHWZ4fyJtQ,1708
62
62
  phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- phoenix/server/app.py,sha256=g-UDuF90bnE1nnW6peZY_-1_pplP4ERb2bnD2vERfRg,18758
64
- phoenix/server/grpc_server.py,sha256=faktLxEtWGlCB1bPR4QwwTsRoQloahKMx0hAWqRGI5s,3379
65
- phoenix/server/main.py,sha256=dRyODpwkNi_3as14fnZ8LWW_JLWtpXHldRy9SNjNtws,11251
63
+ phoenix/server/app.py,sha256=DaYK3-2YJVB6AWE_oJ1pX96H20pap9D60DoCm20p12A,19041
64
+ phoenix/server/grpc_server.py,sha256=jllxDNkpLQxDkvej4RhTokobowbvydF-SU8gSw1MTCc,3378
65
+ phoenix/server/main.py,sha256=dvjv3g8ANpkvSGCUN02S2Yse643Nlwrp_bj4iXBSVTE,11082
66
66
  phoenix/server/prometheus.py,sha256=j9DHB2fERuq_ZKmwVaqR-9wx5WcPPuU1Cm5Bhg5241Y,2996
67
67
  phoenix/server/telemetry.py,sha256=T_2OKrxNViAeaANlNspEekg_Y5uZIFWvKAnpz8Aoqvk,2762
68
68
  phoenix/server/thread_server.py,sha256=RwXQGP_QhGD7le6WB7xEygEEuwBl5Ck_Zo8xGIYGi9M,2135
69
+ phoenix/server/types.py,sha256=o3uwy8NvfLO-j86v2Dl3irko6er0hvB_x4Df3S1DveM,460
69
70
  phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- phoenix/server/api/context.py,sha256=G9bmB3h-a4Top6wGAu91ymS-YE6D1DYQyWtPIlZnbgc,2811
71
+ phoenix/server/api/context.py,sha256=IZNZB8VMOL_mKzTkvyS5RyIcZcI0gwUt2qZ6jppBDWc,2853
71
72
  phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
72
73
  phoenix/server/api/queries.py,sha256=eq2xHaQF-x4k6AGSY6b6mU2pie9bj-AJML6P2Mr0_DM,19886
73
74
  phoenix/server/api/schema.py,sha256=BcxdqO5CSGqpKd-AAJHMjFlzaK9oJA8GJuxmMfcdjn4,434
74
- phoenix/server/api/utils.py,sha256=Y1lGu8J8r8BSBX9OzffgewI8QMziovbG-ePDvZrrwGI,949
75
- phoenix/server/api/dataloaders/__init__.py,sha256=F6-8dwb-aQ_T8LeRYg3LPR7T94__8Xe4ysM0VGQeQUQ,4936
76
- phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=RiO0AKC6Y5byafsV0zTJEIOt8Nudjte73f1T78cBe1k,1817
77
- phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=Vpr5IEKSR4QnAVxE5NM7u92fPNgeHQV2ieYc6JakCj0,3788
78
- phoenix/server/api/dataloaders/dataset_example_spans.py,sha256=_jLlo0KdUS65d4PNTtE9aXVyG_NZWgA7VcpNC9udQ8U,1484
79
- phoenix/server/api/dataloaders/document_evaluation_summaries.py,sha256=dgAAlD0n8X6oAPLaD-czoefNkDqP338MouWsKaW8bOY,5684
80
- phoenix/server/api/dataloaders/document_evaluations.py,sha256=V-y8eyAA0sZpQTjHvmydbRENbkL_MmPJ8VMBFwLI7RM,1364
81
- phoenix/server/api/dataloaders/document_retrieval_metrics.py,sha256=8tZYMNLZ7zxUmyTHHZRUTZTumvw6lK2tYOpFbATIPdI,4270
82
- phoenix/server/api/dataloaders/evaluation_summaries.py,sha256=z9aal3IQL_t30aNqpAS7x4tjq0xNkuEG8dWW-bhqZmo,5724
83
- phoenix/server/api/dataloaders/experiment_annotation_summaries.py,sha256=RsQ-o84kWVTYgIlh9VKkyw2kDMWIlHCRpS7RE2aw9vs,2881
84
- phoenix/server/api/dataloaders/experiment_error_rates.py,sha256=EHlTdZi8F94vo-qJUcnnXFvuSh_d0fTT0Xg4SfW_A70,1397
85
- phoenix/server/api/dataloaders/experiment_run_counts.py,sha256=wxHv08aZELJ91KTjHdt_x33M3wGDDa9GfbFHeRyOyGk,1343
86
- phoenix/server/api/dataloaders/experiment_sequence_number.py,sha256=Va1KuoHOd-wzvrlKykoV4kLRFW4JsJvGp_DUI4HYZX4,1631
87
- phoenix/server/api/dataloaders/latency_ms_quantile.py,sha256=pEc7QjB2iiNOQm_Fmo99F5O_DKOJWgGmcnT0OADJzYE,7423
88
- phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=IoFX5PtSpvQdMk_7-oB8TpIse3Q4PMxep4qKggkHpzo,2902
89
- phoenix/server/api/dataloaders/project_by_name.py,sha256=W4q-ddeVnja2DNwgg5l8mV2GNADNJf1CTXNcJaBWdfE,1165
90
- phoenix/server/api/dataloaders/record_counts.py,sha256=mp3KlhwFw-Iy7o6bFxtJKC6B5kGinPIh5PxxNkrxf8o,4283
91
- phoenix/server/api/dataloaders/span_annotations.py,sha256=pJQHF92b-CgBJFfZOf0siLsa-jHzr9ByfLiNGpb5oic,1262
92
- phoenix/server/api/dataloaders/span_descendants.py,sha256=djqXXwupWaXkFdscoy-iILYijuxlqr8hJcv6JawsV6s,2162
93
- phoenix/server/api/dataloaders/span_evaluations.py,sha256=quXGyj_OYvHrcWfzXlYIv7C1OCZiL1K7cWU-YEAlsNA,1316
94
- phoenix/server/api/dataloaders/span_projects.py,sha256=KV--NTLpdXyFUGYN69KHeVVHDBJR2oupo1cgLvqK6Ko,1304
95
- phoenix/server/api/dataloaders/token_counts.py,sha256=1t3jAyrxRCce6XLcn_9ymiQtVBh7r5x0A01yE6Ren4s,5015
96
- phoenix/server/api/dataloaders/trace_evaluations.py,sha256=kmo2llOAXQ7iPtCLSFr8g_I7KHH6hwarASiPNWq2ZEg,1330
97
- phoenix/server/api/dataloaders/trace_row_ids.py,sha256=yAWuVFWUjDdmmwfXsGs_l6LuGl0ihMRm5FS-TueSzTY,1168
75
+ phoenix/server/api/utils.py,sha256=Kl47G-1A7QKTDrc75BU2QK6HupsG6MWuXxy351FOfKQ,858
76
+ phoenix/server/api/dataloaders/__init__.py,sha256=C48-E6wkXSfAweypgH3BE_m0bAOLBVbIVzJxkva6t4g,5038
77
+ phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=q091UmkXx37OBKh7L-GJ5LXHyRXfX2w4XTk1NMHtPpw,1827
78
+ phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=i0g8F4akEf3kQOzAvBjO27QwXNsq-kJEM8dtzduxQgY,3720
79
+ phoenix/server/api/dataloaders/dataset_example_spans.py,sha256=-TjdyyJv2c2JiN1OXu6MMmQ-BEKlHXucEDcuObeRVsU,1416
80
+ phoenix/server/api/dataloaders/document_evaluation_summaries.py,sha256=5XOom2KRAmCwPmtlraiZOSl3vhfaW-eiiYkmetAEalw,5616
81
+ phoenix/server/api/dataloaders/document_evaluations.py,sha256=V6sE34jON_qFxt7eArJbktykAsty-gnBZHlEkORcj0E,1296
82
+ phoenix/server/api/dataloaders/document_retrieval_metrics.py,sha256=JqDqkUuoeG6WfcmWSrmQptfF6IPX8XgzYzyECXTAjgg,4202
83
+ phoenix/server/api/dataloaders/evaluation_summaries.py,sha256=FEfUMKgk0uqQlJCS5ynmjkBoJVkqW9EVQ8vhgQ2ReKY,5656
84
+ phoenix/server/api/dataloaders/experiment_annotation_summaries.py,sha256=qDEBRo0XKJMYBYlXBgJ-69jwPK-0r4pi9ZhbjC_vx6M,2813
85
+ phoenix/server/api/dataloaders/experiment_error_rates.py,sha256=wWTFOO2UxGIYUu53nnzzLk04-mJxw-BQgJELA9gT5bY,1949
86
+ phoenix/server/api/dataloaders/experiment_run_counts.py,sha256=8VlKRaXwD56-7q_uonRr7L6QlEkyEQubkFKmKx6vuz0,1661
87
+ phoenix/server/api/dataloaders/experiment_sequence_number.py,sha256=hSpKyOz3ES4UTfOzOfHeQ1ZXat-bzcdKybVSbYmhrBw,1563
88
+ phoenix/server/api/dataloaders/latency_ms_quantile.py,sha256=5Y2OQ_GeH1My2573eOm7zPbqpwDZ_WeMLoZMq3KDoNQ,7403
89
+ phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=k82jVllBWkGI6xu2MAltqxdIqyw3DqoVCQcKbi-JsmM,2834
90
+ phoenix/server/api/dataloaders/project_by_name.py,sha256=9p6DW_zXrsB9YGILFV0wkRwiapyHbZ1IgWK9HuHxl30,1105
91
+ phoenix/server/api/dataloaders/record_counts.py,sha256=64OsyiQRDZASlibpQAXtRkzyA_ch89A3TvhSUByxoTI,4215
92
+ phoenix/server/api/dataloaders/span_annotations.py,sha256=QsbAGPFitFxOCI9yJPPlueuMh0LqN18hMo-Vx2P8EsI,1194
93
+ phoenix/server/api/dataloaders/span_dataset_examples.py,sha256=BtLZp11fyyeaWGGBPZj2StzFM0m5jxt52zB2nFMVybo,1306
94
+ phoenix/server/api/dataloaders/span_descendants.py,sha256=b7jGTn0Hi22gv2yskloLnf3BG3upS9z5hnKLMT9Sxac,2094
95
+ phoenix/server/api/dataloaders/span_evaluations.py,sha256=IfwXW23GQaWti8F49wSJocWf7Tklf2ZJ0F6aB4cSVHs,1248
96
+ phoenix/server/api/dataloaders/span_projects.py,sha256=LbQWiboCFqq4CHS18OzvRUwL9yORqP26fh5p7JbpFdg,1244
97
+ phoenix/server/api/dataloaders/token_counts.py,sha256=riJC3jGRJv2eyenk8Gkx7xwDaulb9SWla58wfcXZeCE,4947
98
+ phoenix/server/api/dataloaders/trace_evaluations.py,sha256=vraPehNsausR4dbdvq-HudRVNARJUbep3T-Ud9jwWYY,1262
99
+ phoenix/server/api/dataloaders/trace_row_ids.py,sha256=RODX4NULlBzMxHMrsq0dp1ij6ZlLH4ZzQBnafGdxOvU,1100
98
100
  phoenix/server/api/dataloaders/cache/__init__.py,sha256=SYoOM9n8FJaMdQarma5d1blu-jIg2GB8Shqg5ezSzZ8,106
99
101
  phoenix/server/api/dataloaders/cache/two_tier_cache.py,sha256=I38L1RsOis98OQftE7n1Q9QBZfFJO6OW_qIINkuJllo,2295
100
102
  phoenix/server/api/helpers/__init__.py,sha256=_V1eVkchZmTkhOfRC4QqR1sUB2xtIxdsMJkDouZq_IE,251
@@ -105,8 +107,8 @@ phoenix/server/api/input_types/ClearProjectInput.py,sha256=cpPFRyQ3ffy2dLbCZgYpw
105
107
  phoenix/server/api/input_types/ClusterInput.py,sha256=EL4ftvZxQ8mVdruUPcdhMhByORmSmM8S-X6RPqU6GX0,179
106
108
  phoenix/server/api/input_types/Coordinates.py,sha256=meTwbIjwTfqx5DGD2DBlH9wQzdQVNM5a8x9dp1FfIgA,173
107
109
  phoenix/server/api/input_types/CreateDatasetInput.py,sha256=Q3MwouIx9jTQBRWDju75iMQXEGJCrL4aD4ESQp771nc,248
108
- phoenix/server/api/input_types/CreateSpanAnnotationsInput.py,sha256=sTs6YdExpaZpTi6ql1BSpUbyT-ArnU5nz4kZaBs3i1w,399
109
- phoenix/server/api/input_types/CreateTraceAnnotationsInput.py,sha256=wc93I3ZLtzJL237UDUz96w6UY1UwLX76sr0FMeyGD4c,401
110
+ phoenix/server/api/input_types/CreateSpanAnnotationInput.py,sha256=bKgT7bdA9-gYpJmqnMq9TEfjNDEYoldc17EjAglXVlU,474
111
+ phoenix/server/api/input_types/CreateTraceAnnotationInput.py,sha256=iSukKAxt-gTTykpkttse3MVOTD3AOk6fWD-N5PaZ2yY,476
110
112
  phoenix/server/api/input_types/DataQualityMetricInput.py,sha256=LazvmQCCM5m9SDZTpyxQXO1rYF4cmsc3lsR2S9S65X4,1292
111
113
  phoenix/server/api/input_types/DatasetExampleInput.py,sha256=9oJ6pCFxFd02IWJuK4YAUvz-jCgFGDUCDDb2--GAzCw,289
112
114
  phoenix/server/api/input_types/DatasetSort.py,sha256=KDKjx5L8WFNwx7O-g1pDzCMMwY-ErgDd1_HkkZBAvCY,333
@@ -118,7 +120,7 @@ phoenix/server/api/input_types/DeleteExperimentsInput.py,sha256=yUbwMckIBvIL-R9t
118
120
  phoenix/server/api/input_types/DimensionFilter.py,sha256=vcXgglSnZcB5pGh-6oEtRmGx95hISgFUR7BEPw01g7U,3143
119
121
  phoenix/server/api/input_types/DimensionInput.py,sha256=Vfx5FmiMKey4-EHDQsQRPzSAMRJMN5oVMLDUl4NKAa8,164
120
122
  phoenix/server/api/input_types/Granularity.py,sha256=6SVfZ5yTZYq1PI6vdpjfkBUc4YilLSkF-k6okuSNbbQ,2301
121
- phoenix/server/api/input_types/PatchAnnotationsInput.py,sha256=NYlZtZG_ssgvG19FaZpqwUaJ2C1jv1hItU-ERX2_sI8,445
123
+ phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=NWhkcbcGNPwfOYsN3wm5YFNNrSc5T-8Y5my74RK99HE,520
122
124
  phoenix/server/api/input_types/PatchDatasetExamplesInput.py,sha256=E86aBGXDBC83jiEGwV5rilnoeQf6eqCfZ0aAVeIt2VI,890
123
125
  phoenix/server/api/input_types/PatchDatasetInput.py,sha256=OURtTVY8Z_oFEDtKwT1LCMaOK5D4QYo5TVQ6mDrex-g,328
124
126
  phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=fElsLTSEYYgGFGMYTEGcYid39tXUKFdV_JkdHavMcbA,591
@@ -131,20 +133,19 @@ phoenix/server/api/mutations/dataset_mutations.py,sha256=CuKhxsYfvwVcdN_9EXhKxB6
131
133
  phoenix/server/api/mutations/experiment_mutations.py,sha256=vV2lbJ7ccXZqe-LY7nXx6QxWqhKQE4UNZAFcML-KQ8I,3011
132
134
  phoenix/server/api/mutations/export_events_mutations.py,sha256=t_wYBxaqvBJYRoHslh3Bmoxmwlzoy0u8SsBKWIKN5hE,4028
133
135
  phoenix/server/api/mutations/project_mutations.py,sha256=d_xtYkYfZ5flpVgEkGknKB8rsEux-zZraczzqAs4e8A,2255
134
- phoenix/server/api/mutations/span_annotations_mutations.py,sha256=Pfaq4y-FGskPit4z_9GvsyWeBwK1g3CDi2UhGKxyjFE,4973
135
- phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=4xm-zg8PEjwjfVRsWzBD_iiOS94JI6UYtK3fV2dtA4M,5013
136
+ phoenix/server/api/mutations/span_annotations_mutations.py,sha256=DJ1wLlvx7zZJZclw9cFHzrBFtSf98a7grHBb0rd-Hyc,5339
137
+ phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=GtI_kDpzLDBFjh0CkYjCgVfdBCog7aKHlIVsEM2x92k,5379
136
138
  phoenix/server/api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
139
  phoenix/server/api/openapi/main.py,sha256=KNutA_7AvV_WlGX8cOkvvDujcJKQ7AD1HT6rTpCpR8A,616
138
140
  phoenix/server/api/openapi/schema.py,sha256=oVZoflWMfzOrLKMIrjr3iLnJ13rmN-t_DOe9g6KoN5s,471
139
141
  phoenix/server/api/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
142
  phoenix/server/api/routers/utils.py,sha256=M41BoH-fl37izhRuN2aX7lWm7jOC20A_3uClv9TVUUY,583
141
143
  phoenix/server/api/routers/v1/__init__.py,sha256=nb49zcOdAi3DSGuC9gUubN9Yri-o7-WFdlGak4jGuFw,1462
142
- phoenix/server/api/routers/v1/dataset_examples.py,sha256=6ep0Trojax_NbwpCOlofNG9p4xMu6VJgZPMjkAUJQOA,5627
143
- phoenix/server/api/routers/v1/datasets.py,sha256=-QzKYNV0DCWfw3D_k_KO1iF_PY57fNAvx7NGznNWt0g,32294
144
- phoenix/server/api/routers/v1/evaluations.py,sha256=xNhS_VOA8S0BIijb1NSAOW677PzLOVl39Fl00g_T7Vo,9553
144
+ phoenix/server/api/routers/v1/datasets.py,sha256=QG6QeyfPi1tfBvVoa3jpNOcwtR5ntNfd3IW9rzP735Q,36920
145
+ phoenix/server/api/routers/v1/evaluations.py,sha256=xfBoieGa9bmkvomJFfveGIS6LcC4AgjS4OeoUsTlJWk,9484
145
146
  phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=xoVhU71U3c1QJSXiKsAa4yiH-UAqkyVc7uKPyIHjrYY,4682
146
147
  phoenix/server/api/routers/v1/experiment_runs.py,sha256=7qvLYgqH58nxqhTnJ0hPf0PBfVmZnbxquodSnEGoQxk,6059
147
- phoenix/server/api/routers/v1/experiments.py,sha256=iS2IBgR7WX1rgYlO90b2sleVU-C0y57RgI5TslCYMFw,9812
148
+ phoenix/server/api/routers/v1/experiments.py,sha256=AFJb8Pi6SDKbIbkDRWUtPjikZIoRhc7cFLWm40l3mPk,9817
148
149
  phoenix/server/api/routers/v1/pydantic_compat.py,sha256=FeK8oe2brqu-djsoqRxiKL4tw5cHmi89OHVfCFxYsAo,2890
149
150
  phoenix/server/api/routers/v1/spans.py,sha256=yMs3Sm6s6JLV2nlmpnQ-ZJ_In0aTY5M3uOlLi-Wzb9c,8967
150
151
  phoenix/server/api/routers/v1/traces.py,sha256=Zl_hGHd-4rA0tXegH_GVoN9Ij84vbPB8oHu28fzGHA8,8029
@@ -173,17 +174,17 @@ phoenix/server/api/types/EvaluationSummary.py,sha256=EFucuzAhcxR9sdEn6WNAtmAGJk-
173
174
  phoenix/server/api/types/Event.py,sha256=XdYgaIxcVIW-YFViCkxj5l9OaVNepyIrCtm5Iqg2le8,3989
174
175
  phoenix/server/api/types/EventMetadata.py,sha256=-J0tYF9eZTHwCjwxQHY7Gckr2_MNW5OoWT1mydweZNM,635
175
176
  phoenix/server/api/types/ExampleRevisionInterface.py,sha256=gV3Gt9-3Oi5wjaVtepC6nOt3FzTzZFD1KebNnqiw56E,294
176
- phoenix/server/api/types/Experiment.py,sha256=ELYdYFKwgBllxx3cZ_X0XicHjLtshZl0bFqqJdVGXRQ,5177
177
+ phoenix/server/api/types/Experiment.py,sha256=K-3w6dniPRSMO4v-4ToDRwH2xr4fPaDumoyeT4We7g4,5228
177
178
  phoenix/server/api/types/ExperimentAnnotationSummary.py,sha256=Uk3JtxIrsMoZT5tqc4nJdUOM3XegVzjUyoV3pkjNotE,256
178
179
  phoenix/server/api/types/ExperimentComparison.py,sha256=0sFz6MoBDw39dds0qVyaqhVs9qqO5rkG1FMSjmfBeCc,441
179
180
  phoenix/server/api/types/ExperimentRun.py,sha256=122_SID7SLKPUq2dJ2Y4BBw40DNUtcxo6QCZuO8UbBs,2997
180
181
  phoenix/server/api/types/ExperimentRunAnnotation.py,sha256=iBxDaD9DgiF-Qymp5QyxWfJRGYXM1_CeWA_qzsZBqkI,1812
181
182
  phoenix/server/api/types/ExportedFile.py,sha256=e3GTn7B5LgsTbqiwjhMCQH7VsiqXitrBO4aCMS1lHsg,163
182
183
  phoenix/server/api/types/Functionality.py,sha256=tzV9xdhB8zqfsjWxP66NDC7EZsplYkYO7jRbLWJIeeg,382
183
- phoenix/server/api/types/Inferences.py,sha256=HWuDZZrXPWVoEy_pA3bRsAOUYsCKgAxf9zshasGqu5Y,3403
184
+ phoenix/server/api/types/Inferences.py,sha256=BOMlOSsRtUV9XQxpnjmZxdBcJ1w-t9PiFfVOSTS160E,3367
184
185
  phoenix/server/api/types/InferencesRole.py,sha256=Kj9aiXOpGhpeg9PHd9MDU7aXVIT28EjJxr4P6xybfzc,601
185
186
  phoenix/server/api/types/MimeType.py,sha256=Zpi6zCalkSFgsvhzvOs-O1gYA04usAi9H__QZUmFlO0,365
186
- phoenix/server/api/types/Model.py,sha256=991I3wKNFTwEOGR9PCmEVBg2Y9DuQR65SovU_8kzkVs,8085
187
+ phoenix/server/api/types/Model.py,sha256=BRIzH5xSGiDrAUYvhwDpwxT6--ddS3Xr3vCvP8_vzdo,8051
187
188
  phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
188
189
  phoenix/server/api/types/PerformanceMetric.py,sha256=W92B7OghEOgzFvmY0LCqpgavHaQggTGshdgfD0yqHX4,350
189
190
  phoenix/server/api/types/Project.py,sha256=R2_nart3H4m8QYRbBe-SRnYvIjH4BCipcj_tKe6GaC8,14516
@@ -192,7 +193,7 @@ phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSF
192
193
  phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
193
194
  phoenix/server/api/types/Segments.py,sha256=m2yoegrxA1Tn7ZAy1rMjjD1isc752MaAXMoffkBlvrM,2921
194
195
  phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
195
- phoenix/server/api/types/Span.py,sha256=Qlz5G_gjyy_jpadfc7CD9xB6TekCCySeEqM_hihcrhM,14208
196
+ phoenix/server/api/types/Span.py,sha256=0Ka8usQ8RscoeqZfz_AEHpfI2BXy0Q7caIAyo8LBc38,14511
196
197
  phoenix/server/api/types/SpanAnnotation.py,sha256=6b5G-b_OoRvDL2ayWk7MkbqarLK-F-pQMx21CpUuNGY,1168
197
198
  phoenix/server/api/types/TimeSeries.py,sha256=wjzuxHFqCey0O7Ys25qiXyuqXK8an-osyNWUE8A_8G4,5227
198
199
  phoenix/server/api/types/Trace.py,sha256=ep-mPexub1ijxAnBvc2KrGsNVXO2SfDR1WxqER2wcD8,2376
@@ -214,29 +215,29 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
214
215
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
215
216
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
216
217
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
217
- phoenix/server/static/.vite/manifest.json,sha256=HBf8Uvnr1-ERuZTBCdHFEF8tgiPQzhLFaK84vo0TmNQ,1929
218
- phoenix/server/static/assets/components-C8sm_r1F.js,sha256=eU0wbaPT17BDumNQKBL-VMI4GcXSd_OmNKr7jkDNKJY,160991
219
- phoenix/server/static/assets/index-BEKPzgQs.js,sha256=eo_7Yc0oaqrRnlXKnz8k3adfq0bFNH_mhO_JyHq7Dvc,7362
220
- phoenix/server/static/assets/pages-bN7juCjh.js,sha256=nFAVGriGoDe-udTjwGwz31kU7dg3GETzC1snnT0fq8A,406291
221
- phoenix/server/static/assets/vendor-CUDAPm8e.js,sha256=vgwuODjGR2Mb8FeNurZOmbQrvxkBnWMaHtdQ69soFqA,1355429
218
+ phoenix/server/static/.vite/manifest.json,sha256=9PYR8RFuxdsTxW7Ofs1P8Ehx2DktABRYGTx0jGtAX84,1929
219
+ phoenix/server/static/assets/components-kGgeFkHp.js,sha256=xUfFn5d7Q4ZltPMMQYFCHfXwGTeclBTSKjRQID0Fz9c,165411
220
+ phoenix/server/static/assets/index-BctFO6S7.js,sha256=Y3BkQU18R8sJnJAuq0cU7sVPFjDcqhskG0AmAtv5Q8k,6337
221
+ phoenix/server/static/assets/pages-DabDCmVd.js,sha256=cAiGKj0vFph9REng2JjQAVOax5IhgdSxkEBVs8u1Hh0,433015
222
+ phoenix/server/static/assets/vendor-CP0b0YG0.js,sha256=hoxXvVgcHofQrVahK5Q4hAMDaQiH6GygbQvdiXlhQAo,1355423
222
223
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
223
- phoenix/server/static/assets/vendor-arizeai-Do2HOmcL.js,sha256=YDx2XE1Zwly6oS6Xv_-B792_jpNZ0bN_gvRaHY35btA,290966
224
- phoenix/server/static/assets/vendor-codemirror-CrdxOlMs.js,sha256=KMJHeNKQyBjzBzKZEiDvIpx1hjhlb6zgALnE7CCgfCs,357576
225
- phoenix/server/static/assets/vendor-recharts-PKRvByVe.js,sha256=Uul1I5FtZKipkx1ku4y2OqWd86GiO4aB4dA9o_LJbvM,282859
224
+ phoenix/server/static/assets/vendor-arizeai-B5Hti8OB.js,sha256=H1iwTiHB40STvEBQe1BnZpej-9slXsuOgEZvvVvnz3Y,296355
225
+ phoenix/server/static/assets/vendor-codemirror-DtdPDzrv.js,sha256=ngcX7xxWUANIvplBuEqkDowqRkknIoX3gXUeQk-jtMQ,503031
226
+ phoenix/server/static/assets/vendor-recharts-A0DA1O99.js,sha256=Zp6oIbsFZPDN-M7VNovxGfJkg9XUISg1fM7eRMtHCaw,282859
226
227
  phoenix/server/static/assets/vendor-three-DwGkEfCM.js,sha256=0D12ZgKzfKCTSdSTKJBFR2RZO_xxeMXrqDp0AszZqHY,620972
227
228
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
229
  phoenix/server/templates/index.html,sha256=gVpjB8pCMiubdMh2DA9mTCtV5AVTXJH_9u5PmG2t7Vk,4238
229
230
  phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
- phoenix/session/client.py,sha256=niTRnsmLb6OdrwNvFNgVqrkft5ZRpYYZoWq4WhjS_AI,32555
231
+ phoenix/session/client.py,sha256=RSaEALbFu-En5oJLv7K4BmwdkrsIC5ZbjMX7Mlny8_Y,32665
231
232
  phoenix/session/data_extractor.py,sha256=gkEM3WWZAlWGMfRgQopAQlid4cSi6GNco-sdrGir0qc,2788
232
233
  phoenix/session/evaluation.py,sha256=aKeV8UVOyq3b7CYOwt3cWuLz0xzvMjX7vlEPILJ_fcs,5311
233
- phoenix/session/session.py,sha256=1ZGR0pBmah8bqX353MDf4sq7XuK904EfxNLo0B9z_sU,26714
234
+ phoenix/session/session.py,sha256=RstuZpkdZcuyZXhWdY59YOr46wjGsRJObIC5Rr5QRO0,26733
234
235
  phoenix/trace/__init__.py,sha256=ujk_uYjM8gmm-YqnyXxF-kekfwid0bcaPMTtNNcaw6U,407
235
236
  phoenix/trace/attributes.py,sha256=B_OrzVaxZwFkrAFXZyicYoIti1UdUysURsvUS2GyW1U,12488
236
237
  phoenix/trace/errors.py,sha256=wB1z8qdPckngdfU-TORToekvg3344oNFAA83_hC2yFY,180
237
238
  phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKyttYdw-ddvPOk,1048
238
239
  phoenix/trace/exporter.py,sha256=eAYemdvDCHMugDJiaR29BFFMTQBdf3oerdkz34Cl3hE,4736
239
- phoenix/trace/fixtures.py,sha256=tDso17oAYMBQ8GJsAlHFzrC0otXPzUOEh4TgIjEfB7M,14260
240
+ phoenix/trace/fixtures.py,sha256=LABY-H6BdDA-fS9dZ13uTovXCPTdfWcvU8HsJ_qPspc,14106
240
241
  phoenix/trace/otel.py,sha256=WA720jvRadiZBAKjsYoPyXzypHwbyEK2OZRVUwtbjB8,9976
241
242
  phoenix/trace/projects.py,sha256=2BwlNjFE-uwpqYtCu5YyBiYZk9wRPpM13vh3-Cv7GkA,2157
242
243
  phoenix/trace/schemas.py,sha256=HpWSyzec0yDHEQXEDuwyLbhpvKrqkGps8BJqGiIFj8Y,5978
@@ -244,10 +245,10 @@ phoenix/trace/span_evaluations.py,sha256=GaADtJLi2njra4aYaie0BIwkSgdxPB_SNseglI4
244
245
  phoenix/trace/span_json_decoder.py,sha256=jkpYSmOUsSptvahOvetrPjVkPIuI4h6b87eizL8wHp8,3230
245
246
  phoenix/trace/span_json_encoder.py,sha256=tzSCIQJbeFBm33K68G8A5M12n_86tCDyuU0WAobxEz4,2010
246
247
  phoenix/trace/trace_dataset.py,sha256=Wq89jJ4hYQ1Qt-Uj11ZNzKQYQeKmGY6NqWStQiiTlMw,14351
247
- phoenix/trace/utils.py,sha256=7LurVGXn245cjj4MJsc7v6jq4DSJkpK6YGBfIaSywuw,1307
248
+ phoenix/trace/utils.py,sha256=1SEQr37cdHOM0P3BdL1dszArj3Zm-VJQyb1BcJs_qO8,1833
248
249
  phoenix/trace/dsl/README.md,sha256=ihmP9zGUC5V-TDbzKla76LuyDqPDQIBUH2BORwxNI68,2902
249
250
  phoenix/trace/dsl/__init__.py,sha256=WIQIjJg362XD3s50OsPJJ0xbDsGp41bSv7vDllLrPuA,144
250
- phoenix/trace/dsl/filter.py,sha256=HCx9FjnmgkzsYDW7ptPz7ozVGbbSnW59tzJdYCKojQI,32170
251
+ phoenix/trace/dsl/filter.py,sha256=DTDERSAexxDbTy5QvC48NSKhnr2pfIRDZ4PS-s3ZW80,32642
251
252
  phoenix/trace/dsl/helpers.py,sha256=ULAhqWULPqYWCSNX7y50DVKIqfySx86nqb6hDvZPnVk,3896
252
253
  phoenix/trace/dsl/query.py,sha256=W0t-tiXh2WIVb96lzFAGQOQ-U46uKux78d4KL3rW-PE,30316
253
254
  phoenix/trace/langchain/__init__.py,sha256=F37GfD1pd5Kuw7R7iRUM1zXXpO8xEcycNZh5dwqBXNk,109
@@ -260,15 +261,16 @@ phoenix/trace/v1/__init__.py,sha256=-IbAD0ruESMjvQLvGAg9CTfjBUATFDx1OXseDPis6-0,
260
261
  phoenix/trace/v1/evaluation_pb2.py,sha256=8sXvv2BW_vqD30MOMbmkeE2zpmm7ncik21kl3e-HzeQ,2254
261
262
  phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQdQCXGm8,4500
262
263
  phoenix/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
264
+ phoenix/utilities/client.py,sha256=6Swxe4TVA481eKnmkCox83WY52b2nA-DWIzkkGu6wwo,4935
263
265
  phoenix/utilities/deprecation.py,sha256=cFuTVvjSYyRlrdxdJewjJVieIEHPk30BukSRGRydQ3k,1046
264
266
  phoenix/utilities/error_handling.py,sha256=7b5rpGFj9EWZ8yrZK1IHvxB89suWk3lggDayUQcvZds,1946
265
267
  phoenix/utilities/json.py,sha256=y_w-McDfvlTeGJT28sCtyjzVkwFicakxERG-sGRc8Ak,1948
266
268
  phoenix/utilities/logging.py,sha256=lDXd6EGaamBNcQxL4vP1au9-i_SXe0OraUDiJOcszSw,222
267
- phoenix/utilities/project.py,sha256=qWsvKnG1oKhOFUowXf9qiOL2ia7jaFe_ijFFHEt8GJo,431
269
+ phoenix/utilities/project.py,sha256=8IJuMM4yUMoooPi37sictGj8Etu9rGmq6RFtc9848cQ,436
268
270
  phoenix/utilities/re.py,sha256=PDve_OLjRTM8yQQJHC8-n3HdIONi7aNils3ZKRZ5uBM,2045
269
271
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
- arize_phoenix-4.12.1rc1.dist-info/METADATA,sha256=9EuJLBvIpbylubhJ6sCVH2zk-_klCyHiBYHqyGdAB5M,11494
271
- arize_phoenix-4.12.1rc1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
272
- arize_phoenix-4.12.1rc1.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
273
- arize_phoenix-4.12.1rc1.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
274
- arize_phoenix-4.12.1rc1.dist-info/RECORD,,
272
+ arize_phoenix-4.15.0.dist-info/METADATA,sha256=dGRIIc2CR5BuCgVqrzfF5kJphORO_AmyoqhVX7mVrS0,11775
273
+ arize_phoenix-4.15.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
274
+ arize_phoenix-4.15.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
275
+ arize_phoenix-4.15.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
276
+ arize_phoenix-4.15.0.dist-info/RECORD,,
@@ -7,7 +7,6 @@ from itertools import islice
7
7
  from time import perf_counter
8
8
  from typing import (
9
9
  Any,
10
- AsyncContextManager,
11
10
  Awaitable,
12
11
  Callable,
13
12
  Iterable,
@@ -19,7 +18,6 @@ from typing import (
19
18
  )
20
19
 
21
20
  from cachetools import LRUCache
22
- from sqlalchemy.ext.asyncio import AsyncSession
23
21
  from typing_extensions import TypeAlias
24
22
 
25
23
  import phoenix.trace.v1 as pb
@@ -31,6 +29,7 @@ from phoenix.db.insertion.evaluation import (
31
29
  from phoenix.db.insertion.helpers import DataManipulation, DataManipulationEvent
32
30
  from phoenix.db.insertion.span import SpanInsertionEvent, insert_span
33
31
  from phoenix.server.api.dataloaders import CacheForDataLoaders
32
+ from phoenix.server.types import DbSessionFactory
34
33
  from phoenix.trace.schemas import Span
35
34
 
36
35
  logger = logging.getLogger(__name__)
@@ -46,7 +45,7 @@ class TransactionResult:
46
45
  class BulkInserter:
47
46
  def __init__(
48
47
  self,
49
- db: Callable[[], AsyncContextManager[AsyncSession]],
48
+ db: DbSessionFactory,
50
49
  *,
51
50
  cache_for_dataloaders: Optional[CacheForDataLoaders] = None,
52
51
  initial_batch_of_operations: Iterable[DataManipulation] = (),
@@ -105,8 +104,10 @@ class BulkInserter:
105
104
  )
106
105
 
107
106
  async def __aexit__(self, *args: Any) -> None:
108
- self._operations = None
109
107
  self._running = False
108
+ if self._task:
109
+ self._task.cancel()
110
+ self._task = None
110
111
 
111
112
  def _enqueue_operation(self, operation: DataManipulation) -> None:
112
113
  cast("Queue[DataManipulation]", self._operations).put_nowait(operation)
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:
@@ -90,11 +90,15 @@ class Evaluator(ABC):
90
90
  if super_cls in (LLMEvaluator, Evaluator):
91
91
  break
92
92
  if evaluate := super_cls.__dict__.get(Evaluator.evaluate.__name__):
93
+ if isinstance(evaluate, classmethod):
94
+ evaluate = evaluate.__func__
93
95
  assert callable(evaluate), "`evaluate()` method should be callable"
94
96
  # need to remove the first param, i.e. `self`
95
97
  _validate_sig(functools.partial(evaluate, None), "evaluate")
96
98
  return
97
99
  if async_evaluate := super_cls.__dict__.get(Evaluator.async_evaluate.__name__):
100
+ if isinstance(async_evaluate, classmethod):
101
+ async_evaluate = async_evaluate.__func__
98
102
  assert callable(async_evaluate), "`async_evaluate()` method should be callable"
99
103
  # need to remove the first param, i.e. `self`
100
104
  _validate_sig(functools.partial(async_evaluate, None), "async_evaluate")
@@ -9,6 +9,19 @@ from phoenix.experiments.types import EvaluationResult, TaskOutput
9
9
 
10
10
 
11
11
  class JSONParsable(CodeEvaluator):
12
+ """
13
+ An evaluator that checks if the output of an experiment run is a JSON-parsable string.
14
+
15
+ Example:
16
+
17
+ .. code-block:: python
18
+ from phoenix.experiments import run_experiment
19
+ from phoenix.experiments.evaluators import JSONParsable
20
+
21
+ run_experiment(dataset, task, evaluators=[JSONParsable])
22
+ """
23
+
24
+ @classmethod
12
25
  def evaluate(self, *, output: Optional[TaskOutput] = None, **_: Any) -> EvaluationResult:
13
26
  assert isinstance(output, str), "Experiment run output must be a string"
14
27
  try:
@@ -22,6 +35,22 @@ class JSONParsable(CodeEvaluator):
22
35
 
23
36
 
24
37
  class ContainsKeyword(CodeEvaluator):
38
+ """
39
+ An evaluator that checks if a keyword is present in the output of an experiment run.
40
+
41
+ Args:
42
+ keyword (str): The keyword to search for in the output.
43
+ name (str, optional): An optional name for the evaluator. Defaults to "Contains(<keyword>)".
44
+
45
+ Example:
46
+
47
+ .. code-block:: python
48
+ from phoenix.experiments import run_experiment
49
+ from phoenix.experiments.evaluators import ContainsKeyword
50
+
51
+ run_experiment(dataset, task, evaluators=[ContainsKeyword("foo")])
52
+ """
53
+
25
54
  def __init__(self, keyword: str, name: Optional[str] = None) -> None:
26
55
  self.keyword = keyword
27
56
  self._name = name or f"Contains({repr(keyword)})"
@@ -39,6 +68,23 @@ class ContainsKeyword(CodeEvaluator):
39
68
 
40
69
 
41
70
  class ContainsAnyKeyword(CodeEvaluator):
71
+ """
72
+ An evaluator that checks if any of the keywords are present in the output of an experiment run.
73
+
74
+ Args:
75
+ keywords (List[str]): The keywords to search for in the output.
76
+ name (str, optional): An optional name for the evaluator. Defaults to
77
+ "ContainsAny(<keywords>)".
78
+
79
+ Example:
80
+
81
+ .. code-block:: python
82
+ from phoenix.experiments import run_experiment
83
+ from phoenix.experiments.evaluators import ContainsAnyKeyword
84
+
85
+ run_experiment(dataset, task, evaluators=[ContainsAnyKeyword(["foo", "bar"])])
86
+ """
87
+
42
88
  def __init__(self, keywords: List[str], name: Optional[str] = None) -> None:
43
89
  self.keywords = keywords
44
90
  self._name = name or f"ContainsAny({keywords})"
@@ -57,6 +103,23 @@ class ContainsAnyKeyword(CodeEvaluator):
57
103
 
58
104
 
59
105
  class ContainsAllKeywords(CodeEvaluator):
106
+ """
107
+ An evaluator that checks if all of the keywords are present in the output of an experiment run.
108
+
109
+ Args:
110
+ keywords (List[str]): The keywords to search for in the output.
111
+ name (str, optional): An optional name for the evaluator. Defaults to
112
+ "ContainsAll(<keywords>)".
113
+
114
+ Example:
115
+ .. code-block:: python
116
+
117
+ from phoenix.experiments import run_experiment
118
+ from phoenix.experiments.evaluators import ContainsAllKeywords
119
+
120
+ run_experiment(dataset, task, evaluators=[ContainsAllKeywords(["foo", "bar"])])
121
+ """
122
+
60
123
  def __init__(self, keywords: List[str], name: Optional[str] = None) -> None:
61
124
  self.keywords = keywords
62
125
  self._name = name or f"ContainsAll({keywords})"
@@ -77,6 +140,23 @@ class ContainsAllKeywords(CodeEvaluator):
77
140
 
78
141
 
79
142
  class MatchesRegex(CodeEvaluator):
143
+ r"""
144
+ An experiment evaluator that checks if the output of an experiment run matches a regex pattern.
145
+
146
+ Args:
147
+ pattern (Union[str, re.Pattern[str]]): The regex pattern to match the output against.
148
+ name (str, optional): An optional name for the evaluator. Defaults to "matches_({pattern})".
149
+
150
+ Example:
151
+ .. code-block:: python
152
+
153
+ from phoenix.experiments import run_experiment
154
+ from phoenix.experiments.evaluators import MatchesRegex
155
+
156
+ phone_number_evaluator = MatchesRegex(r"\d{3}-\d{3}-\d{4}", name="valid-phone-number")
157
+ run_experiment(dataset, task, evaluators=[phone_number_evaluator])
158
+ """
159
+
80
160
  def __init__(self, pattern: Union[str, re.Pattern[str]], name: Optional[str] = None) -> None:
81
161
  if isinstance(pattern, str):
82
162
  pattern = re.compile(pattern)