arize-phoenix 5.1.6__py3-none-any.whl → 5.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arize-phoenix might be problematic. Click here for more details.
- {arize_phoenix-5.1.6.dist-info → arize_phoenix-5.2.0.dist-info}/METADATA +8 -1
- {arize_phoenix-5.1.6.dist-info → arize_phoenix-5.2.0.dist-info}/RECORD +9 -8
- arize_phoenix-5.2.0.dist-info/entry_points.txt +3 -0
- phoenix/server/app.py +9 -0
- phoenix/server/main.py +29 -26
- phoenix/version.py +1 -1
- {arize_phoenix-5.1.6.dist-info → arize_phoenix-5.2.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-5.1.6.dist-info → arize_phoenix-5.2.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-5.1.6.dist-info → arize_phoenix-5.2.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: arize-phoenix
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.2.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
|
|
@@ -55,6 +55,8 @@ Requires-Dist: umap-learn
|
|
|
55
55
|
Requires-Dist: uvicorn
|
|
56
56
|
Requires-Dist: wrapt
|
|
57
57
|
Provides-Extra: container
|
|
58
|
+
Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
|
|
59
|
+
Requires-Dist: numba>=0.60.0; extra == 'container'
|
|
58
60
|
Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
|
|
59
61
|
Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'container'
|
|
60
62
|
Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
|
|
@@ -65,6 +67,7 @@ Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
|
|
|
65
67
|
Requires-Dist: prometheus-client; extra == 'container'
|
|
66
68
|
Requires-Dist: py-grpc-prometheus; extra == 'container'
|
|
67
69
|
Requires-Dist: strawberry-graphql[opentelemetry]==0.243.1; extra == 'container'
|
|
70
|
+
Requires-Dist: umap-learn; extra == 'container'
|
|
68
71
|
Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
|
|
69
72
|
Provides-Extra: dev
|
|
70
73
|
Requires-Dist: anthropic; extra == 'dev'
|
|
@@ -101,6 +104,10 @@ Requires-Dist: tox==4.18.1; extra == 'dev'
|
|
|
101
104
|
Requires-Dist: types-tabulate; extra == 'dev'
|
|
102
105
|
Requires-Dist: uv==0.4.8; extra == 'dev'
|
|
103
106
|
Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'dev'
|
|
107
|
+
Provides-Extra: embeddings
|
|
108
|
+
Requires-Dist: fast-hdbscan>=0.2.0; extra == 'embeddings'
|
|
109
|
+
Requires-Dist: numba>=0.60.0; extra == 'embeddings'
|
|
110
|
+
Requires-Dist: umap-learn; extra == 'embeddings'
|
|
104
111
|
Provides-Extra: evals
|
|
105
112
|
Provides-Extra: experimental
|
|
106
113
|
Provides-Extra: llama-index
|
|
@@ -6,7 +6,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
|
|
|
6
6
|
phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
7
7
|
phoenix/services.py,sha256=aTxhcOA1pZHB6U-B3TEcp6fqDF5oT0xCUvEUNMZVTUQ,5175
|
|
8
8
|
phoenix/settings.py,sha256=ht-0oN-sMV6SPXrk7Tu1EZlngpAYkGNLYPhO8DyrdQI,661
|
|
9
|
-
phoenix/version.py,sha256=
|
|
9
|
+
phoenix/version.py,sha256=VqMNAkt1E9Y42lSKxWJZRHYFFLxlGbjtTti_CRNjAv8,22
|
|
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=km_a--PBHOuA337ClRw9xqhOHhrUT6Rl9pz_zV0JYkQ,4843
|
|
@@ -73,13 +73,13 @@ phoenix/pointcloud/pointcloud.py,sha256=4zAIkKs2xOUbchpj4XDAV-iPMXrfAJ15TG6rlIYG
|
|
|
73
73
|
phoenix/pointcloud/projectors.py,sha256=TQgwc9cJDjJkin1WZyZzgl3HsYrLLiyWD7Czy4jNW3U,1088
|
|
74
74
|
phoenix/pointcloud/umap_parameters.py,sha256=3UQSjrysVOvq2V4KNpTMqNqNiK0BsTZnPBHWZ4fyJtQ,1708
|
|
75
75
|
phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
-
phoenix/server/app.py,sha256=
|
|
76
|
+
phoenix/server/app.py,sha256=IilHYNvbUp-zJ9mF1HgTRS3QYkTR3MWgPu7wGe21Wcs,32063
|
|
77
77
|
phoenix/server/bearer_auth.py,sha256=hChZ2li9qqQAuXIFtD4bp7Z60gEZhVqfCCqLeiTvD2k,5513
|
|
78
78
|
phoenix/server/dml_event.py,sha256=MpjCFqljxvgb9OB5Cez9vJesb3oHb3XxXictynBfcis,2851
|
|
79
79
|
phoenix/server/dml_event_handler.py,sha256=yU23-DDwXcL35p5EPwFW0oZh6mxQxJrJAQPKcYZYJz4,8310
|
|
80
80
|
phoenix/server/grpc_server.py,sha256=nqeHg0FxGppjy8MqQUQ8DJtY4bkvJkR3tCxxmXGk6n0,3733
|
|
81
81
|
phoenix/server/jwt_store.py,sha256=lmcTRBPoxMHzSV7WT8Ew40ag4uxeMWPLDw-vPIoWL8s,16829
|
|
82
|
-
phoenix/server/main.py,sha256=
|
|
82
|
+
phoenix/server/main.py,sha256=T_W34ZpBdZDTv5qZMPOfwvz5Nc2QtxUov_sFKNDUneg,15759
|
|
83
83
|
phoenix/server/oauth2.py,sha256=4zt6NEh0o2a3HUThYs-FPqOeDcvYM3YKKMg-s_Awls0,2043
|
|
84
84
|
phoenix/server/prometheus.py,sha256=x9zV3M8VeZ9GS32SLr5OxNdi1VaxvdHCZPx2zI8Hoa4,3549
|
|
85
85
|
phoenix/server/rate_limiters.py,sha256=7UJDH9YTmBIeGFLJX1759-LpS-XNp0zN1TlzxyqTnZc,7163
|
|
@@ -306,8 +306,9 @@ phoenix/utilities/logging.py,sha256=B8t2WPULOwVyuGLRLbwKsw5N41N26vtgF-lCAYgWTEk,
|
|
|
306
306
|
phoenix/utilities/project.py,sha256=8IJuMM4yUMoooPi37sictGj8Etu9rGmq6RFtc9848cQ,436
|
|
307
307
|
phoenix/utilities/re.py,sha256=nr_B0txj_7CXc45953X6vr2KCRSWMuaXJSEkL8s8Sjc,2036
|
|
308
308
|
phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
309
|
-
arize_phoenix-5.
|
|
310
|
-
arize_phoenix-5.
|
|
311
|
-
arize_phoenix-5.
|
|
312
|
-
arize_phoenix-5.
|
|
313
|
-
arize_phoenix-5.
|
|
309
|
+
arize_phoenix-5.2.0.dist-info/METADATA,sha256=nVtj-KDh3ofDUhefKI_lOJ6Afnbmz6kFsia44aTPSfo,11973
|
|
310
|
+
arize_phoenix-5.2.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
311
|
+
arize_phoenix-5.2.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
|
|
312
|
+
arize_phoenix-5.2.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
313
|
+
arize_phoenix-5.2.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
314
|
+
arize_phoenix-5.2.0.dist-info/RECORD,,
|
phoenix/server/app.py
CHANGED
|
@@ -632,6 +632,15 @@ def create_app(
|
|
|
632
632
|
oauth2_client_configs: Optional[List[OAuth2ClientConfig]] = None,
|
|
633
633
|
bulk_inserter_factory: Optional[Callable[..., BulkInserter]] = None,
|
|
634
634
|
) -> FastAPI:
|
|
635
|
+
if model.embedding_dimensions:
|
|
636
|
+
try:
|
|
637
|
+
import fast_hdbscan # noqa: F401
|
|
638
|
+
import umap # noqa: F401
|
|
639
|
+
except ImportError as exc:
|
|
640
|
+
raise ImportError(
|
|
641
|
+
"To visualize embeddings, please install `umap-learn` and `fast-hdbscan` "
|
|
642
|
+
"via `pip install arize-phoenix[embeddings]`"
|
|
643
|
+
) from exc
|
|
635
644
|
logger.info(f"Server umap params: {umap_params}")
|
|
636
645
|
bulk_inserter_factory = bulk_inserter_factory or BulkInserter
|
|
637
646
|
startup_callbacks_list: List[_Callback] = list(startup_callbacks)
|
phoenix/server/main.py
CHANGED
|
@@ -2,7 +2,7 @@ import atexit
|
|
|
2
2
|
import codecs
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
|
-
from argparse import ArgumentParser
|
|
5
|
+
from argparse import SUPPRESS, ArgumentParser
|
|
6
6
|
from importlib.metadata import version
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from threading import Thread
|
|
@@ -130,6 +130,9 @@ DEFAULT_UMAP_PARAMS_STR = f"{DEFAULT_MIN_DIST},{DEFAULT_N_NEIGHBORS},{DEFAULT_N_
|
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
def main() -> None:
|
|
133
|
+
initialize_settings()
|
|
134
|
+
setup_logging()
|
|
135
|
+
|
|
133
136
|
primary_inferences_name: str
|
|
134
137
|
reference_inferences_name: Optional[str]
|
|
135
138
|
trace_dataset_name: Optional[str] = None
|
|
@@ -138,23 +141,29 @@ def main() -> None:
|
|
|
138
141
|
reference_inferences: Optional[Inferences] = None
|
|
139
142
|
corpus_inferences: Optional[Inferences] = None
|
|
140
143
|
|
|
141
|
-
# automatically remove the pid file when the process is being gracefully terminated
|
|
142
144
|
atexit.register(_remove_pid_file)
|
|
143
145
|
|
|
144
|
-
parser = ArgumentParser()
|
|
145
|
-
parser.add_argument(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
parser.add_argument("--
|
|
152
|
-
parser.add_argument("--
|
|
153
|
-
|
|
154
|
-
parser.add_argument("--
|
|
155
|
-
parser.add_argument("--
|
|
156
|
-
|
|
157
|
-
|
|
146
|
+
parser = ArgumentParser(usage="phoenix serve", add_help=False)
|
|
147
|
+
parser.add_argument(
|
|
148
|
+
"-h",
|
|
149
|
+
"--help",
|
|
150
|
+
action="help",
|
|
151
|
+
help=SUPPRESS,
|
|
152
|
+
)
|
|
153
|
+
parser.add_argument("--database-url", required=False, help=SUPPRESS)
|
|
154
|
+
parser.add_argument("--export_path", help=SUPPRESS)
|
|
155
|
+
parser.add_argument("--host", type=str, required=False, help=SUPPRESS)
|
|
156
|
+
parser.add_argument("--port", type=int, required=False, help=SUPPRESS)
|
|
157
|
+
parser.add_argument("--read-only", action="store_true", required=False, help=SUPPRESS)
|
|
158
|
+
parser.add_argument("--no-internet", action="store_true", help=SUPPRESS)
|
|
159
|
+
parser.add_argument(
|
|
160
|
+
"--umap_params", type=str, required=False, default=DEFAULT_UMAP_PARAMS_STR, help=SUPPRESS
|
|
161
|
+
)
|
|
162
|
+
parser.add_argument("--debug", action="store_true", help=SUPPRESS)
|
|
163
|
+
parser.add_argument("--dev", action="store_true", help=SUPPRESS)
|
|
164
|
+
parser.add_argument("--no-ui", action="store_true", help=SUPPRESS)
|
|
165
|
+
|
|
166
|
+
subparsers = parser.add_subparsers(dest="command", required=True, help=SUPPRESS)
|
|
158
167
|
|
|
159
168
|
serve_parser = subparsers.add_parser("serve")
|
|
160
169
|
serve_parser.add_argument(
|
|
@@ -186,7 +195,7 @@ def main() -> None:
|
|
|
186
195
|
)
|
|
187
196
|
serve_parser.add_argument(
|
|
188
197
|
"--force-fixture-ingestion",
|
|
189
|
-
action="store_true",
|
|
198
|
+
action="store_true",
|
|
190
199
|
required=False,
|
|
191
200
|
help=(
|
|
192
201
|
"Whether or not to check the database age before adding the fixtures. "
|
|
@@ -196,7 +205,7 @@ def main() -> None:
|
|
|
196
205
|
)
|
|
197
206
|
serve_parser.add_argument(
|
|
198
207
|
"--scaffold-datasets",
|
|
199
|
-
action="store_true",
|
|
208
|
+
action="store_true",
|
|
200
209
|
required=False,
|
|
201
210
|
help=(
|
|
202
211
|
"Whether or not to add any datasets defined in "
|
|
@@ -213,15 +222,13 @@ def main() -> None:
|
|
|
213
222
|
|
|
214
223
|
fixture_parser = subparsers.add_parser("fixture")
|
|
215
224
|
fixture_parser.add_argument("fixture", type=str, choices=[fixture.name for fixture in FIXTURES])
|
|
216
|
-
fixture_parser.add_argument("--primary-only", action="store_true")
|
|
225
|
+
fixture_parser.add_argument("--primary-only", action="store_true")
|
|
217
226
|
|
|
218
227
|
trace_fixture_parser = subparsers.add_parser("trace-fixture")
|
|
219
228
|
trace_fixture_parser.add_argument(
|
|
220
229
|
"fixture", type=str, choices=[fixture.name for fixture in TRACES_FIXTURES]
|
|
221
230
|
)
|
|
222
|
-
trace_fixture_parser.add_argument(
|
|
223
|
-
"--simulate-streaming", action="store_true"
|
|
224
|
-
) # Default is False
|
|
231
|
+
trace_fixture_parser.add_argument("--simulate-streaming", action="store_true")
|
|
225
232
|
|
|
226
233
|
demo_parser = subparsers.add_parser("demo")
|
|
227
234
|
demo_parser.add_argument("fixture", type=str, choices=[fixture.name for fixture in FIXTURES])
|
|
@@ -272,7 +279,6 @@ def main() -> None:
|
|
|
272
279
|
)
|
|
273
280
|
trace_dataset_name = args.trace_fixture
|
|
274
281
|
elif args.command == "serve":
|
|
275
|
-
# We use sets to avoid duplicates
|
|
276
282
|
if args.with_fixture:
|
|
277
283
|
primary_inferences, reference_inferences, corpus_inferences = get_inferences(
|
|
278
284
|
str(args.with_fixture),
|
|
@@ -293,7 +299,6 @@ def main() -> None:
|
|
|
293
299
|
scaffold_datasets = args.scaffold_datasets
|
|
294
300
|
host: Optional[str] = args.host or get_env_host()
|
|
295
301
|
if host == "::":
|
|
296
|
-
# TODO(dustin): why is this necessary? it's not type compliant
|
|
297
302
|
host = None
|
|
298
303
|
|
|
299
304
|
port = args.port or get_env_port()
|
|
@@ -416,6 +421,4 @@ def initialize_settings() -> None:
|
|
|
416
421
|
|
|
417
422
|
|
|
418
423
|
if __name__ == "__main__":
|
|
419
|
-
initialize_settings()
|
|
420
|
-
setup_logging()
|
|
421
424
|
main()
|
phoenix/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "5.
|
|
1
|
+
__version__ = "5.2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|