arize-phoenix 11.24.1__tar.gz → 11.25.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-11.24.1 → arize_phoenix-11.25.0}/PKG-INFO +1 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/__init__.py +2 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/engines.py +12 -18
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/document_annotation.py +0 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/span_annotation.py +0 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/trace_annotation.py +0 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/types.py +0 -15
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/models.py +2 -2
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +60 -8
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +40 -8
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/record_counts.py +37 -10
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +28 -14
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_clients.py +10 -4
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/spans.py +17 -17
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Project.py +106 -44
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/sender.py +5 -2
- arize_phoenix-11.25.0/src/phoenix/server/session_filters.py +49 -0
- arize_phoenix-11.25.0/src/phoenix/server/static/.vite/manifest.json +93 -0
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/components-CBjkyAZ_.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/components-Dpf_EwE7.js +334 -332
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/index-kl9TdGAc.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/index-gkM1FDH4.js +5 -2
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/pages-B8T9ap-6.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/pages-Dz3WExiG.js +703 -462
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-CU36oj8y.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-RdRDaQiR.js +1 -1
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-arizeai-Ctgw0e1G.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-arizeai-DsYDNOqt.js +2 -2
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-codemirror-Cojjzqb9.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-codemirror-BzJDUbEx.js +3 -3
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-recharts-Bw30oz1A.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-recharts-BTHn5Y2R.js +1 -1
- arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-shiki-DZajAPeq.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-shiki-BAcocHFl.js +1 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/query.py +2 -0
- arize_phoenix-11.25.0/src/phoenix/version.py +1 -0
- arize_phoenix-11.24.1/src/phoenix/server/static/.vite/manifest.json +0 -93
- arize_phoenix-11.24.1/src/phoenix/version.py +0 -1
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/.gitignore +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/IP_NOTICE +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/LICENSE +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/README.md +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/pyproject.toml +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/config.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/token_price_customization.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/queries.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/authorization.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/experiments/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/experiments/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/assets/vendor-CqDb5u4o.css +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/assets/vendor-three-BLWp5bic.js +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/template_formatters.py +0 -0
|
@@ -87,8 +87,9 @@ class PhoenixTraceOpenAILoader(Loader):
|
|
|
87
87
|
"https://arize.com/docs/phoenix/tracing/integrations-tracing/openai"
|
|
88
88
|
"\n\n"
|
|
89
89
|
"Example usage:\n\n"
|
|
90
|
+
"pip install openinference-instrumentation-openai\n\n"
|
|
90
91
|
"```python\n"
|
|
91
|
-
"from phoenix.otel register\n"
|
|
92
|
+
"from phoenix.otel import register\n"
|
|
92
93
|
"from openinference.instrumentation.openai import OpenAIInstrumentor\n\n"
|
|
93
94
|
"tracer_provider = register()\n"
|
|
94
95
|
"OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)\n"
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
|
-
import json
|
|
5
4
|
import logging
|
|
6
5
|
from collections.abc import Callable
|
|
7
|
-
from datetime import datetime
|
|
8
6
|
from enum import Enum
|
|
9
7
|
from sqlite3 import Connection
|
|
10
8
|
from typing import Any
|
|
11
9
|
|
|
12
10
|
import aiosqlite
|
|
13
11
|
import numpy as np
|
|
12
|
+
import orjson
|
|
14
13
|
import sqlalchemy
|
|
15
14
|
import sqlean
|
|
16
15
|
from sqlalchemy import URL, StaticPool, event, make_url
|
|
@@ -193,19 +192,14 @@ def aio_postgresql_engine(
|
|
|
193
192
|
|
|
194
193
|
|
|
195
194
|
def _dumps(obj: Any) -> str:
|
|
196
|
-
return
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
elif isinstance(obj, np.integer):
|
|
208
|
-
return int(obj)
|
|
209
|
-
elif isinstance(obj, np.floating):
|
|
210
|
-
return float(obj)
|
|
211
|
-
return super().default(obj)
|
|
195
|
+
return orjson.dumps(obj, default=_default).decode()
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def _default(obj: Any) -> Any:
|
|
199
|
+
if isinstance(obj, np.ndarray):
|
|
200
|
+
return obj.tolist()
|
|
201
|
+
if isinstance(obj, (np.integer, np.floating, np.bool_)):
|
|
202
|
+
return obj.item()
|
|
203
|
+
if isinstance(obj, Enum):
|
|
204
|
+
return obj.value
|
|
205
|
+
raise TypeError(f"Object of type {type(obj).__name__} is not serializable")
|
|
@@ -180,13 +180,11 @@ class Precursors(ABC):
|
|
|
180
180
|
def as_insertable(
|
|
181
181
|
self,
|
|
182
182
|
span_rowid: int,
|
|
183
|
-
id_: Optional[int] = None,
|
|
184
183
|
) -> Insertables.SpanAnnotation:
|
|
185
184
|
return Insertables.SpanAnnotation(
|
|
186
185
|
span_id=self.span_id,
|
|
187
186
|
obj=self.obj,
|
|
188
187
|
span_rowid=span_rowid,
|
|
189
|
-
id_=id_,
|
|
190
188
|
)
|
|
191
189
|
|
|
192
190
|
@dataclass(frozen=True)
|
|
@@ -197,13 +195,11 @@ class Precursors(ABC):
|
|
|
197
195
|
def as_insertable(
|
|
198
196
|
self,
|
|
199
197
|
trace_rowid: int,
|
|
200
|
-
id_: Optional[int] = None,
|
|
201
198
|
) -> Insertables.TraceAnnotation:
|
|
202
199
|
return Insertables.TraceAnnotation(
|
|
203
200
|
trace_id=self.trace_id,
|
|
204
201
|
obj=self.obj,
|
|
205
202
|
trace_rowid=trace_rowid,
|
|
206
|
-
id_=id_,
|
|
207
203
|
)
|
|
208
204
|
|
|
209
205
|
@dataclass(frozen=True)
|
|
@@ -215,14 +211,12 @@ class Precursors(ABC):
|
|
|
215
211
|
def as_insertable(
|
|
216
212
|
self,
|
|
217
213
|
span_rowid: int,
|
|
218
|
-
id_: Optional[int] = None,
|
|
219
214
|
) -> Insertables.DocumentAnnotation:
|
|
220
215
|
return Insertables.DocumentAnnotation(
|
|
221
216
|
span_id=self.span_id,
|
|
222
217
|
document_position=self.document_position,
|
|
223
218
|
obj=self.obj,
|
|
224
219
|
span_rowid=span_rowid,
|
|
225
|
-
id_=id_,
|
|
226
220
|
)
|
|
227
221
|
|
|
228
222
|
|
|
@@ -231,40 +225,31 @@ class Insertables(ABC):
|
|
|
231
225
|
class SpanAnnotation(Precursors.SpanAnnotation):
|
|
232
226
|
span_rowid: int
|
|
233
227
|
identifier: str = ""
|
|
234
|
-
id_: Optional[int] = None
|
|
235
228
|
|
|
236
229
|
@property
|
|
237
230
|
def row(self) -> models.SpanAnnotation:
|
|
238
231
|
obj = copy(self.obj)
|
|
239
232
|
obj.span_rowid = self.span_rowid
|
|
240
|
-
if self.id_ is not None:
|
|
241
|
-
obj.id = self.id_
|
|
242
233
|
return obj
|
|
243
234
|
|
|
244
235
|
@dataclass(frozen=True)
|
|
245
236
|
class TraceAnnotation(Precursors.TraceAnnotation):
|
|
246
237
|
trace_rowid: int
|
|
247
238
|
identifier: str = ""
|
|
248
|
-
id_: Optional[int] = None
|
|
249
239
|
|
|
250
240
|
@property
|
|
251
241
|
def row(self) -> models.TraceAnnotation:
|
|
252
242
|
obj = copy(self.obj)
|
|
253
243
|
obj.trace_rowid = self.trace_rowid
|
|
254
|
-
if self.id_ is not None:
|
|
255
|
-
obj.id = self.id_
|
|
256
244
|
return obj
|
|
257
245
|
|
|
258
246
|
@dataclass(frozen=True)
|
|
259
247
|
class DocumentAnnotation(Precursors.DocumentAnnotation):
|
|
260
248
|
span_rowid: int
|
|
261
249
|
identifier: str = ""
|
|
262
|
-
id_: Optional[int] = None
|
|
263
250
|
|
|
264
251
|
@property
|
|
265
252
|
def row(self) -> models.DocumentAnnotation:
|
|
266
253
|
obj = copy(self.obj)
|
|
267
254
|
obj.span_rowid = self.span_rowid
|
|
268
|
-
if self.id_ is not None:
|
|
269
|
-
obj.id = self.id_
|
|
270
255
|
return obj
|
|
@@ -188,7 +188,7 @@ class JsonDict(TypeDecorator[dict[str, Any]]):
|
|
|
188
188
|
impl = JSON_
|
|
189
189
|
|
|
190
190
|
def process_bind_param(self, value: Optional[dict[str, Any]], _: Dialect) -> dict[str, Any]:
|
|
191
|
-
return
|
|
191
|
+
return value if isinstance(value, dict) else {}
|
|
192
192
|
|
|
193
193
|
def process_result_value(self, value: Optional[Any], _: Dialect) -> Optional[dict[str, Any]]:
|
|
194
194
|
return orjson.loads(orjson.dumps(value)) if isinstance(value, dict) and value else value
|
|
@@ -200,7 +200,7 @@ class JsonList(TypeDecorator[list[Any]]):
|
|
|
200
200
|
impl = JSON_
|
|
201
201
|
|
|
202
202
|
def process_bind_param(self, value: Optional[list[Any]], _: Dialect) -> list[Any]:
|
|
203
|
-
return
|
|
203
|
+
return value if isinstance(value, list) else []
|
|
204
204
|
|
|
205
205
|
def process_result_value(self, value: Optional[Any], _: Dialect) -> Optional[list[Any]]:
|
|
206
206
|
return orjson.loads(orjson.dumps(value)) if isinstance(value, list) and value else value
|
|
@@ -13,6 +13,7 @@ from phoenix.db import models
|
|
|
13
13
|
from phoenix.server.api.dataloaders.cache import TwoTierCache
|
|
14
14
|
from phoenix.server.api.input_types.TimeRange import TimeRange
|
|
15
15
|
from phoenix.server.api.types.AnnotationSummary import AnnotationSummary
|
|
16
|
+
from phoenix.server.session_filters import get_filtered_session_rowids_subquery
|
|
16
17
|
from phoenix.server.types import DbSessionFactory
|
|
17
18
|
from phoenix.trace.dsl import SpanFilter
|
|
18
19
|
|
|
@@ -20,27 +21,41 @@ Kind: TypeAlias = Literal["span", "trace"]
|
|
|
20
21
|
ProjectRowId: TypeAlias = int
|
|
21
22
|
TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
|
|
22
23
|
FilterCondition: TypeAlias = Optional[str]
|
|
24
|
+
SessionFilterCondition: TypeAlias = Optional[str]
|
|
23
25
|
AnnotationName: TypeAlias = str
|
|
24
26
|
|
|
25
|
-
Segment: TypeAlias = tuple[
|
|
27
|
+
Segment: TypeAlias = tuple[
|
|
28
|
+
Kind,
|
|
29
|
+
ProjectRowId,
|
|
30
|
+
TimeInterval,
|
|
31
|
+
FilterCondition,
|
|
32
|
+
SessionFilterCondition,
|
|
33
|
+
]
|
|
26
34
|
Param: TypeAlias = AnnotationName
|
|
27
35
|
|
|
28
|
-
Key: TypeAlias = tuple[
|
|
36
|
+
Key: TypeAlias = tuple[
|
|
37
|
+
Kind,
|
|
38
|
+
ProjectRowId,
|
|
39
|
+
Optional[TimeRange],
|
|
40
|
+
FilterCondition,
|
|
41
|
+
SessionFilterCondition,
|
|
42
|
+
AnnotationName,
|
|
43
|
+
]
|
|
29
44
|
Result: TypeAlias = Optional[AnnotationSummary]
|
|
30
45
|
ResultPosition: TypeAlias = int
|
|
31
46
|
DEFAULT_VALUE: Result = None
|
|
32
47
|
|
|
33
48
|
|
|
34
49
|
def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
|
|
35
|
-
kind, project_rowid, time_range, filter_condition, eval_name = key
|
|
50
|
+
kind, project_rowid, time_range, filter_condition, session_filter_condition, eval_name = key
|
|
36
51
|
interval = (
|
|
37
52
|
(time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
|
|
38
53
|
)
|
|
39
|
-
return (kind, project_rowid, interval, filter_condition), eval_name
|
|
54
|
+
return (kind, project_rowid, interval, filter_condition, session_filter_condition), eval_name
|
|
40
55
|
|
|
41
56
|
|
|
42
57
|
_Section: TypeAlias = tuple[ProjectRowId, AnnotationName, Kind]
|
|
43
|
-
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition]
|
|
58
|
+
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition]
|
|
44
59
|
|
|
45
60
|
|
|
46
61
|
class AnnotationSummaryCache(
|
|
@@ -61,8 +76,21 @@ class AnnotationSummaryCache(
|
|
|
61
76
|
del self._cache[section]
|
|
62
77
|
|
|
63
78
|
def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
|
|
64
|
-
(
|
|
65
|
-
|
|
79
|
+
(
|
|
80
|
+
(
|
|
81
|
+
kind,
|
|
82
|
+
project_rowid,
|
|
83
|
+
interval,
|
|
84
|
+
filter_condition,
|
|
85
|
+
session_filter_condition,
|
|
86
|
+
),
|
|
87
|
+
annotation_name,
|
|
88
|
+
) = _cache_key_fn(key)
|
|
89
|
+
return (project_rowid, annotation_name, kind), (
|
|
90
|
+
interval,
|
|
91
|
+
filter_condition,
|
|
92
|
+
session_filter_condition,
|
|
93
|
+
)
|
|
66
94
|
|
|
67
95
|
|
|
68
96
|
class AnnotationSummaryDataLoader(DataLoader[Key, Result]):
|
|
@@ -102,7 +130,9 @@ def _get_stmt(
|
|
|
102
130
|
segment: Segment,
|
|
103
131
|
*annotation_names: Param,
|
|
104
132
|
) -> Select[Any]:
|
|
105
|
-
kind, project_rowid, (start_time, end_time), filter_condition =
|
|
133
|
+
kind, project_rowid, (start_time, end_time), filter_condition, session_filter_condition = (
|
|
134
|
+
segment
|
|
135
|
+
)
|
|
106
136
|
|
|
107
137
|
annotation_model: Union[Type[models.SpanAnnotation], Type[models.TraceAnnotation]]
|
|
108
138
|
entity_model: Union[Type[models.Span], Type[models.Trace]]
|
|
@@ -144,6 +174,19 @@ def _get_stmt(
|
|
|
144
174
|
entity_count_query = entity_count_query.where(
|
|
145
175
|
cast(Type[models.Trace], entity_model).project_rowid == project_rowid
|
|
146
176
|
)
|
|
177
|
+
else:
|
|
178
|
+
assert_never(kind)
|
|
179
|
+
|
|
180
|
+
if session_filter_condition:
|
|
181
|
+
filtered_session_rowids = get_filtered_session_rowids_subquery(
|
|
182
|
+
session_filter_condition=session_filter_condition,
|
|
183
|
+
project_rowids=[project_rowid],
|
|
184
|
+
start_time=start_time,
|
|
185
|
+
end_time=end_time,
|
|
186
|
+
)
|
|
187
|
+
entity_count_query = entity_count_query.where(
|
|
188
|
+
models.Trace.project_session_rowid.in_(filtered_session_rowids)
|
|
189
|
+
)
|
|
147
190
|
|
|
148
191
|
entity_count_query = entity_count_query.where(
|
|
149
192
|
or_(score_column.is_not(None), label_column.is_not(None))
|
|
@@ -186,6 +229,15 @@ def _get_stmt(
|
|
|
186
229
|
else:
|
|
187
230
|
assert_never(kind)
|
|
188
231
|
|
|
232
|
+
if session_filter_condition:
|
|
233
|
+
filtered_session_rowids = get_filtered_session_rowids_subquery(
|
|
234
|
+
session_filter_condition=session_filter_condition,
|
|
235
|
+
project_rowids=[project_rowid],
|
|
236
|
+
start_time=start_time,
|
|
237
|
+
end_time=end_time,
|
|
238
|
+
)
|
|
239
|
+
base_stmt = base_stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
|
|
240
|
+
|
|
189
241
|
base_stmt = base_stmt.where(or_(score_column.is_not(None), label_column.is_not(None)))
|
|
190
242
|
base_stmt = base_stmt.where(name_column.in_(annotation_names))
|
|
191
243
|
|
|
@@ -25,6 +25,7 @@ from phoenix.db import models
|
|
|
25
25
|
from phoenix.db.helpers import SupportedSQLDialect
|
|
26
26
|
from phoenix.server.api.dataloaders.cache import TwoTierCache
|
|
27
27
|
from phoenix.server.api.input_types.TimeRange import TimeRange
|
|
28
|
+
from phoenix.server.session_filters import get_filtered_session_rowids_subquery
|
|
28
29
|
from phoenix.server.types import DbSessionFactory
|
|
29
30
|
from phoenix.trace.dsl import SpanFilter
|
|
30
31
|
|
|
@@ -32,13 +33,16 @@ Kind: TypeAlias = Literal["span", "trace"]
|
|
|
32
33
|
ProjectRowId: TypeAlias = int
|
|
33
34
|
TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
|
|
34
35
|
FilterCondition: TypeAlias = Optional[str]
|
|
36
|
+
SessionFilterCondition: TypeAlias = Optional[str]
|
|
35
37
|
Probability: TypeAlias = float
|
|
36
38
|
QuantileValue: TypeAlias = float
|
|
37
39
|
|
|
38
|
-
Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition]
|
|
40
|
+
Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition, SessionFilterCondition]
|
|
39
41
|
Param: TypeAlias = tuple[ProjectRowId, Probability]
|
|
40
42
|
|
|
41
|
-
Key: TypeAlias = tuple[
|
|
43
|
+
Key: TypeAlias = tuple[
|
|
44
|
+
Kind, ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition, Probability
|
|
45
|
+
]
|
|
42
46
|
Result: TypeAlias = Optional[QuantileValue]
|
|
43
47
|
ResultPosition: TypeAlias = int
|
|
44
48
|
DEFAULT_VALUE: Result = None
|
|
@@ -47,15 +51,18 @@ FloatCol: TypeAlias = SQLColumnExpression[Float[float]]
|
|
|
47
51
|
|
|
48
52
|
|
|
49
53
|
def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
|
|
50
|
-
kind, project_rowid, time_range, filter_condition, probability = key
|
|
54
|
+
kind, project_rowid, time_range, filter_condition, session_filter_condition, probability = key
|
|
51
55
|
interval = (
|
|
52
56
|
(time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
|
|
53
57
|
)
|
|
54
|
-
return (kind, interval, filter_condition), (
|
|
58
|
+
return (kind, interval, filter_condition, session_filter_condition), (
|
|
59
|
+
project_rowid,
|
|
60
|
+
probability,
|
|
61
|
+
)
|
|
55
62
|
|
|
56
63
|
|
|
57
64
|
_Section: TypeAlias = ProjectRowId
|
|
58
|
-
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, Kind, Probability]
|
|
65
|
+
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition, Kind, Probability]
|
|
59
66
|
|
|
60
67
|
|
|
61
68
|
class LatencyMsQuantileCache(
|
|
@@ -71,8 +78,17 @@ class LatencyMsQuantileCache(
|
|
|
71
78
|
)
|
|
72
79
|
|
|
73
80
|
def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
|
|
74
|
-
(
|
|
75
|
-
|
|
81
|
+
(
|
|
82
|
+
(kind, interval, filter_condition, session_filter_condition),
|
|
83
|
+
(project_rowid, probability),
|
|
84
|
+
) = _cache_key_fn(key)
|
|
85
|
+
return project_rowid, (
|
|
86
|
+
interval,
|
|
87
|
+
filter_condition,
|
|
88
|
+
session_filter_condition,
|
|
89
|
+
kind,
|
|
90
|
+
probability,
|
|
91
|
+
)
|
|
76
92
|
|
|
77
93
|
|
|
78
94
|
class LatencyMsQuantileDataLoader(DataLoader[Key, Result]):
|
|
@@ -113,11 +129,18 @@ async def _get_results(
|
|
|
113
129
|
segment: Segment,
|
|
114
130
|
params: Mapping[Param, list[ResultPosition]],
|
|
115
131
|
) -> AsyncIterator[tuple[ResultPosition, QuantileValue]]:
|
|
116
|
-
kind, (start_time, end_time), filter_condition = segment
|
|
132
|
+
kind, (start_time, end_time), filter_condition, session_filter_condition = segment
|
|
117
133
|
stmt = select(models.Trace.project_rowid)
|
|
118
134
|
if kind == "trace":
|
|
119
135
|
latency_column = cast(FloatCol, models.Trace.latency_ms)
|
|
120
136
|
time_column = models.Trace.start_time
|
|
137
|
+
if filter_condition:
|
|
138
|
+
sf = SpanFilter(filter_condition)
|
|
139
|
+
stmt = stmt.where(
|
|
140
|
+
models.Trace.id.in_(
|
|
141
|
+
sf(select(models.Span.trace_rowid).distinct()).scalar_subquery()
|
|
142
|
+
)
|
|
143
|
+
)
|
|
121
144
|
elif kind == "span":
|
|
122
145
|
latency_column = cast(FloatCol, models.Span.latency_ms)
|
|
123
146
|
time_column = models.Span.start_time
|
|
@@ -127,6 +150,15 @@ async def _get_results(
|
|
|
127
150
|
stmt = sf(stmt)
|
|
128
151
|
else:
|
|
129
152
|
assert_never(kind)
|
|
153
|
+
if session_filter_condition:
|
|
154
|
+
project_rowids = [project_rowid for project_rowid, _ in params]
|
|
155
|
+
filtered_session_rowids = get_filtered_session_rowids_subquery(
|
|
156
|
+
session_filter_condition=session_filter_condition,
|
|
157
|
+
project_rowids=project_rowids,
|
|
158
|
+
start_time=start_time,
|
|
159
|
+
end_time=end_time,
|
|
160
|
+
)
|
|
161
|
+
stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
|
|
130
162
|
if start_time:
|
|
131
163
|
stmt = stmt.where(start_time <= time_column)
|
|
132
164
|
if end_time:
|
{arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/record_counts.py
RENAMED
|
@@ -3,13 +3,14 @@ from datetime import datetime
|
|
|
3
3
|
from typing import Any, Literal, Optional
|
|
4
4
|
|
|
5
5
|
from cachetools import LFUCache, TTLCache
|
|
6
|
-
from sqlalchemy import Select, func, select
|
|
6
|
+
from sqlalchemy import Select, distinct, func, select
|
|
7
7
|
from strawberry.dataloader import AbstractCache, DataLoader
|
|
8
8
|
from typing_extensions import TypeAlias, assert_never
|
|
9
9
|
|
|
10
10
|
from phoenix.db import models
|
|
11
11
|
from phoenix.server.api.dataloaders.cache import TwoTierCache
|
|
12
12
|
from phoenix.server.api.input_types.TimeRange import TimeRange
|
|
13
|
+
from phoenix.server.session_filters import get_filtered_session_rowids_subquery
|
|
13
14
|
from phoenix.server.types import DbSessionFactory
|
|
14
15
|
from phoenix.trace.dsl import SpanFilter
|
|
15
16
|
|
|
@@ -17,27 +18,35 @@ Kind: TypeAlias = Literal["span", "trace"]
|
|
|
17
18
|
ProjectRowId: TypeAlias = int
|
|
18
19
|
TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
|
|
19
20
|
FilterCondition: TypeAlias = Optional[str]
|
|
21
|
+
SessionFilterCondition: TypeAlias = Optional[str]
|
|
20
22
|
SpanCount: TypeAlias = int
|
|
21
23
|
|
|
22
|
-
Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition]
|
|
24
|
+
Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition, SessionFilterCondition]
|
|
23
25
|
Param: TypeAlias = ProjectRowId
|
|
24
26
|
|
|
25
|
-
Key: TypeAlias = tuple[
|
|
27
|
+
Key: TypeAlias = tuple[
|
|
28
|
+
Kind, ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition
|
|
29
|
+
]
|
|
26
30
|
Result: TypeAlias = SpanCount
|
|
27
31
|
ResultPosition: TypeAlias = int
|
|
28
32
|
DEFAULT_VALUE: Result = 0
|
|
29
33
|
|
|
30
34
|
|
|
31
35
|
def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
|
|
32
|
-
kind, project_rowid, time_range, filter_condition = key
|
|
36
|
+
kind, project_rowid, time_range, filter_condition, session_filter_condition = key
|
|
33
37
|
interval = (
|
|
34
38
|
(time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
|
|
35
39
|
)
|
|
36
|
-
return (
|
|
40
|
+
return (
|
|
41
|
+
kind,
|
|
42
|
+
interval,
|
|
43
|
+
filter_condition,
|
|
44
|
+
session_filter_condition,
|
|
45
|
+
), project_rowid
|
|
37
46
|
|
|
38
47
|
|
|
39
48
|
_Section: TypeAlias = ProjectRowId
|
|
40
|
-
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, Kind]
|
|
49
|
+
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition, Kind]
|
|
41
50
|
|
|
42
51
|
|
|
43
52
|
class RecordCountCache(
|
|
@@ -53,8 +62,10 @@ class RecordCountCache(
|
|
|
53
62
|
)
|
|
54
63
|
|
|
55
64
|
def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
|
|
56
|
-
(kind, interval, filter_condition), project_rowid = _cache_key_fn(
|
|
57
|
-
|
|
65
|
+
(kind, interval, filter_condition, session_filter_condition), project_rowid = _cache_key_fn(
|
|
66
|
+
key
|
|
67
|
+
)
|
|
68
|
+
return project_rowid, (interval, filter_condition, session_filter_condition, kind)
|
|
58
69
|
|
|
59
70
|
|
|
60
71
|
class RecordCountDataLoader(DataLoader[Key, Result]):
|
|
@@ -93,7 +104,7 @@ def _get_stmt(
|
|
|
93
104
|
segment: Segment,
|
|
94
105
|
*project_rowids: Param,
|
|
95
106
|
) -> Select[Any]:
|
|
96
|
-
kind, (start_time, end_time), filter_condition = segment
|
|
107
|
+
kind, (start_time, end_time), filter_condition, session_filter_condition = segment
|
|
97
108
|
pid = models.Trace.project_rowid
|
|
98
109
|
stmt = select(pid)
|
|
99
110
|
if kind == "span":
|
|
@@ -102,12 +113,28 @@ def _get_stmt(
|
|
|
102
113
|
if filter_condition:
|
|
103
114
|
sf = SpanFilter(filter_condition)
|
|
104
115
|
stmt = sf(stmt)
|
|
116
|
+
stmt = stmt.add_columns(func.count().label("count"))
|
|
105
117
|
elif kind == "trace":
|
|
106
118
|
time_column = models.Trace.start_time
|
|
119
|
+
if filter_condition:
|
|
120
|
+
stmt = stmt.join(models.Span, models.Trace.id == models.Span.trace_rowid)
|
|
121
|
+
stmt = stmt.add_columns(func.count(distinct(models.Trace.id)).label("count"))
|
|
122
|
+
sf = SpanFilter(filter_condition)
|
|
123
|
+
stmt = sf(stmt)
|
|
124
|
+
else:
|
|
125
|
+
stmt = stmt.add_columns(func.count().label("count"))
|
|
107
126
|
else:
|
|
108
127
|
assert_never(kind)
|
|
109
|
-
stmt = stmt.add_columns(func.count().label("count"))
|
|
110
128
|
stmt = stmt.where(pid.in_(project_rowids))
|
|
129
|
+
|
|
130
|
+
if session_filter_condition:
|
|
131
|
+
filtered_session_rowids = get_filtered_session_rowids_subquery(
|
|
132
|
+
session_filter_condition=session_filter_condition,
|
|
133
|
+
project_rowids=project_rowids,
|
|
134
|
+
start_time=start_time,
|
|
135
|
+
end_time=end_time,
|
|
136
|
+
)
|
|
137
|
+
stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
|
|
111
138
|
stmt = stmt.group_by(pid)
|
|
112
139
|
if start_time:
|
|
113
140
|
stmt = stmt.where(start_time <= time_column)
|
|
@@ -12,32 +12,38 @@ from phoenix.db import models
|
|
|
12
12
|
from phoenix.server.api.dataloaders.cache import TwoTierCache
|
|
13
13
|
from phoenix.server.api.dataloaders.types import CostBreakdown, SpanCostSummary
|
|
14
14
|
from phoenix.server.api.input_types.TimeRange import TimeRange
|
|
15
|
+
from phoenix.server.session_filters import get_filtered_session_rowids_subquery
|
|
15
16
|
from phoenix.server.types import DbSessionFactory
|
|
16
17
|
from phoenix.trace.dsl import SpanFilter
|
|
17
18
|
|
|
18
19
|
ProjectRowId: TypeAlias = int
|
|
19
20
|
TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
|
|
20
21
|
FilterCondition: TypeAlias = Optional[str]
|
|
22
|
+
SessionFilterCondition: TypeAlias = Optional[str]
|
|
21
23
|
|
|
22
|
-
Segment: TypeAlias = tuple[
|
|
24
|
+
Segment: TypeAlias = tuple[
|
|
25
|
+
TimeInterval,
|
|
26
|
+
FilterCondition,
|
|
27
|
+
SessionFilterCondition,
|
|
28
|
+
]
|
|
23
29
|
Param: TypeAlias = ProjectRowId
|
|
24
30
|
|
|
25
|
-
Key: TypeAlias = tuple[ProjectRowId, Optional[TimeRange], FilterCondition]
|
|
31
|
+
Key: TypeAlias = tuple[ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition]
|
|
26
32
|
Result: TypeAlias = SpanCostSummary
|
|
27
33
|
ResultPosition: TypeAlias = int
|
|
28
34
|
DEFAULT_VALUE: Result = SpanCostSummary()
|
|
29
35
|
|
|
30
36
|
|
|
31
37
|
def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
|
|
32
|
-
project_rowid, time_range, filter_condition = key
|
|
38
|
+
project_rowid, time_range, filter_condition, session_filter_condition = key
|
|
33
39
|
interval = (
|
|
34
40
|
(time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
|
|
35
41
|
)
|
|
36
|
-
return (interval, filter_condition), project_rowid
|
|
42
|
+
return (interval, filter_condition, session_filter_condition), project_rowid
|
|
37
43
|
|
|
38
44
|
|
|
39
45
|
_Section: TypeAlias = ProjectRowId
|
|
40
|
-
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition]
|
|
46
|
+
_SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition]
|
|
41
47
|
|
|
42
48
|
|
|
43
49
|
class SpanCostSummaryCache(
|
|
@@ -53,8 +59,8 @@ class SpanCostSummaryCache(
|
|
|
53
59
|
)
|
|
54
60
|
|
|
55
61
|
def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
|
|
56
|
-
(interval, filter_condition), project_rowid = _cache_key_fn(key)
|
|
57
|
-
return project_rowid, (interval, filter_condition)
|
|
62
|
+
(interval, filter_condition, session_filter_condition), project_rowid = _cache_key_fn(key)
|
|
63
|
+
return project_rowid, (interval, filter_condition, session_filter_condition)
|
|
58
64
|
|
|
59
65
|
|
|
60
66
|
class SpanCostSummaryByProjectDataLoader(DataLoader[Key, Result]):
|
|
@@ -106,12 +112,12 @@ def _get_stmt(
|
|
|
106
112
|
segment: Segment,
|
|
107
113
|
*params: Param,
|
|
108
114
|
) -> Select[Any]:
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
project_rowids = params
|
|
116
|
+
(start_time, end_time), filter_condition, session_filter_condition = segment
|
|
111
117
|
|
|
112
118
|
stmt: Select[Any] = (
|
|
113
119
|
select(
|
|
114
|
-
|
|
120
|
+
models.Trace.project_rowid,
|
|
115
121
|
coalesce(func.sum(models.SpanCost.prompt_cost), 0).label("prompt_cost"),
|
|
116
122
|
coalesce(func.sum(models.SpanCost.completion_cost), 0).label("completion_cost"),
|
|
117
123
|
coalesce(func.sum(models.SpanCost.total_cost), 0).label("total_cost"),
|
|
@@ -119,8 +125,10 @@ def _get_stmt(
|
|
|
119
125
|
coalesce(func.sum(models.SpanCost.completion_tokens), 0).label("completion_tokens"),
|
|
120
126
|
coalesce(func.sum(models.SpanCost.total_tokens), 0).label("total_tokens"),
|
|
121
127
|
)
|
|
122
|
-
.
|
|
123
|
-
.
|
|
128
|
+
.select_from(models.Trace)
|
|
129
|
+
.join(models.SpanCost, models.Trace.id == models.SpanCost.trace_rowid)
|
|
130
|
+
.where(models.Trace.project_rowid.in_(project_rowids))
|
|
131
|
+
.group_by(models.Trace.project_rowid)
|
|
124
132
|
)
|
|
125
133
|
|
|
126
134
|
if start_time:
|
|
@@ -132,7 +140,13 @@ def _get_stmt(
|
|
|
132
140
|
sf = SpanFilter(filter_condition)
|
|
133
141
|
stmt = sf(stmt.join_from(models.SpanCost, models.Span))
|
|
134
142
|
|
|
135
|
-
|
|
136
|
-
|
|
143
|
+
if session_filter_condition:
|
|
144
|
+
filtered_session_rowids = get_filtered_session_rowids_subquery(
|
|
145
|
+
session_filter_condition=session_filter_condition,
|
|
146
|
+
project_rowids=project_rowids,
|
|
147
|
+
start_time=start_time,
|
|
148
|
+
end_time=end_time,
|
|
149
|
+
)
|
|
150
|
+
stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
|
|
137
151
|
|
|
138
152
|
return stmt
|