arize-phoenix 12.6.0__tar.gz → 12.7.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-12.6.0 → arize_phoenix-12.7.0}/PKG-INFO +17 -11
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/README.md +16 -10
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/pyproject.toml +1 -1
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/context.py +2 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
- arize_phoenix-12.7.0/src/phoenix/server/api/dataloaders/experiment_dataset_splits.py +43 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +1 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DatasetFilter.py +5 -2
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/chat_mutations.py +17 -3
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/queries.py +53 -28
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/datasets.py +150 -1
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/experiments.py +19 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/subscriptions.py +22 -19
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Dataset.py +1 -1
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Experiment.py +14 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/app.py +2 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +142 -0
- arize_phoenix-12.7.0/src/phoenix/server/static/.vite/manifest.json +93 -0
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/components-CboqzKQ9.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/components-X_GtZhnz.js +777 -696
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/index-CYYGI5-x.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/index-BCtFqQdo.js +2 -2
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/pages-DdlUeKi2.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/pages-Dl8TWyNq.js +588 -595
- arize_phoenix-12.7.0/src/phoenix/server/static/assets/vendor-3BvTzoBp.js +920 -0
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/vendor-arizeai-Cb1ncvYH.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/vendor-arizeai-C6_oC0y8.js +1 -1
- arize_phoenix-12.7.0/src/phoenix/server/static/assets/vendor-codemirror-DPnZGAZA.js +25 -0
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/vendor-recharts-BC1ysIKu.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/vendor-recharts-CjgSbsB0.js +7 -7
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/vendor-shiki-B45T-YxN.js → arize_phoenix-12.7.0/src/phoenix/server/static/assets/vendor-shiki-CJyhDG0E.js +1 -1
- arize_phoenix-12.7.0/src/phoenix/version.py +1 -0
- arize_phoenix-12.6.0/src/phoenix/server/static/.vite/manifest.json +0 -93
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/vendor-CQ4tN9P7.js +0 -918
- arize_phoenix-12.6.0/src/phoenix/server/static/assets/vendor-codemirror-CckmKopH.js +0 -25
- arize_phoenix-12.6.0/src/phoenix/version.py +0 -1
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/.gitignore +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/IP_NOTICE +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/LICENSE +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/config.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/session_annotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/insertion/types.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/01a8342c9cdf_add_user_id_on_datasets.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/0df286449799_add_session_annotations_table.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/272b66ff50f8_drop_single_indices.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/58228d933c91_dataset_labels.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/699f655af132_experiment_tags.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/735d3d93c33e_add_composite_indices.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/ab513d89518b_add_user_id_on_dataset_versions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/d0690a79ea51_users_on_experiments.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/deb2c81c0bb2_dataset_splits.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/migrations/versions/e76cbd66ffc3_add_experiments_dataset_examples.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/token_price_customization.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/auth_messages.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_dataset_splits.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_example_splits.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/dataset_labels.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_annotations_by_session.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/trace_annotations_by_trace.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/playground_users.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/AnnotationFilter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/CreateProjectSessionAnnotationInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ExperimentRunSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/UpdateAnnotationInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/dataset_label_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/dataset_split_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/project_session_annotations_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/documents.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/sessions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetLabel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetSplit.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DocumentAnnotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ProjectSessionAnnotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/authorization.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/daemons/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/sender.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/experiments/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/experiments/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/session_filters.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/assets/vendor-three-BtCyLs1w.js +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-12.6.0 → arize_phoenix-12.7.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: 12.
|
|
3
|
+
Version: 12.7.0
|
|
4
4
|
Summary: AI Observability and Evaluation
|
|
5
5
|
Project-URL: Documentation, https://arize.com/docs/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -58,7 +58,7 @@ Requires-Dist: strawberry-graphql==0.270.1
|
|
|
58
58
|
Requires-Dist: tqdm
|
|
59
59
|
Requires-Dist: typing-extensions>=4.6
|
|
60
60
|
Requires-Dist: uvicorn
|
|
61
|
-
Requires-Dist: wrapt
|
|
61
|
+
Requires-Dist: wrapt<2,>=1.17.2
|
|
62
62
|
Provides-Extra: container
|
|
63
63
|
Requires-Dist: aiohttp; extra == 'container'
|
|
64
64
|
Requires-Dist: anthropic>=0.49.0; extra == 'container'
|
|
@@ -194,16 +194,22 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
|
|
|
194
194
|
|
|
195
195
|
The `arize-phoenix` package includes the entire Phoenix platfom. However if you have deployed the Phoenix platform, there are light-weight Python sub-packages and TypeScript packages that can be used in conjunction with the platfrom.
|
|
196
196
|
|
|
197
|
-
### Subpackages
|
|
197
|
+
### Python Subpackages
|
|
198
198
|
|
|
199
|
-
| Package
|
|
200
|
-
|
|
|
201
|
-
| [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel)
|
|
202
|
-
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client)
|
|
203
|
-
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals)
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
199
|
+
| Package | Version & Docs | Description |
|
|
200
|
+
| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
201
|
+
| [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [](https://pypi.org/project/arize-phoenix-otel/) [](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
|
|
202
|
+
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [](https://pypi.org/project/arize-phoenix-client/) [](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
|
|
203
|
+
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [](https://pypi.org/project/arize-phoenix-evals/) [](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
|
|
204
|
+
|
|
205
|
+
### TypeScript Subpackages
|
|
206
|
+
|
|
207
|
+
| Package | Version & Docs | Description |
|
|
208
|
+
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
209
|
+
| [@arizeai/phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-otel) | [](https://www.npmjs.com/package/@arizeai/phoenix-otel) [](https://arize-ai.github.io/phoenix/) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
|
|
210
|
+
| [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [](https://www.npmjs.com/package/@arizeai/phoenix-client) [](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
|
|
211
|
+
| [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [](https://www.npmjs.com/package/@arizeai/phoenix-evals) [](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
|
|
212
|
+
| [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
|
|
207
213
|
|
|
208
214
|
## Tracing Integrations
|
|
209
215
|
|
|
@@ -64,16 +64,22 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
|
|
|
64
64
|
|
|
65
65
|
The `arize-phoenix` package includes the entire Phoenix platfom. However if you have deployed the Phoenix platform, there are light-weight Python sub-packages and TypeScript packages that can be used in conjunction with the platfrom.
|
|
66
66
|
|
|
67
|
-
### Subpackages
|
|
68
|
-
|
|
69
|
-
| Package
|
|
70
|
-
|
|
|
71
|
-
| [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel)
|
|
72
|
-
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client)
|
|
73
|
-
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
67
|
+
### Python Subpackages
|
|
68
|
+
|
|
69
|
+
| Package | Version & Docs | Description |
|
|
70
|
+
| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
71
|
+
| [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [](https://pypi.org/project/arize-phoenix-otel/) [](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
|
|
72
|
+
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [](https://pypi.org/project/arize-phoenix-client/) [](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
|
|
73
|
+
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [](https://pypi.org/project/arize-phoenix-evals/) [](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
|
|
74
|
+
|
|
75
|
+
### TypeScript Subpackages
|
|
76
|
+
|
|
77
|
+
| Package | Version & Docs | Description |
|
|
78
|
+
| --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
79
|
+
| [@arizeai/phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-otel) | [](https://www.npmjs.com/package/@arizeai/phoenix-otel) [](https://arize-ai.github.io/phoenix/) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
|
|
80
|
+
| [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [](https://www.npmjs.com/package/@arizeai/phoenix-client) [](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
|
|
81
|
+
| [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [](https://www.npmjs.com/package/@arizeai/phoenix-evals) [](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
|
|
82
|
+
| [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
|
|
77
83
|
|
|
78
84
|
## Tracing Integrations
|
|
79
85
|
|
|
@@ -29,6 +29,7 @@ from phoenix.server.api.dataloaders import (
|
|
|
29
29
|
DocumentEvaluationSummaryDataLoader,
|
|
30
30
|
DocumentRetrievalMetricsDataLoader,
|
|
31
31
|
ExperimentAnnotationSummaryDataLoader,
|
|
32
|
+
ExperimentDatasetSplitsDataLoader,
|
|
32
33
|
ExperimentErrorRatesDataLoader,
|
|
33
34
|
ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
|
|
34
35
|
ExperimentRepeatedRunGroupsDataLoader,
|
|
@@ -111,6 +112,7 @@ class DataLoaders:
|
|
|
111
112
|
document_evaluations: DocumentEvaluationsDataLoader
|
|
112
113
|
document_retrieval_metrics: DocumentRetrievalMetricsDataLoader
|
|
113
114
|
experiment_annotation_summaries: ExperimentAnnotationSummaryDataLoader
|
|
115
|
+
experiment_dataset_splits: ExperimentDatasetSplitsDataLoader
|
|
114
116
|
experiment_error_rates: ExperimentErrorRatesDataLoader
|
|
115
117
|
experiment_repeated_run_group_annotation_summaries: (
|
|
116
118
|
ExperimentRepeatedRunGroupAnnotationSummariesDataLoader
|
{arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/dataloaders/__init__.py
RENAMED
|
@@ -25,6 +25,7 @@ from .document_evaluation_summaries import (
|
|
|
25
25
|
from .document_evaluations import DocumentEvaluationsDataLoader
|
|
26
26
|
from .document_retrieval_metrics import DocumentRetrievalMetricsDataLoader
|
|
27
27
|
from .experiment_annotation_summaries import ExperimentAnnotationSummaryDataLoader
|
|
28
|
+
from .experiment_dataset_splits import ExperimentDatasetSplitsDataLoader
|
|
28
29
|
from .experiment_error_rates import ExperimentErrorRatesDataLoader
|
|
29
30
|
from .experiment_repeated_run_group_annotation_summaries import (
|
|
30
31
|
ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
|
|
@@ -91,6 +92,7 @@ __all__ = [
|
|
|
91
92
|
"DatasetExamplesAndVersionsByExperimentRunDataLoader",
|
|
92
93
|
"DatasetExampleSplitsDataLoader",
|
|
93
94
|
"DatasetLabelsDataLoader",
|
|
95
|
+
"ExperimentDatasetSplitsDataLoader",
|
|
94
96
|
"DocumentEvaluationSummaryDataLoader",
|
|
95
97
|
"DocumentEvaluationsDataLoader",
|
|
96
98
|
"DocumentRetrievalMetricsDataLoader",
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from sqlalchemy import select
|
|
2
|
+
from strawberry.dataloader import DataLoader
|
|
3
|
+
from typing_extensions import TypeAlias
|
|
4
|
+
|
|
5
|
+
from phoenix.db import models
|
|
6
|
+
from phoenix.server.types import DbSessionFactory
|
|
7
|
+
|
|
8
|
+
ExperimentID: TypeAlias = int
|
|
9
|
+
Key: TypeAlias = ExperimentID
|
|
10
|
+
Result: TypeAlias = list[models.DatasetSplit]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ExperimentDatasetSplitsDataLoader(DataLoader[Key, Result]):
|
|
14
|
+
def __init__(self, db: DbSessionFactory) -> None:
|
|
15
|
+
super().__init__(
|
|
16
|
+
load_fn=self._load_fn,
|
|
17
|
+
)
|
|
18
|
+
self._db = db
|
|
19
|
+
|
|
20
|
+
async def _load_fn(self, keys: list[Key]) -> list[Result]:
|
|
21
|
+
experiment_ids = keys
|
|
22
|
+
async with self._db() as session:
|
|
23
|
+
splits: dict[ExperimentID, list[models.DatasetSplit]] = {}
|
|
24
|
+
|
|
25
|
+
async for experiment_id, split in await session.stream(
|
|
26
|
+
select(models.ExperimentDatasetSplit.experiment_id, models.DatasetSplit)
|
|
27
|
+
.select_from(models.DatasetSplit)
|
|
28
|
+
.join(
|
|
29
|
+
models.ExperimentDatasetSplit,
|
|
30
|
+
onclause=(
|
|
31
|
+
models.DatasetSplit.id == models.ExperimentDatasetSplit.dataset_split_id
|
|
32
|
+
),
|
|
33
|
+
)
|
|
34
|
+
.where(models.ExperimentDatasetSplit.experiment_id.in_(experiment_ids))
|
|
35
|
+
):
|
|
36
|
+
if experiment_id not in splits:
|
|
37
|
+
splits[experiment_id] = []
|
|
38
|
+
splits[experiment_id].append(split)
|
|
39
|
+
|
|
40
|
+
return [
|
|
41
|
+
sorted(splits.get(experiment_id, []), key=lambda x: x.name)
|
|
42
|
+
for experiment_id in keys
|
|
43
|
+
]
|
|
@@ -40,6 +40,7 @@ class ChatCompletionOverDatasetInput:
|
|
|
40
40
|
repetitions: int
|
|
41
41
|
dataset_id: GlobalID
|
|
42
42
|
dataset_version_id: Optional[GlobalID] = None
|
|
43
|
+
split_ids: Optional[list[GlobalID]] = None
|
|
43
44
|
experiment_name: Optional[str] = None
|
|
44
45
|
experiment_description: Optional[str] = None
|
|
45
46
|
experiment_metadata: Optional[JSON] = strawberry.field(default_factory=dict)
|
{arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/input_types/DatasetFilter.py
RENAMED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
+
from typing import Optional
|
|
2
3
|
|
|
3
4
|
import strawberry
|
|
5
|
+
from strawberry import UNSET
|
|
4
6
|
|
|
5
7
|
|
|
6
8
|
@strawberry.enum
|
|
@@ -10,5 +12,6 @@ class DatasetFilterColumn(Enum):
|
|
|
10
12
|
|
|
11
13
|
@strawberry.input(description="A filter for datasets")
|
|
12
14
|
class DatasetFilter:
|
|
13
|
-
col: DatasetFilterColumn
|
|
14
|
-
value: str
|
|
15
|
+
col: Optional[DatasetFilterColumn] = None
|
|
16
|
+
value: Optional[str] = None
|
|
17
|
+
filter_labels: Optional[list[str]] = UNSET
|
{arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/mutations/chat_mutations.py
RENAMED
|
@@ -186,12 +186,21 @@ class ChatCompletionMutationMixin:
|
|
|
186
186
|
raise NotFound("No versions found for the given dataset")
|
|
187
187
|
else:
|
|
188
188
|
resolved_version_id = dataset_version_id
|
|
189
|
+
# Parse split IDs if provided
|
|
190
|
+
resolved_split_ids: Optional[list[int]] = None
|
|
191
|
+
if input.split_ids is not None and len(input.split_ids) > 0:
|
|
192
|
+
resolved_split_ids = [
|
|
193
|
+
from_global_id_with_expected_type(split_id, models.DatasetSplit.__name__)
|
|
194
|
+
for split_id in input.split_ids
|
|
195
|
+
]
|
|
196
|
+
|
|
189
197
|
revisions = [
|
|
190
198
|
revision
|
|
191
199
|
async for revision in await session.stream_scalars(
|
|
192
|
-
get_dataset_example_revisions(
|
|
193
|
-
|
|
194
|
-
|
|
200
|
+
get_dataset_example_revisions(
|
|
201
|
+
resolved_version_id,
|
|
202
|
+
split_ids=resolved_split_ids,
|
|
203
|
+
).order_by(models.DatasetExampleRevision.id)
|
|
195
204
|
)
|
|
196
205
|
]
|
|
197
206
|
if not revisions:
|
|
@@ -208,6 +217,11 @@ class ChatCompletionMutationMixin:
|
|
|
208
217
|
project_name=project_name,
|
|
209
218
|
user_id=user_id,
|
|
210
219
|
)
|
|
220
|
+
if resolved_split_ids:
|
|
221
|
+
experiment.experiment_dataset_splits = [
|
|
222
|
+
models.ExperimentDatasetSplit(dataset_split_id=split_id)
|
|
223
|
+
for split_id in resolved_split_ids
|
|
224
|
+
]
|
|
211
225
|
await insert_experiment_with_examples_snapshot(session, experiment)
|
|
212
226
|
|
|
213
227
|
results: list[Union[ChatCompletionMutationPayload, BaseException]] = []
|
|
@@ -22,7 +22,10 @@ from phoenix.config import (
|
|
|
22
22
|
)
|
|
23
23
|
from phoenix.db import models
|
|
24
24
|
from phoenix.db.constants import DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
25
|
-
from phoenix.db.helpers import
|
|
25
|
+
from phoenix.db.helpers import (
|
|
26
|
+
SupportedSQLDialect,
|
|
27
|
+
exclude_experiment_projects,
|
|
28
|
+
)
|
|
26
29
|
from phoenix.db.models import LatencyMs
|
|
27
30
|
from phoenix.pointcloud.clustering import Hdbscan
|
|
28
31
|
from phoenix.server.api.auth import MSG_ADMIN_ONLY, IsAdmin
|
|
@@ -385,7 +388,35 @@ class Query:
|
|
|
385
388
|
sort_col = getattr(models.Dataset, sort.col.value)
|
|
386
389
|
stmt = stmt.order_by(sort_col.desc() if sort.dir is SortDir.desc else sort_col.asc())
|
|
387
390
|
if filter:
|
|
388
|
-
|
|
391
|
+
# Apply name filter
|
|
392
|
+
if filter.col and filter.value:
|
|
393
|
+
stmt = stmt.where(
|
|
394
|
+
getattr(models.Dataset, filter.col.value).ilike(f"%{filter.value}%")
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
# Apply label filter
|
|
398
|
+
if filter.filter_labels and filter.filter_labels is not UNSET:
|
|
399
|
+
label_rowids = []
|
|
400
|
+
for label_id in filter.filter_labels:
|
|
401
|
+
try:
|
|
402
|
+
label_rowid = from_global_id_with_expected_type(
|
|
403
|
+
global_id=GlobalID.from_id(label_id),
|
|
404
|
+
expected_type_name="DatasetLabel",
|
|
405
|
+
)
|
|
406
|
+
label_rowids.append(label_rowid)
|
|
407
|
+
except ValueError:
|
|
408
|
+
continue # Skip invalid label IDs
|
|
409
|
+
|
|
410
|
+
if label_rowids:
|
|
411
|
+
# Join with the junction table to filter by labels
|
|
412
|
+
stmt = (
|
|
413
|
+
stmt.join(
|
|
414
|
+
models.DatasetsDatasetLabel,
|
|
415
|
+
models.Dataset.id == models.DatasetsDatasetLabel.dataset_id,
|
|
416
|
+
)
|
|
417
|
+
.where(models.DatasetsDatasetLabel.dataset_label_id.in_(label_rowids))
|
|
418
|
+
.distinct()
|
|
419
|
+
)
|
|
389
420
|
async with info.context.db() as session:
|
|
390
421
|
datasets = await session.scalars(stmt)
|
|
391
422
|
return connection_from_list(
|
|
@@ -448,6 +479,7 @@ class Query:
|
|
|
448
479
|
)
|
|
449
480
|
)
|
|
450
481
|
).all()
|
|
482
|
+
|
|
451
483
|
if not experiments or len(experiments) < len(experiment_rowids):
|
|
452
484
|
raise NotFound("Unable to resolve one or more experiment IDs.")
|
|
453
485
|
num_datasets = len(set(experiment.dataset_id for experiment in experiments))
|
|
@@ -456,37 +488,19 @@ class Query:
|
|
|
456
488
|
base_experiment = next(
|
|
457
489
|
experiment for experiment in experiments if experiment.id == base_experiment_rowid
|
|
458
490
|
)
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
)
|
|
465
|
-
.where(
|
|
466
|
-
and_(
|
|
467
|
-
models.DatasetExampleRevision.dataset_version_id
|
|
468
|
-
<= base_experiment.dataset_version_id,
|
|
469
|
-
models.DatasetExample.dataset_id == base_experiment.dataset_id,
|
|
470
|
-
)
|
|
471
|
-
)
|
|
472
|
-
.group_by(models.DatasetExampleRevision.dataset_example_id)
|
|
473
|
-
.scalar_subquery()
|
|
474
|
-
)
|
|
491
|
+
|
|
492
|
+
# Use ExperimentDatasetExample to pull down examples.
|
|
493
|
+
# Splits are mutable and should not be used for comparison.
|
|
494
|
+
# The comparison should only occur against examples which were assigned to the same
|
|
495
|
+
# splits at the time of execution of the ExperimentRun.
|
|
475
496
|
examples_query = (
|
|
476
497
|
select(models.DatasetExample)
|
|
477
|
-
.
|
|
478
|
-
.
|
|
479
|
-
models.DatasetExampleRevision,
|
|
480
|
-
onclause=and_(
|
|
481
|
-
models.DatasetExample.id
|
|
482
|
-
== models.DatasetExampleRevision.dataset_example_id,
|
|
483
|
-
models.DatasetExampleRevision.id.in_(revision_ids),
|
|
484
|
-
models.DatasetExampleRevision.revision_kind != "DELETE",
|
|
485
|
-
),
|
|
486
|
-
)
|
|
498
|
+
.join(models.ExperimentDatasetExample)
|
|
499
|
+
.where(models.ExperimentDatasetExample.experiment_id == base_experiment_rowid)
|
|
487
500
|
.order_by(models.DatasetExample.id.desc())
|
|
488
501
|
.limit(page_size + 1)
|
|
489
502
|
)
|
|
503
|
+
|
|
490
504
|
if cursor is not None:
|
|
491
505
|
examples_query = examples_query.where(models.DatasetExample.id < cursor.rowid)
|
|
492
506
|
|
|
@@ -1103,6 +1117,7 @@ class Query:
|
|
|
1103
1117
|
after: Optional[CursorString] = UNSET,
|
|
1104
1118
|
before: Optional[CursorString] = UNSET,
|
|
1105
1119
|
filter: Optional[PromptFilter] = UNSET,
|
|
1120
|
+
labelIds: Optional[list[GlobalID]] = UNSET,
|
|
1106
1121
|
) -> Connection[Prompt]:
|
|
1107
1122
|
args = ConnectionArgs(
|
|
1108
1123
|
first=first,
|
|
@@ -1119,6 +1134,16 @@ class Query:
|
|
|
1119
1134
|
stmt = stmt.where(column.ilike(f"%{filter.value}%")).order_by(
|
|
1120
1135
|
models.Prompt.updated_at.desc()
|
|
1121
1136
|
)
|
|
1137
|
+
if labelIds:
|
|
1138
|
+
stmt = stmt.join(models.PromptPromptLabel).where(
|
|
1139
|
+
models.PromptPromptLabel.prompt_label_id.in_(
|
|
1140
|
+
from_global_id_with_expected_type(
|
|
1141
|
+
global_id=label_id, expected_type_name="PromptLabel"
|
|
1142
|
+
)
|
|
1143
|
+
for label_id in labelIds
|
|
1144
|
+
)
|
|
1145
|
+
)
|
|
1146
|
+
stmt = stmt.distinct()
|
|
1122
1147
|
async with info.context.db() as session:
|
|
1123
1148
|
orm_prompts = await session.stream_scalars(stmt)
|
|
1124
1149
|
data = [to_gql_prompt_from_orm(orm_prompt) async for orm_prompt in orm_prompts]
|
|
@@ -23,6 +23,9 @@ from starlette.concurrency import run_in_threadpool
|
|
|
23
23
|
from starlette.datastructures import FormData, UploadFile
|
|
24
24
|
from starlette.requests import Request
|
|
25
25
|
from starlette.responses import Response
|
|
26
|
+
from starlette.status import (
|
|
27
|
+
HTTP_404_NOT_FOUND,
|
|
28
|
+
)
|
|
26
29
|
from strawberry.relay import GlobalID
|
|
27
30
|
from typing_extensions import TypeAlias, assert_never
|
|
28
31
|
|
|
@@ -34,8 +37,10 @@ from phoenix.db.insertion.dataset import (
|
|
|
34
37
|
ExampleContent,
|
|
35
38
|
add_dataset_examples,
|
|
36
39
|
)
|
|
40
|
+
from phoenix.db.types.db_models import UNDEFINED
|
|
37
41
|
from phoenix.server.api.types.Dataset import Dataset as DatasetNodeType
|
|
38
42
|
from phoenix.server.api.types.DatasetExample import DatasetExample as DatasetExampleNodeType
|
|
43
|
+
from phoenix.server.api.types.DatasetSplit import DatasetSplit as DatasetSplitNodeType
|
|
39
44
|
from phoenix.server.api.types.DatasetVersion import DatasetVersion as DatasetVersionNodeType
|
|
40
45
|
from phoenix.server.api.types.node import from_global_id_with_expected_type
|
|
41
46
|
from phoenix.server.api.utils import delete_projects, delete_traces
|
|
@@ -697,6 +702,7 @@ class DatasetExample(V1RoutesBaseModel):
|
|
|
697
702
|
class ListDatasetExamplesData(V1RoutesBaseModel):
|
|
698
703
|
dataset_id: str
|
|
699
704
|
version_id: str
|
|
705
|
+
filtered_splits: list[str] = UNDEFINED
|
|
700
706
|
examples: list[DatasetExample]
|
|
701
707
|
|
|
702
708
|
|
|
@@ -719,6 +725,10 @@ async def get_dataset_examples(
|
|
|
719
725
|
"The ID of the dataset version (if omitted, returns data from the latest version)"
|
|
720
726
|
),
|
|
721
727
|
),
|
|
728
|
+
split: Optional[list[str]] = Query(
|
|
729
|
+
default=None,
|
|
730
|
+
description="List of dataset split identifiers (GlobalIDs or names) to filter by",
|
|
731
|
+
),
|
|
722
732
|
) -> ListDatasetExamplesResponseBody:
|
|
723
733
|
try:
|
|
724
734
|
dataset_gid = GlobalID.from_id(id)
|
|
@@ -795,9 +805,13 @@ async def get_dataset_examples(
|
|
|
795
805
|
)
|
|
796
806
|
|
|
797
807
|
subquery = partial_subquery.subquery()
|
|
808
|
+
|
|
798
809
|
# Query for the most recent example revisions that are not deleted
|
|
799
810
|
query = (
|
|
800
|
-
select(
|
|
811
|
+
select(
|
|
812
|
+
models.DatasetExample,
|
|
813
|
+
models.DatasetExampleRevision,
|
|
814
|
+
)
|
|
801
815
|
.join(
|
|
802
816
|
models.DatasetExampleRevision,
|
|
803
817
|
models.DatasetExample.id == models.DatasetExampleRevision.dataset_example_id,
|
|
@@ -810,6 +824,28 @@ async def get_dataset_examples(
|
|
|
810
824
|
.filter(models.DatasetExampleRevision.revision_kind != "DELETE")
|
|
811
825
|
.order_by(models.DatasetExample.id.asc())
|
|
812
826
|
)
|
|
827
|
+
|
|
828
|
+
# If splits are provided, filter by dataset splits
|
|
829
|
+
resolved_split_names: list[str] = []
|
|
830
|
+
if split:
|
|
831
|
+
# Resolve split identifiers (IDs or names) to IDs and names
|
|
832
|
+
resolved_split_ids, resolved_split_names = await _resolve_split_identifiers(
|
|
833
|
+
session, split
|
|
834
|
+
)
|
|
835
|
+
|
|
836
|
+
# Add filter for splits (join with the association table)
|
|
837
|
+
# Use distinct() to prevent duplicates when an example belongs to
|
|
838
|
+
# multiple splits
|
|
839
|
+
query = (
|
|
840
|
+
query.join(
|
|
841
|
+
models.DatasetSplitDatasetExample,
|
|
842
|
+
models.DatasetExample.id
|
|
843
|
+
== models.DatasetSplitDatasetExample.dataset_example_id,
|
|
844
|
+
)
|
|
845
|
+
.filter(models.DatasetSplitDatasetExample.dataset_split_id.in_(resolved_split_ids))
|
|
846
|
+
.distinct()
|
|
847
|
+
)
|
|
848
|
+
|
|
813
849
|
examples = [
|
|
814
850
|
DatasetExample(
|
|
815
851
|
id=str(GlobalID("DatasetExample", str(example.id))),
|
|
@@ -824,6 +860,7 @@ async def get_dataset_examples(
|
|
|
824
860
|
data=ListDatasetExamplesData(
|
|
825
861
|
dataset_id=str(GlobalID("Dataset", str(resolved_dataset_id))),
|
|
826
862
|
version_id=str(GlobalID("DatasetVersion", str(resolved_version_id))),
|
|
863
|
+
filtered_splits=resolved_split_names,
|
|
827
864
|
examples=examples,
|
|
828
865
|
)
|
|
829
866
|
)
|
|
@@ -1080,3 +1117,115 @@ async def _get_db_examples(
|
|
|
1080
1117
|
|
|
1081
1118
|
def _is_all_dict(seq: Sequence[Any]) -> bool:
|
|
1082
1119
|
return all(map(lambda obj: isinstance(obj, dict), seq))
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
# Split identifier helper types and functions
|
|
1123
|
+
class _SplitId(int): ...
|
|
1124
|
+
|
|
1125
|
+
|
|
1126
|
+
_SplitIdentifier: TypeAlias = Union[_SplitId, str]
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
def _parse_split_identifier(split_identifier: str) -> _SplitIdentifier:
|
|
1130
|
+
"""
|
|
1131
|
+
Parse a split identifier as either a GlobalID or a name.
|
|
1132
|
+
|
|
1133
|
+
Args:
|
|
1134
|
+
split_identifier: The identifier string (GlobalID or name)
|
|
1135
|
+
|
|
1136
|
+
Returns:
|
|
1137
|
+
Either a _SplitId or an Identifier
|
|
1138
|
+
|
|
1139
|
+
Raises:
|
|
1140
|
+
HTTPException: If the identifier format is invalid
|
|
1141
|
+
"""
|
|
1142
|
+
if not split_identifier:
|
|
1143
|
+
raise HTTPException(422, "Invalid split identifier")
|
|
1144
|
+
try:
|
|
1145
|
+
split_id = from_global_id_with_expected_type(
|
|
1146
|
+
GlobalID.from_id(split_identifier),
|
|
1147
|
+
DatasetSplitNodeType.__name__,
|
|
1148
|
+
)
|
|
1149
|
+
except ValueError:
|
|
1150
|
+
return split_identifier
|
|
1151
|
+
return _SplitId(split_id)
|
|
1152
|
+
|
|
1153
|
+
|
|
1154
|
+
async def _resolve_split_identifiers(
|
|
1155
|
+
session: AsyncSession,
|
|
1156
|
+
split_identifiers: list[str],
|
|
1157
|
+
) -> tuple[list[int], list[str]]:
|
|
1158
|
+
"""
|
|
1159
|
+
Resolve a list of split identifiers (IDs or names) to split IDs and names.
|
|
1160
|
+
|
|
1161
|
+
Args:
|
|
1162
|
+
session: The database session
|
|
1163
|
+
split_identifiers: List of split identifiers (GlobalIDs or names)
|
|
1164
|
+
|
|
1165
|
+
Returns:
|
|
1166
|
+
Tuple of (list of split IDs, list of split names)
|
|
1167
|
+
|
|
1168
|
+
Raises:
|
|
1169
|
+
HTTPException: If any split identifier is invalid or not found
|
|
1170
|
+
"""
|
|
1171
|
+
split_ids: list[int] = []
|
|
1172
|
+
split_names: list[str] = []
|
|
1173
|
+
|
|
1174
|
+
# Parse all identifiers first
|
|
1175
|
+
parsed_identifiers: list[_SplitIdentifier] = []
|
|
1176
|
+
for identifier_str in split_identifiers:
|
|
1177
|
+
parsed_identifiers.append(_parse_split_identifier(identifier_str.strip()))
|
|
1178
|
+
|
|
1179
|
+
# Separate IDs and names
|
|
1180
|
+
requested_ids: list[int] = []
|
|
1181
|
+
requested_names: list[str] = []
|
|
1182
|
+
for identifier in parsed_identifiers:
|
|
1183
|
+
if isinstance(identifier, _SplitId):
|
|
1184
|
+
requested_ids.append(int(identifier))
|
|
1185
|
+
elif isinstance(identifier, str):
|
|
1186
|
+
requested_names.append(identifier)
|
|
1187
|
+
else:
|
|
1188
|
+
assert_never(identifier)
|
|
1189
|
+
|
|
1190
|
+
# Query for splits by ID
|
|
1191
|
+
if requested_ids:
|
|
1192
|
+
id_results = await session.stream(
|
|
1193
|
+
select(models.DatasetSplit.id, models.DatasetSplit.name).where(
|
|
1194
|
+
models.DatasetSplit.id.in_(requested_ids)
|
|
1195
|
+
)
|
|
1196
|
+
)
|
|
1197
|
+
async for split_id, split_name in id_results:
|
|
1198
|
+
split_ids.append(split_id)
|
|
1199
|
+
split_names.append(split_name)
|
|
1200
|
+
|
|
1201
|
+
# Check if all requested IDs were found
|
|
1202
|
+
found_ids = set(split_ids[-len(requested_ids) :] if requested_ids else [])
|
|
1203
|
+
missing_ids = [sid for sid in requested_ids if sid not in found_ids]
|
|
1204
|
+
if missing_ids:
|
|
1205
|
+
raise HTTPException(
|
|
1206
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
1207
|
+
detail=f"Dataset splits not found for IDs: {', '.join(map(str, missing_ids))}",
|
|
1208
|
+
)
|
|
1209
|
+
|
|
1210
|
+
# Query for splits by name
|
|
1211
|
+
if requested_names:
|
|
1212
|
+
name_results = await session.stream(
|
|
1213
|
+
select(models.DatasetSplit.id, models.DatasetSplit.name).where(
|
|
1214
|
+
models.DatasetSplit.name.in_(requested_names)
|
|
1215
|
+
)
|
|
1216
|
+
)
|
|
1217
|
+
name_to_id: dict[str, int] = {}
|
|
1218
|
+
async for split_id, split_name in name_results:
|
|
1219
|
+
split_ids.append(split_id)
|
|
1220
|
+
split_names.append(split_name)
|
|
1221
|
+
name_to_id[split_name] = split_id
|
|
1222
|
+
|
|
1223
|
+
# Check if all requested names were found
|
|
1224
|
+
missing_names = [name for name in requested_names if name not in name_to_id]
|
|
1225
|
+
if missing_names:
|
|
1226
|
+
raise HTTPException(
|
|
1227
|
+
status_code=HTTP_404_NOT_FOUND,
|
|
1228
|
+
detail=f"Dataset splits not found: {', '.join(missing_names)}",
|
|
1229
|
+
)
|
|
1230
|
+
|
|
1231
|
+
return split_ids, split_names
|
{arize_phoenix-12.6.0 → arize_phoenix-12.7.0}/src/phoenix/server/api/routers/v1/experiments.py
RENAMED
|
@@ -25,6 +25,7 @@ from phoenix.server.bearer_auth import PhoenixUser
|
|
|
25
25
|
from phoenix.server.dml_event import ExperimentInsertEvent
|
|
26
26
|
from phoenix.server.experiments.utils import generate_experiment_project_name
|
|
27
27
|
|
|
28
|
+
from .datasets import _resolve_split_identifiers
|
|
28
29
|
from .models import V1RoutesBaseModel
|
|
29
30
|
from .utils import ResponseBody, add_errors_to_responses, add_text_csv_content_to_responses
|
|
30
31
|
|
|
@@ -80,6 +81,10 @@ class CreateExperimentRequestBody(V1RoutesBaseModel):
|
|
|
80
81
|
"(if omitted, the latest version will be used)"
|
|
81
82
|
),
|
|
82
83
|
)
|
|
84
|
+
splits: Optional[list[str]] = Field(
|
|
85
|
+
default=None,
|
|
86
|
+
description="List of dataset split identifiers (GlobalIDs or names) to filter by",
|
|
87
|
+
)
|
|
83
88
|
repetitions: int = Field(
|
|
84
89
|
default=1, description="Number of times the experiment should be repeated for each example"
|
|
85
90
|
)
|
|
@@ -192,6 +197,20 @@ async def create_experiment(
|
|
|
192
197
|
project_name=project_name,
|
|
193
198
|
user_id=user_id,
|
|
194
199
|
)
|
|
200
|
+
|
|
201
|
+
if request_body.splits is not None:
|
|
202
|
+
# Resolve split identifiers (IDs or names) to IDs and names
|
|
203
|
+
resolved_split_ids, _ = await _resolve_split_identifiers(session, request_body.splits)
|
|
204
|
+
|
|
205
|
+
# Generate experiment dataset splits relation
|
|
206
|
+
# prior to the crosswalk table insert
|
|
207
|
+
# in insert_experiment_with_examples_snapshot
|
|
208
|
+
experiment.experiment_dataset_splits = [
|
|
209
|
+
models.ExperimentDatasetSplit(dataset_split_id=split_id)
|
|
210
|
+
for split_id in resolved_split_ids
|
|
211
|
+
]
|
|
212
|
+
|
|
213
|
+
# crosswalk table assumes the relation is already present
|
|
195
214
|
await insert_experiment_with_examples_snapshot(session, experiment)
|
|
196
215
|
|
|
197
216
|
dialect = SupportedSQLDialect(session.bind.dialect.name)
|