arize-phoenix 11.6.2__tar.gz → 11.8.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.6.2 → arize_phoenix-11.8.0}/PKG-INFO +22 -10
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/README.md +13 -1
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/pyproject.toml +10 -8
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/config.py +33 -0
- arize_phoenix-11.8.0/src/phoenix/datetime_utils.py +226 -0
- arize_phoenix-11.8.0/src/phoenix/db/helpers.py +330 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/functions.py +66 -20
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/tracing.py +2 -2
- arize_phoenix-11.8.0/src/phoenix/server/api/auth.py +75 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +6 -7
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/exceptions.py +6 -0
- arize_phoenix-11.8.0/src/phoenix/server/api/input_types/TimeBinConfig.py +23 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/oauth2.py +19 -2
- arize_phoenix-11.8.0/src/phoenix/server/api/types/CostBreakdown.py +12 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Project.py +341 -73
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/app.py +7 -3
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/authorization.py +27 -2
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +22 -16
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/span_cost_calculator.py +2 -8
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/sender.py +2 -1
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +3 -0
- arize_phoenix-11.8.0/src/phoenix/server/static/.vite/manifest.json +87 -0
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/components-BZHttBll.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/components-5M9nebi4.js +363 -283
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/index-AbJf1oNh.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/index-OU2WTnGN.js +27 -20
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/pages-5yQ-jl70.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/pages-DF8rqxJ4.js +416 -396
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/vendor-DRWIRkSJ.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-Bl7CyFDw.js +147 -147
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/vendor-arizeai-DUhQaeau.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-arizeai-B_viEUUA.js +18 -480
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/vendor-codemirror-D_6Q6Auv.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-codemirror-vlcH1_iR.js +1 -1
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/vendor-recharts-BNBwj7vz.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-recharts-C9cQu72o.js +25 -25
- arize_phoenix-11.6.2/src/phoenix/server/static/assets/vendor-shiki-k1qj_XjP.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-shiki-BsknB7bv.js +1 -1
- arize_phoenix-11.8.0/src/phoenix/version.py +1 -0
- arize_phoenix-11.6.2/src/phoenix/datetime_utils.py +0 -115
- arize_phoenix-11.6.2/src/phoenix/db/helpers.py +0 -175
- arize_phoenix-11.6.2/src/phoenix/server/api/auth.py +0 -53
- arize_phoenix-11.6.2/src/phoenix/server/api/types/CostBreakdown.py +0 -15
- arize_phoenix-11.6.2/src/phoenix/server/static/.vite/manifest.json +0 -87
- arize_phoenix-11.6.2/src/phoenix/version.py +0 -1
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/.gitignore +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/IP_NOTICE +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/LICENSE +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/types.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/token_price_customization.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/queries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/assets/vendor-WIZid84E.css +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-11.6.2 → arize_phoenix-11.8.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: 11.
|
|
3
|
+
Version: 11.8.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
|
|
@@ -40,7 +40,7 @@ Requires-Dist: opentelemetry-sdk
|
|
|
40
40
|
Requires-Dist: opentelemetry-semantic-conventions
|
|
41
41
|
Requires-Dist: pandas>=1.0
|
|
42
42
|
Requires-Dist: prometheus-client
|
|
43
|
-
Requires-Dist: protobuf
|
|
43
|
+
Requires-Dist: protobuf>=4.25.8
|
|
44
44
|
Requires-Dist: psutil
|
|
45
45
|
Requires-Dist: pyarrow
|
|
46
46
|
Requires-Dist: pydantic>=2.1.0
|
|
@@ -65,13 +65,13 @@ Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
|
|
|
65
65
|
Requires-Dist: google-generativeai; extra == 'container'
|
|
66
66
|
Requires-Dist: numba>=0.60.0; extra == 'container'
|
|
67
67
|
Requires-Dist: openai>=1.0.0; extra == 'container'
|
|
68
|
-
Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
|
|
69
|
-
Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'container'
|
|
70
|
-
Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
|
|
71
|
-
Requires-Dist: opentelemetry-instrumentation-sqlalchemy; extra == 'container'
|
|
72
|
-
Requires-Dist: opentelemetry-proto
|
|
73
|
-
Requires-Dist: opentelemetry-sdk; extra == 'container'
|
|
74
|
-
Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
|
|
68
|
+
Requires-Dist: opentelemetry-exporter-otlp==1.33.1; extra == 'container'
|
|
69
|
+
Requires-Dist: opentelemetry-instrumentation-fastapi==0.54b1; extra == 'container'
|
|
70
|
+
Requires-Dist: opentelemetry-instrumentation-grpc==0.54b1; extra == 'container'
|
|
71
|
+
Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.54b1; extra == 'container'
|
|
72
|
+
Requires-Dist: opentelemetry-proto==1.33.1; extra == 'container'
|
|
73
|
+
Requires-Dist: opentelemetry-sdk==1.33.1; extra == 'container'
|
|
74
|
+
Requires-Dist: opentelemetry-semantic-conventions==0.54b1; extra == 'container'
|
|
75
75
|
Requires-Dist: prometheus-client; extra == 'container'
|
|
76
76
|
Requires-Dist: py-grpc-prometheus; extra == 'container'
|
|
77
77
|
Requires-Dist: strawberry-graphql[opentelemetry]==0.270.1; extra == 'container'
|
|
@@ -205,6 +205,7 @@ The `arize-phoenix` package includes the entire Phoenix platfom. However if you
|
|
|
205
205
|
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | Python [](https://pypi.org/project/arize-phoenix-client/) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
|
|
206
206
|
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | Python [](https://pypi.org/project/arize-phoenix-evals/) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
|
|
207
207
|
| [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | JavaScript [](https://www.npmjs.com/package/@arizeai/phoenix-client) | Client for the Arize Phoenix API |
|
|
208
|
+
| [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | TypeScript [](https://www.npmjs.com/package/@arizeai/phoenix-evals) | TypeScript evaluation library for LLM applications (alpha release) |
|
|
208
209
|
| [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | JavaScript [](https://www.npmjs.com/package/@arizeai/phoenix-mcp) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
|
|
209
210
|
|
|
210
211
|
## Tracing Integrations
|
|
@@ -248,9 +249,20 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
|
|
|
248
249
|
| [BeeAI](https://arize.com/docs/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
|
|
249
250
|
| [Mastra](https://arize.com/docs/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
|
|
250
251
|
|
|
252
|
+
### Java Integrations
|
|
253
|
+
|
|
254
|
+
| Integration | Package | Version Badge |
|
|
255
|
+
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
256
|
+
| [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
|
|
257
|
+
|
|
251
258
|
### Platforms
|
|
252
259
|
|
|
253
|
-
|
|
260
|
+
| Platform | Description | Docs |
|
|
261
|
+
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
262
|
+
| [Dify](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) | Open-source LLM app development platform | [Integration Guide](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) |
|
|
263
|
+
| [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) | Visual framework for building multi-agent and RAG applications | [Integration Guide](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) |
|
|
264
|
+
| [BeeAI](https://docs.beeai.dev/observability/agents-traceability) | AI agent framework with built-in observability | [Integration Guide](https://docs.beeai.dev/observability/agents-traceability) |
|
|
265
|
+
| [LiteLLM Proxy](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) | Proxy server for LLMs | [Integration Guide](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) |
|
|
254
266
|
|
|
255
267
|
## Community
|
|
256
268
|
|
|
@@ -72,6 +72,7 @@ The `arize-phoenix` package includes the entire Phoenix platfom. However if you
|
|
|
72
72
|
| [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | Python [](https://pypi.org/project/arize-phoenix-client/) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
|
|
73
73
|
| [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | Python [](https://pypi.org/project/arize-phoenix-evals/) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
|
|
74
74
|
| [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | JavaScript [](https://www.npmjs.com/package/@arizeai/phoenix-client) | Client for the Arize Phoenix API |
|
|
75
|
+
| [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | TypeScript [](https://www.npmjs.com/package/@arizeai/phoenix-evals) | TypeScript evaluation library for LLM applications (alpha release) |
|
|
75
76
|
| [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | JavaScript [](https://www.npmjs.com/package/@arizeai/phoenix-mcp) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
|
|
76
77
|
|
|
77
78
|
## Tracing Integrations
|
|
@@ -115,9 +116,20 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
|
|
|
115
116
|
| [BeeAI](https://arize.com/docs/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
|
|
116
117
|
| [Mastra](https://arize.com/docs/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
|
|
117
118
|
|
|
119
|
+
### Java Integrations
|
|
120
|
+
|
|
121
|
+
| Integration | Package | Version Badge |
|
|
122
|
+
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
123
|
+
| [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
|
|
124
|
+
|
|
118
125
|
### Platforms
|
|
119
126
|
|
|
120
|
-
|
|
127
|
+
| Platform | Description | Docs |
|
|
128
|
+
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
129
|
+
| [Dify](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) | Open-source LLM app development platform | [Integration Guide](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) |
|
|
130
|
+
| [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) | Visual framework for building multi-agent and RAG applications | [Integration Guide](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) |
|
|
131
|
+
| [BeeAI](https://docs.beeai.dev/observability/agents-traceability) | AI agent framework with built-in observability | [Integration Guide](https://docs.beeai.dev/observability/agents-traceability) |
|
|
132
|
+
| [LiteLLM Proxy](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) | Proxy server for LLMs | [Integration Guide](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) |
|
|
121
133
|
|
|
122
134
|
## Community
|
|
123
135
|
|
|
@@ -34,7 +34,7 @@ dependencies = [
|
|
|
34
34
|
"typing-extensions>=4.6",
|
|
35
35
|
"scipy",
|
|
36
36
|
"wrapt>=1.17.2",
|
|
37
|
-
"protobuf>=4.25.8
|
|
37
|
+
"protobuf>=4.25.8",
|
|
38
38
|
"grpcio",
|
|
39
39
|
"grpc-interceptor",
|
|
40
40
|
"tqdm",
|
|
@@ -131,13 +131,15 @@ container = [
|
|
|
131
131
|
"openai>=1.0.0",
|
|
132
132
|
"azure-identity",
|
|
133
133
|
"aiohttp", # used by azure-identity via azure.core.pipeline.transport
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"opentelemetry-
|
|
137
|
-
"opentelemetry-
|
|
138
|
-
"opentelemetry-
|
|
139
|
-
"opentelemetry-
|
|
140
|
-
"opentelemetry-instrumentation-
|
|
134
|
+
# Note: when updating opentelemetry dependencies, all packages must use versions
|
|
135
|
+
# released on the same date (e.g., 1.33.1/0.54b1) to ensure compatibility.
|
|
136
|
+
"opentelemetry-sdk==1.33.1",
|
|
137
|
+
"opentelemetry-proto==1.33.1",
|
|
138
|
+
"opentelemetry-exporter-otlp==1.33.1",
|
|
139
|
+
"opentelemetry-semantic-conventions==0.54b1",
|
|
140
|
+
"opentelemetry-instrumentation-fastapi==0.54b1", # https://github.com/open-telemetry/opentelemetry-python-contrib/issues/3637
|
|
141
|
+
"opentelemetry-instrumentation-sqlalchemy==0.54b1",
|
|
142
|
+
"opentelemetry-instrumentation-grpc==0.54b1",
|
|
141
143
|
"py-grpc-prometheus",
|
|
142
144
|
"strawberry-graphql[opentelemetry]==0.270.1",
|
|
143
145
|
"uvloop; platform_system != 'Windows'",
|
|
@@ -246,7 +246,14 @@ The URL to use for redirecting to a management interface that may be hosting Pho
|
|
|
246
246
|
the current user is within PHOENIX_ADMINS, a link will be added to the navigation menu to return to
|
|
247
247
|
this URL.
|
|
248
248
|
"""
|
|
249
|
+
ENV_PHOENIX_SUPPORT_EMAIL = "PHOENIX_SUPPORT_EMAIL"
|
|
250
|
+
"""
|
|
251
|
+
The support email address to display in error messages and notifications.
|
|
249
252
|
|
|
253
|
+
When set, this email will be included in error messages for insufficient storage
|
|
254
|
+
conditions and database usage notification emails, providing users with a direct
|
|
255
|
+
contact for assistance. If not set, error messages will not include contact information.
|
|
256
|
+
"""
|
|
250
257
|
|
|
251
258
|
# SMTP settings
|
|
252
259
|
ENV_PHOENIX_SMTP_HOSTNAME = "PHOENIX_SMTP_HOSTNAME"
|
|
@@ -1599,6 +1606,31 @@ def get_env_management_url() -> Optional[str]:
|
|
|
1599
1606
|
return getenv(ENV_PHOENIX_MANAGEMENT_URL)
|
|
1600
1607
|
|
|
1601
1608
|
|
|
1609
|
+
def get_env_support_email() -> Optional[str]:
|
|
1610
|
+
"""
|
|
1611
|
+
Get the support email address from the PHOENIX_SUPPORT_EMAIL environment variable.
|
|
1612
|
+
|
|
1613
|
+
Returns:
|
|
1614
|
+
The support email address if set, None otherwise.
|
|
1615
|
+
"""
|
|
1616
|
+
return getenv(ENV_PHOENIX_SUPPORT_EMAIL)
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
def validate_env_support_email() -> None:
|
|
1620
|
+
"""
|
|
1621
|
+
Validate the support email address configured in PHOENIX_SUPPORT_EMAIL.
|
|
1622
|
+
|
|
1623
|
+
Raises:
|
|
1624
|
+
ValueError: If the email address is invalid.
|
|
1625
|
+
"""
|
|
1626
|
+
if not (email := get_env_support_email()):
|
|
1627
|
+
return
|
|
1628
|
+
try:
|
|
1629
|
+
validate_email(email, check_deliverability=False)
|
|
1630
|
+
except EmailNotValidError as e:
|
|
1631
|
+
raise ValueError(f"Invalid email in {ENV_PHOENIX_SUPPORT_EMAIL}: '{email}'") from e
|
|
1632
|
+
|
|
1633
|
+
|
|
1602
1634
|
def verify_server_environment_variables() -> None:
|
|
1603
1635
|
"""Verify that the environment variables are set correctly. Raises an error otherwise."""
|
|
1604
1636
|
get_env_root_url()
|
|
@@ -1607,6 +1639,7 @@ def verify_server_environment_variables() -> None:
|
|
|
1607
1639
|
get_env_database_allocated_storage_capacity_gibibytes()
|
|
1608
1640
|
get_env_database_usage_email_warning_threshold_percentage()
|
|
1609
1641
|
get_env_database_usage_insertion_blocking_threshold_percentage()
|
|
1642
|
+
validate_env_support_email()
|
|
1610
1643
|
|
|
1611
1644
|
# Notify users about deprecated environment variables if they are being used.
|
|
1612
1645
|
if os.getenv("PHOENIX_ENABLE_WEBSOCKETS") is not None:
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
from datetime import datetime, timedelta, timezone, tzinfo
|
|
2
|
+
from typing import Any, Iterator, Literal, Optional, cast
|
|
3
|
+
|
|
4
|
+
import pandas as pd
|
|
5
|
+
import pytz
|
|
6
|
+
from pandas import Timestamp, to_datetime
|
|
7
|
+
from pandas.core.dtypes.common import (
|
|
8
|
+
is_datetime64_any_dtype,
|
|
9
|
+
is_datetime64tz_dtype,
|
|
10
|
+
is_numeric_dtype,
|
|
11
|
+
is_object_dtype,
|
|
12
|
+
)
|
|
13
|
+
from typing_extensions import assert_never
|
|
14
|
+
|
|
15
|
+
_LOCAL_TIMEZONE = datetime.now(timezone.utc).astimezone().tzinfo
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def local_now() -> datetime:
|
|
19
|
+
return datetime.now(timezone.utc).astimezone(tz=_LOCAL_TIMEZONE)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def normalize_datetime(
|
|
23
|
+
dt: Optional[datetime],
|
|
24
|
+
tz: Optional[tzinfo] = None,
|
|
25
|
+
) -> Optional[datetime]:
|
|
26
|
+
"""
|
|
27
|
+
If the input datetime is timezone-naive, it is localized as local timezone
|
|
28
|
+
unless tzinfo is specified.
|
|
29
|
+
"""
|
|
30
|
+
if not isinstance(dt, datetime):
|
|
31
|
+
return None
|
|
32
|
+
if not is_timezone_aware(dt):
|
|
33
|
+
dt = dt.replace(tzinfo=tz if tz else _LOCAL_TIMEZONE)
|
|
34
|
+
return dt.astimezone(timezone.utc)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def normalize_timestamps(
|
|
38
|
+
timestamps: "pd.Series[Any]",
|
|
39
|
+
) -> "pd.Series[Timestamp]":
|
|
40
|
+
"""
|
|
41
|
+
If the input timestamps contains a Unix or datetime timestamp or ISO8601
|
|
42
|
+
timestamp strings column, it is converted to UTC timezone-aware timestamp.
|
|
43
|
+
If a timestamp is timezone-naive, it is localized as per local timezone
|
|
44
|
+
and then converted to UTC.
|
|
45
|
+
"""
|
|
46
|
+
if is_numeric_dtype(timestamps):
|
|
47
|
+
return to_datetime(timestamps, unit="s", utc=True)
|
|
48
|
+
if is_datetime64tz_dtype(timestamps):
|
|
49
|
+
return timestamps.dt.tz_convert(pytz.utc)
|
|
50
|
+
if is_datetime64_any_dtype(timestamps):
|
|
51
|
+
return timestamps.dt.tz_localize(
|
|
52
|
+
datetime.now().astimezone().tzinfo,
|
|
53
|
+
).dt.tz_convert(
|
|
54
|
+
timezone.utc,
|
|
55
|
+
)
|
|
56
|
+
if is_object_dtype(timestamps):
|
|
57
|
+
timestamps = to_datetime(timestamps)
|
|
58
|
+
if timestamps.dt.tz is None:
|
|
59
|
+
timestamps = timestamps.dt.tz_localize(
|
|
60
|
+
datetime.now().astimezone().tzinfo,
|
|
61
|
+
)
|
|
62
|
+
return timestamps.dt.tz_convert(
|
|
63
|
+
timezone.utc,
|
|
64
|
+
)
|
|
65
|
+
raise ValueError(
|
|
66
|
+
"When provided, input timestamp column must have numeric or datetime dtype, "
|
|
67
|
+
f"but found {timestamps.dtype} instead."
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def floor_to_minute(dt: datetime) -> datetime:
|
|
72
|
+
"""Floor datetime to the minute by taking a round-trip through string
|
|
73
|
+
format because there isn't always an available function to strip the
|
|
74
|
+
nanoseconds if present."""
|
|
75
|
+
try:
|
|
76
|
+
dt_as_string = dt.astimezone(
|
|
77
|
+
timezone.utc,
|
|
78
|
+
).strftime(
|
|
79
|
+
MINUTE_DATETIME_FORMAT,
|
|
80
|
+
)
|
|
81
|
+
except ValueError:
|
|
82
|
+
# NOTE: as of Python 3.8.16, pandas 1.5.3:
|
|
83
|
+
# >>> isinstance(pd.NaT, datetime.datetime)
|
|
84
|
+
# True
|
|
85
|
+
return cast(datetime, pd.NaT)
|
|
86
|
+
return datetime.strptime(
|
|
87
|
+
dt_as_string,
|
|
88
|
+
MINUTE_DATETIME_FORMAT,
|
|
89
|
+
).astimezone(
|
|
90
|
+
timezone.utc,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
MINUTE_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:00%z"
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def right_open_time_range(
|
|
98
|
+
min_time: Optional[datetime],
|
|
99
|
+
max_time: Optional[datetime],
|
|
100
|
+
) -> tuple[Optional[datetime], Optional[datetime]]:
|
|
101
|
+
"""
|
|
102
|
+
First adds one minute to `max_time`, because time intervals are right
|
|
103
|
+
open and one minute is the smallest interval allowed, then rounds down
|
|
104
|
+
the times to the nearest minute.
|
|
105
|
+
"""
|
|
106
|
+
return (
|
|
107
|
+
floor_to_minute(min_time) if min_time else None,
|
|
108
|
+
floor_to_minute(max_time + timedelta(minutes=1)) if max_time else None,
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def is_timezone_aware(dt: datetime) -> bool:
|
|
113
|
+
"""
|
|
114
|
+
Returns True if the datetime is timezone-aware, False otherwise.
|
|
115
|
+
"""
|
|
116
|
+
return dt.tzinfo is not None and dt.tzinfo.utcoffset(dt) is not None
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def get_timestamp_range(
|
|
120
|
+
start_time: datetime,
|
|
121
|
+
end_time: datetime,
|
|
122
|
+
stride: Literal["minute", "hour", "day", "week", "month", "year"] = "minute",
|
|
123
|
+
utc_offset_minutes: int = 0,
|
|
124
|
+
) -> Iterator[datetime]:
|
|
125
|
+
"""
|
|
126
|
+
Generate a sequence of datetime objects at regular intervals between start and end times.
|
|
127
|
+
|
|
128
|
+
This function creates time intervals by rounding down the start time to the nearest
|
|
129
|
+
stride boundary in the specified timezone, then yielding timestamps at regular
|
|
130
|
+
intervals until reaching the end time. All returned timestamps are in UTC.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
start_time: The starting datetime (inclusive after rounding down to stride boundary).
|
|
134
|
+
Must be timezone-aware.
|
|
135
|
+
end_time: The ending datetime (exclusive). Must be timezone-aware.
|
|
136
|
+
stride: The interval between generated timestamps. Options:
|
|
137
|
+
- "minute": Generate timestamps every minute
|
|
138
|
+
- "hour": Generate timestamps every hour
|
|
139
|
+
- "day": Generate timestamps every day at midnight
|
|
140
|
+
- "week": Generate timestamps every week at Monday midnight
|
|
141
|
+
- "month": Generate timestamps on the 1st of each month at midnight
|
|
142
|
+
- "year": Generate timestamps on January 1st of each year at midnight
|
|
143
|
+
utc_offset_minutes: Timezone offset in minutes from UTC. Used to determine
|
|
144
|
+
the correct stride boundaries in local time. Positive values
|
|
145
|
+
are east of UTC, negative values are west of UTC.
|
|
146
|
+
|
|
147
|
+
Returns:
|
|
148
|
+
Iterator of datetime objects in UTC timezone, spaced at the specified stride
|
|
149
|
+
interval. The first timestamp is rounded down to the nearest stride boundary
|
|
150
|
+
in the local timezone (considering utc_offset_minutes).
|
|
151
|
+
|
|
152
|
+
Examples:
|
|
153
|
+
>>> from datetime import datetime, timezone
|
|
154
|
+
>>> start = datetime(2024, 1, 1, 12, 30, 45, tzinfo=timezone.utc)
|
|
155
|
+
>>> end = datetime(2024, 1, 1, 12, 33, 0, tzinfo=timezone.utc)
|
|
156
|
+
>>> list(get_timestamp_range(start, end, "minute"))
|
|
157
|
+
[datetime(2024, 1, 1, 12, 30, tzinfo=timezone.utc),
|
|
158
|
+
datetime(2024, 1, 1, 12, 31, tzinfo=timezone.utc),
|
|
159
|
+
datetime(2024, 1, 1, 12, 32, tzinfo=timezone.utc)]
|
|
160
|
+
|
|
161
|
+
>>> # Week stride rounds down to Monday
|
|
162
|
+
>>> start = datetime(2024, 1, 10, 12, 0, tzinfo=timezone.utc) # Wednesday
|
|
163
|
+
>>> end = datetime(2024, 1, 22, 0, 0, tzinfo=timezone.utc)
|
|
164
|
+
>>> list(get_timestamp_range(start, end, "week"))
|
|
165
|
+
[datetime(2024, 1, 8, 0, 0, tzinfo=timezone.utc), # Monday
|
|
166
|
+
datetime(2024, 1, 15, 0, 0, tzinfo=timezone.utc)] # Next Monday
|
|
167
|
+
|
|
168
|
+
Note:
|
|
169
|
+
- If end_time <= start_time (after rounding), returns an empty iterator
|
|
170
|
+
- Week intervals always start on Monday (weekday 0)
|
|
171
|
+
- Month intervals handle variable month lengths correctly including leap years
|
|
172
|
+
- The function works in local timezone for stride calculations but returns UTC
|
|
173
|
+
"""
|
|
174
|
+
if not is_timezone_aware(start_time) or not is_timezone_aware(end_time):
|
|
175
|
+
raise ValueError("start_time and end_time must be timezone-aware")
|
|
176
|
+
|
|
177
|
+
# Apply UTC offset to work in local timezone
|
|
178
|
+
offset_delta = timedelta(minutes=utc_offset_minutes)
|
|
179
|
+
local_start_time = start_time + offset_delta
|
|
180
|
+
|
|
181
|
+
# round down start_time to the nearest stride in local timezone
|
|
182
|
+
if stride == "minute":
|
|
183
|
+
t = local_start_time.replace(second=0, microsecond=0)
|
|
184
|
+
elif stride == "hour":
|
|
185
|
+
t = local_start_time.replace(minute=0, second=0, microsecond=0)
|
|
186
|
+
elif stride == "day":
|
|
187
|
+
t = local_start_time.replace(hour=0, minute=0, second=0, microsecond=0)
|
|
188
|
+
elif stride == "week":
|
|
189
|
+
# Round down to the beginning of the week (Monday)
|
|
190
|
+
days_since_monday = local_start_time.weekday()
|
|
191
|
+
t = local_start_time.replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(
|
|
192
|
+
days=days_since_monday
|
|
193
|
+
)
|
|
194
|
+
elif stride == "month":
|
|
195
|
+
t = local_start_time.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
|
|
196
|
+
elif stride == "year":
|
|
197
|
+
t = local_start_time.replace(month=1, day=1, hour=0, minute=0, second=0, microsecond=0)
|
|
198
|
+
else:
|
|
199
|
+
assert_never(stride)
|
|
200
|
+
|
|
201
|
+
# Convert back to UTC for comparisons and yielding
|
|
202
|
+
local_end_time = end_time + offset_delta
|
|
203
|
+
|
|
204
|
+
while t < local_end_time:
|
|
205
|
+
# Yield timestamp converted back to UTC
|
|
206
|
+
yield t - offset_delta
|
|
207
|
+
if stride == "minute":
|
|
208
|
+
t += timedelta(minutes=1)
|
|
209
|
+
elif stride == "hour":
|
|
210
|
+
t += timedelta(hours=1)
|
|
211
|
+
elif stride == "day":
|
|
212
|
+
t += timedelta(days=1)
|
|
213
|
+
elif stride == "week":
|
|
214
|
+
t += timedelta(weeks=1)
|
|
215
|
+
elif stride == "month":
|
|
216
|
+
next_month = t.month % 12 + 1
|
|
217
|
+
next_year = t.year + (t.month // 12)
|
|
218
|
+
t = t.replace(
|
|
219
|
+
year=next_year, month=next_month, day=1, hour=0, minute=0, second=0, microsecond=0
|
|
220
|
+
)
|
|
221
|
+
elif stride == "year":
|
|
222
|
+
t = t.replace(
|
|
223
|
+
year=t.year + 1, month=1, day=1, hour=0, minute=0, second=0, microsecond=0
|
|
224
|
+
)
|
|
225
|
+
else:
|
|
226
|
+
assert_never(stride)
|