arize-phoenix 5.6.0__py3-none-any.whl → 5.7.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.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/METADATA +2 -2
- {arize_phoenix-5.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/RECORD +34 -25
- phoenix/config.py +42 -0
- phoenix/server/api/helpers/playground_clients.py +671 -0
- phoenix/server/api/helpers/playground_registry.py +70 -0
- phoenix/server/api/helpers/playground_spans.py +325 -0
- phoenix/server/api/input_types/ChatCompletionInput.py +38 -0
- phoenix/server/api/input_types/GenerativeModelInput.py +17 -0
- phoenix/server/api/input_types/InvocationParameters.py +156 -13
- phoenix/server/api/input_types/TemplateOptions.py +10 -0
- phoenix/server/api/mutations/__init__.py +4 -0
- phoenix/server/api/mutations/chat_mutations.py +374 -0
- phoenix/server/api/queries.py +41 -52
- phoenix/server/api/schema.py +42 -10
- phoenix/server/api/subscriptions.py +326 -595
- phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +44 -0
- phoenix/server/api/types/GenerativeProvider.py +27 -3
- phoenix/server/api/types/Span.py +37 -0
- phoenix/server/api/types/TemplateLanguage.py +9 -0
- phoenix/server/app.py +61 -13
- phoenix/server/main.py +14 -1
- phoenix/server/static/.vite/manifest.json +9 -9
- phoenix/server/static/assets/{components-C70HJiXz.js → components-Csu8UKOs.js} +114 -114
- phoenix/server/static/assets/{index-DLe1Oo3l.js → index-Bk5C9EA7.js} +1 -1
- phoenix/server/static/assets/{pages-C8-Sl7JI.js → pages-UeWaKXNs.js} +328 -268
- phoenix/server/templates/index.html +1 -0
- phoenix/services.py +4 -0
- phoenix/session/session.py +15 -1
- phoenix/utilities/template_formatters.py +11 -1
- phoenix/version.py +1 -1
- {arize_phoenix-5.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-5.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/entry_points.txt +0 -0
- {arize_phoenix-5.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-5.6.0.dist-info → arize_phoenix-5.7.0.dist-info}/licenses/LICENSE +0 -0
phoenix/services.py
CHANGED
|
@@ -118,6 +118,7 @@ class AppService(Service):
|
|
|
118
118
|
reference_inferences_name: Optional[str],
|
|
119
119
|
corpus_inferences_name: Optional[str],
|
|
120
120
|
trace_dataset_name: Optional[str],
|
|
121
|
+
enable_websockets: bool,
|
|
121
122
|
):
|
|
122
123
|
self.database_url = database_url
|
|
123
124
|
self.export_path = export_path
|
|
@@ -129,6 +130,7 @@ class AppService(Service):
|
|
|
129
130
|
self.__reference_inferences_name = reference_inferences_name
|
|
130
131
|
self.__corpus_inferences_name = corpus_inferences_name
|
|
131
132
|
self.__trace_dataset_name = trace_dataset_name
|
|
133
|
+
self.enable_websockets = enable_websockets
|
|
132
134
|
super().__init__()
|
|
133
135
|
|
|
134
136
|
@property
|
|
@@ -156,5 +158,7 @@ class AppService(Service):
|
|
|
156
158
|
command.extend(["--corpus", str(self.__corpus_inferences_name)])
|
|
157
159
|
if self.__trace_dataset_name is not None:
|
|
158
160
|
command.extend(["--trace", str(self.__trace_dataset_name)])
|
|
161
|
+
if self.enable_websockets:
|
|
162
|
+
command.append("--enable-websockets")
|
|
159
163
|
logger.info(f"command: {' '.join(command)}")
|
|
160
164
|
return command
|
phoenix/session/session.py
CHANGED
|
@@ -24,6 +24,7 @@ from phoenix.config import (
|
|
|
24
24
|
ENV_PHOENIX_PORT,
|
|
25
25
|
ensure_working_dir,
|
|
26
26
|
get_env_database_connection_str,
|
|
27
|
+
get_env_enable_websockets,
|
|
27
28
|
get_env_host,
|
|
28
29
|
get_env_port,
|
|
29
30
|
get_exported_files,
|
|
@@ -269,6 +270,7 @@ class ProcessSession(Session):
|
|
|
269
270
|
self,
|
|
270
271
|
database_url: str,
|
|
271
272
|
primary_inferences: Inferences,
|
|
273
|
+
enable_websockets: bool,
|
|
272
274
|
reference_inferences: Optional[Inferences] = None,
|
|
273
275
|
corpus_inferences: Optional[Inferences] = None,
|
|
274
276
|
trace_dataset: Optional[TraceDataset] = None,
|
|
@@ -319,6 +321,7 @@ class ProcessSession(Session):
|
|
|
319
321
|
trace_dataset_name=(
|
|
320
322
|
self.trace_dataset.name if self.trace_dataset is not None else None
|
|
321
323
|
),
|
|
324
|
+
enable_websockets=enable_websockets,
|
|
322
325
|
)
|
|
323
326
|
|
|
324
327
|
@property
|
|
@@ -335,6 +338,7 @@ class ThreadSession(Session):
|
|
|
335
338
|
self,
|
|
336
339
|
database_url: str,
|
|
337
340
|
primary_inferences: Inferences,
|
|
341
|
+
enable_websockets: bool,
|
|
338
342
|
reference_inferences: Optional[Inferences] = None,
|
|
339
343
|
corpus_inferences: Optional[Inferences] = None,
|
|
340
344
|
trace_dataset: Optional[TraceDataset] = None,
|
|
@@ -375,6 +379,7 @@ class ThreadSession(Session):
|
|
|
375
379
|
export_path=self.export_path,
|
|
376
380
|
model=self.model,
|
|
377
381
|
authentication_enabled=False,
|
|
382
|
+
enable_websockets=enable_websockets,
|
|
378
383
|
corpus=self.corpus,
|
|
379
384
|
umap_params=self.umap_parameters,
|
|
380
385
|
initial_spans=trace_dataset.to_spans() if trace_dataset else None,
|
|
@@ -438,6 +443,7 @@ def launch_app(
|
|
|
438
443
|
run_in_thread: bool = True,
|
|
439
444
|
notebook_environment: Optional[Union[NotebookEnvironment, str]] = None,
|
|
440
445
|
use_temp_dir: bool = True,
|
|
446
|
+
enable_websockets: Optional[bool] = None,
|
|
441
447
|
) -> Optional[Session]:
|
|
442
448
|
"""
|
|
443
449
|
Launches the phoenix application and returns a session to interact with.
|
|
@@ -472,7 +478,8 @@ def launch_app(
|
|
|
472
478
|
use_temp_dir: bool, optional, default=True
|
|
473
479
|
Whether to use a temporary directory to store the data. If set to False, the data will be
|
|
474
480
|
stored in the directory specified by PHOENIX_WORKING_DIR environment variable via SQLite.
|
|
475
|
-
|
|
481
|
+
enable_websockets: bool, optional, default=False
|
|
482
|
+
Whether to enable websockets.
|
|
476
483
|
|
|
477
484
|
Returns
|
|
478
485
|
-------
|
|
@@ -553,10 +560,16 @@ def launch_app(
|
|
|
553
560
|
else:
|
|
554
561
|
database_url = get_env_database_connection_str()
|
|
555
562
|
|
|
563
|
+
enable_websockets_env = get_env_enable_websockets() or False
|
|
564
|
+
enable_websockets = (
|
|
565
|
+
enable_websockets if enable_websockets is not None else enable_websockets_env
|
|
566
|
+
)
|
|
567
|
+
|
|
556
568
|
if run_in_thread:
|
|
557
569
|
_session = ThreadSession(
|
|
558
570
|
database_url,
|
|
559
571
|
primary,
|
|
572
|
+
enable_websockets,
|
|
560
573
|
reference,
|
|
561
574
|
corpus,
|
|
562
575
|
trace,
|
|
@@ -570,6 +583,7 @@ def launch_app(
|
|
|
570
583
|
_session = ProcessSession(
|
|
571
584
|
database_url,
|
|
572
585
|
primary,
|
|
586
|
+
enable_websockets,
|
|
573
587
|
reference,
|
|
574
588
|
corpus,
|
|
575
589
|
trace,
|
|
@@ -19,7 +19,9 @@ class TemplateFormatter(ABC):
|
|
|
19
19
|
"""
|
|
20
20
|
template_variable_names = self.parse(template)
|
|
21
21
|
if missing_template_variables := template_variable_names - set(variables.keys()):
|
|
22
|
-
raise
|
|
22
|
+
raise TemplateFormatterError(
|
|
23
|
+
f"Missing template variable(s): {', '.join(missing_template_variables)}"
|
|
24
|
+
)
|
|
23
25
|
return self._format(template, template_variable_names, **variables)
|
|
24
26
|
|
|
25
27
|
@abstractmethod
|
|
@@ -69,3 +71,11 @@ class MustacheTemplateFormatter(TemplateFormatter):
|
|
|
69
71
|
string=template,
|
|
70
72
|
)
|
|
71
73
|
return template
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class TemplateFormatterError(Exception):
|
|
77
|
+
"""
|
|
78
|
+
An error raised when template formatting fails.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
pass
|
phoenix/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "5.
|
|
1
|
+
__version__ = "5.7.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|