arize-phoenix 8.7.0__tar.gz → 8.9.0__tar.gz
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-8.7.0 → arize_phoenix-8.9.0}/PKG-INFO +2 -2
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/README.md +1 -1
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/pyproject.toml +0 -128
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/config.py +11 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/playground_clients.py +21 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/models.py +23 -2
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/InvocationParameters.py +1 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +6 -5
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/prompt_mutations.py +6 -5
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +3 -2
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/queries.py +14 -1
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/experiments.py +103 -2
- arize_phoenix-8.9.0/src/phoenix/server/static/.vite/manifest.json +87 -0
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/components-Bj66FcRz.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/components-C4AzQH6p.js +245 -238
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/index-Dwk10lgb.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/index-DYSOLesW.js +1 -1
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/pages-BNZVqOUi.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/pages-DEHszGOs.js +385 -341
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/vendor-yn6w6Ozi.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/vendor-VJCVsFqd.js +161 -161
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/vendor-arizeai-DoGO67dU.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/vendor-arizeai-CLxvyk4B.js +1 -1
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/vendor-codemirror-BLdSYxpm.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/vendor-codemirror-0mUqu36F.js +11 -11
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/vendor-recharts-CjOpOw1c.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/vendor-recharts-CfKQSOmq.js +1 -1
- arize_phoenix-8.7.0/src/phoenix/server/static/assets/vendor-shiki-BwTCxCQY.js → arize_phoenix-8.9.0/src/phoenix/server/static/assets/vendor-shiki-BsgMOuir.js +1 -1
- arize_phoenix-8.9.0/src/phoenix/version.py +1 -0
- arize_phoenix-8.7.0/src/phoenix/server/static/.vite/manifest.json +0 -87
- arize_phoenix-8.7.0/src/phoenix/version.py +0 -1
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/.gitignore +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/IP_NOTICE +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/LICENSE +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/insertion/types.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Model.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/email/sender.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/assets/vendor-Cg6lcjUC.css +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/assets/vendor-three-C-AGeJYv.js +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/utilities/template_formatters.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arize-phoenix
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.9.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
|
|
@@ -164,7 +164,7 @@ Phoenix is an open-source AI observability platform designed for experimentation
|
|
|
164
164
|
- [**_Playground_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts)- Optimize prompts, compare models, adjust parameters, and replay traced LLM calls.
|
|
165
165
|
- [**_Prompt Mangement_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts/prompt-management)- Manage and test prompt changes systematically using version control, tagging, and experimentation.
|
|
166
166
|
|
|
167
|
-
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
167
|
+
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy), 🤗[smolagents](https://docs.arize.com/phoenix/tracing/integrations-tracing/hfsmolagents)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
168
168
|
|
|
169
169
|
Phoenix runs practically anywhere, including your Jupyter notebook, local machine, containerized deployment, or in the cloud.
|
|
170
170
|
|
|
@@ -36,7 +36,7 @@ Phoenix is an open-source AI observability platform designed for experimentation
|
|
|
36
36
|
- [**_Playground_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts)- Optimize prompts, compare models, adjust parameters, and replay traced LLM calls.
|
|
37
37
|
- [**_Prompt Mangement_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts/prompt-management)- Manage and test prompt changes systematically using version control, tagging, and experimentation.
|
|
38
38
|
|
|
39
|
-
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
39
|
+
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy), 🤗[smolagents](https://docs.arize.com/phoenix/tracing/integrations-tracing/hfsmolagents)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
40
40
|
|
|
41
41
|
Phoenix runs practically anywhere, including your Jupyter notebook, local machine, containerized deployment, or in the cloud.
|
|
42
42
|
|
|
@@ -187,94 +187,6 @@ artifacts = [
|
|
|
187
187
|
"src/phoenix/db/migrations",
|
|
188
188
|
]
|
|
189
189
|
|
|
190
|
-
[tool.hatch.envs.default]
|
|
191
|
-
dependencies = [
|
|
192
|
-
"numpy",
|
|
193
|
-
"pandas==2.2.2; python_version>='3.9'",
|
|
194
|
-
"pytest==8.3.3",
|
|
195
|
-
"pytest-asyncio",
|
|
196
|
-
"pytest-cov",
|
|
197
|
-
"pytest-postgresql",
|
|
198
|
-
"asyncpg",
|
|
199
|
-
"psycopg[binary,pool]",
|
|
200
|
-
"arize",
|
|
201
|
-
"litellm>=1.0.3",
|
|
202
|
-
"openai>=1.0.0",
|
|
203
|
-
"tenacity",
|
|
204
|
-
"protobuf==3.20.2", # version minimum (for tests)
|
|
205
|
-
"grpc-interceptor[testing]",
|
|
206
|
-
"responses",
|
|
207
|
-
"tiktoken",
|
|
208
|
-
"typing-extensions==4.7.0",
|
|
209
|
-
"httpx", # For OpenAI testing
|
|
210
|
-
"respx", # For OpenAI testing
|
|
211
|
-
"nest-asyncio", # for executor testing
|
|
212
|
-
"asgi-lifespan",
|
|
213
|
-
"Faker>=30.1.0",
|
|
214
|
-
"uvloop; platform_system != 'Windows'",
|
|
215
|
-
]
|
|
216
|
-
|
|
217
|
-
[tool.hatch.envs.type]
|
|
218
|
-
dependencies = [
|
|
219
|
-
"grpcio",
|
|
220
|
-
"litellm>=1.0.3",
|
|
221
|
-
"mypy==1.12.1",
|
|
222
|
-
"openai>=1.0.0",
|
|
223
|
-
"opentelemetry-exporter-otlp",
|
|
224
|
-
"opentelemetry-instrumentation-fastapi",
|
|
225
|
-
"opentelemetry-instrumentation-grpc",
|
|
226
|
-
"opentelemetry-instrumentation-sqlalchemy",
|
|
227
|
-
"opentelemetry-proto>=1.12.0",
|
|
228
|
-
"opentelemetry-sdk",
|
|
229
|
-
"opentelemetry-semantic-conventions",
|
|
230
|
-
"pandas-stubs==2.0.3.230814",
|
|
231
|
-
"pandas>=1.0",
|
|
232
|
-
"prometheus_client",
|
|
233
|
-
"py-grpc-prometheus",
|
|
234
|
-
"pypistats", # this is needed to type-check third-party packages
|
|
235
|
-
"requests", # this is needed to type-check third-party packages
|
|
236
|
-
"strawberry-graphql[opentelemetry]==0.253.1", # need to pin version because we're monkey-patching
|
|
237
|
-
"tenacity",
|
|
238
|
-
"types-cachetools",
|
|
239
|
-
"types-protobuf",
|
|
240
|
-
"types-psutil",
|
|
241
|
-
"types-requests",
|
|
242
|
-
"types-setuptools",
|
|
243
|
-
"types-tabulate",
|
|
244
|
-
"types-tqdm",
|
|
245
|
-
]
|
|
246
|
-
|
|
247
|
-
[[tool.hatch.envs.type.matrix]]
|
|
248
|
-
python = ["3.9", "3.12"]
|
|
249
|
-
|
|
250
|
-
[tool.hatch.envs.style]
|
|
251
|
-
detached = true
|
|
252
|
-
dependencies = [
|
|
253
|
-
"ruff==0.6.9",
|
|
254
|
-
]
|
|
255
|
-
|
|
256
|
-
[[tool.hatch.envs.style.matrix]]
|
|
257
|
-
python = ["3.9", "3.12"]
|
|
258
|
-
|
|
259
|
-
[tool.hatch.envs.notebooks]
|
|
260
|
-
detached = true
|
|
261
|
-
dependencies = [
|
|
262
|
-
"jupyter",
|
|
263
|
-
]
|
|
264
|
-
|
|
265
|
-
[tool.hatch.envs.docs]
|
|
266
|
-
detached = true
|
|
267
|
-
dependencies = [
|
|
268
|
-
"pyment",
|
|
269
|
-
"interrogate",
|
|
270
|
-
]
|
|
271
|
-
|
|
272
|
-
[tool.hatch.envs.default.scripts]
|
|
273
|
-
tests = "pytest {args} tests/unit"
|
|
274
|
-
|
|
275
|
-
[[tool.hatch.envs.test.matrix]]
|
|
276
|
-
python = ["3.9", "3.12"]
|
|
277
|
-
|
|
278
190
|
[tool.pytest.ini_options]
|
|
279
191
|
asyncio_mode = "auto"
|
|
280
192
|
asyncio_default_fixture_loop_scope="function"
|
|
@@ -306,26 +218,6 @@ exclude_lines = [
|
|
|
306
218
|
"if TYPE_CHECKING:",
|
|
307
219
|
]
|
|
308
220
|
|
|
309
|
-
[tool.hatch.envs.type.scripts]
|
|
310
|
-
check = [
|
|
311
|
-
"mypy .",
|
|
312
|
-
]
|
|
313
|
-
|
|
314
|
-
[tool.hatch.envs.style.scripts]
|
|
315
|
-
check = [
|
|
316
|
-
"ruff format --check --diff .",
|
|
317
|
-
"ruff check .",
|
|
318
|
-
]
|
|
319
|
-
fix = [
|
|
320
|
-
"ruff format .",
|
|
321
|
-
"ruff check --fix .",
|
|
322
|
-
]
|
|
323
|
-
|
|
324
|
-
[tool.hatch.envs.notebooks.scripts]
|
|
325
|
-
clean = [
|
|
326
|
-
"jupyter nbconvert --ClearOutputPreprocessor.enabled=True --ClearMetadataPreprocessor.enabled=True --inplace **/*.ipynb **/internal/*.ipynb **/tracing/*.ipynb **/dolly-pythia-fine-tuned/*.ipynb",
|
|
327
|
-
]
|
|
328
|
-
|
|
329
221
|
[tool.hatch.envs.publish]
|
|
330
222
|
dependencies = [
|
|
331
223
|
"check-wheel-contents",
|
|
@@ -342,26 +234,6 @@ pypi = [
|
|
|
342
234
|
"twine upload --verbose dist/*",
|
|
343
235
|
]
|
|
344
236
|
|
|
345
|
-
[tool.hatch.envs.docs.scripts]
|
|
346
|
-
check = [
|
|
347
|
-
"interrogate -vv src/",
|
|
348
|
-
]
|
|
349
|
-
|
|
350
|
-
[tool.interrogate]
|
|
351
|
-
fail-under = 0
|
|
352
|
-
# generate-badge = "badges/"
|
|
353
|
-
omit-covered-files = true
|
|
354
|
-
ignore-init-method = true
|
|
355
|
-
ignore-init-module = true
|
|
356
|
-
ignore-magic = false
|
|
357
|
-
ignore-semiprivate = false
|
|
358
|
-
ignore-private = false
|
|
359
|
-
ignore-property-decorators = false
|
|
360
|
-
ignore-module = false
|
|
361
|
-
ignore-nested-functions = false
|
|
362
|
-
ignore-nested-classes = false
|
|
363
|
-
ignore-setters = false
|
|
364
|
-
|
|
365
237
|
[tool.mypy]
|
|
366
238
|
plugins = ["strawberry.ext.mypy_plugin", "pydantic.mypy"]
|
|
367
239
|
strict = true
|
|
@@ -86,6 +86,13 @@ ENV_PHOENIX_SQL_DATABASE_SCHEMA = "PHOENIX_SQL_DATABASE_SCHEMA"
|
|
|
86
86
|
The schema to use for the PostgresSQL database. (This is ignored for SQLite.)
|
|
87
87
|
See e.g. https://www.postgresql.org/docs/current/ddl-schemas.html
|
|
88
88
|
"""
|
|
89
|
+
ENV_PHOENIX_DATABASE_ALLOCATED_STORAGE_CAPACITY_GIBIBYTES = (
|
|
90
|
+
"PHOENIX_DATABASE_ALLOCATED_STORAGE_CAPACITY_GIBIBYTES"
|
|
91
|
+
)
|
|
92
|
+
"""
|
|
93
|
+
The allocated storage capacity for the Phoenix database in gibibytes (2^30 bytes). Use float for
|
|
94
|
+
fractional value. This is currently used only by the UI for informational displays.
|
|
95
|
+
"""
|
|
89
96
|
ENV_PHOENIX_ENABLE_PROMETHEUS = "PHOENIX_ENABLE_PROMETHEUS"
|
|
90
97
|
"""
|
|
91
98
|
Whether to enable Prometheus. Defaults to false.
|
|
@@ -690,6 +697,10 @@ def get_env_database_schema() -> Optional[str]:
|
|
|
690
697
|
return getenv(ENV_PHOENIX_SQL_DATABASE_SCHEMA)
|
|
691
698
|
|
|
692
699
|
|
|
700
|
+
def get_env_database_allocated_storage_capacity_gibibytes() -> Optional[float]:
|
|
701
|
+
return _float_val(ENV_PHOENIX_DATABASE_ALLOCATED_STORAGE_CAPACITY_GIBIBYTES)
|
|
702
|
+
|
|
703
|
+
|
|
693
704
|
def get_env_enable_prometheus() -> bool:
|
|
694
705
|
if (enable_promotheus := getenv(ENV_PHOENIX_ENABLE_PROMETHEUS)) is None or (
|
|
695
706
|
enable_promotheus_lower := enable_promotheus.lower()
|
{arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/playground_clients.py
RENAMED
|
@@ -862,6 +862,27 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
|
|
|
862
862
|
return content
|
|
863
863
|
|
|
864
864
|
|
|
865
|
+
@register_llm_client(
|
|
866
|
+
provider_key=GenerativeProviderKey.ANTHROPIC,
|
|
867
|
+
model_names=[
|
|
868
|
+
"claude-3-7-sonnet-latest",
|
|
869
|
+
"claude-3-7-sonnet-20250219",
|
|
870
|
+
],
|
|
871
|
+
)
|
|
872
|
+
class AnthropicReasoningStreamingClient(AnthropicStreamingClient):
|
|
873
|
+
@classmethod
|
|
874
|
+
def supported_invocation_parameters(cls) -> list[InvocationParameter]:
|
|
875
|
+
invocation_params = super().supported_invocation_parameters()
|
|
876
|
+
invocation_params.append(
|
|
877
|
+
JSONInvocationParameter(
|
|
878
|
+
invocation_name="thinking",
|
|
879
|
+
canonical_name=CanonicalParameterName.ANTHROPIC_EXTENDED_THINKING,
|
|
880
|
+
label="Thinking Budget",
|
|
881
|
+
)
|
|
882
|
+
)
|
|
883
|
+
return invocation_params
|
|
884
|
+
|
|
885
|
+
|
|
865
886
|
@register_llm_client(
|
|
866
887
|
provider_key=GenerativeProviderKey.GOOGLE,
|
|
867
888
|
model_names=[
|
{arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/helpers/prompts/models.py
RENAMED
|
@@ -3,8 +3,8 @@ from __future__ import annotations
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import Any, Literal, Mapping, Optional, Union
|
|
5
5
|
|
|
6
|
-
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
|
7
|
-
from typing_extensions import Annotated, TypeAlias, TypeGuard, assert_never
|
|
6
|
+
from pydantic import BaseModel, ConfigDict, Field, RootModel, model_validator
|
|
7
|
+
from typing_extensions import Annotated, Self, TypeAlias, TypeGuard, assert_never
|
|
8
8
|
|
|
9
9
|
from phoenix.db.types.model_provider import ModelProvider
|
|
10
10
|
from phoenix.server.api.helpers.prompts.conversions.anthropic import AnthropicToolChoiceConversion
|
|
@@ -370,11 +370,32 @@ class PromptAzureOpenAIInvocationParameters(PromptModel):
|
|
|
370
370
|
azure_openai: PromptAzureOpenAIInvocationParametersContent
|
|
371
371
|
|
|
372
372
|
|
|
373
|
+
class PromptAnthropicThinkingConfigDisabled(PromptModel):
|
|
374
|
+
type: Literal["disabled"]
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
class PromptAnthropicThinkingConfigEnabled(PromptModel):
|
|
378
|
+
type: Literal["enabled"]
|
|
379
|
+
budget_tokens: int = Field(..., ge=1024)
|
|
380
|
+
|
|
381
|
+
|
|
373
382
|
class PromptAnthropicInvocationParametersContent(PromptModel):
|
|
374
383
|
max_tokens: int
|
|
375
384
|
temperature: float = UNDEFINED
|
|
376
385
|
top_p: float = UNDEFINED
|
|
377
386
|
stop_sequences: list[str] = UNDEFINED
|
|
387
|
+
thinking: Annotated[
|
|
388
|
+
Union[PromptAnthropicThinkingConfigDisabled, PromptAnthropicThinkingConfigEnabled],
|
|
389
|
+
Field(..., discriminator="type"),
|
|
390
|
+
] = UNDEFINED
|
|
391
|
+
|
|
392
|
+
@model_validator(mode="after")
|
|
393
|
+
def check_thinking_budget_tokens_lt_max_tokens(self) -> Self:
|
|
394
|
+
if self.thinking is UNDEFINED:
|
|
395
|
+
return self
|
|
396
|
+
if self.thinking.type == "enabled" and self.thinking.budget_tokens >= self.max_tokens:
|
|
397
|
+
raise ValueError("The thinking budget must be less than max tokens.")
|
|
398
|
+
return self
|
|
378
399
|
|
|
379
400
|
|
|
380
401
|
class PromptAnthropicInvocationParameters(PromptModel):
|
|
@@ -11,6 +11,7 @@ from strawberry.types import Info
|
|
|
11
11
|
|
|
12
12
|
from phoenix.db import models
|
|
13
13
|
from phoenix.db.types.identifier import Identifier as IdentifierModel
|
|
14
|
+
from phoenix.server.api.auth import IsLocked, IsNotReadOnly
|
|
14
15
|
from phoenix.server.api.context import Context
|
|
15
16
|
from phoenix.server.api.exceptions import Conflict, NotFound
|
|
16
17
|
from phoenix.server.api.queries import Query
|
|
@@ -58,7 +59,7 @@ class PromptLabelMutationPayload:
|
|
|
58
59
|
|
|
59
60
|
@strawberry.type
|
|
60
61
|
class PromptLabelMutationMixin:
|
|
61
|
-
@strawberry.mutation
|
|
62
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
62
63
|
async def create_prompt_label(
|
|
63
64
|
self, info: Info[Context, None], input: CreatePromptLabelInput
|
|
64
65
|
) -> PromptLabelMutationPayload:
|
|
@@ -77,7 +78,7 @@ class PromptLabelMutationMixin:
|
|
|
77
78
|
query=Query(),
|
|
78
79
|
)
|
|
79
80
|
|
|
80
|
-
@strawberry.mutation
|
|
81
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
81
82
|
async def patch_prompt_label(
|
|
82
83
|
self, info: Info[Context, None], input: PatchPromptLabelInput
|
|
83
84
|
) -> PromptLabelMutationPayload:
|
|
@@ -106,7 +107,7 @@ class PromptLabelMutationMixin:
|
|
|
106
107
|
query=Query(),
|
|
107
108
|
)
|
|
108
109
|
|
|
109
|
-
@strawberry.mutation
|
|
110
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
110
111
|
async def delete_prompt_label(
|
|
111
112
|
self, info: Info[Context, None], input: DeletePromptLabelInput
|
|
112
113
|
) -> PromptLabelMutationPayload:
|
|
@@ -130,7 +131,7 @@ class PromptLabelMutationMixin:
|
|
|
130
131
|
query=Query(),
|
|
131
132
|
)
|
|
132
133
|
|
|
133
|
-
@strawberry.mutation
|
|
134
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
134
135
|
async def set_prompt_label(
|
|
135
136
|
self, info: Info[Context, None], input: SetPromptLabelInput
|
|
136
137
|
) -> PromptLabelMutationPayload:
|
|
@@ -160,7 +161,7 @@ class PromptLabelMutationMixin:
|
|
|
160
161
|
query=Query(),
|
|
161
162
|
)
|
|
162
163
|
|
|
163
|
-
@strawberry.mutation
|
|
164
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
164
165
|
async def unset_prompt_label(
|
|
165
166
|
self, info: Info[Context, None], input: UnsetPromptLabelInput
|
|
166
167
|
) -> PromptLabelMutationPayload:
|
{arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/mutations/prompt_mutations.py
RENAMED
|
@@ -13,6 +13,7 @@ from strawberry.types import Info
|
|
|
13
13
|
from phoenix.db import models
|
|
14
14
|
from phoenix.db.types.identifier import Identifier as IdentifierModel
|
|
15
15
|
from phoenix.db.types.model_provider import ModelProvider
|
|
16
|
+
from phoenix.server.api.auth import IsLocked, IsNotReadOnly
|
|
16
17
|
from phoenix.server.api.context import Context
|
|
17
18
|
from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
|
|
18
19
|
from phoenix.server.api.helpers.prompts.models import (
|
|
@@ -74,7 +75,7 @@ class DeletePromptMutationPayload:
|
|
|
74
75
|
|
|
75
76
|
@strawberry.type
|
|
76
77
|
class PromptMutationMixin:
|
|
77
|
-
@strawberry.mutation
|
|
78
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
78
79
|
async def create_chat_prompt(
|
|
79
80
|
self, info: Info[Context, None], input: CreateChatPromptInput
|
|
80
81
|
) -> Prompt:
|
|
@@ -141,7 +142,7 @@ class PromptMutationMixin:
|
|
|
141
142
|
raise Conflict(f"A prompt named '{input.name}' already exists")
|
|
142
143
|
return to_gql_prompt_from_orm(prompt)
|
|
143
144
|
|
|
144
|
-
@strawberry.mutation
|
|
145
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
145
146
|
async def create_chat_prompt_version(
|
|
146
147
|
self,
|
|
147
148
|
info: Info[Context, None],
|
|
@@ -219,7 +220,7 @@ class PromptMutationMixin:
|
|
|
219
220
|
|
|
220
221
|
return to_gql_prompt_from_orm(prompt)
|
|
221
222
|
|
|
222
|
-
@strawberry.mutation
|
|
223
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
223
224
|
async def delete_prompt(
|
|
224
225
|
self, info: Info[Context, None], input: DeletePromptInput
|
|
225
226
|
) -> DeletePromptMutationPayload:
|
|
@@ -236,7 +237,7 @@ class PromptMutationMixin:
|
|
|
236
237
|
await session.commit()
|
|
237
238
|
return DeletePromptMutationPayload(query=Query())
|
|
238
239
|
|
|
239
|
-
@strawberry.mutation
|
|
240
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
240
241
|
async def clone_prompt(self, info: Info[Context, None], input: ClonePromptInput) -> Prompt:
|
|
241
242
|
prompt_id = from_global_id_with_expected_type(
|
|
242
243
|
global_id=input.prompt_id, expected_type_name=Prompt.__name__
|
|
@@ -289,7 +290,7 @@ class PromptMutationMixin:
|
|
|
289
290
|
raise Conflict(f"A prompt named '{input.name}' already exists")
|
|
290
291
|
return to_gql_prompt_from_orm(new_prompt)
|
|
291
292
|
|
|
292
|
-
@strawberry.mutation
|
|
293
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
293
294
|
async def patch_prompt(self, info: Info[Context, None], input: PatchPromptInput) -> Prompt:
|
|
294
295
|
prompt_id = from_global_id_with_expected_type(
|
|
295
296
|
global_id=input.prompt_id, expected_type_name=Prompt.__name__
|
|
@@ -10,6 +10,7 @@ from strawberry.types import Info
|
|
|
10
10
|
|
|
11
11
|
from phoenix.db import models
|
|
12
12
|
from phoenix.db.types.identifier import Identifier as IdentifierModel
|
|
13
|
+
from phoenix.server.api.auth import IsLocked, IsNotReadOnly
|
|
13
14
|
from phoenix.server.api.context import Context
|
|
14
15
|
from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
|
|
15
16
|
from phoenix.server.api.queries import Query
|
|
@@ -41,7 +42,7 @@ class PromptVersionTagMutationPayload:
|
|
|
41
42
|
|
|
42
43
|
@strawberry.type
|
|
43
44
|
class PromptVersionTagMutationMixin:
|
|
44
|
-
@strawberry.mutation
|
|
45
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
45
46
|
async def delete_prompt_version_tag(
|
|
46
47
|
self, info: Info[Context, None], input: DeletePromptVersionTagInput
|
|
47
48
|
) -> PromptVersionTagMutationPayload:
|
|
@@ -77,7 +78,7 @@ class PromptVersionTagMutationMixin:
|
|
|
77
78
|
prompt_version_tag=None, query=Query(), prompt=to_gql_prompt_from_orm(prompt)
|
|
78
79
|
)
|
|
79
80
|
|
|
80
|
-
@strawberry.mutation
|
|
81
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
81
82
|
async def set_prompt_version_tag(
|
|
82
83
|
self, info: Info[Context, None], input: SetPromptVersionTagInput
|
|
83
84
|
) -> PromptVersionTagMutationPayload:
|
|
@@ -13,7 +13,11 @@ from strawberry.relay import Connection, GlobalID, Node
|
|
|
13
13
|
from strawberry.types import Info
|
|
14
14
|
from typing_extensions import Annotated, TypeAlias, assert_never
|
|
15
15
|
|
|
16
|
-
from phoenix.config import
|
|
16
|
+
from phoenix.config import (
|
|
17
|
+
ENV_PHOENIX_SQL_DATABASE_SCHEMA,
|
|
18
|
+
get_env_database_allocated_storage_capacity_gibibytes,
|
|
19
|
+
getenv,
|
|
20
|
+
)
|
|
17
21
|
from phoenix.db import enums, models
|
|
18
22
|
from phoenix.db.helpers import SupportedSQLDialect
|
|
19
23
|
from phoenix.db.models import DatasetExample as OrmExample
|
|
@@ -789,6 +793,15 @@ class Query:
|
|
|
789
793
|
clustered_events=clustered_events,
|
|
790
794
|
)
|
|
791
795
|
|
|
796
|
+
@strawberry.field(
|
|
797
|
+
description="The allocated storage capacity of the database in bytes. "
|
|
798
|
+
"Return None if this information is unavailable.",
|
|
799
|
+
) # type: ignore
|
|
800
|
+
async def db_storage_capacity_bytes(self) -> Optional[float]:
|
|
801
|
+
if gibibytes := get_env_database_allocated_storage_capacity_gibibytes():
|
|
802
|
+
return gibibytes * 2**30
|
|
803
|
+
return None
|
|
804
|
+
|
|
792
805
|
@strawberry.field
|
|
793
806
|
async def db_table_stats(
|
|
794
807
|
self,
|
{arize_phoenix-8.7.0 → arize_phoenix-8.9.0}/src/phoenix/server/api/routers/v1/experiments.py
RENAMED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import json
|
|
1
2
|
from datetime import datetime
|
|
2
3
|
from random import getrandbits
|
|
3
4
|
from typing import Any, Optional
|
|
4
5
|
|
|
5
|
-
from fastapi import APIRouter, HTTPException, Path
|
|
6
|
+
from fastapi import APIRouter, HTTPException, Path, Response
|
|
6
7
|
from pydantic import Field
|
|
7
|
-
from sqlalchemy import select
|
|
8
|
+
from sqlalchemy import and_, func, select
|
|
8
9
|
from starlette.requests import Request
|
|
10
|
+
from starlette.responses import PlainTextResponse
|
|
9
11
|
from starlette.status import HTTP_404_NOT_FOUND
|
|
10
12
|
from strawberry.relay import GlobalID
|
|
11
13
|
|
|
@@ -306,3 +308,102 @@ async def list_experiments(
|
|
|
306
308
|
]
|
|
307
309
|
|
|
308
310
|
return ListExperimentsResponseBody(data=data)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
@router.get(
|
|
314
|
+
"/experiments/{experiment_id}/json",
|
|
315
|
+
operation_id="getExperimentJSON",
|
|
316
|
+
summary="Download experiment runs as a JSON file",
|
|
317
|
+
response_class=PlainTextResponse,
|
|
318
|
+
responses=add_errors_to_responses(
|
|
319
|
+
[
|
|
320
|
+
{"status_code": HTTP_404_NOT_FOUND, "description": "Experiment not found"},
|
|
321
|
+
]
|
|
322
|
+
),
|
|
323
|
+
)
|
|
324
|
+
async def get_experiment_jsonl(
|
|
325
|
+
request: Request,
|
|
326
|
+
response: Response,
|
|
327
|
+
experiment_id: str = Path(..., title="Experiment ID"),
|
|
328
|
+
) -> str:
|
|
329
|
+
experiment_globalid = GlobalID.from_id(experiment_id)
|
|
330
|
+
try:
|
|
331
|
+
experiment_rowid = from_global_id_with_expected_type(experiment_globalid, "Experiment")
|
|
332
|
+
except ValueError:
|
|
333
|
+
raise HTTPException(
|
|
334
|
+
detail=f"Experiment with ID {experiment_globalid} does not exist",
|
|
335
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
async with request.app.state.db() as session:
|
|
339
|
+
experiment = await session.get(models.Experiment, experiment_rowid)
|
|
340
|
+
if not experiment:
|
|
341
|
+
raise HTTPException(
|
|
342
|
+
detail=f"Experiment with ID {experiment_globalid} does not exist",
|
|
343
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
344
|
+
)
|
|
345
|
+
revision_ids = (
|
|
346
|
+
select(func.max(models.DatasetExampleRevision.id))
|
|
347
|
+
.join(
|
|
348
|
+
models.DatasetExample,
|
|
349
|
+
models.DatasetExample.id == models.DatasetExampleRevision.dataset_example_id,
|
|
350
|
+
)
|
|
351
|
+
.where(
|
|
352
|
+
and_(
|
|
353
|
+
models.DatasetExampleRevision.dataset_version_id
|
|
354
|
+
<= experiment.dataset_version_id,
|
|
355
|
+
models.DatasetExample.dataset_id == experiment.dataset_id,
|
|
356
|
+
)
|
|
357
|
+
)
|
|
358
|
+
.group_by(models.DatasetExampleRevision.dataset_example_id)
|
|
359
|
+
.scalar_subquery()
|
|
360
|
+
)
|
|
361
|
+
runs_and_revisions = (
|
|
362
|
+
await session.execute(
|
|
363
|
+
select(models.ExperimentRun, models.DatasetExampleRevision)
|
|
364
|
+
.join(
|
|
365
|
+
models.DatasetExample,
|
|
366
|
+
models.DatasetExample.id == models.ExperimentRun.dataset_example_id,
|
|
367
|
+
)
|
|
368
|
+
.join(
|
|
369
|
+
models.DatasetExampleRevision,
|
|
370
|
+
and_(
|
|
371
|
+
models.DatasetExample.id
|
|
372
|
+
== models.DatasetExampleRevision.dataset_example_id,
|
|
373
|
+
models.DatasetExampleRevision.id.in_(revision_ids),
|
|
374
|
+
models.DatasetExampleRevision.revision_kind != "DELETE",
|
|
375
|
+
),
|
|
376
|
+
)
|
|
377
|
+
.where(models.ExperimentRun.experiment_id == experiment_rowid)
|
|
378
|
+
.order_by(
|
|
379
|
+
models.ExperimentRun.dataset_example_id, models.ExperimentRun.repetition_number
|
|
380
|
+
)
|
|
381
|
+
)
|
|
382
|
+
).all()
|
|
383
|
+
if not runs_and_revisions:
|
|
384
|
+
raise HTTPException(
|
|
385
|
+
detail=f"Experiment with ID {experiment_globalid} has no runs",
|
|
386
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
387
|
+
)
|
|
388
|
+
records = []
|
|
389
|
+
for run, revision in runs_and_revisions:
|
|
390
|
+
record = {
|
|
391
|
+
"example_id": str(
|
|
392
|
+
GlobalID(models.DatasetExample.__name__, str(run.dataset_example_id))
|
|
393
|
+
),
|
|
394
|
+
"repetition_number": run.repetition_number,
|
|
395
|
+
"input": revision.input,
|
|
396
|
+
"reference_output": revision.output,
|
|
397
|
+
"output": run.output,
|
|
398
|
+
"error": run.error,
|
|
399
|
+
"latency_ms": run.latency_ms,
|
|
400
|
+
"start_time": run.start_time.isoformat(),
|
|
401
|
+
"end_time": run.end_time.isoformat(),
|
|
402
|
+
"trace_id": run.trace_id,
|
|
403
|
+
"prompt_token_count": run.prompt_token_count,
|
|
404
|
+
"completion_token_count": run.completion_token_count,
|
|
405
|
+
}
|
|
406
|
+
records.append(record)
|
|
407
|
+
|
|
408
|
+
response.headers["content-disposition"] = f'attachment; filename="{experiment.name}.json"'
|
|
409
|
+
return json.dumps(records, ensure_ascii=False, indent=2)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_components-C4AzQH6p.js": {
|
|
3
|
+
"file": "assets/components-C4AzQH6p.js",
|
|
4
|
+
"name": "components",
|
|
5
|
+
"imports": [
|
|
6
|
+
"_vendor-VJCVsFqd.js",
|
|
7
|
+
"_pages-DEHszGOs.js",
|
|
8
|
+
"_vendor-arizeai-CLxvyk4B.js",
|
|
9
|
+
"_vendor-codemirror-0mUqu36F.js",
|
|
10
|
+
"_vendor-three-C-AGeJYv.js"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"_pages-DEHszGOs.js": {
|
|
14
|
+
"file": "assets/pages-DEHszGOs.js",
|
|
15
|
+
"name": "pages",
|
|
16
|
+
"imports": [
|
|
17
|
+
"_vendor-VJCVsFqd.js",
|
|
18
|
+
"_vendor-arizeai-CLxvyk4B.js",
|
|
19
|
+
"_components-C4AzQH6p.js",
|
|
20
|
+
"_vendor-codemirror-0mUqu36F.js",
|
|
21
|
+
"_vendor-recharts-CfKQSOmq.js"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"_vendor-Cg6lcjUC.css": {
|
|
25
|
+
"file": "assets/vendor-Cg6lcjUC.css",
|
|
26
|
+
"src": "_vendor-Cg6lcjUC.css"
|
|
27
|
+
},
|
|
28
|
+
"_vendor-VJCVsFqd.js": {
|
|
29
|
+
"file": "assets/vendor-VJCVsFqd.js",
|
|
30
|
+
"name": "vendor",
|
|
31
|
+
"imports": [
|
|
32
|
+
"_vendor-three-C-AGeJYv.js"
|
|
33
|
+
],
|
|
34
|
+
"css": [
|
|
35
|
+
"assets/vendor-Cg6lcjUC.css"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"_vendor-arizeai-CLxvyk4B.js": {
|
|
39
|
+
"file": "assets/vendor-arizeai-CLxvyk4B.js",
|
|
40
|
+
"name": "vendor-arizeai",
|
|
41
|
+
"imports": [
|
|
42
|
+
"_vendor-VJCVsFqd.js"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"_vendor-codemirror-0mUqu36F.js": {
|
|
46
|
+
"file": "assets/vendor-codemirror-0mUqu36F.js",
|
|
47
|
+
"name": "vendor-codemirror",
|
|
48
|
+
"imports": [
|
|
49
|
+
"_vendor-VJCVsFqd.js",
|
|
50
|
+
"_vendor-shiki-BsgMOuir.js"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"_vendor-recharts-CfKQSOmq.js": {
|
|
54
|
+
"file": "assets/vendor-recharts-CfKQSOmq.js",
|
|
55
|
+
"name": "vendor-recharts",
|
|
56
|
+
"imports": [
|
|
57
|
+
"_vendor-VJCVsFqd.js"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"_vendor-shiki-BsgMOuir.js": {
|
|
61
|
+
"file": "assets/vendor-shiki-BsgMOuir.js",
|
|
62
|
+
"name": "vendor-shiki",
|
|
63
|
+
"imports": [
|
|
64
|
+
"_vendor-VJCVsFqd.js"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"_vendor-three-C-AGeJYv.js": {
|
|
68
|
+
"file": "assets/vendor-three-C-AGeJYv.js",
|
|
69
|
+
"name": "vendor-three"
|
|
70
|
+
},
|
|
71
|
+
"index.tsx": {
|
|
72
|
+
"file": "assets/index-DYSOLesW.js",
|
|
73
|
+
"name": "index",
|
|
74
|
+
"src": "index.tsx",
|
|
75
|
+
"isEntry": true,
|
|
76
|
+
"imports": [
|
|
77
|
+
"_vendor-VJCVsFqd.js",
|
|
78
|
+
"_vendor-arizeai-CLxvyk4B.js",
|
|
79
|
+
"_pages-DEHszGOs.js",
|
|
80
|
+
"_components-C4AzQH6p.js",
|
|
81
|
+
"_vendor-three-C-AGeJYv.js",
|
|
82
|
+
"_vendor-codemirror-0mUqu36F.js",
|
|
83
|
+
"_vendor-shiki-BsgMOuir.js",
|
|
84
|
+
"_vendor-recharts-CfKQSOmq.js"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|