arize-phoenix 0.0.32__py3-none-any.whl → 0.0.33__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-0.0.32.dist-info → arize_phoenix-0.0.33.dist-info}/METADATA +11 -5
- {arize_phoenix-0.0.32.dist-info → arize_phoenix-0.0.33.dist-info}/RECORD +69 -40
- phoenix/__init__.py +3 -1
- phoenix/config.py +23 -1
- phoenix/core/model_schema.py +14 -37
- phoenix/core/model_schema_adapter.py +0 -1
- phoenix/core/traces.py +285 -0
- phoenix/datasets/dataset.py +14 -21
- phoenix/datasets/errors.py +4 -1
- phoenix/datasets/schema.py +1 -1
- phoenix/datetime_utils.py +87 -0
- phoenix/experimental/callbacks/__init__.py +0 -0
- phoenix/experimental/callbacks/langchain_tracer.py +228 -0
- phoenix/experimental/callbacks/llama_index_trace_callback_handler.py +364 -0
- phoenix/experimental/evals/__init__.py +33 -0
- phoenix/experimental/evals/functions/__init__.py +4 -0
- phoenix/experimental/evals/functions/binary.py +156 -0
- phoenix/experimental/evals/functions/common.py +31 -0
- phoenix/experimental/evals/functions/generate.py +50 -0
- phoenix/experimental/evals/models/__init__.py +4 -0
- phoenix/experimental/evals/models/base.py +130 -0
- phoenix/experimental/evals/models/openai.py +128 -0
- phoenix/experimental/evals/retrievals.py +2 -2
- phoenix/experimental/evals/templates/__init__.py +24 -0
- phoenix/experimental/evals/templates/default_templates.py +126 -0
- phoenix/experimental/evals/templates/template.py +107 -0
- phoenix/experimental/evals/utils/__init__.py +0 -0
- phoenix/experimental/evals/utils/downloads.py +33 -0
- phoenix/experimental/evals/utils/threads.py +27 -0
- phoenix/experimental/evals/utils/types.py +9 -0
- phoenix/experimental/evals/utils.py +33 -0
- phoenix/metrics/binning.py +0 -1
- phoenix/metrics/timeseries.py +2 -3
- phoenix/server/api/context.py +2 -0
- phoenix/server/api/input_types/SpanSort.py +60 -0
- phoenix/server/api/schema.py +85 -4
- phoenix/server/api/types/DataQualityMetric.py +10 -1
- phoenix/server/api/types/Dataset.py +2 -4
- phoenix/server/api/types/DatasetInfo.py +10 -0
- phoenix/server/api/types/ExportEventsMutation.py +4 -1
- phoenix/server/api/types/Functionality.py +15 -0
- phoenix/server/api/types/MimeType.py +16 -0
- phoenix/server/api/types/Model.py +3 -5
- phoenix/server/api/types/SortDir.py +13 -0
- phoenix/server/api/types/Span.py +229 -0
- phoenix/server/api/types/TimeSeries.py +9 -2
- phoenix/server/api/types/pagination.py +2 -0
- phoenix/server/app.py +24 -4
- phoenix/server/main.py +60 -24
- phoenix/server/span_handler.py +39 -0
- phoenix/server/static/index.js +956 -479
- phoenix/server/thread_server.py +10 -2
- phoenix/services.py +39 -16
- phoenix/session/session.py +99 -27
- phoenix/trace/exporter.py +71 -0
- phoenix/trace/filter.py +181 -0
- phoenix/trace/fixtures.py +23 -8
- phoenix/trace/schemas.py +59 -6
- phoenix/trace/semantic_conventions.py +141 -1
- phoenix/trace/span_json_decoder.py +60 -6
- phoenix/trace/span_json_encoder.py +1 -9
- phoenix/trace/trace_dataset.py +100 -8
- phoenix/trace/tracer.py +26 -3
- phoenix/trace/v1/__init__.py +522 -0
- phoenix/trace/v1/trace_pb2.py +52 -0
- phoenix/trace/v1/trace_pb2.pyi +351 -0
- phoenix/core/dimension_data_type.py +0 -6
- phoenix/core/dimension_type.py +0 -9
- {arize_phoenix-0.0.32.dist-info → arize_phoenix-0.0.33.dist-info}/WHEEL +0 -0
- {arize_phoenix-0.0.32.dist-info → arize_phoenix-0.0.33.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-0.0.32.dist-info → arize_phoenix-0.0.33.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: arize-phoenix
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.33
|
|
4
4
|
Summary: ML Observability in your notebook
|
|
5
5
|
Project-URL: Documentation, https://docs.arize.com/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -19,13 +19,14 @@ Requires-Python: <3.12,>=3.8
|
|
|
19
19
|
Requires-Dist: hdbscan<1.0.0,>=0.8.33
|
|
20
20
|
Requires-Dist: numpy
|
|
21
21
|
Requires-Dist: pandas
|
|
22
|
-
Requires-Dist:
|
|
22
|
+
Requires-Dist: protobuf<5.0,>=3.20
|
|
23
23
|
Requires-Dist: psutil
|
|
24
24
|
Requires-Dist: pyarrow
|
|
25
25
|
Requires-Dist: scikit-learn<1.3.0
|
|
26
26
|
Requires-Dist: scipy
|
|
27
|
+
Requires-Dist: sortedcontainers
|
|
27
28
|
Requires-Dist: starlette
|
|
28
|
-
Requires-Dist: strawberry-graphql==0.
|
|
29
|
+
Requires-Dist: strawberry-graphql==0.205.0
|
|
29
30
|
Requires-Dist: typing-extensions
|
|
30
31
|
Requires-Dist: umap-learn
|
|
31
32
|
Requires-Dist: uvicorn
|
|
@@ -33,15 +34,20 @@ Requires-Dist: wrapt
|
|
|
33
34
|
Provides-Extra: dev
|
|
34
35
|
Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
|
|
35
36
|
Requires-Dist: black[jupyter]; extra == 'dev'
|
|
37
|
+
Requires-Dist: gcsfs; extra == 'dev'
|
|
36
38
|
Requires-Dist: hatch; extra == 'dev'
|
|
37
39
|
Requires-Dist: jupyter; extra == 'dev'
|
|
38
|
-
Requires-Dist:
|
|
40
|
+
Requires-Dist: nbqa; extra == 'dev'
|
|
41
|
+
Requires-Dist: pandas-stubs<=2.0.2.230605; extra == 'dev'
|
|
39
42
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
40
43
|
Requires-Dist: pytest; extra == 'dev'
|
|
41
44
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
42
45
|
Requires-Dist: pytest-lazy-fixture; extra == 'dev'
|
|
43
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: ruff==0.0.289; extra == 'dev'
|
|
47
|
+
Requires-Dist: strawberry-graphql[debug-server]==0.205.0; extra == 'dev'
|
|
44
48
|
Provides-Extra: experimental
|
|
49
|
+
Requires-Dist: langchain>=0.0.257; extra == 'experimental'
|
|
50
|
+
Requires-Dist: llama-index>=0.8.25; extra == 'experimental'
|
|
45
51
|
Requires-Dist: openai; extra == 'experimental'
|
|
46
52
|
Requires-Dist: tenacity; extra == 'experimental'
|
|
47
53
|
Description-Content-Type: text/markdown
|
|
@@ -1,44 +1,62 @@
|
|
|
1
|
-
phoenix/__init__.py,sha256=
|
|
2
|
-
phoenix/config.py,sha256=
|
|
1
|
+
phoenix/__init__.py,sha256=zUwXcP6p18s4YBqta8v7omq4jZe86C2v_qTu5XhXXNk,1255
|
|
2
|
+
phoenix/config.py,sha256=TdMKmU7V490I38x_hvB1s14Y8pV3ldLSpJTKq6crzBY,1952
|
|
3
|
+
phoenix/datetime_utils.py,sha256=D955QLrkgrrSdUM6NyqbCeAu2SMsjhR5rHVQEsVUdng,2773
|
|
3
4
|
phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
4
|
-
phoenix/services.py,sha256=
|
|
5
|
+
phoenix/services.py,sha256=9PqrHXmpYryGtbxjrSsdnL_UESLOc0PvKxH4MThkJRQ,4748
|
|
5
6
|
phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
phoenix/core/dimension_data_type.py,sha256=FEBp4p06LlFpAXq-ftxDAFymBtU_pYTFmJjFc6P3BPk,111
|
|
7
|
-
phoenix/core/dimension_type.py,sha256=EKFmPzuGr1cn7t4vD-XDk9s836j6U3iRbSu3Z2sO8sM,171
|
|
8
7
|
phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
|
|
9
8
|
phoenix/core/model.py,sha256=vQ6RxpUPlncezJvur5u6xBN0Lkrk2gW0cTyb-qqaSqA,4713
|
|
10
|
-
phoenix/core/model_schema.py,sha256=
|
|
11
|
-
phoenix/core/model_schema_adapter.py,sha256=
|
|
12
|
-
phoenix/core/traces.py,sha256=
|
|
9
|
+
phoenix/core/model_schema.py,sha256=rR9VdhL_oXxbprDTPQJBXs5hw5sMPQmzx__m6Kwsxug,50394
|
|
10
|
+
phoenix/core/model_schema_adapter.py,sha256=3GkyzqUST4fYi-Bgs8qAam5hwMCdQRZTDLjZ9Bnzdm4,8268
|
|
11
|
+
phoenix/core/traces.py,sha256=MOww47QmWgmwLPi7dAOLfnJhodO1nsxcPqtkw6o5l90,11322
|
|
13
12
|
phoenix/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
phoenix/datasets/dataset.py,sha256=
|
|
15
|
-
phoenix/datasets/errors.py,sha256
|
|
13
|
+
phoenix/datasets/dataset.py,sha256=scKVZ7zc6Dpc_ntt-pWhzY-KWqOJEwKePuyNnKSVTGE,30515
|
|
14
|
+
phoenix/datasets/errors.py,sha256=cGp9vxnw4SewFoWBV3ZGMkhE0Kh73lPIv3Ppz_H_RoA,8261
|
|
16
15
|
phoenix/datasets/fixtures.py,sha256=0_PacL3dw49zulKpFpPdhvxJxeGmHTguqIyf2VXkBkk,19158
|
|
17
|
-
phoenix/datasets/schema.py,sha256=
|
|
16
|
+
phoenix/datasets/schema.py,sha256=bF1d2Md6NyqQZuC4Ym5A52f2_IcazkyxGFZ11HPqSg0,6668
|
|
18
17
|
phoenix/datasets/validation.py,sha256=dZ9lCFUV0EY7HCkQkQBrs-GLAEIZdpOqUxwD5l4dp88,8294
|
|
19
18
|
phoenix/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
-
phoenix/experimental/
|
|
21
|
-
phoenix/experimental/
|
|
19
|
+
phoenix/experimental/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
phoenix/experimental/callbacks/langchain_tracer.py,sha256=nOsOGqHkEfsjsy4gWVv4g0VZmOW3oA6zltTK7ck942U,7987
|
|
21
|
+
phoenix/experimental/callbacks/llama_index_trace_callback_handler.py,sha256=KFFs3hhz1izwjQ2KeZimYeU5OYEVFhHpc32xOhzS7yc,13885
|
|
22
|
+
phoenix/experimental/evals/__init__.py,sha256=Wt_d0i5MLErpmeufxpovON6sb2EqkxMwzLs8N1sTfEo,1054
|
|
23
|
+
phoenix/experimental/evals/retrievals.py,sha256=B5M2OUXDNpRa6n-QSVXDiRmmJp8YODTff1XPMBTprp4,3822
|
|
24
|
+
phoenix/experimental/evals/utils.py,sha256=ivrYuX5Xotjh12BWOpYk9O7TgOt8uGDfdnRpYfrybmQ,1102
|
|
25
|
+
phoenix/experimental/evals/functions/__init__.py,sha256=v12PUUlxc6JhD87yuc4mMmSK5-dTZIAxnCP_pbf2e4k,160
|
|
26
|
+
phoenix/experimental/evals/functions/binary.py,sha256=2Roec42nIR5jgkg5SRIfckMKU6RFzq_tAuixkbF3NLk,6146
|
|
27
|
+
phoenix/experimental/evals/functions/common.py,sha256=kQfNAAfbvCC_RP6OIGJ4I-qBedExFJphPz78keR0cMY,1355
|
|
28
|
+
phoenix/experimental/evals/functions/generate.py,sha256=M8snjrDYl27TNpGGSBYSrThz0sWwo5SBP0H9p4-YqZU,1825
|
|
29
|
+
phoenix/experimental/evals/models/__init__.py,sha256=_ySum_DgU0xkCKjV1fajX4vN-PcVnCTPmgpQk3zWgjA,108
|
|
30
|
+
phoenix/experimental/evals/models/base.py,sha256=B_lgtcU3ssTBTfEaWQmmGlf57oA_wlbFMOxsK92Ms68,4802
|
|
31
|
+
phoenix/experimental/evals/models/openai.py,sha256=axnIKjEsPL90lDcNsDb6CiqgLvYycwUdfX4_lmCs8Cc,4825
|
|
32
|
+
phoenix/experimental/evals/templates/__init__.py,sha256=n7QNVJx-G6UzLVgHsnTH0Y1HmRByY2M8WY_5Cv8jYsI,763
|
|
33
|
+
phoenix/experimental/evals/templates/default_templates.py,sha256=1fc8t4sbe6FQwjztS8dWIi8beNHyctSkTq-s00l7k20,5939
|
|
34
|
+
phoenix/experimental/evals/templates/template.py,sha256=WVIxr0yCXxI9qXx_lccelNqjENv6Jfes-mX5elCwfps,4127
|
|
35
|
+
phoenix/experimental/evals/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
phoenix/experimental/evals/utils/downloads.py,sha256=ivrYuX5Xotjh12BWOpYk9O7TgOt8uGDfdnRpYfrybmQ,1102
|
|
37
|
+
phoenix/experimental/evals/utils/threads.py,sha256=ksI-egarPnlxit0qKKjtjZ2L82qGLxqxZ6s92O0eBA4,1005
|
|
38
|
+
phoenix/experimental/evals/utils/types.py,sha256=IhQOMNy0Ac_J2NNOdXRDKY_aCvoO-5AfsffsOi0KExI,226
|
|
22
39
|
phoenix/metrics/README.md,sha256=5gekqTU-5gGdMwvcfNp2Wlu8p1ul9kGY_jq0XXQusoI,1964
|
|
23
40
|
phoenix/metrics/__init__.py,sha256=sLp7td1GIt_0Z8dPUyP4L0-_4x9c871yAaGX30oMsvg,2433
|
|
24
|
-
phoenix/metrics/binning.py,sha256=
|
|
41
|
+
phoenix/metrics/binning.py,sha256=MWI0jle3qj2Rk2wFu0vN27TKvbyX2Q0ZpXiil8iNOko,12763
|
|
25
42
|
phoenix/metrics/metrics.py,sha256=7SfkDmSnpzGATtBXlYHb42r-2BfV8ELMcMgjdw3c8yA,7907
|
|
26
43
|
phoenix/metrics/mixins.py,sha256=O-U7q3VCTlULkAcdsLf_r68phvoTE_va4UFnez9i4h8,7439
|
|
27
|
-
phoenix/metrics/timeseries.py,sha256=
|
|
44
|
+
phoenix/metrics/timeseries.py,sha256=Cib3E0njJzi0vZpmyADvbakFQA98rIkfDaYAOmsmBz8,6277
|
|
28
45
|
phoenix/metrics/wrappers.py,sha256=fCWIcIp30-YZmlzL4hpv2u07QRfCNn4WtI0mcQN0db8,8582
|
|
29
46
|
phoenix/pointcloud/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
30
47
|
phoenix/pointcloud/clustering.py,sha256=IzcG67kJ2hPP7pcqVmKPSL_6gKRonKdOT3bCtbTOqnk,820
|
|
31
48
|
phoenix/pointcloud/pointcloud.py,sha256=ms-h1FLC0xXb3sk256zpSuZQDE2hdOAJzRNBklP0tDg,2161
|
|
32
49
|
phoenix/pointcloud/projectors.py,sha256=zO_RrtDYSv2rqVOfIP2_9Cv11Dc8EmcZR94xhFcBYPU,1057
|
|
33
50
|
phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
-
phoenix/server/app.py,sha256
|
|
35
|
-
phoenix/server/main.py,sha256=
|
|
36
|
-
phoenix/server/
|
|
51
|
+
phoenix/server/app.py,sha256=0rpBL64rkYstKtVnJpIHV-4iiZC0KIlE4J-Ya8eueKw,4800
|
|
52
|
+
phoenix/server/main.py,sha256=5-E9WS-hR-CVZ7Bq6q4VOBiactrqat9EtjzdToWOEcs,4932
|
|
53
|
+
phoenix/server/span_handler.py,sha256=uXpDC7tAM8L-LvaPkN1Ds6Zgi-CN7QTxEuN4aeUto5Y,1272
|
|
54
|
+
phoenix/server/thread_server.py,sha256=6ECYMjSpenCN6eAjM6CR9B1Qcn3667F28HDfw_kBMmc,1398
|
|
37
55
|
phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
phoenix/server/api/context.py,sha256=
|
|
56
|
+
phoenix/server/api/context.py,sha256=wjCzq4QlszKG1iN-xgu5rRLYPqdvTFqX02aFYPipNoQ,512
|
|
39
57
|
phoenix/server/api/helpers.py,sha256=_V1eVkchZmTkhOfRC4QqR1sUB2xtIxdsMJkDouZq_IE,251
|
|
40
58
|
phoenix/server/api/interceptor.py,sha256=do_J4HjPPQ_C7bMmqe1YpTmt_hoxcwC2I8P3n5sZBo4,1302
|
|
41
|
-
phoenix/server/api/schema.py,sha256=
|
|
59
|
+
phoenix/server/api/schema.py,sha256=AGC2TDnaMluOigpQDHubpD4SaP8m_iTTGVW3R_OJh8I,9290
|
|
42
60
|
phoenix/server/api/input_types/ClusterInput.py,sha256=EL4ftvZxQ8mVdruUPcdhMhByORmSmM8S-X6RPqU6GX0,179
|
|
43
61
|
phoenix/server/api/input_types/Coordinates.py,sha256=meTwbIjwTfqx5DGD2DBlH9wQzdQVNM5a8x9dp1FfIgA,173
|
|
44
62
|
phoenix/server/api/input_types/DataQualityMetricInput.py,sha256=LazvmQCCM5m9SDZTpyxQXO1rYF4cmsc3lsR2S9S65X4,1292
|
|
@@ -46,11 +64,13 @@ phoenix/server/api/input_types/DimensionFilter.py,sha256=vcXgglSnZcB5pGh-6oEtRmG
|
|
|
46
64
|
phoenix/server/api/input_types/DimensionInput.py,sha256=Vfx5FmiMKey4-EHDQsQRPzSAMRJMN5oVMLDUl4NKAa8,164
|
|
47
65
|
phoenix/server/api/input_types/Granularity.py,sha256=6SVfZ5yTZYq1PI6vdpjfkBUc4YilLSkF-k6okuSNbbQ,2301
|
|
48
66
|
phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=fElsLTSEYYgGFGMYTEGcYid39tXUKFdV_JkdHavMcbA,591
|
|
67
|
+
phoenix/server/api/input_types/SpanSort.py,sha256=YVymSc6iEVWj9E5jUgnugJDcz65XKFkYPxZMBY7zcLo,1760
|
|
49
68
|
phoenix/server/api/input_types/TimeRange.py,sha256=yzx-gxj8mDeGLft1FzU_x1MVEgIG5Pt6-f8PUVDgipQ,522
|
|
50
69
|
phoenix/server/api/input_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
70
|
phoenix/server/api/types/Cluster.py,sha256=R08ZKrLl1KK8colxHU57N5XIOTMUwg5ZI50ofPoxxSM,5618
|
|
52
|
-
phoenix/server/api/types/DataQualityMetric.py,sha256=
|
|
53
|
-
phoenix/server/api/types/Dataset.py,sha256=
|
|
71
|
+
phoenix/server/api/types/DataQualityMetric.py,sha256=6Ca8VeC578YoxDCynRTevMLt8s56PcDOGCGYt_ndtF0,627
|
|
72
|
+
phoenix/server/api/types/Dataset.py,sha256=sqfsJm10SSjXqTAfP8uoQV737hldU6Hj0lrH3KZFiSM,3102
|
|
73
|
+
phoenix/server/api/types/DatasetInfo.py,sha256=S8mkmt85GUJoNQOhFuNWboQcpdV7gdwVCcXcJbEKTgw,346
|
|
54
74
|
phoenix/server/api/types/DatasetRole.py,sha256=UA8ecelVWfa9BVi--4A9fGhKFQ-jAaNHm7H5BpmZBPw,564
|
|
55
75
|
phoenix/server/api/types/DatasetValues.py,sha256=7VbCOLlzOXpZN80-zYF2UGuafRcPsZF-8WQNc0YsKFc,1119
|
|
56
76
|
phoenix/server/api/types/Dimension.py,sha256=IAS7Q7TkpbGqr1Vie4gJyi9SrYMK2L5mZwjYvpDQnQU,10198
|
|
@@ -62,21 +82,25 @@ phoenix/server/api/types/EmbeddingDimension.py,sha256=GHGpx4D9TSpcdaQ7FMmKMtCu2M
|
|
|
62
82
|
phoenix/server/api/types/EmbeddingMetadata.py,sha256=fJvNNYCbkf3SJalArLy9rcBq9Uj1SNac60zjqe1PFnM,461
|
|
63
83
|
phoenix/server/api/types/Event.py,sha256=5ohMNtXxE7Oy4xrDIl6ngFxT44chv0XnRUV1NNt_-9Y,3900
|
|
64
84
|
phoenix/server/api/types/EventMetadata.py,sha256=-J0tYF9eZTHwCjwxQHY7Gckr2_MNW5OoWT1mydweZNM,635
|
|
65
|
-
phoenix/server/api/types/ExportEventsMutation.py,sha256=
|
|
85
|
+
phoenix/server/api/types/ExportEventsMutation.py,sha256=Ez6xy1Mbnp832EHp32th3uAAIruRjFruC5fnyTHl9fc,3825
|
|
66
86
|
phoenix/server/api/types/ExportedFile.py,sha256=e3GTn7B5LgsTbqiwjhMCQH7VsiqXitrBO4aCMS1lHsg,163
|
|
67
|
-
phoenix/server/api/types/
|
|
87
|
+
phoenix/server/api/types/Functionality.py,sha256=tzV9xdhB8zqfsjWxP66NDC7EZsplYkYO7jRbLWJIeeg,382
|
|
88
|
+
phoenix/server/api/types/MimeType.py,sha256=eQzVj_KYb4Vm29u8T1tfogwWbEt_ZXjlicezCRcBK04,368
|
|
89
|
+
phoenix/server/api/types/Model.py,sha256=IFhO2nouLQoMPNhl8vnm7nEXXSpr14CL3ihw8RnVWNY,7826
|
|
68
90
|
phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
|
|
69
91
|
phoenix/server/api/types/PerformanceMetric.py,sha256=W92B7OghEOgzFvmY0LCqpgavHaQggTGshdgfD0yqHX4,350
|
|
70
92
|
phoenix/server/api/types/PromptResponse.py,sha256=Q8HKtpp8GpUOcxPCzZpkkokidDd6u0aZOv_SuPZZd5Q,630
|
|
71
93
|
phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSFw-AO1rWw,285
|
|
72
94
|
phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
|
|
73
95
|
phoenix/server/api/types/Segments.py,sha256=eUoisp10Y1dCFCSphOjNA52g2Ja2chrvc_q1yMm-b2k,2903
|
|
74
|
-
phoenix/server/api/types/
|
|
96
|
+
phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
|
|
97
|
+
phoenix/server/api/types/Span.py,sha256=CLJ9Lq1KWzWgn8lNYgPgyXGf2QIC0czWhKpPTYlOyGI,6837
|
|
98
|
+
phoenix/server/api/types/TimeSeries.py,sha256=vywepSxkzTrNsjc4FAwpv12Pv1Wtm_9_9mgRZzDAadU,5229
|
|
75
99
|
phoenix/server/api/types/UMAPPoints.py,sha256=8l9RJXi308qty4MdHb2pBbiU6ZuLbrRRxXNbPhXoxKI,1639
|
|
76
100
|
phoenix/server/api/types/VectorDriftMetricEnum.py,sha256=etiJM5ZjQuD-oE7sY-FbdIKY050jk3IU49IMwmfJbEc,188
|
|
77
101
|
phoenix/server/api/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
102
|
phoenix/server/api/types/node.py,sha256=gwqe10DcAXpqHZMKmea8_tUzLVUEi2dBbZZjDBvPMHA,3820
|
|
79
|
-
phoenix/server/api/types/pagination.py,sha256=
|
|
103
|
+
phoenix/server/api/types/pagination.py,sha256=2jcUp-SExHmf9FKP30zVJi5KET7G_Asdra6N1iQGeKE,5336
|
|
80
104
|
phoenix/server/static/apple-touch-icon-114x114.png,sha256=xtFVXAYQnJkpUApg2D1hltSTuyO4Is4sD4A0ZkikiVU,9486
|
|
81
105
|
phoenix/server/static/apple-touch-icon-120x120.png,sha256=iqZVAk634BbjJMozA8aHYyw15JjhIlIrG41FA2DFFaE,9957
|
|
82
106
|
phoenix/server/static/apple-touch-icon-144x144.png,sha256=VgARtkHKoU8zikb3_G83h_cb02kpPcoJqO78yRh1AfU,10047
|
|
@@ -88,21 +112,26 @@ phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZV
|
|
|
88
112
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
89
113
|
phoenix/server/static/index.css,sha256=KKGpx4iwF91VGRm0YN-4cn8oC-oIqC6HecoPf0x3ZM8,1885
|
|
90
114
|
phoenix/server/static/index.html,sha256=xPZZH-y4dWlbDutPEV1k0rhmWJtIV-Db9aYP-dEc7wM,703
|
|
91
|
-
phoenix/server/static/index.js,sha256=
|
|
115
|
+
phoenix/server/static/index.js,sha256=PsbeVGu5Am_bfMpnKX5tyweJUlxA-RW2Z-tc6YmP6Zg,3005318
|
|
92
116
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
93
117
|
phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
phoenix/session/session.py,sha256=
|
|
118
|
+
phoenix/session/session.py,sha256=9C_dQMfX12YlSv3ffSjZSEbF4MgyQHO_2jS87Xw_Ekc,12365
|
|
95
119
|
phoenix/trace/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
|
-
phoenix/trace/
|
|
97
|
-
phoenix/trace/
|
|
98
|
-
phoenix/trace/
|
|
99
|
-
phoenix/trace/
|
|
100
|
-
phoenix/trace/
|
|
101
|
-
phoenix/trace/
|
|
102
|
-
phoenix/trace/
|
|
120
|
+
phoenix/trace/exporter.py,sha256=Q1Gxw6vDW1quuv2qeHWvzCsfxoO9s-iFsWlZYXOON8s,2007
|
|
121
|
+
phoenix/trace/filter.py,sha256=-UqIr9DT9IQLNGBWCvNe8nAlK8KGHgoj8wUWEWmOzZA,6313
|
|
122
|
+
phoenix/trace/fixtures.py,sha256=f4vlcqFhDqn2ThOjUDlyEwHXvzvq-iJR6eai9a0JT18,2291
|
|
123
|
+
phoenix/trace/schemas.py,sha256=XDtwisCiQvcAZbi81HBaWxaJXXQ97r6b2y7H4nvpktc,5183
|
|
124
|
+
phoenix/trace/semantic_conventions.py,sha256=0raCkxfbkg-gDP41ylA4PSX3EclgxsBQkhf43aHlOzE,4591
|
|
125
|
+
phoenix/trace/span_json_decoder.py,sha256=W04tjYvncgJH_G1uzYHGRldMdiyis9tk1OQs0NM_Boc,3522
|
|
126
|
+
phoenix/trace/span_json_encoder.py,sha256=C5y7rkyOcV08oJC5t8TZqVxsKCZMJKad7bBQzAgLoDs,1763
|
|
127
|
+
phoenix/trace/trace_dataset.py,sha256=eX0loyddIhXJ4pvUb1PSXiod6aBt8_d9OgzXmYm2aT0,4593
|
|
128
|
+
phoenix/trace/tracer.py,sha256=R2bY3gAP2VaimCtKSrPLcvgsYZ9p76j1LzKukMTJijk,3524
|
|
103
129
|
phoenix/trace/utils.py,sha256=N4HVyPAtxWsmzzmsfJFcpsqgGPgP1VZhJHthp0kj4Gc,453
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
arize_phoenix-0.0.
|
|
108
|
-
arize_phoenix-0.0.
|
|
130
|
+
phoenix/trace/v1/__init__.py,sha256=FYL2u6f5prFtbQohQf_x-yR0hVflm7OAunO1fvo2KXg,17032
|
|
131
|
+
phoenix/trace/v1/trace_pb2.py,sha256=DPDwoF4HOa3T2R-Qi7c2uXkbypOXcrOkCysMB-yrKXw,5580
|
|
132
|
+
phoenix/trace/v1/trace_pb2.pyi,sha256=2JpgiYz3s8HrxnVIi5Brk7c3RJB4LqDGzwRYonhliRA,16258
|
|
133
|
+
arize_phoenix-0.0.33.dist-info/METADATA,sha256=afyi_V-bdeyVy4nBHDpWl-Slr6mCeCZkoJYzRHK9ACk,11266
|
|
134
|
+
arize_phoenix-0.0.33.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
|
|
135
|
+
arize_phoenix-0.0.33.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
136
|
+
arize_phoenix-0.0.33.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
137
|
+
arize_phoenix-0.0.33.dist-info/RECORD,,
|
phoenix/__init__.py
CHANGED
|
@@ -3,8 +3,9 @@ from .datasets.fixtures import ExampleDatasets, load_example
|
|
|
3
3
|
from .datasets.schema import EmbeddingColumnNames, RetrievalEmbeddingColumnNames, Schema
|
|
4
4
|
from .session.session import Session, active_session, close_app, launch_app
|
|
5
5
|
from .trace.fixtures import load_example_traces
|
|
6
|
+
from .trace.trace_dataset import TraceDataset
|
|
6
7
|
|
|
7
|
-
__version__ = "0.0.
|
|
8
|
+
__version__ = "0.0.33"
|
|
8
9
|
|
|
9
10
|
# module level doc-string
|
|
10
11
|
__doc__ = """
|
|
@@ -34,4 +35,5 @@ __all__ = [
|
|
|
34
35
|
"launch_app",
|
|
35
36
|
"Session",
|
|
36
37
|
"load_example_traces",
|
|
38
|
+
"TraceDataset",
|
|
37
39
|
]
|
phoenix/config.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import tempfile
|
|
2
3
|
from pathlib import Path
|
|
3
|
-
from typing import List
|
|
4
|
+
from typing import List, Optional
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
def _get_temp_path() -> Path:
|
|
@@ -18,6 +19,13 @@ def get_pids_path() -> Path:
|
|
|
18
19
|
return path
|
|
19
20
|
|
|
20
21
|
|
|
22
|
+
def get_running_pid() -> Optional[int]:
|
|
23
|
+
for file in get_pids_path().iterdir():
|
|
24
|
+
if file.name.isnumeric():
|
|
25
|
+
return int(file.name)
|
|
26
|
+
return None
|
|
27
|
+
|
|
28
|
+
|
|
21
29
|
for path in (
|
|
22
30
|
ROOT_DIR := Path.home().resolve() / ".phoenix",
|
|
23
31
|
EXPORT_DIR := ROOT_DIR / "exports",
|
|
@@ -28,6 +36,8 @@ for path in (
|
|
|
28
36
|
PHOENIX_DIR = Path(__file__).resolve().parent
|
|
29
37
|
# Server config
|
|
30
38
|
SERVER_DIR = PHOENIX_DIR / "server"
|
|
39
|
+
# The host the server will run on after launch_app is called
|
|
40
|
+
HOST = "127.0.0.1"
|
|
31
41
|
# The port the server will run on after launch_app is called
|
|
32
42
|
PORT = 6060
|
|
33
43
|
# The prefix of datasets that are auto-assigned a name
|
|
@@ -49,3 +59,15 @@ def get_exported_files(directory: Path) -> List[Path]:
|
|
|
49
59
|
List of paths of the exported files.
|
|
50
60
|
"""
|
|
51
61
|
return list(directory.glob("*.parquet"))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def get_env_port() -> int:
|
|
65
|
+
return (
|
|
66
|
+
int(port)
|
|
67
|
+
if isinstance(port := os.getenv("PHOENIX_PORT"), str) and port.isnumeric()
|
|
68
|
+
else PORT
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def get_env_host() -> str:
|
|
73
|
+
return os.getenv("PHOENIX_HOST") or HOST
|
phoenix/core/model_schema.py
CHANGED
|
@@ -49,6 +49,7 @@ from typing_extensions import TypeAlias, TypeGuard
|
|
|
49
49
|
from wrapt import ObjectProxy
|
|
50
50
|
|
|
51
51
|
from phoenix.config import GENERATED_DATASET_NAME_PREFIX
|
|
52
|
+
from phoenix.datetime_utils import floor_to_minute
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
class DimensionRole(IntEnum):
|
|
@@ -328,10 +329,7 @@ class Column:
|
|
|
328
329
|
except KeyError:
|
|
329
330
|
# It's important to glue the index to the default series,
|
|
330
331
|
# so it would look like the series came from the dataframe.
|
|
331
|
-
return self._default(len(data)).set_axis(
|
|
332
|
-
data.index,
|
|
333
|
-
copy=False,
|
|
334
|
-
)
|
|
332
|
+
return self._default(len(data)).set_axis(data.index)
|
|
335
333
|
if isinstance(data, pd.Series):
|
|
336
334
|
try:
|
|
337
335
|
return data.at[self.name]
|
|
@@ -657,8 +655,8 @@ class Events(ModelData):
|
|
|
657
655
|
# open and one minute is the smallest interval allowed.
|
|
658
656
|
stop_time = end_time + timedelta(minutes=1)
|
|
659
657
|
# Round down to the nearest minute.
|
|
660
|
-
start =
|
|
661
|
-
stop =
|
|
658
|
+
start = floor_to_minute(start_time)
|
|
659
|
+
stop = floor_to_minute(stop_time)
|
|
662
660
|
return TimeRange(start, stop)
|
|
663
661
|
|
|
664
662
|
def __iter__(self) -> Iterator[Event]:
|
|
@@ -721,6 +719,10 @@ class Dataset(Events):
|
|
|
721
719
|
def role(self) -> DatasetRole:
|
|
722
720
|
return self._self_role
|
|
723
721
|
|
|
722
|
+
@property
|
|
723
|
+
def is_empty(self) -> bool:
|
|
724
|
+
return len(self) == 0
|
|
725
|
+
|
|
724
726
|
@cached_property
|
|
725
727
|
def primary_key(self) -> pd.Index:
|
|
726
728
|
return pd.Index(self[PREDICTION_ID])
|
|
@@ -736,10 +738,7 @@ class Dataset(Events):
|
|
|
736
738
|
def __getitem__(self, key: Any) -> Any:
|
|
737
739
|
if isinstance(key, list):
|
|
738
740
|
return Events(
|
|
739
|
-
self.iloc[key].set_axis(
|
|
740
|
-
key,
|
|
741
|
-
copy=False,
|
|
742
|
-
),
|
|
741
|
+
self.iloc[key].set_axis(key),
|
|
743
742
|
role=self._self_role,
|
|
744
743
|
_model=self._self_model,
|
|
745
744
|
)
|
|
@@ -913,6 +912,11 @@ class Model:
|
|
|
913
912
|
df, name=dataset.name, role=dataset_role
|
|
914
913
|
)
|
|
915
914
|
|
|
915
|
+
@cached_property
|
|
916
|
+
def is_empty(self) -> bool:
|
|
917
|
+
"""Returns True if the model has no data."""
|
|
918
|
+
return not any(map(len, self._datasets.values()))
|
|
919
|
+
|
|
916
920
|
def export_rows_as_parquet_file(
|
|
917
921
|
self,
|
|
918
922
|
row_numbers: Mapping[DatasetRole, Iterable[int]],
|
|
@@ -1390,7 +1394,6 @@ def _coerce_str_column_names(
|
|
|
1390
1394
|
df.set_axis(
|
|
1391
1395
|
df.columns.astype(str),
|
|
1392
1396
|
axis=1,
|
|
1393
|
-
copy=False,
|
|
1394
1397
|
)
|
|
1395
1398
|
for df in dataframes
|
|
1396
1399
|
)
|
|
@@ -1432,32 +1435,6 @@ def _title_case_no_underscore(name: str) -> str:
|
|
|
1432
1435
|
return _id_pat.sub("ID", name.replace("_", " ").title())
|
|
1433
1436
|
|
|
1434
1437
|
|
|
1435
|
-
MINUTE_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:00%z"
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
def _floor_to_minute(dt: datetime) -> datetime:
|
|
1439
|
-
"""Floor datetime to the minute by taking a round-trip through string
|
|
1440
|
-
format because there isn't always an available function to strip the
|
|
1441
|
-
nanoseconds if present."""
|
|
1442
|
-
try:
|
|
1443
|
-
dt_as_string = dt.astimezone(
|
|
1444
|
-
timezone.utc,
|
|
1445
|
-
).strftime(
|
|
1446
|
-
MINUTE_DATETIME_FORMAT,
|
|
1447
|
-
)
|
|
1448
|
-
except ValueError:
|
|
1449
|
-
# NOTE: as of Python 3.8.16, pandas 1.5.3:
|
|
1450
|
-
# >>> isinstance(pd.NaT, datetime.datetime)
|
|
1451
|
-
# True
|
|
1452
|
-
return cast(datetime, pd.NaT)
|
|
1453
|
-
return datetime.strptime(
|
|
1454
|
-
dt_as_string,
|
|
1455
|
-
MINUTE_DATETIME_FORMAT,
|
|
1456
|
-
).astimezone(
|
|
1457
|
-
timezone.utc,
|
|
1458
|
-
)
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
1438
|
def _jsonify(obj: Any) -> Any:
|
|
1462
1439
|
if getattr(obj, "__dataclass_fields__", None):
|
|
1463
1440
|
return {
|
|
@@ -43,7 +43,6 @@ def create_model_from_datasets(*datasets: Optional[Dataset]) -> Model:
|
|
|
43
43
|
df = df.set_axis(
|
|
44
44
|
map(str, df.columns),
|
|
45
45
|
axis=1,
|
|
46
|
-
copy=False,
|
|
47
46
|
)
|
|
48
47
|
named_dataframes.append((dataset.name, df))
|
|
49
48
|
dataset_schema = dataset.schema if dataset.schema is not None else DatasetSchema()
|