arize-phoenix 11.13.2__py3-none-any.whl → 11.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 (26) hide show
  1. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.0.dist-info}/METADATA +1 -1
  2. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.0.dist-info}/RECORD +26 -26
  3. phoenix/config.py +13 -0
  4. phoenix/experiments/evaluators/utils.py +3 -3
  5. phoenix/experiments/functions.py +6 -6
  6. phoenix/experiments/types.py +1 -1
  7. phoenix/server/api/mutations/trace_annotations_mutations.py +1 -2
  8. phoenix/server/api/routers/v1/datasets.py +24 -10
  9. phoenix/server/api/routers/v1/evaluations.py +1 -2
  10. phoenix/server/api/routers/v1/spans.py +2 -3
  11. phoenix/server/api/types/Span.py +1 -2
  12. phoenix/server/app.py +5 -0
  13. phoenix/server/cost_tracking/model_cost_manifest.json +91 -17
  14. phoenix/server/daemons/db_disk_usage_monitor.py +1 -2
  15. phoenix/server/static/.vite/manifest.json +9 -9
  16. phoenix/server/static/assets/{components-DwuYh6r_.js → components-CK8hwrPx.js} +418 -329
  17. phoenix/server/static/assets/{index-Ddq6YZwI.js → index-ByWTGseQ.js} +7 -4
  18. phoenix/server/static/assets/{pages-4IITCxQq.js → pages-D8Hgmz1V.js} +489 -446
  19. phoenix/server/templates/index.html +3 -0
  20. phoenix/session/client.py +1 -2
  21. phoenix/trace/dsl/query.py +6 -6
  22. phoenix/version.py +1 -1
  23. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.0.dist-info}/WHEEL +0 -0
  24. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.0.dist-info}/entry_points.txt +0 -0
  25. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.0.dist-info}/licenses/IP_NOTICE +0 -0
  26. {arize_phoenix-11.13.2.dist-info → arize_phoenix-11.15.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.13.2
3
+ Version: 11.15.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
@@ -1,12 +1,12 @@
1
1
  phoenix/__init__.py,sha256=xkpXH76HFbEDCq8IhiFp-2GnEHx39xPMdOpV5Skew1w,5481
2
2
  phoenix/auth.py,sha256=yW78f1xWNjTE30ACGUM14nOd5BzkukhlzA9B45kSUkM,11053
3
- phoenix/config.py,sha256=NqSYbx1-Fdr0SSOt5RSQ5jmTz3r3xvGElVXvd9kK1gc,61495
3
+ phoenix/config.py,sha256=VWYsWA9yzL0ml_1dQ9Q-vnEZxBri1TO8zJocBBUVeZc,61985
4
4
  phoenix/datetime_utils.py,sha256=pRD-nzxXYKlMWNtd3r2tKGKfPFhwuJhfOAtlGLVAO60,8784
5
5
  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=wAvjY_053g2q3JCIgR5FgaP4DjCDYBsX_GEwRRRdXFQ,24
9
+ phoenix/version.py,sha256=W6kx40mj0SUHyBQQqw1zvDl_2qQBQ-TkvJWoEy2ezRk,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
@@ -58,15 +58,15 @@ phoenix/db/types/model_provider.py,sha256=zKYGcEQqbAxtPwnq5dL0fYPgDC8nrh_ABLBMR9
58
58
  phoenix/db/types/token_price_customization.py,sha256=LAb8IwyFJGDCje7CvcPcxNp4NOU8si5hSYaf1fyi624,857
59
59
  phoenix/db/types/trace_retention.py,sha256=fyqAQCvDiD7mpJ_WUqbPyQvuSdERof4DpKpHLJsdROk,9897
60
60
  phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
61
- phoenix/experiments/functions.py,sha256=iUBk6sLFkK2wHeN-cxax8tku2tFmU_pHRsjNYO0PhIk,39967
61
+ phoenix/experiments/functions.py,sha256=J9Bfp7ptDB2g6DpSqgf2iw4cDL09P_h4UWAAtJNS9Mg,39971
62
62
  phoenix/experiments/tracing.py,sha256=X-wlgbWEzP1oHkLmjop3fGjONo6JK5a0kPXc9YYD014,2856
63
- phoenix/experiments/types.py,sha256=yntt6fnAny1U4Q9Y5Mm4ZYIb9319OaJovl-kyXFtGQE,23475
63
+ phoenix/experiments/types.py,sha256=O4vvm9WOp0fevTDobStXEJpFKn3acveXgsRClxlnzCM,23477
64
64
  phoenix/experiments/utils.py,sha256=MZ1-OnTcavk_KUtbfGqt55Fk9TGtJpYG_K71WsN-zDk,785
65
65
  phoenix/experiments/evaluators/__init__.py,sha256=CPWW1EiufLqc0JWghE4wVAPG_z6Wt4mD_-yf_4IckB4,772
66
66
  phoenix/experiments/evaluators/base.py,sha256=zefFLqyYLMxJnZxDs1S0QCrnb43YJraoadCMqRMU72A,5576
67
67
  phoenix/experiments/evaluators/code_evaluators.py,sha256=JIu_8GezA3UKA7isUmZvBxjcJeXllIDESEgdF2zeDck,6755
68
68
  phoenix/experiments/evaluators/llm_evaluators.py,sha256=1HsZQsKNWA_19EHrjI6OXqm1aBwvIKS-qHYc3R0bOqc,20551
69
- phoenix/experiments/evaluators/utils.py,sha256=W-k2bHL67ST-B7ne8t5LvCFHGBaKCPHbOv3x1SlDENU,9330
69
+ phoenix/experiments/evaluators/utils.py,sha256=2YoVyrexiaJSltHKk_ETTsxDB20TUrsNGkz-9EM3vMY,9332
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
@@ -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=Ja937LsaTx_u1EUR76BM_tpYSBpyWkv27tmBsDZlwKg,47708
94
+ phoenix/server/app.py,sha256=00un2qg4eUmHr37TtZlccmPgRnI1D5FB5r2zwIfI9W4,48047
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
@@ -243,7 +243,7 @@ phoenix/server/api/mutations/prompt_label_mutations.py,sha256=uCiVcULtmgaNaav4M0
243
243
  phoenix/server/api/mutations/prompt_mutations.py,sha256=Yg-6L2PiKUZfFyNarptu3OdE0uA2_Nyl3VrLVP8FJ9Y,12114
244
244
  phoenix/server/api/mutations/prompt_version_tag_mutations.py,sha256=t77osYb5he2Am4UeNis7pzY9MnaA9PNEQhsQelRH8k8,5767
245
245
  phoenix/server/api/mutations/span_annotations_mutations.py,sha256=LQPcODp7-ZobXspjmtLaamyQa8UkTONC_va-ST9r-k8,15015
246
- phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=PLNNzSlk3fyJHkAVaMGR8pbWB63nOos-cStUWbTi7f8,11995
246
+ phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=zWoMfOMSQZqw7gZl7Le2PRojkDcG_KOiP1iIuqZpZ8Q,11971
247
247
  phoenix/server/api/mutations/trace_mutations.py,sha256=AvtQAfqNWBQpJOZm4e0DZFimhVJ6HQHtSSZtezRadCo,4698
248
248
  phoenix/server/api/mutations/user_mutations.py,sha256=9vFWfvfhb6RUdxL8xajV2-P2kVDtFRijRD58OFeBY4M,15373
249
249
  phoenix/server/api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -257,15 +257,15 @@ phoenix/server/api/routers/utils.py,sha256=M41BoH-fl37izhRuN2aX7lWm7jOC20A_3uClv
257
257
  phoenix/server/api/routers/v1/__init__.py,sha256=ngLMPjC7lgZxgKy_Is33KxTRnMzSqy25qTTChCVx_Mo,2696
258
258
  phoenix/server/api/routers/v1/annotation_configs.py,sha256=xp5lJmKYlRsINCUrRD9-lTAElw2v4hdFndS5BWrxICA,16048
259
259
  phoenix/server/api/routers/v1/annotations.py,sha256=fVl2qeh_ZbWXGvFBTZgeL7aGkkINIScdjuyxnOoSzNM,6817
260
- phoenix/server/api/routers/v1/datasets.py,sha256=CnmO2fe-hNPPpLx6L1jzeLdTNrpabkKuepIihIL6u_s,37734
261
- phoenix/server/api/routers/v1/evaluations.py,sha256=ni_OJcroE93ZmKoU8I8LYqEgCngG6TyHXpFlcYzoabQ,12937
260
+ phoenix/server/api/routers/v1/datasets.py,sha256=9iPORLmbOrPKgUUcRDMs6ZczSIz7hvc6bngJy3IbdR0,38331
261
+ phoenix/server/api/routers/v1/evaluations.py,sha256=_I0X01J8EZmTlfAGkvMkZ05IB3x691xzUmHV05ov26Y,12914
262
262
  phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=_xnVqFCwZoOUPravdPixZLSQiU1H3sB5EzMknB7E1CI,4837
263
263
  phoenix/server/api/routers/v1/experiment_runs.py,sha256=LZeCQWQIEOZ9jK5Gp_C4JbiYY6AmnnWe85cVcvdkCLE,7107
264
264
  phoenix/server/api/routers/v1/experiments.py,sha256=osy0JG_iVSCkoRi__0tjldfS5zzBDvNfv-GimbP4ShA,20537
265
265
  phoenix/server/api/routers/v1/models.py,sha256=p3gJN-9SWiUYTUTft4bZMsZVCBNTb4nN1Foy68eRZzQ,1997
266
266
  phoenix/server/api/routers/v1/projects.py,sha256=32GwTLsaFgQLVNdjrlrGe90XT3pIX1N7-zX9D9_J_4w,12701
267
267
  phoenix/server/api/routers/v1/prompts.py,sha256=chRYcLkOYDJdJfVZVukVTUyIRnLPvsJCg41CuPxOIU8,26695
268
- phoenix/server/api/routers/v1/spans.py,sha256=oFoDT2XLB4chsiFQIa0fAsY2rQOa4ApioH232_utJLo,44226
268
+ phoenix/server/api/routers/v1/spans.py,sha256=ETH6I14O_zY9IW69Fo-LxL796BR3xgt8qdzwqzYAvbE,44208
269
269
  phoenix/server/api/routers/v1/traces.py,sha256=63T-WYiwh8X3Sp6u_OFfA9zLLKk6cNsnciiDyUzKLVk,8561
270
270
  phoenix/server/api/routers/v1/users.py,sha256=hUZCe7ctJqEkSJBe046a0OAFMLZodtyO7NLP7U6S8Pg,11986
271
271
  phoenix/server/api/routers/v1/utils.py,sha256=oXIOGPzPTkE0ZWUTRCoRIQQ7wTzoSwtWFaUSjlGBqts,4960
@@ -336,7 +336,7 @@ phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2T
336
336
  phoenix/server/api/types/Segments.py,sha256=vT2v0efoa5cuBKxLtxTnsUP5YJJCZfTloM71Spu0tMI,2915
337
337
  phoenix/server/api/types/ServerStatus.py,sha256=t92OHuVhK9DXDk2vsBuHceQNKqYGpHwUp8DNGKz2wOk,88
338
338
  phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
339
- phoenix/server/api/types/Span.py,sha256=0o1lyceeZhEeBLBdd8gYo324nQ1P6eTPOi3aKdZZUd4,32015
339
+ phoenix/server/api/types/Span.py,sha256=6vurLa8yoBs7GH7Jpj5niPAX7JxKPKVUp2qEJbaZxCI,32000
340
340
  phoenix/server/api/types/SpanAnnotation.py,sha256=uPWu7Z8rmpfKhaaxbged4_o00pPCR3nkn7Gji9vB8jY,1959
341
341
  phoenix/server/api/types/SpanCostDetailSummaryEntry.py,sha256=RXAdOC6MFyR9mwaoj8lMMdI3_9r3z6mR2izJvlsj12U,252
342
342
  phoenix/server/api/types/SpanCostSummary.py,sha256=wo03FCMcFzB5m4P5kvA5jzi9ACLbht38ozQbDJUh94g,357
@@ -362,11 +362,11 @@ phoenix/server/cost_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
362
362
  phoenix/server/cost_tracking/cost_details_calculator.py,sha256=Tt0YcuLhgPuXKWJemWVmYQfG0xQUvH4VziIj6KcDnoA,8945
363
363
  phoenix/server/cost_tracking/cost_model_lookup.py,sha256=jhtVdnQBzrTUHeOGPWgOebk-Io5hpJ1vAgWOu8ojeJ4,6801
364
364
  phoenix/server/cost_tracking/helpers.py,sha256=Pk6ECjnYreTxrldtRwxnwFcxIPVsvDq_yAwDA_spkOc,2122
365
- phoenix/server/cost_tracking/model_cost_manifest.json,sha256=aIprOWjHWUz0nrkDHII5dDybGi5prD-_xa3IGC-e838,55889
365
+ phoenix/server/cost_tracking/model_cost_manifest.json,sha256=XKOgaRE9bq109MnopfyC6jFY7F4ZZbLFPRB2juLqfBU,57556
366
366
  phoenix/server/cost_tracking/regex_specificity.py,sha256=9kqWuQ68C-hlwW25hr7BhFlRt5y2Nnpy0Ax3n9UN6Xk,11622
367
367
  phoenix/server/cost_tracking/token_cost_calculator.py,sha256=2JEZnvusx2-xbhp8krp9EarjWuyGH2KO4e-ZwJX-K0s,1598
368
368
  phoenix/server/daemons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
369
- phoenix/server/daemons/db_disk_usage_monitor.py,sha256=_MckKf9GbQ3Is4WZ3RmwJmvVElkF9Ipss3yNHjF8R3c,8016
369
+ phoenix/server/daemons/db_disk_usage_monitor.py,sha256=2WBkrL1QyRGbLtskXEdxwAdnWLjtdQ-mix95AkLQSbg,7997
370
370
  phoenix/server/daemons/generative_model_store.py,sha256=CkMG0jFWtxcUNP_7iFTgzHPyl5IgnXUwwJb7584pmkI,1566
371
371
  phoenix/server/daemons/span_cost_calculator.py,sha256=M7bG8fas99xz37bZUkBXnG37U2otUcu1-FI5RmrtPgU,3052
372
372
  phoenix/server/email/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -389,10 +389,10 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
389
389
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
390
390
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
391
391
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
392
- phoenix/server/static/.vite/manifest.json,sha256=LSwK3jndmpKwQHjb9a7Kb2GbDJ7xAx_9K9dTfIe9jLU,2165
393
- phoenix/server/static/assets/components-DwuYh6r_.js,sha256=5f3jlNuRehiMVMQuYNEpFedjjxiYwmIUgBYdt0p-OS0,642457
394
- phoenix/server/static/assets/index-Ddq6YZwI.js,sha256=yNZYGhZVkDGymQKnFyGoxm8s43evPELtnUpQQyXYn9o,62951
395
- phoenix/server/static/assets/pages-4IITCxQq.js,sha256=ZVuA9ytEUvDUrkb4fuMCybjB8CJcRooFOQYb53wNCOg,1203534
392
+ phoenix/server/static/.vite/manifest.json,sha256=kdJluW5SaIjnZ4iseFuA4LCG0bVknsw1pSXJT2h3XLo,2165
393
+ phoenix/server/static/assets/components-CK8hwrPx.js,sha256=g1vGnQRiqgG1yDDRMSbiUES-P4kkwsUbl4BPl9EH3Ek,650224
394
+ phoenix/server/static/assets/index-ByWTGseQ.js,sha256=S6_w9RczLWlZc2MxJ5_G_Z7O464nyUIQcns2SXhtAHU,63020
395
+ phoenix/server/static/assets/pages-D8Hgmz1V.js,sha256=zVZMTQw6vFjJPf9FjvfXpYwosimlWXCGtMnwxNBbMKs,1208677
396
396
  phoenix/server/static/assets/vendor-CqDb5u4o.css,sha256=zIyFiNJKxMaQk8AvtLgt1rR01oO10d1MFndSDKH9Clw,5517
397
397
  phoenix/server/static/assets/vendor-_6rG8OMg.js,sha256=stdw5w5Q5kJ0EkGpzu_f_IYaEEwKHkn3eNDZSxBRQUE,2682340
398
398
  phoenix/server/static/assets/vendor-arizeai-BznCmJFh.js,sha256=qFSHnyPDSh4mml_O0oiMaCmZv2e9E3VQXPxzySPABWA,151750
@@ -401,9 +401,9 @@ phoenix/server/static/assets/vendor-recharts-Cu431IpB.js,sha256=-RxCpZURhh5aUEh1
401
401
  phoenix/server/static/assets/vendor-shiki-Ce9e01lU.js,sha256=FPFdF-MxIINIy5ujia044AyVID8jqcjjMvuYnbBZI6w,8980312
402
402
  phoenix/server/static/assets/vendor-three-C5WAXd5r.js,sha256=ELkg06u70N7h8oFmvqdoHyPuUf9VgGEWeT4LKFx4VWo,620975
403
403
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
404
- phoenix/server/templates/index.html,sha256=ld4wU6Agx8Cr5Bi3fvNNX6bO0mKo_Kvqd9dQn4I_HfI,6973
404
+ phoenix/server/templates/index.html,sha256=0sqTnrrfw-BxrXaj2PayCgOUu-MseC6eUGBJwZx7KO8,7116
405
405
  phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
406
- phoenix/session/client.py,sha256=uw5WlCuFcN_eEj7Ko2bhJVcaihEIp7Evy50KnL6Sq-k,35602
406
+ phoenix/session/client.py,sha256=Bl0Ov1tPrKX2-wBr7Kr49hQHgdBtyVfdhlMKcd5tURM,35583
407
407
  phoenix/session/data_extractor.py,sha256=Y0RzYFaNy9fQj8PEIeQ76TBZ90_E1FW7bXu3K5x0EZY,2782
408
408
  phoenix/session/evaluation.py,sha256=tMElekWeLKOPHdLm1Pu_sXYWYaSU5rHAc7y8qi3jYhE,5359
409
409
  phoenix/session/session.py,sha256=PKNeRxo7M1AZRKv4ZdGUS5rXRrQu5XSGV0vtCOfHLRk,27621
@@ -425,7 +425,7 @@ phoenix/trace/dsl/README.md,sha256=ihmP9zGUC5V-TDbzKla76LuyDqPDQIBUH2BORwxNI68,2
425
425
  phoenix/trace/dsl/__init__.py,sha256=WIQIjJg362XD3s50OsPJJ0xbDsGp41bSv7vDllLrPuA,144
426
426
  phoenix/trace/dsl/filter.py,sha256=FYOzH1gkwlKBYepscZzwHeeXnJdTadC_m4v0cYRs00Y,31557
427
427
  phoenix/trace/dsl/helpers.py,sha256=Hc0HRqvYWl71waee0vKLNwmszc2Q1ba4Q8svXxeEqJI,7708
428
- phoenix/trace/dsl/query.py,sha256=I7iDsJk1cwxYh0EUFXLu2DDqPU5WYxVa_ntVOe5v8s0,36350
428
+ phoenix/trace/dsl/query.py,sha256=pJdws0gkFoMoJKxvcrbgd0FDshA6BaDplqs8DmnIQJM,36350
429
429
  phoenix/trace/v1/__init__.py,sha256=-IbAD0ruESMjvQLvGAg9CTfjBUATFDx1OXseDPis6-0,88
430
430
  phoenix/trace/v1/evaluation_pb2.py,sha256=8sXvv2BW_vqD30MOMbmkeE2zpmm7ncik21kl3e-HzeQ,2254
431
431
  phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQdQCXGm8,4500
@@ -439,9 +439,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
439
439
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
440
440
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
441
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
442
- arize_phoenix-11.13.2.dist-info/METADATA,sha256=-Whwmht-YnOQQITzVDzbKUR5JYb8vOf1glMTKRDSc5w,30851
443
- arize_phoenix-11.13.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
444
- arize_phoenix-11.13.2.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
445
- arize_phoenix-11.13.2.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
446
- arize_phoenix-11.13.2.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
447
- arize_phoenix-11.13.2.dist-info/RECORD,,
442
+ arize_phoenix-11.15.0.dist-info/METADATA,sha256=fTesMufMP3UOzOvqbdz-tSZUGvICm1OpUgz3TMf1Bsg,30851
443
+ arize_phoenix-11.15.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
444
+ arize_phoenix-11.15.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
445
+ arize_phoenix-11.15.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
446
+ arize_phoenix-11.15.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
447
+ arize_phoenix-11.15.0.dist-info/RECORD,,
phoenix/config.py CHANGED
@@ -57,6 +57,11 @@ ENV_PHOENIX_FULLSTORY_ORG = "PHOENIX_FULLSTORY_ORG"
57
57
  The FullStory organization ID for web analytics tracking. When set, FullStory tracking
58
58
  will be enabled in the Phoenix web interface.
59
59
  """
60
+ ENV_PHOENIX_ALLOW_EXTERNAL_RESOURCES = "PHOENIX_ALLOW_EXTERNAL_RESOURCES"
61
+ """
62
+ Allows calls to external resources, like Google Fonts in the web interface
63
+ Defaults to True. Set to False in air-gapped environments to prevent external requests.
64
+ """
60
65
  ENV_PHOENIX_SQL_DATABASE_URL = "PHOENIX_SQL_DATABASE_URL"
61
66
  """
62
67
  The SQL database URL to use when logging traces and evals.
@@ -1690,3 +1695,11 @@ def _validate_file_exists_and_is_readable(
1690
1695
  f.read(1) # Read just one byte to verify readability
1691
1696
  except Exception as e:
1692
1697
  raise ValueError(f"{description} file is not readable: {e}")
1698
+
1699
+
1700
+ def get_env_allow_external_resources() -> bool:
1701
+ """
1702
+ Gets the value of the PHOENIX_ALLOW_EXTERNAL_RESOURCES environment variable.
1703
+ Defaults to True if not set.
1704
+ """
1705
+ return _bool_val(ENV_PHOENIX_ALLOW_EXTERNAL_RESOURCES, True)
@@ -19,9 +19,9 @@ def unwrap_json(obj: JSONSerializable) -> JSONSerializable:
19
19
  if len(obj) == 1:
20
20
  key = next(iter(obj.keys()))
21
21
  output = obj[key]
22
- assert isinstance(
23
- output, (dict, list, str, int, float, bool, type(None))
24
- ), "Output must be JSON serializable"
22
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
23
+ "Output must be JSON serializable"
24
+ )
25
25
  return output
26
26
  return obj
27
27
 
@@ -363,9 +363,9 @@ def run_experiment(
363
363
  span.set_attribute(SpanAttributes.OPENINFERENCE_SPAN_KIND, root_span_kind)
364
364
  span.set_status(status)
365
365
 
366
- assert isinstance(
367
- output, (dict, list, str, int, float, bool, type(None))
368
- ), "Output must be JSON serializable"
366
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
367
+ "Output must be JSON serializable"
368
+ )
369
369
 
370
370
  exp_run = ExperimentRun(
371
371
  start_time=_decode_unix_nano(cast(int, span.start_time)),
@@ -477,9 +477,9 @@ def run_experiment(
477
477
  span.set_attribute(OPENINFERENCE_SPAN_KIND, root_span_kind)
478
478
  span.set_status(status)
479
479
 
480
- assert isinstance(
481
- output, (dict, list, str, int, float, bool, type(None))
482
- ), "Output must be JSON serializable"
480
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
481
+ "Output must be JSON serializable"
482
+ )
483
483
 
484
484
  exp_run = ExperimentRun(
485
485
  start_time=_decode_unix_nano(cast(int, span.start_time)),
@@ -322,7 +322,7 @@ class _HasStats:
322
322
  text = self.stats.__str__()
323
323
  else:
324
324
  text = self.stats.to_markdown(index=False)
325
- return f"{self.title}\n{'-'*len(self.title)}\n" + text
325
+ return f"{self.title}\n{'-' * len(self.title)}\n" + text
326
326
 
327
327
 
328
328
  @dataclass(frozen=True)
@@ -49,8 +49,7 @@ class TraceAnnotationMutationMixin:
49
49
  trace_rowid = from_global_id_with_expected_type(annotation_input.trace_id, "Trace")
50
50
  except ValueError:
51
51
  raise BadRequest(
52
- f"Invalid trace ID for annotation at index {idx}: "
53
- f"{annotation_input.trace_id}"
52
+ f"Invalid trace ID for annotation at index {idx}: {annotation_input.trace_id}"
54
53
  )
55
54
  trace_rowids.append(trace_rowid)
56
55
 
@@ -17,7 +17,7 @@ import pandas as pd
17
17
  import pyarrow as pa
18
18
  from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException, Path, Query
19
19
  from fastapi.responses import PlainTextResponse, StreamingResponse
20
- from sqlalchemy import and_, delete, func, select
20
+ from sqlalchemy import and_, case, delete, func, select
21
21
  from sqlalchemy.ext.asyncio import AsyncSession
22
22
  from starlette.concurrency import run_in_threadpool
23
23
  from starlette.datastructures import FormData, UploadFile
@@ -79,6 +79,7 @@ class Dataset(V1RoutesBaseModel):
79
79
  metadata: dict[str, Any]
80
80
  created_at: datetime
81
81
  updated_at: datetime
82
+ example_count: int
82
83
 
83
84
 
84
85
  class ListDatasetsResponseBody(PaginatedResponseBody[Dataset]):
@@ -103,7 +104,18 @@ async def list_datasets(
103
104
  ),
104
105
  ) -> ListDatasetsResponseBody:
105
106
  async with request.app.state.db() as session:
106
- query = select(models.Dataset).order_by(models.Dataset.id.desc())
107
+ value = case(
108
+ (models.DatasetExampleRevision.revision_kind == "CREATE", 1),
109
+ (models.DatasetExampleRevision.revision_kind == "DELETE", -1),
110
+ )
111
+ query = (
112
+ select(models.Dataset)
113
+ .add_columns(func.coalesce(func.sum(value), 0).label("example_count"))
114
+ .outerjoin_from(models.Dataset, models.DatasetExample)
115
+ .outerjoin_from(models.DatasetExample, models.DatasetExampleRevision)
116
+ .group_by(models.Dataset.id)
117
+ .order_by(models.Dataset.id.desc())
118
+ )
107
119
 
108
120
  if cursor:
109
121
  try:
@@ -119,18 +131,19 @@ async def list_datasets(
119
131
 
120
132
  query = query.limit(limit + 1)
121
133
  result = await session.execute(query)
122
- datasets = result.scalars().all()
123
-
134
+ datasets = result.all()
124
135
  if not datasets:
125
136
  return ListDatasetsResponseBody(next_cursor=None, data=[])
126
137
 
127
138
  next_cursor = None
128
139
  if len(datasets) == limit + 1:
129
- next_cursor = str(GlobalID(DATASET_NODE_NAME, str(datasets[-1].id)))
140
+ dataset = datasets[-1][0]
141
+ next_cursor = str(GlobalID(DATASET_NODE_NAME, str(dataset.id)))
130
142
  datasets = datasets[:-1]
131
143
 
132
144
  data = []
133
- for dataset in datasets:
145
+ for row in datasets:
146
+ dataset = row[0]
134
147
  data.append(
135
148
  Dataset(
136
149
  id=str(GlobalID(DATASET_NODE_NAME, str(dataset.id))),
@@ -139,6 +152,7 @@ async def list_datasets(
139
152
  metadata=dataset.metadata_,
140
153
  created_at=dataset.created_at,
141
154
  updated_at=dataset.updated_at,
155
+ example_count=row[1],
142
156
  )
143
157
  )
144
158
 
@@ -700,7 +714,7 @@ async def get_dataset_examples(
700
714
  version_id: Optional[str] = Query(
701
715
  default=None,
702
716
  description=(
703
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
717
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
704
718
  ),
705
719
  ),
706
720
  ) -> ListDatasetExamplesResponseBody:
@@ -819,7 +833,7 @@ async def get_dataset_csv(
819
833
  version_id: Optional[str] = Query(
820
834
  default=None,
821
835
  description=(
822
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
836
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
823
837
  ),
824
838
  ),
825
839
  ) -> Response:
@@ -862,7 +876,7 @@ async def get_dataset_jsonl_openai_ft(
862
876
  version_id: Optional[str] = Query(
863
877
  default=None,
864
878
  description=(
865
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
879
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
866
880
  ),
867
881
  ),
868
882
  ) -> bytes:
@@ -902,7 +916,7 @@ async def get_dataset_jsonl_openai_evals(
902
916
  version_id: Optional[str] = Query(
903
917
  default=None,
904
918
  description=(
905
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
919
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
906
920
  ),
907
921
  ),
908
922
  ) -> bytes:
@@ -55,8 +55,7 @@ router = APIRouter(tags=["traces"], include_in_schema=True)
55
55
  {
56
56
  "status_code": HTTP_415_UNSUPPORTED_MEDIA_TYPE,
57
57
  "description": (
58
- "Unsupported content type, "
59
- "only gzipped protobuf and pandas-arrow are supported"
58
+ "Unsupported content type, only gzipped protobuf and pandas-arrow are supported"
60
59
  ),
61
60
  },
62
61
  HTTP_422_UNPROCESSABLE_ENTITY,
@@ -205,8 +205,7 @@ class OtlpEvent(BaseModel):
205
205
  name: Optional[str] = Field(
206
206
  None,
207
207
  description=(
208
- "name of the event. "
209
- "This field is semantically required to be set to non-empty string."
208
+ "name of the event. This field is semantically required to be set to non-empty string."
210
209
  ),
211
210
  )
212
211
  time_unix_nano: Optional[
@@ -282,7 +281,7 @@ class OtlpSpan(BaseModel):
282
281
  )
283
282
  events: Optional[list[OtlpEvent]] = Field(
284
283
  None,
285
- description=("events is a collection of Event items. " "A span with no events is valid."),
284
+ description=("events is a collection of Event items. A span with no events is valid."),
286
285
  )
287
286
  flags: Optional[Annotated[int, Field(ge=0, le=4294967295)]] = Field(
288
287
  None,
@@ -537,8 +537,7 @@ class Span(Node):
537
537
 
538
538
  @strawberry.field(
539
539
  description=(
540
- "Annotations associated with the span. This encompasses both "
541
- "LLM and human annotations."
540
+ "Annotations associated with the span. This encompasses both LLM and human annotations."
542
541
  )
543
542
  ) # type: ignore
544
543
  async def span_annotations(
phoenix/server/app.py CHANGED
@@ -55,6 +55,7 @@ from phoenix.config import (
55
55
  ENV_PHOENIX_CSRF_TRUSTED_ORIGINS,
56
56
  SERVER_DIR,
57
57
  OAuth2ClientConfig,
58
+ get_env_allow_external_resources,
58
59
  get_env_csrf_trusted_origins,
59
60
  get_env_database_allocated_storage_capacity_gibibytes,
60
61
  get_env_database_usage_insertion_blocking_threshold_percentage,
@@ -245,6 +246,8 @@ class AppConfig(NamedTuple):
245
246
  """ Support email address for user assistance """
246
247
  has_db_threshold: bool = False
247
248
  """ Whether the database has a threshold for usage """
249
+ allow_external_resources: bool = True
250
+ """ Whether to allow external resources like Google Fonts in the web interface """
248
251
 
249
252
 
250
253
  class Static(StaticFiles):
@@ -314,6 +317,7 @@ class Static(StaticFiles):
314
317
  "management_url": self._app_config.management_url,
315
318
  "support_email": self._app_config.support_email,
316
319
  "has_db_threshold": self._app_config.has_db_threshold,
320
+ "allow_external_resources": self._app_config.allow_external_resources,
317
321
  },
318
322
  )
319
323
  except Exception as e:
@@ -1085,6 +1089,7 @@ def create_app(
1085
1089
  get_env_database_allocated_storage_capacity_gibibytes()
1086
1090
  and get_env_database_usage_insertion_blocking_threshold_percentage()
1087
1091
  ),
1092
+ allow_external_resources=get_env_allow_external_resources(),
1088
1093
  ),
1089
1094
  ),
1090
1095
  name="static",
@@ -287,23 +287,6 @@
287
287
  }
288
288
  ]
289
289
  },
290
- {
291
- "name": "claude-3-sonnet-20240229",
292
- "name_pattern": "claude-3-sonnet-20240229|anthropic\\.claude-3-sonnet-20240229-v1:0|claude-3-sonnet@20240229",
293
- "source": "litellm",
294
- "token_prices": [
295
- {
296
- "base_rate": 3e-6,
297
- "is_prompt": true,
298
- "token_type": "input"
299
- },
300
- {
301
- "base_rate": 0.000015,
302
- "is_prompt": false,
303
- "token_type": "output"
304
- }
305
- ]
306
- },
307
290
  {
308
291
  "name": "claude-4-opus-20250514",
309
292
  "name_pattern": "claude-4-opus-20250514",
@@ -542,6 +525,38 @@
542
525
  }
543
526
  ]
544
527
  },
528
+ {
529
+ "name": "gemini-2.0-flash-live-preview-04-09",
530
+ "name_pattern": "gemini-2\\.0-flash-live-preview-04-09",
531
+ "source": "litellm",
532
+ "token_prices": [
533
+ {
534
+ "base_rate": 5e-7,
535
+ "is_prompt": true,
536
+ "token_type": "input"
537
+ },
538
+ {
539
+ "base_rate": 2e-6,
540
+ "is_prompt": false,
541
+ "token_type": "output"
542
+ },
543
+ {
544
+ "base_rate": 7.5e-8,
545
+ "is_prompt": true,
546
+ "token_type": "cache_read"
547
+ },
548
+ {
549
+ "base_rate": 3e-6,
550
+ "is_prompt": true,
551
+ "token_type": "audio"
552
+ },
553
+ {
554
+ "base_rate": 0.000012,
555
+ "is_prompt": false,
556
+ "token_type": "audio"
557
+ }
558
+ ]
559
+ },
545
560
  {
546
561
  "name": "gemini-2.0-flash-preview-image-generation",
547
562
  "name_pattern": "gemini-2\\.0-flash-preview-image-generation",
@@ -618,6 +633,33 @@
618
633
  }
619
634
  ]
620
635
  },
636
+ {
637
+ "name": "gemini-2.5-flash-lite",
638
+ "name_pattern": "gemini-2\\.5-flash-lite",
639
+ "source": "litellm",
640
+ "token_prices": [
641
+ {
642
+ "base_rate": 1e-7,
643
+ "is_prompt": true,
644
+ "token_type": "input"
645
+ },
646
+ {
647
+ "base_rate": 4e-7,
648
+ "is_prompt": false,
649
+ "token_type": "output"
650
+ },
651
+ {
652
+ "base_rate": 2.5e-8,
653
+ "is_prompt": true,
654
+ "token_type": "cache_read"
655
+ },
656
+ {
657
+ "base_rate": 5e-7,
658
+ "is_prompt": true,
659
+ "token_type": "audio"
660
+ }
661
+ ]
662
+ },
621
663
  {
622
664
  "name": "gemini-2.5-flash-lite-preview-06-17",
623
665
  "name_pattern": "gemini-2\\.5-flash-lite-preview-06-17",
@@ -1938,6 +1980,38 @@
1938
1980
  }
1939
1981
  ]
1940
1982
  },
1983
+ {
1984
+ "name": "gpt-4o-realtime-preview-2025-06-03",
1985
+ "name_pattern": "gpt-4o-realtime-preview-2025-06-03",
1986
+ "source": "litellm",
1987
+ "token_prices": [
1988
+ {
1989
+ "base_rate": 5e-6,
1990
+ "is_prompt": true,
1991
+ "token_type": "input"
1992
+ },
1993
+ {
1994
+ "base_rate": 0.00002,
1995
+ "is_prompt": false,
1996
+ "token_type": "output"
1997
+ },
1998
+ {
1999
+ "base_rate": 2.5e-6,
2000
+ "is_prompt": true,
2001
+ "token_type": "cache_read"
2002
+ },
2003
+ {
2004
+ "base_rate": 0.00004,
2005
+ "is_prompt": true,
2006
+ "token_type": "audio"
2007
+ },
2008
+ {
2009
+ "base_rate": 0.00008,
2010
+ "is_prompt": false,
2011
+ "token_type": "audio"
2012
+ }
2013
+ ]
2014
+ },
1941
2015
  {
1942
2016
  "name": "gpt-4o-search-preview",
1943
2017
  "name_pattern": "gpt-4o-search-preview",
@@ -159,8 +159,7 @@ class DbDiskUsageMonitor(DaemonTask):
159
159
  admin_emails = (await session.scalars(stmt)).all()
160
160
  except Exception:
161
161
  logger.exception(
162
- "Failed to fetch admin emails from database, "
163
- "skipping database usage warning emails"
162
+ "Failed to fetch admin emails from database, skipping database usage warning emails"
164
163
  )
165
164
  return
166
165
 
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-DwuYh6r_.js": {
3
- "file": "assets/components-DwuYh6r_.js",
2
+ "_components-CK8hwrPx.js": {
3
+ "file": "assets/components-CK8hwrPx.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-_6rG8OMg.js",
7
- "_pages-4IITCxQq.js",
7
+ "_pages-D8Hgmz1V.js",
8
8
  "_vendor-arizeai-BznCmJFh.js",
9
9
  "_vendor-codemirror-29fWLPAy.js",
10
10
  "_vendor-three-C5WAXd5r.js"
11
11
  ]
12
12
  },
13
- "_pages-4IITCxQq.js": {
14
- "file": "assets/pages-4IITCxQq.js",
13
+ "_pages-D8Hgmz1V.js": {
14
+ "file": "assets/pages-D8Hgmz1V.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-_6rG8OMg.js",
18
18
  "_vendor-arizeai-BznCmJFh.js",
19
- "_components-DwuYh6r_.js",
19
+ "_components-CK8hwrPx.js",
20
20
  "_vendor-codemirror-29fWLPAy.js",
21
21
  "_vendor-recharts-Cu431IpB.js"
22
22
  ]
@@ -69,15 +69,15 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-Ddq6YZwI.js",
72
+ "file": "assets/index-ByWTGseQ.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
77
  "_vendor-_6rG8OMg.js",
78
78
  "_vendor-arizeai-BznCmJFh.js",
79
- "_pages-4IITCxQq.js",
80
- "_components-DwuYh6r_.js",
79
+ "_pages-D8Hgmz1V.js",
80
+ "_components-CK8hwrPx.js",
81
81
  "_vendor-three-C5WAXd5r.js",
82
82
  "_vendor-codemirror-29fWLPAy.js",
83
83
  "_vendor-shiki-Ce9e01lU.js",