arize-phoenix 3.16.1__py3-none-any.whl → 7.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-7.7.0.dist-info/METADATA +261 -0
- arize_phoenix-7.7.0.dist-info/RECORD +345 -0
- {arize_phoenix-3.16.1.dist-info → arize_phoenix-7.7.0.dist-info}/WHEEL +1 -1
- arize_phoenix-7.7.0.dist-info/entry_points.txt +3 -0
- phoenix/__init__.py +86 -14
- phoenix/auth.py +309 -0
- phoenix/config.py +675 -45
- phoenix/core/model.py +32 -30
- phoenix/core/model_schema.py +102 -109
- phoenix/core/model_schema_adapter.py +48 -45
- phoenix/datetime_utils.py +24 -3
- phoenix/db/README.md +54 -0
- phoenix/db/__init__.py +4 -0
- phoenix/db/alembic.ini +85 -0
- phoenix/db/bulk_inserter.py +294 -0
- phoenix/db/engines.py +208 -0
- phoenix/db/enums.py +20 -0
- phoenix/db/facilitator.py +113 -0
- phoenix/db/helpers.py +159 -0
- phoenix/db/insertion/constants.py +2 -0
- phoenix/db/insertion/dataset.py +227 -0
- phoenix/db/insertion/document_annotation.py +171 -0
- phoenix/db/insertion/evaluation.py +191 -0
- phoenix/db/insertion/helpers.py +98 -0
- phoenix/db/insertion/span.py +193 -0
- phoenix/db/insertion/span_annotation.py +158 -0
- phoenix/db/insertion/trace_annotation.py +158 -0
- phoenix/db/insertion/types.py +256 -0
- phoenix/db/migrate.py +86 -0
- phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +199 -0
- phoenix/db/migrations/env.py +114 -0
- phoenix/db/migrations/script.py.mako +26 -0
- phoenix/db/migrations/versions/10460e46d750_datasets.py +317 -0
- phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +126 -0
- phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +66 -0
- phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +157 -0
- phoenix/db/migrations/versions/cf03bd6bae1d_init.py +280 -0
- phoenix/db/models.py +807 -0
- phoenix/exceptions.py +5 -1
- phoenix/experiments/__init__.py +6 -0
- phoenix/experiments/evaluators/__init__.py +29 -0
- phoenix/experiments/evaluators/base.py +158 -0
- phoenix/experiments/evaluators/code_evaluators.py +184 -0
- phoenix/experiments/evaluators/llm_evaluators.py +473 -0
- phoenix/experiments/evaluators/utils.py +236 -0
- phoenix/experiments/functions.py +772 -0
- phoenix/experiments/tracing.py +86 -0
- phoenix/experiments/types.py +726 -0
- phoenix/experiments/utils.py +25 -0
- phoenix/inferences/__init__.py +0 -0
- phoenix/{datasets → inferences}/errors.py +6 -5
- phoenix/{datasets → inferences}/fixtures.py +49 -42
- phoenix/{datasets/dataset.py → inferences/inferences.py} +121 -105
- phoenix/{datasets → inferences}/schema.py +11 -11
- phoenix/{datasets → inferences}/validation.py +13 -14
- phoenix/logging/__init__.py +3 -0
- phoenix/logging/_config.py +90 -0
- phoenix/logging/_filter.py +6 -0
- phoenix/logging/_formatter.py +69 -0
- phoenix/metrics/__init__.py +5 -4
- phoenix/metrics/binning.py +4 -3
- phoenix/metrics/metrics.py +2 -1
- phoenix/metrics/mixins.py +7 -6
- phoenix/metrics/retrieval_metrics.py +2 -1
- phoenix/metrics/timeseries.py +5 -4
- phoenix/metrics/wrappers.py +9 -3
- phoenix/pointcloud/clustering.py +5 -5
- phoenix/pointcloud/pointcloud.py +7 -5
- phoenix/pointcloud/projectors.py +5 -6
- phoenix/pointcloud/umap_parameters.py +53 -52
- phoenix/server/api/README.md +28 -0
- phoenix/server/api/auth.py +44 -0
- phoenix/server/api/context.py +152 -9
- phoenix/server/api/dataloaders/__init__.py +91 -0
- phoenix/server/api/dataloaders/annotation_summaries.py +139 -0
- phoenix/server/api/dataloaders/average_experiment_run_latency.py +54 -0
- phoenix/server/api/dataloaders/cache/__init__.py +3 -0
- phoenix/server/api/dataloaders/cache/two_tier_cache.py +68 -0
- phoenix/server/api/dataloaders/dataset_example_revisions.py +131 -0
- phoenix/server/api/dataloaders/dataset_example_spans.py +38 -0
- phoenix/server/api/dataloaders/document_evaluation_summaries.py +144 -0
- phoenix/server/api/dataloaders/document_evaluations.py +31 -0
- phoenix/server/api/dataloaders/document_retrieval_metrics.py +89 -0
- phoenix/server/api/dataloaders/experiment_annotation_summaries.py +79 -0
- phoenix/server/api/dataloaders/experiment_error_rates.py +58 -0
- phoenix/server/api/dataloaders/experiment_run_annotations.py +36 -0
- phoenix/server/api/dataloaders/experiment_run_counts.py +49 -0
- phoenix/server/api/dataloaders/experiment_sequence_number.py +44 -0
- phoenix/server/api/dataloaders/latency_ms_quantile.py +188 -0
- phoenix/server/api/dataloaders/min_start_or_max_end_times.py +85 -0
- phoenix/server/api/dataloaders/project_by_name.py +31 -0
- phoenix/server/api/dataloaders/record_counts.py +116 -0
- phoenix/server/api/dataloaders/session_io.py +79 -0
- phoenix/server/api/dataloaders/session_num_traces.py +30 -0
- phoenix/server/api/dataloaders/session_num_traces_with_error.py +32 -0
- phoenix/server/api/dataloaders/session_token_usages.py +41 -0
- phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +55 -0
- phoenix/server/api/dataloaders/span_annotations.py +26 -0
- phoenix/server/api/dataloaders/span_dataset_examples.py +31 -0
- phoenix/server/api/dataloaders/span_descendants.py +57 -0
- phoenix/server/api/dataloaders/span_projects.py +33 -0
- phoenix/server/api/dataloaders/token_counts.py +124 -0
- phoenix/server/api/dataloaders/trace_by_trace_ids.py +25 -0
- phoenix/server/api/dataloaders/trace_root_spans.py +32 -0
- phoenix/server/api/dataloaders/user_roles.py +30 -0
- phoenix/server/api/dataloaders/users.py +33 -0
- phoenix/server/api/exceptions.py +48 -0
- phoenix/server/api/helpers/__init__.py +12 -0
- phoenix/server/api/helpers/dataset_helpers.py +217 -0
- phoenix/server/api/helpers/experiment_run_filters.py +763 -0
- phoenix/server/api/helpers/playground_clients.py +948 -0
- phoenix/server/api/helpers/playground_registry.py +70 -0
- phoenix/server/api/helpers/playground_spans.py +455 -0
- phoenix/server/api/input_types/AddExamplesToDatasetInput.py +16 -0
- phoenix/server/api/input_types/AddSpansToDatasetInput.py +14 -0
- phoenix/server/api/input_types/ChatCompletionInput.py +38 -0
- phoenix/server/api/input_types/ChatCompletionMessageInput.py +24 -0
- phoenix/server/api/input_types/ClearProjectInput.py +15 -0
- phoenix/server/api/input_types/ClusterInput.py +2 -2
- phoenix/server/api/input_types/CreateDatasetInput.py +12 -0
- phoenix/server/api/input_types/CreateSpanAnnotationInput.py +18 -0
- phoenix/server/api/input_types/CreateTraceAnnotationInput.py +18 -0
- phoenix/server/api/input_types/DataQualityMetricInput.py +5 -2
- phoenix/server/api/input_types/DatasetExampleInput.py +14 -0
- phoenix/server/api/input_types/DatasetSort.py +17 -0
- phoenix/server/api/input_types/DatasetVersionSort.py +16 -0
- phoenix/server/api/input_types/DeleteAnnotationsInput.py +7 -0
- phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +13 -0
- phoenix/server/api/input_types/DeleteDatasetInput.py +7 -0
- phoenix/server/api/input_types/DeleteExperimentsInput.py +7 -0
- phoenix/server/api/input_types/DimensionFilter.py +4 -4
- phoenix/server/api/input_types/GenerativeModelInput.py +17 -0
- phoenix/server/api/input_types/Granularity.py +1 -1
- phoenix/server/api/input_types/InvocationParameters.py +162 -0
- phoenix/server/api/input_types/PatchAnnotationInput.py +19 -0
- phoenix/server/api/input_types/PatchDatasetExamplesInput.py +35 -0
- phoenix/server/api/input_types/PatchDatasetInput.py +14 -0
- phoenix/server/api/input_types/PerformanceMetricInput.py +5 -2
- phoenix/server/api/input_types/ProjectSessionSort.py +29 -0
- phoenix/server/api/input_types/SpanAnnotationSort.py +17 -0
- phoenix/server/api/input_types/SpanSort.py +134 -69
- phoenix/server/api/input_types/TemplateOptions.py +10 -0
- phoenix/server/api/input_types/TraceAnnotationSort.py +17 -0
- phoenix/server/api/input_types/UserRoleInput.py +9 -0
- phoenix/server/api/mutations/__init__.py +28 -0
- phoenix/server/api/mutations/api_key_mutations.py +167 -0
- phoenix/server/api/mutations/chat_mutations.py +593 -0
- phoenix/server/api/mutations/dataset_mutations.py +591 -0
- phoenix/server/api/mutations/experiment_mutations.py +75 -0
- phoenix/server/api/{types/ExportEventsMutation.py → mutations/export_events_mutations.py} +21 -18
- phoenix/server/api/mutations/project_mutations.py +57 -0
- phoenix/server/api/mutations/span_annotations_mutations.py +128 -0
- phoenix/server/api/mutations/trace_annotations_mutations.py +127 -0
- phoenix/server/api/mutations/user_mutations.py +329 -0
- phoenix/server/api/openapi/__init__.py +0 -0
- phoenix/server/api/openapi/main.py +17 -0
- phoenix/server/api/openapi/schema.py +16 -0
- phoenix/server/api/queries.py +738 -0
- phoenix/server/api/routers/__init__.py +11 -0
- phoenix/server/api/routers/auth.py +284 -0
- phoenix/server/api/routers/embeddings.py +26 -0
- phoenix/server/api/routers/oauth2.py +488 -0
- phoenix/server/api/routers/v1/__init__.py +64 -0
- phoenix/server/api/routers/v1/datasets.py +1017 -0
- phoenix/server/api/routers/v1/evaluations.py +362 -0
- phoenix/server/api/routers/v1/experiment_evaluations.py +115 -0
- phoenix/server/api/routers/v1/experiment_runs.py +167 -0
- phoenix/server/api/routers/v1/experiments.py +308 -0
- phoenix/server/api/routers/v1/pydantic_compat.py +78 -0
- phoenix/server/api/routers/v1/spans.py +267 -0
- phoenix/server/api/routers/v1/traces.py +208 -0
- phoenix/server/api/routers/v1/utils.py +95 -0
- phoenix/server/api/schema.py +44 -241
- phoenix/server/api/subscriptions.py +597 -0
- phoenix/server/api/types/Annotation.py +21 -0
- phoenix/server/api/types/AnnotationSummary.py +55 -0
- phoenix/server/api/types/AnnotatorKind.py +16 -0
- phoenix/server/api/types/ApiKey.py +27 -0
- phoenix/server/api/types/AuthMethod.py +9 -0
- phoenix/server/api/types/ChatCompletionMessageRole.py +11 -0
- phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +46 -0
- phoenix/server/api/types/Cluster.py +25 -24
- phoenix/server/api/types/CreateDatasetPayload.py +8 -0
- phoenix/server/api/types/DataQualityMetric.py +31 -13
- phoenix/server/api/types/Dataset.py +288 -63
- phoenix/server/api/types/DatasetExample.py +85 -0
- phoenix/server/api/types/DatasetExampleRevision.py +34 -0
- phoenix/server/api/types/DatasetVersion.py +14 -0
- phoenix/server/api/types/Dimension.py +32 -31
- phoenix/server/api/types/DocumentEvaluationSummary.py +9 -8
- phoenix/server/api/types/EmbeddingDimension.py +56 -49
- phoenix/server/api/types/Evaluation.py +25 -31
- phoenix/server/api/types/EvaluationSummary.py +30 -50
- phoenix/server/api/types/Event.py +20 -20
- phoenix/server/api/types/ExampleRevisionInterface.py +14 -0
- phoenix/server/api/types/Experiment.py +152 -0
- phoenix/server/api/types/ExperimentAnnotationSummary.py +13 -0
- phoenix/server/api/types/ExperimentComparison.py +17 -0
- phoenix/server/api/types/ExperimentRun.py +119 -0
- phoenix/server/api/types/ExperimentRunAnnotation.py +56 -0
- phoenix/server/api/types/GenerativeModel.py +9 -0
- phoenix/server/api/types/GenerativeProvider.py +85 -0
- phoenix/server/api/types/Inferences.py +80 -0
- phoenix/server/api/types/InferencesRole.py +23 -0
- phoenix/server/api/types/LabelFraction.py +7 -0
- phoenix/server/api/types/MimeType.py +2 -2
- phoenix/server/api/types/Model.py +54 -54
- phoenix/server/api/types/PerformanceMetric.py +8 -5
- phoenix/server/api/types/Project.py +407 -142
- phoenix/server/api/types/ProjectSession.py +139 -0
- phoenix/server/api/types/Segments.py +4 -4
- phoenix/server/api/types/Span.py +221 -176
- phoenix/server/api/types/SpanAnnotation.py +43 -0
- phoenix/server/api/types/SpanIOValue.py +15 -0
- phoenix/server/api/types/SystemApiKey.py +9 -0
- phoenix/server/api/types/TemplateLanguage.py +10 -0
- phoenix/server/api/types/TimeSeries.py +19 -15
- phoenix/server/api/types/TokenUsage.py +11 -0
- phoenix/server/api/types/Trace.py +154 -0
- phoenix/server/api/types/TraceAnnotation.py +45 -0
- phoenix/server/api/types/UMAPPoints.py +7 -7
- phoenix/server/api/types/User.py +60 -0
- phoenix/server/api/types/UserApiKey.py +45 -0
- phoenix/server/api/types/UserRole.py +15 -0
- phoenix/server/api/types/node.py +4 -112
- phoenix/server/api/types/pagination.py +156 -57
- phoenix/server/api/utils.py +34 -0
- phoenix/server/app.py +864 -115
- phoenix/server/bearer_auth.py +163 -0
- phoenix/server/dml_event.py +136 -0
- phoenix/server/dml_event_handler.py +256 -0
- phoenix/server/email/__init__.py +0 -0
- phoenix/server/email/sender.py +97 -0
- phoenix/server/email/templates/__init__.py +0 -0
- phoenix/server/email/templates/password_reset.html +19 -0
- phoenix/server/email/types.py +11 -0
- phoenix/server/grpc_server.py +102 -0
- phoenix/server/jwt_store.py +505 -0
- phoenix/server/main.py +305 -116
- phoenix/server/oauth2.py +52 -0
- phoenix/server/openapi/__init__.py +0 -0
- phoenix/server/prometheus.py +111 -0
- phoenix/server/rate_limiters.py +188 -0
- phoenix/server/static/.vite/manifest.json +87 -0
- phoenix/server/static/assets/components-Cy9nwIvF.js +2125 -0
- phoenix/server/static/assets/index-BKvHIxkk.js +113 -0
- phoenix/server/static/assets/pages-CUi2xCVQ.js +4449 -0
- phoenix/server/static/assets/vendor-DvC8cT4X.js +894 -0
- phoenix/server/static/assets/vendor-DxkFTwjz.css +1 -0
- phoenix/server/static/assets/vendor-arizeai-Do1793cv.js +662 -0
- phoenix/server/static/assets/vendor-codemirror-BzwZPyJM.js +24 -0
- phoenix/server/static/assets/vendor-recharts-_Jb7JjhG.js +59 -0
- phoenix/server/static/assets/vendor-shiki-Cl9QBraO.js +5 -0
- phoenix/server/static/assets/vendor-three-DwGkEfCM.js +2998 -0
- phoenix/server/telemetry.py +68 -0
- phoenix/server/templates/index.html +82 -23
- phoenix/server/thread_server.py +3 -3
- phoenix/server/types.py +275 -0
- phoenix/services.py +27 -18
- phoenix/session/client.py +743 -68
- phoenix/session/data_extractor.py +31 -7
- phoenix/session/evaluation.py +3 -9
- phoenix/session/session.py +263 -219
- phoenix/settings.py +22 -0
- phoenix/trace/__init__.py +2 -22
- phoenix/trace/attributes.py +338 -0
- phoenix/trace/dsl/README.md +116 -0
- phoenix/trace/dsl/filter.py +663 -213
- phoenix/trace/dsl/helpers.py +73 -21
- phoenix/trace/dsl/query.py +574 -201
- phoenix/trace/exporter.py +24 -19
- phoenix/trace/fixtures.py +368 -32
- phoenix/trace/otel.py +71 -219
- phoenix/trace/projects.py +3 -2
- phoenix/trace/schemas.py +33 -11
- phoenix/trace/span_evaluations.py +21 -16
- phoenix/trace/span_json_decoder.py +6 -4
- phoenix/trace/span_json_encoder.py +2 -2
- phoenix/trace/trace_dataset.py +47 -32
- phoenix/trace/utils.py +21 -4
- phoenix/utilities/__init__.py +0 -26
- phoenix/utilities/client.py +132 -0
- phoenix/utilities/deprecation.py +31 -0
- phoenix/utilities/error_handling.py +3 -2
- phoenix/utilities/json.py +109 -0
- phoenix/utilities/logging.py +8 -0
- phoenix/utilities/project.py +2 -2
- phoenix/utilities/re.py +49 -0
- phoenix/utilities/span_store.py +0 -23
- phoenix/utilities/template_formatters.py +99 -0
- phoenix/version.py +1 -1
- arize_phoenix-3.16.1.dist-info/METADATA +0 -495
- arize_phoenix-3.16.1.dist-info/RECORD +0 -178
- phoenix/core/project.py +0 -619
- phoenix/core/traces.py +0 -96
- phoenix/experimental/evals/__init__.py +0 -73
- phoenix/experimental/evals/evaluators.py +0 -413
- phoenix/experimental/evals/functions/__init__.py +0 -4
- phoenix/experimental/evals/functions/classify.py +0 -453
- phoenix/experimental/evals/functions/executor.py +0 -353
- phoenix/experimental/evals/functions/generate.py +0 -138
- phoenix/experimental/evals/functions/processing.py +0 -76
- phoenix/experimental/evals/models/__init__.py +0 -14
- phoenix/experimental/evals/models/anthropic.py +0 -175
- phoenix/experimental/evals/models/base.py +0 -170
- phoenix/experimental/evals/models/bedrock.py +0 -221
- phoenix/experimental/evals/models/litellm.py +0 -134
- phoenix/experimental/evals/models/openai.py +0 -448
- phoenix/experimental/evals/models/rate_limiters.py +0 -246
- phoenix/experimental/evals/models/vertex.py +0 -173
- phoenix/experimental/evals/models/vertexai.py +0 -186
- phoenix/experimental/evals/retrievals.py +0 -96
- phoenix/experimental/evals/templates/__init__.py +0 -50
- phoenix/experimental/evals/templates/default_templates.py +0 -472
- phoenix/experimental/evals/templates/template.py +0 -195
- phoenix/experimental/evals/utils/__init__.py +0 -172
- phoenix/experimental/evals/utils/threads.py +0 -27
- phoenix/server/api/helpers.py +0 -11
- phoenix/server/api/routers/evaluation_handler.py +0 -109
- phoenix/server/api/routers/span_handler.py +0 -70
- phoenix/server/api/routers/trace_handler.py +0 -60
- phoenix/server/api/types/DatasetRole.py +0 -23
- phoenix/server/static/index.css +0 -6
- phoenix/server/static/index.js +0 -7447
- phoenix/storage/span_store/__init__.py +0 -23
- phoenix/storage/span_store/text_file.py +0 -85
- phoenix/trace/dsl/missing.py +0 -60
- phoenix/trace/langchain/__init__.py +0 -3
- phoenix/trace/langchain/instrumentor.py +0 -35
- phoenix/trace/llama_index/__init__.py +0 -3
- phoenix/trace/llama_index/callback.py +0 -102
- phoenix/trace/openai/__init__.py +0 -3
- phoenix/trace/openai/instrumentor.py +0 -30
- {arize_phoenix-3.16.1.dist-info → arize_phoenix-7.7.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-3.16.1.dist-info → arize_phoenix-7.7.0.dist-info}/licenses/LICENSE +0 -0
- /phoenix/{datasets → db/insertion}/__init__.py +0 -0
- /phoenix/{experimental → db/migrations}/__init__.py +0 -0
- /phoenix/{storage → db/migrations/data_migration_scripts}/__init__.py +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry.relay import GlobalID
|
|
5
|
+
from strawberry.scalars import JSON
|
|
6
|
+
|
|
7
|
+
from phoenix.server.api.types.AnnotatorKind import AnnotatorKind
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@strawberry.input
|
|
11
|
+
class CreateTraceAnnotationInput:
|
|
12
|
+
trace_id: GlobalID
|
|
13
|
+
name: str
|
|
14
|
+
annotator_kind: AnnotatorKind
|
|
15
|
+
label: Optional[str] = None
|
|
16
|
+
score: Optional[float] = None
|
|
17
|
+
explanation: Optional[str] = None
|
|
18
|
+
metadata: JSON = strawberry.field(default_factory=dict)
|
|
@@ -8,7 +8,10 @@ from typing_extensions import Annotated
|
|
|
8
8
|
from phoenix.core.model_schema import Column
|
|
9
9
|
from phoenix.metrics import Metric
|
|
10
10
|
from phoenix.metrics.mixins import UnaryOperator
|
|
11
|
-
from phoenix.server.api.types.DataQualityMetric import
|
|
11
|
+
from phoenix.server.api.types.DataQualityMetric import (
|
|
12
|
+
DATA_QUALITY_METRIC_FACTORIES,
|
|
13
|
+
DataQualityMetric,
|
|
14
|
+
)
|
|
12
15
|
|
|
13
16
|
|
|
14
17
|
@strawberry.input
|
|
@@ -26,7 +29,7 @@ class DataQualityMetricInput:
|
|
|
26
29
|
metric_instance: strawberry.Private[Metric] = field(init=False)
|
|
27
30
|
|
|
28
31
|
def __post_init__(self) -> None:
|
|
29
|
-
metric_instance = self.metric
|
|
32
|
+
metric_instance = DATA_QUALITY_METRIC_FACTORIES[self.metric]()
|
|
30
33
|
if isinstance(metric_instance, UnaryOperator):
|
|
31
34
|
if not isinstance(self.column_name, str):
|
|
32
35
|
raise ValueError(f"column name must not be null for {self.metric.name}")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
from strawberry.relay import GlobalID
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.input
|
|
10
|
+
class DatasetExampleInput:
|
|
11
|
+
input: JSON
|
|
12
|
+
output: JSON
|
|
13
|
+
metadata: JSON
|
|
14
|
+
span_id: Optional[GlobalID] = UNSET
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
|
|
5
|
+
from phoenix.server.api.types.SortDir import SortDir
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@strawberry.enum
|
|
9
|
+
class DatasetColumn(Enum):
|
|
10
|
+
createdAt = "created_at"
|
|
11
|
+
name = "name"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@strawberry.input(description="The sort key and direction for dataset connections")
|
|
15
|
+
class DatasetSort:
|
|
16
|
+
col: DatasetColumn
|
|
17
|
+
dir: SortDir
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
|
|
5
|
+
from phoenix.server.api.types.SortDir import SortDir
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@strawberry.enum
|
|
9
|
+
class DatasetVersionColumn(Enum):
|
|
10
|
+
createdAt = "created_at"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@strawberry.input(description="The sort key and direction for dataset version connections")
|
|
14
|
+
class DatasetVersionSort:
|
|
15
|
+
col: DatasetVersionColumn
|
|
16
|
+
dir: SortDir
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
from strawberry.relay import GlobalID
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.input
|
|
10
|
+
class DeleteDatasetExamplesInput:
|
|
11
|
+
example_ids: list[GlobalID]
|
|
12
|
+
dataset_version_description: Optional[str] = UNSET
|
|
13
|
+
dataset_version_metadata: Optional[JSON] = UNSET
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Optional
|
|
2
2
|
|
|
3
3
|
import strawberry
|
|
4
4
|
from strawberry import UNSET
|
|
@@ -52,9 +52,9 @@ class DimensionFilter:
|
|
|
52
52
|
|
|
53
53
|
"""
|
|
54
54
|
|
|
55
|
-
types: Optional[
|
|
56
|
-
shapes: Optional[
|
|
57
|
-
data_types: Optional[
|
|
55
|
+
types: Optional[list[DimensionType]] = UNSET
|
|
56
|
+
shapes: Optional[list[DimensionShape]] = UNSET
|
|
57
|
+
data_types: Optional[list[DimensionDataType]] = UNSET
|
|
58
58
|
|
|
59
59
|
def __post_init__(self) -> None:
|
|
60
60
|
self.types = ensure_list(self.types)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
|
|
6
|
+
from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.input
|
|
10
|
+
class GenerativeModelInput:
|
|
11
|
+
provider_key: GenerativeProviderKey
|
|
12
|
+
name: str
|
|
13
|
+
""" The name of the model. Or the Deployment Name for Azure OpenAI models. """
|
|
14
|
+
endpoint: Optional[str] = UNSET
|
|
15
|
+
""" The endpoint to use for the model. Only required for Azure OpenAI models. """
|
|
16
|
+
api_version: Optional[str] = UNSET
|
|
17
|
+
""" The API version to use for the model. """
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Annotated, Any, Mapping, Optional, Union
|
|
3
|
+
|
|
4
|
+
import strawberry
|
|
5
|
+
from strawberry import UNSET
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.enum
|
|
10
|
+
class CanonicalParameterName(str, Enum):
|
|
11
|
+
TEMPERATURE = "temperature"
|
|
12
|
+
MAX_COMPLETION_TOKENS = "max_completion_tokens"
|
|
13
|
+
STOP_SEQUENCES = "stop_sequences"
|
|
14
|
+
TOP_P = "top_p"
|
|
15
|
+
RANDOM_SEED = "random_seed"
|
|
16
|
+
TOOL_CHOICE = "tool_choice"
|
|
17
|
+
RESPONSE_FORMAT = "response_format"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@strawberry.enum
|
|
21
|
+
class InvocationInputField(str, Enum):
|
|
22
|
+
value_int = "value_int"
|
|
23
|
+
value_float = "value_float"
|
|
24
|
+
value_bool = "value_bool"
|
|
25
|
+
value_string = "value_string"
|
|
26
|
+
value_json = "value_json"
|
|
27
|
+
value_string_list = "value_string_list"
|
|
28
|
+
value_boolean = "value_boolean"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@strawberry.input
|
|
32
|
+
class InvocationParameterInput:
|
|
33
|
+
invocation_name: str
|
|
34
|
+
canonical_name: Optional[CanonicalParameterName] = None
|
|
35
|
+
value_int: Optional[int] = UNSET
|
|
36
|
+
value_float: Optional[float] = UNSET
|
|
37
|
+
value_bool: Optional[bool] = UNSET
|
|
38
|
+
value_string: Optional[str] = UNSET
|
|
39
|
+
value_json: Optional[JSON] = UNSET
|
|
40
|
+
value_string_list: Optional[list[str]] = UNSET
|
|
41
|
+
value_boolean: Optional[bool] = UNSET
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@strawberry.interface
|
|
45
|
+
class InvocationParameterBase:
|
|
46
|
+
invocation_name: str
|
|
47
|
+
canonical_name: Optional[CanonicalParameterName] = None
|
|
48
|
+
label: str
|
|
49
|
+
required: bool = False
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@strawberry.type
|
|
53
|
+
class IntInvocationParameter(InvocationParameterBase):
|
|
54
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_int
|
|
55
|
+
default_value: Optional[int] = None
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@strawberry.type
|
|
59
|
+
class FloatInvocationParameter(InvocationParameterBase):
|
|
60
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_float
|
|
61
|
+
default_value: Optional[float] = None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@strawberry.type
|
|
65
|
+
class BoundedFloatInvocationParameter(InvocationParameterBase):
|
|
66
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_float
|
|
67
|
+
default_value: Optional[float] = None
|
|
68
|
+
min_value: float
|
|
69
|
+
max_value: float
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@strawberry.type
|
|
73
|
+
class StringInvocationParameter(InvocationParameterBase):
|
|
74
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_string
|
|
75
|
+
default_value: Optional[str] = None
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@strawberry.type
|
|
79
|
+
class JSONInvocationParameter(InvocationParameterBase):
|
|
80
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_json
|
|
81
|
+
default_value: Optional[JSON] = None
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
@strawberry.type
|
|
85
|
+
class StringListInvocationParameter(InvocationParameterBase):
|
|
86
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_string_list
|
|
87
|
+
default_value: Optional[list[str]] = None
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@strawberry.type
|
|
91
|
+
class BooleanInvocationParameter(InvocationParameterBase):
|
|
92
|
+
invocation_input_field: InvocationInputField = InvocationInputField.value_bool
|
|
93
|
+
default_value: Optional[bool] = None
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def extract_parameter(
|
|
97
|
+
param_def: InvocationParameterBase, param_input: InvocationParameterInput
|
|
98
|
+
) -> Any:
|
|
99
|
+
if isinstance(param_def, IntInvocationParameter):
|
|
100
|
+
return (
|
|
101
|
+
param_input.value_int if param_input.value_int is not UNSET else param_def.default_value
|
|
102
|
+
)
|
|
103
|
+
elif isinstance(param_def, FloatInvocationParameter):
|
|
104
|
+
return (
|
|
105
|
+
param_input.value_float
|
|
106
|
+
if param_input.value_float is not UNSET
|
|
107
|
+
else param_def.default_value
|
|
108
|
+
)
|
|
109
|
+
elif isinstance(param_def, BoundedFloatInvocationParameter):
|
|
110
|
+
return (
|
|
111
|
+
param_input.value_float
|
|
112
|
+
if param_input.value_float is not UNSET
|
|
113
|
+
else param_def.default_value
|
|
114
|
+
)
|
|
115
|
+
elif isinstance(param_def, StringInvocationParameter):
|
|
116
|
+
return (
|
|
117
|
+
param_input.value_string
|
|
118
|
+
if param_input.value_string is not UNSET
|
|
119
|
+
else param_def.default_value
|
|
120
|
+
)
|
|
121
|
+
elif isinstance(param_def, JSONInvocationParameter):
|
|
122
|
+
return (
|
|
123
|
+
param_input.value_json
|
|
124
|
+
if param_input.value_json is not UNSET
|
|
125
|
+
else param_def.default_value
|
|
126
|
+
)
|
|
127
|
+
elif isinstance(param_def, StringListInvocationParameter):
|
|
128
|
+
return (
|
|
129
|
+
param_input.value_string_list
|
|
130
|
+
if param_input.value_string_list is not UNSET
|
|
131
|
+
else param_def.default_value
|
|
132
|
+
)
|
|
133
|
+
elif isinstance(param_def, BooleanInvocationParameter):
|
|
134
|
+
return (
|
|
135
|
+
param_input.value_bool
|
|
136
|
+
if param_input.value_bool is not UNSET
|
|
137
|
+
else param_def.default_value
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def validate_invocation_parameters(
|
|
142
|
+
parameters: list["InvocationParameter"],
|
|
143
|
+
input: Mapping[str, Any],
|
|
144
|
+
) -> None:
|
|
145
|
+
for param_def in parameters:
|
|
146
|
+
if param_def.required and param_def.invocation_name not in input:
|
|
147
|
+
raise ValueError(f"Required parameter {param_def.invocation_name} not provided")
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# Create the union for output types
|
|
151
|
+
InvocationParameter = Annotated[
|
|
152
|
+
Union[
|
|
153
|
+
IntInvocationParameter,
|
|
154
|
+
FloatInvocationParameter,
|
|
155
|
+
BoundedFloatInvocationParameter,
|
|
156
|
+
StringInvocationParameter,
|
|
157
|
+
JSONInvocationParameter,
|
|
158
|
+
StringListInvocationParameter,
|
|
159
|
+
BooleanInvocationParameter,
|
|
160
|
+
],
|
|
161
|
+
strawberry.union("InvocationParameter"),
|
|
162
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
from strawberry.relay import GlobalID
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
from phoenix.server.api.types.AnnotatorKind import AnnotatorKind
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@strawberry.input
|
|
12
|
+
class PatchAnnotationInput:
|
|
13
|
+
annotation_id: GlobalID
|
|
14
|
+
name: Optional[str] = UNSET
|
|
15
|
+
annotator_kind: Optional[AnnotatorKind] = UNSET
|
|
16
|
+
label: Optional[str] = UNSET
|
|
17
|
+
score: Optional[float] = UNSET
|
|
18
|
+
explanation: Optional[str] = UNSET
|
|
19
|
+
metadata: Optional[JSON] = UNSET
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
from strawberry.relay import GlobalID
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.input
|
|
10
|
+
class DatasetExamplePatch:
|
|
11
|
+
"""
|
|
12
|
+
Contains the information needed to apply a patch revision to a dataset example.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
example_id: GlobalID
|
|
16
|
+
input: Optional[JSON] = UNSET
|
|
17
|
+
output: Optional[JSON] = UNSET
|
|
18
|
+
metadata: Optional[JSON] = UNSET
|
|
19
|
+
|
|
20
|
+
def is_empty(self) -> bool:
|
|
21
|
+
"""
|
|
22
|
+
Non-empty patches have at least one field set.
|
|
23
|
+
"""
|
|
24
|
+
return all(field is UNSET for field in (self.input, self.output, self.metadata))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@strawberry.input
|
|
28
|
+
class PatchDatasetExamplesInput:
|
|
29
|
+
"""
|
|
30
|
+
Input type to the patchDatasetExamples mutation.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
patches: list[DatasetExamplePatch]
|
|
34
|
+
version_description: Optional[str] = UNSET
|
|
35
|
+
version_metadata: Optional[JSON] = UNSET
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from strawberry import UNSET
|
|
5
|
+
from strawberry.relay import GlobalID
|
|
6
|
+
from strawberry.scalars import JSON
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@strawberry.input
|
|
10
|
+
class PatchDatasetInput:
|
|
11
|
+
dataset_id: GlobalID
|
|
12
|
+
name: Optional[str] = UNSET
|
|
13
|
+
description: Optional[str] = UNSET
|
|
14
|
+
metadata: Optional[JSON] = UNSET
|
|
@@ -3,7 +3,10 @@ import strawberry
|
|
|
3
3
|
from phoenix.core.model_schema import ACTUAL_LABEL, PREDICTION_LABEL, Column, Model
|
|
4
4
|
from phoenix.metrics import Metric
|
|
5
5
|
from phoenix.metrics.mixins import EvaluationMetric
|
|
6
|
-
from phoenix.server.api.types.PerformanceMetric import
|
|
6
|
+
from phoenix.server.api.types.PerformanceMetric import (
|
|
7
|
+
PERFORMANCE_METRIC_FUNCTIONS,
|
|
8
|
+
PerformanceMetric,
|
|
9
|
+
)
|
|
7
10
|
|
|
8
11
|
|
|
9
12
|
@strawberry.input
|
|
@@ -14,5 +17,5 @@ class PerformanceMetricInput:
|
|
|
14
17
|
return EvaluationMetric(
|
|
15
18
|
actual=Column(model[ACTUAL_LABEL].name),
|
|
16
19
|
predicted=Column(model[PREDICTION_LABEL].name),
|
|
17
|
-
eval=self.metric
|
|
20
|
+
eval=PERFORMANCE_METRIC_FUNCTIONS[self.metric],
|
|
18
21
|
)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from enum import Enum, auto
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
from typing_extensions import assert_never
|
|
5
|
+
|
|
6
|
+
from phoenix.server.api.types.pagination import CursorSortColumnDataType
|
|
7
|
+
from phoenix.server.api.types.SortDir import SortDir
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@strawberry.enum
|
|
11
|
+
class ProjectSessionColumn(Enum):
|
|
12
|
+
startTime = auto()
|
|
13
|
+
endTime = auto()
|
|
14
|
+
tokenCountTotal = auto()
|
|
15
|
+
numTraces = auto()
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def data_type(self) -> CursorSortColumnDataType:
|
|
19
|
+
if self is ProjectSessionColumn.tokenCountTotal or self is ProjectSessionColumn.numTraces:
|
|
20
|
+
return CursorSortColumnDataType.INT
|
|
21
|
+
if self is ProjectSessionColumn.startTime or self is ProjectSessionColumn.endTime:
|
|
22
|
+
return CursorSortColumnDataType.DATETIME
|
|
23
|
+
assert_never(self)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@strawberry.input(description="The sort key and direction for ProjectSession connections.")
|
|
27
|
+
class ProjectSessionSort:
|
|
28
|
+
col: ProjectSessionColumn
|
|
29
|
+
dir: SortDir
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
|
|
5
|
+
from phoenix.server.api.types.SortDir import SortDir
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@strawberry.enum
|
|
9
|
+
class SpanAnnotationColumn(Enum):
|
|
10
|
+
createdAt = "created_at"
|
|
11
|
+
name = "name"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@strawberry.input(description="The sort key and direction for SpanAnnotation connections")
|
|
15
|
+
class SpanAnnotationSort:
|
|
16
|
+
col: SpanAnnotationColumn
|
|
17
|
+
dir: SortDir
|