arize-phoenix 10.14.0__tar.gz → 10.15.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-10.14.0 → arize_phoenix-10.15.0}/PKG-INFO +2 -1
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/pyproject.toml +1 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/model_provider.py +1 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/playground_clients.py +459 -0
- arize_phoenix-10.15.0/src/phoenix/server/api/helpers/prompts/conversions/aws.py +83 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/prompts/models.py +67 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +2 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/GenerativeProvider.py +33 -20
- arize_phoenix-10.15.0/src/phoenix/server/static/.vite/manifest.json +87 -0
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/components-CUUWyAMo.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/components-SpUMF1qV.js +257 -257
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/index-qiubV_74.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/index-DIlhmbjB.js +3 -3
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/pages-C4V07ozl.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/pages-YX47cEoQ.js +363 -363
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/vendor-Bfsiga8H.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/vendor-DCZoBorz.js +1 -1
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/vendor-arizeai-CQOWsrzm.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/vendor-arizeai-Ckci3irT.js +1 -1
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/vendor-codemirror-CrcGVhB2.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/vendor-codemirror-BODM513D.js +1 -1
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/vendor-recharts-Yyg3G-Rq.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/vendor-recharts-C9O2a-N3.js +1 -1
- arize_phoenix-10.14.0/src/phoenix/server/static/assets/vendor-shiki-OPjag7Hm.js → arize_phoenix-10.15.0/src/phoenix/server/static/assets/vendor-shiki-Dq54rRC7.js +1 -1
- arize_phoenix-10.15.0/src/phoenix/version.py +1 -0
- arize_phoenix-10.14.0/src/phoenix/server/static/.vite/manifest.json +0 -87
- arize_phoenix-10.14.0/src/phoenix/version.py +0 -1
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/.gitignore +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/IP_NOTICE +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/LICENSE +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/README.md +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/config.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/insertion/types.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/queries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Model.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/authorization.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/cost_tracking/cost_lookup.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/sender.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/assets/vendor-WIZid84E.css +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-10.14.0 → arize_phoenix-10.15.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: 10.
|
|
3
|
+
Version: 10.15.0
|
|
4
4
|
Summary: AI Observability and Evaluation
|
|
5
5
|
Project-URL: Documentation, https://arize.com/docs/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -58,6 +58,7 @@ Provides-Extra: container
|
|
|
58
58
|
Requires-Dist: aiohttp; extra == 'container'
|
|
59
59
|
Requires-Dist: anthropic>=0.49.0; extra == 'container'
|
|
60
60
|
Requires-Dist: azure-identity; extra == 'container'
|
|
61
|
+
Requires-Dist: boto3; extra == 'container'
|
|
61
62
|
Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
|
|
62
63
|
Requires-Dist: google-generativeai; extra == 'container'
|
|
63
64
|
Requires-Dist: numba>=0.60.0; extra == 'container'
|
{arize_phoenix-10.14.0 → arize_phoenix-10.15.0}/src/phoenix/server/api/helpers/playground_clients.py
RENAMED
|
@@ -597,6 +597,465 @@ class OllamaStreamingClient(OpenAIBaseStreamingClient):
|
|
|
597
597
|
self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.OPENAI.value
|
|
598
598
|
|
|
599
599
|
|
|
600
|
+
@register_llm_client(
|
|
601
|
+
provider_key=GenerativeProviderKey.AWS,
|
|
602
|
+
model_names=[
|
|
603
|
+
PROVIDER_DEFAULT,
|
|
604
|
+
"anthropic.claude-3-5-sonnet-20240620-v1:0",
|
|
605
|
+
"anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
606
|
+
"anthropic.claude-3-haiku-20240307-v1:0",
|
|
607
|
+
"anthropic.claude-3-5-sonnet-20241022-v2:0",
|
|
608
|
+
"anthropic.claude-3-5-haiku-20241022-v1:0",
|
|
609
|
+
"anthropic.claude-opus-4-20250514-v1:0",
|
|
610
|
+
"anthropic.claude-sonnet-4-20250514-v1:0",
|
|
611
|
+
"amazon.titan-embed-text-v2:0",
|
|
612
|
+
"amazon.nova-pro-v1:0",
|
|
613
|
+
"amazon.nova-premier-v1:0:8k",
|
|
614
|
+
"amazon.nova-premier-v1:0:20k",
|
|
615
|
+
"amazon.nova-premier-v1:0:1000k",
|
|
616
|
+
"amazon.nova-premier-v1:0:mm",
|
|
617
|
+
"amazon.nova-premier-v1:0",
|
|
618
|
+
"amazon.nova-lite-v1:0",
|
|
619
|
+
"amazon.nova-micro-v1:0",
|
|
620
|
+
"deepseek.r1-v1:0",
|
|
621
|
+
"mistral.pixtral-large-2502-v1:0",
|
|
622
|
+
"meta.llama3-1-8b-instruct-v1:0:128k",
|
|
623
|
+
"meta.llama3-1-8b-instruct-v1:0",
|
|
624
|
+
"meta.llama3-1-70b-instruct-v1:0:128k",
|
|
625
|
+
"meta.llama3-1-70b-instruct-v1:0",
|
|
626
|
+
"meta.llama3-1-405b-instruct-v1:0",
|
|
627
|
+
"meta.llama3-2-11b-instruct-v1:0",
|
|
628
|
+
"meta.llama3-2-90b-instruct-v1:0",
|
|
629
|
+
"meta.llama3-2-1b-instruct-v1:0",
|
|
630
|
+
"meta.llama3-2-3b-instruct-v1:0",
|
|
631
|
+
"meta.llama3-3-70b-instruct-v1:0",
|
|
632
|
+
"meta.llama4-scout-17b-instruct-v1:0",
|
|
633
|
+
"meta.llama4-maverick-17b-instruct-v1:0",
|
|
634
|
+
],
|
|
635
|
+
)
|
|
636
|
+
class BedrockStreamingClient(PlaygroundStreamingClient):
|
|
637
|
+
def __init__(
|
|
638
|
+
self,
|
|
639
|
+
model: GenerativeModelInput,
|
|
640
|
+
credentials: Optional[list[PlaygroundClientCredential]] = None,
|
|
641
|
+
) -> None:
|
|
642
|
+
import boto3 # type: ignore[import-untyped]
|
|
643
|
+
|
|
644
|
+
super().__init__(model=model, credentials=credentials)
|
|
645
|
+
self.region = model.region or "us-east-1"
|
|
646
|
+
self.api = "converse"
|
|
647
|
+
self.aws_access_key_id = _get_credential_value(credentials, "AWS_ACCESS_KEY_ID") or getenv(
|
|
648
|
+
"AWS_ACCESS_KEY_ID"
|
|
649
|
+
)
|
|
650
|
+
self.aws_secret_access_key = _get_credential_value(
|
|
651
|
+
credentials, "AWS_SECRET_ACCESS_KEY"
|
|
652
|
+
) or getenv("AWS_SECRET_ACCESS_KEY")
|
|
653
|
+
self.aws_session_token = _get_credential_value(credentials, "AWS_SESSION_TOKEN") or getenv(
|
|
654
|
+
"AWS_SESSION_TOKEN"
|
|
655
|
+
)
|
|
656
|
+
self.model_name = model.name
|
|
657
|
+
self.client = boto3.client(
|
|
658
|
+
service_name="bedrock-runtime",
|
|
659
|
+
region_name="us-east-1", # match the default region in the UI
|
|
660
|
+
aws_access_key_id=self.aws_access_key_id,
|
|
661
|
+
aws_secret_access_key=self.aws_secret_access_key,
|
|
662
|
+
aws_session_token=self.aws_session_token,
|
|
663
|
+
)
|
|
664
|
+
|
|
665
|
+
self._attributes[LLM_PROVIDER] = "aws"
|
|
666
|
+
self._attributes[LLM_SYSTEM] = "aws"
|
|
667
|
+
|
|
668
|
+
@classmethod
|
|
669
|
+
def dependencies(cls) -> list[Dependency]:
|
|
670
|
+
return [Dependency(name="boto3")]
|
|
671
|
+
|
|
672
|
+
@classmethod
|
|
673
|
+
def supported_invocation_parameters(cls) -> list[InvocationParameter]:
|
|
674
|
+
return [
|
|
675
|
+
IntInvocationParameter(
|
|
676
|
+
invocation_name="max_tokens",
|
|
677
|
+
canonical_name=CanonicalParameterName.MAX_COMPLETION_TOKENS,
|
|
678
|
+
label="Max Tokens",
|
|
679
|
+
default_value=1024,
|
|
680
|
+
),
|
|
681
|
+
BoundedFloatInvocationParameter(
|
|
682
|
+
invocation_name="temperature",
|
|
683
|
+
canonical_name=CanonicalParameterName.TEMPERATURE,
|
|
684
|
+
label="Temperature",
|
|
685
|
+
default_value=1.0,
|
|
686
|
+
min_value=0.0,
|
|
687
|
+
max_value=1.0,
|
|
688
|
+
),
|
|
689
|
+
BoundedFloatInvocationParameter(
|
|
690
|
+
invocation_name="top_p",
|
|
691
|
+
canonical_name=CanonicalParameterName.TOP_P,
|
|
692
|
+
label="Top P",
|
|
693
|
+
default_value=1.0,
|
|
694
|
+
min_value=0.0,
|
|
695
|
+
max_value=1.0,
|
|
696
|
+
),
|
|
697
|
+
JSONInvocationParameter(
|
|
698
|
+
invocation_name="tool_choice",
|
|
699
|
+
label="Tool Choice",
|
|
700
|
+
canonical_name=CanonicalParameterName.TOOL_CHOICE,
|
|
701
|
+
),
|
|
702
|
+
]
|
|
703
|
+
|
|
704
|
+
async def chat_completion_create(
|
|
705
|
+
self,
|
|
706
|
+
messages: list[
|
|
707
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
708
|
+
],
|
|
709
|
+
tools: list[JSONScalarType],
|
|
710
|
+
**invocation_parameters: Any,
|
|
711
|
+
) -> AsyncIterator[ChatCompletionChunk]:
|
|
712
|
+
import boto3
|
|
713
|
+
|
|
714
|
+
if (
|
|
715
|
+
self.client.meta.region_name != self.region
|
|
716
|
+
): # override the region if it's different from the default
|
|
717
|
+
self.client = boto3.client(
|
|
718
|
+
"bedrock-runtime",
|
|
719
|
+
region_name=self.region,
|
|
720
|
+
aws_access_key_id=self.aws_access_key_id,
|
|
721
|
+
aws_secret_access_key=self.aws_secret_access_key,
|
|
722
|
+
aws_session_token=self.aws_session_token,
|
|
723
|
+
)
|
|
724
|
+
if self.api == "invoke":
|
|
725
|
+
async for chunk in self._handle_invoke_api(messages, tools, invocation_parameters):
|
|
726
|
+
yield chunk
|
|
727
|
+
else:
|
|
728
|
+
async for chunk in self._handle_converse_api(messages, tools, invocation_parameters):
|
|
729
|
+
yield chunk
|
|
730
|
+
|
|
731
|
+
async def _handle_converse_api(
|
|
732
|
+
self,
|
|
733
|
+
messages: list[
|
|
734
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
735
|
+
],
|
|
736
|
+
tools: list[JSONScalarType],
|
|
737
|
+
invocation_parameters: dict[str, Any],
|
|
738
|
+
) -> AsyncIterator[ChatCompletionChunk]:
|
|
739
|
+
"""
|
|
740
|
+
Handle the converse API.
|
|
741
|
+
"""
|
|
742
|
+
# Build messages in Converse API format
|
|
743
|
+
converse_messages = self._build_converse_messages(messages)
|
|
744
|
+
|
|
745
|
+
# Build the request parameters for Converse API
|
|
746
|
+
converse_params: dict[str, Any] = {
|
|
747
|
+
"modelId": f"us.{self.model_name}",
|
|
748
|
+
"messages": converse_messages,
|
|
749
|
+
"inferenceConfig": {
|
|
750
|
+
"maxTokens": invocation_parameters["max_tokens"],
|
|
751
|
+
"temperature": invocation_parameters["temperature"],
|
|
752
|
+
"topP": invocation_parameters["top_p"],
|
|
753
|
+
},
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
# Add system prompt if available
|
|
757
|
+
system_prompt = self._extract_system_prompt(messages)
|
|
758
|
+
if system_prompt:
|
|
759
|
+
converse_params["system"] = [{"text": system_prompt}]
|
|
760
|
+
|
|
761
|
+
# Add tools if provided
|
|
762
|
+
if tools:
|
|
763
|
+
converse_params["toolConfig"] = {"tools": tools}
|
|
764
|
+
if (
|
|
765
|
+
"tool_choice" in invocation_parameters
|
|
766
|
+
and invocation_parameters["tool_choice"]["type"] != "none"
|
|
767
|
+
):
|
|
768
|
+
converse_params["toolConfig"]["toolChoice"] = {}
|
|
769
|
+
|
|
770
|
+
if invocation_parameters["tool_choice"]["type"] == "auto":
|
|
771
|
+
converse_params["toolConfig"]["toolChoice"]["auto"] = {}
|
|
772
|
+
elif invocation_parameters["tool_choice"]["type"] == "any":
|
|
773
|
+
converse_params["toolConfig"]["toolChoice"]["any"] = {}
|
|
774
|
+
else:
|
|
775
|
+
converse_params["toolConfig"]["toolChoice"]["tool"] = {
|
|
776
|
+
"name": invocation_parameters["tool_choice"]["name"],
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
# Make the streaming API call
|
|
780
|
+
response = self.client.converse_stream(**converse_params)
|
|
781
|
+
|
|
782
|
+
# Track active tool calls
|
|
783
|
+
active_tool_calls = {} # contentBlockIndex -> {id, name, arguments_buffer}
|
|
784
|
+
|
|
785
|
+
# Process the event stream
|
|
786
|
+
event_stream = response.get("stream")
|
|
787
|
+
|
|
788
|
+
for event in event_stream:
|
|
789
|
+
# Handle content block start events
|
|
790
|
+
if "contentBlockStart" in event:
|
|
791
|
+
content_block_start = event["contentBlockStart"]
|
|
792
|
+
start_event = content_block_start.get("start", {})
|
|
793
|
+
block_index = content_block_start.get(
|
|
794
|
+
"contentBlockIndex", 0
|
|
795
|
+
) # Get the actual index
|
|
796
|
+
|
|
797
|
+
if "toolUse" in start_event:
|
|
798
|
+
tool_use = start_event["toolUse"]
|
|
799
|
+
active_tool_calls[block_index] = { # Use the actual block index
|
|
800
|
+
"id": tool_use.get("toolUseId"),
|
|
801
|
+
"name": tool_use.get("name"),
|
|
802
|
+
"arguments_buffer": "",
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
# Yield initial tool call chunk
|
|
806
|
+
yield ToolCallChunk(
|
|
807
|
+
id=tool_use.get("toolUseId"),
|
|
808
|
+
function=FunctionCallChunk(
|
|
809
|
+
name=tool_use.get("name"),
|
|
810
|
+
arguments="",
|
|
811
|
+
),
|
|
812
|
+
)
|
|
813
|
+
|
|
814
|
+
# Handle content block delta events
|
|
815
|
+
elif "contentBlockDelta" in event:
|
|
816
|
+
content_delta = event["contentBlockDelta"]
|
|
817
|
+
delta = content_delta.get("delta", {})
|
|
818
|
+
delta_index = content_delta.get("contentBlockIndex", 0)
|
|
819
|
+
|
|
820
|
+
# Handle text delta
|
|
821
|
+
if "text" in delta:
|
|
822
|
+
yield TextChunk(content=delta["text"])
|
|
823
|
+
|
|
824
|
+
# Handle tool use delta
|
|
825
|
+
elif "toolUse" in delta:
|
|
826
|
+
tool_delta = delta["toolUse"]
|
|
827
|
+
if "input" in tool_delta and delta_index in active_tool_calls:
|
|
828
|
+
# Accumulate tool arguments
|
|
829
|
+
json_chunk = tool_delta["input"]
|
|
830
|
+
active_tool_calls[delta_index]["arguments_buffer"] += json_chunk
|
|
831
|
+
|
|
832
|
+
# Yield incremental argument update
|
|
833
|
+
yield ToolCallChunk(
|
|
834
|
+
id=active_tool_calls[delta_index]["id"],
|
|
835
|
+
function=FunctionCallChunk(
|
|
836
|
+
name=active_tool_calls[delta_index]["name"],
|
|
837
|
+
arguments=json_chunk,
|
|
838
|
+
),
|
|
839
|
+
)
|
|
840
|
+
|
|
841
|
+
# Handle content block stop events
|
|
842
|
+
elif "contentBlockStop" in event:
|
|
843
|
+
stop_index = event["contentBlockStop"].get("contentBlockIndex", 0)
|
|
844
|
+
if stop_index in active_tool_calls:
|
|
845
|
+
del active_tool_calls[stop_index]
|
|
846
|
+
|
|
847
|
+
elif "metadata" in event:
|
|
848
|
+
self._attributes.update(
|
|
849
|
+
{
|
|
850
|
+
LLM_TOKEN_COUNT_PROMPT: event.get("metadata")
|
|
851
|
+
.get("usage", {})
|
|
852
|
+
.get("inputTokens", 0)
|
|
853
|
+
}
|
|
854
|
+
)
|
|
855
|
+
|
|
856
|
+
self._attributes.update(
|
|
857
|
+
{
|
|
858
|
+
LLM_TOKEN_COUNT_COMPLETION: event.get("metadata")
|
|
859
|
+
.get("usage", {})
|
|
860
|
+
.get("outputTokens", 0)
|
|
861
|
+
}
|
|
862
|
+
)
|
|
863
|
+
|
|
864
|
+
self._attributes.update(
|
|
865
|
+
{
|
|
866
|
+
LLM_TOKEN_COUNT_TOTAL: event.get("metadata")
|
|
867
|
+
.get("usage", {})
|
|
868
|
+
.get("totalTokens", 0)
|
|
869
|
+
}
|
|
870
|
+
)
|
|
871
|
+
|
|
872
|
+
async def _handle_invoke_api(
|
|
873
|
+
self,
|
|
874
|
+
messages: list[
|
|
875
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
876
|
+
],
|
|
877
|
+
tools: list[JSONScalarType],
|
|
878
|
+
invocation_parameters: dict[str, Any],
|
|
879
|
+
) -> AsyncIterator[ChatCompletionChunk]:
|
|
880
|
+
if "anthropic" not in self.model_name:
|
|
881
|
+
raise ValueError("Invoke API is only supported for Anthropic models")
|
|
882
|
+
|
|
883
|
+
bedrock_messages, system_prompt = self._build_bedrock_messages(messages)
|
|
884
|
+
bedrock_params = {
|
|
885
|
+
"anthropic_version": "bedrock-2023-05-31",
|
|
886
|
+
"max_tokens": invocation_parameters["max_tokens"],
|
|
887
|
+
"messages": bedrock_messages,
|
|
888
|
+
"system": system_prompt,
|
|
889
|
+
"temperature": invocation_parameters["temperature"],
|
|
890
|
+
"top_p": invocation_parameters["top_p"],
|
|
891
|
+
"tools": tools,
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
response = self.client.invoke_model_with_response_stream(
|
|
895
|
+
modelId=f"us.{self.model_name}", # or another Claude model
|
|
896
|
+
contentType="application/json",
|
|
897
|
+
accept="application/json",
|
|
898
|
+
body=json.dumps(bedrock_params),
|
|
899
|
+
trace="ENABLED_FULL",
|
|
900
|
+
)
|
|
901
|
+
|
|
902
|
+
# The response['body'] is an EventStream object
|
|
903
|
+
event_stream = response["body"]
|
|
904
|
+
|
|
905
|
+
# Track active tool calls and their accumulating arguments
|
|
906
|
+
active_tool_calls: dict[int, dict[str, Any]] = {} # index -> {id, name, arguments_buffer}
|
|
907
|
+
|
|
908
|
+
for event in event_stream:
|
|
909
|
+
if "chunk" in event:
|
|
910
|
+
chunk_data = json.loads(event["chunk"]["bytes"].decode("utf-8"))
|
|
911
|
+
|
|
912
|
+
# Handle text content
|
|
913
|
+
if chunk_data.get("type") == "content_block_delta":
|
|
914
|
+
delta = chunk_data.get("delta", {})
|
|
915
|
+
index = chunk_data.get("index", 0)
|
|
916
|
+
|
|
917
|
+
if delta.get("type") == "text_delta" and "text" in delta:
|
|
918
|
+
yield TextChunk(content=delta["text"])
|
|
919
|
+
|
|
920
|
+
elif delta.get("type") == "input_json_delta":
|
|
921
|
+
# Accumulate tool arguments
|
|
922
|
+
if index in active_tool_calls:
|
|
923
|
+
active_tool_calls[index]["arguments_buffer"] += delta.get(
|
|
924
|
+
"partial_json", ""
|
|
925
|
+
)
|
|
926
|
+
# Yield incremental argument update
|
|
927
|
+
yield ToolCallChunk(
|
|
928
|
+
id=active_tool_calls[index]["id"],
|
|
929
|
+
function=FunctionCallChunk(
|
|
930
|
+
name=active_tool_calls[index]["name"],
|
|
931
|
+
arguments=delta.get("partial_json", ""),
|
|
932
|
+
),
|
|
933
|
+
)
|
|
934
|
+
|
|
935
|
+
# Handle tool call start
|
|
936
|
+
elif chunk_data.get("type") == "content_block_start":
|
|
937
|
+
content_block = chunk_data.get("content_block", {})
|
|
938
|
+
index = chunk_data.get("index", 0)
|
|
939
|
+
|
|
940
|
+
if content_block.get("type") == "tool_use":
|
|
941
|
+
# Initialize tool call tracking
|
|
942
|
+
active_tool_calls[index] = {
|
|
943
|
+
"id": content_block.get("id"),
|
|
944
|
+
"name": content_block.get("name"),
|
|
945
|
+
"arguments_buffer": "",
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
# Yield initial tool call chunk
|
|
949
|
+
yield ToolCallChunk(
|
|
950
|
+
id=content_block.get("id"),
|
|
951
|
+
function=FunctionCallChunk(
|
|
952
|
+
name=content_block.get("name"),
|
|
953
|
+
arguments="", # Start with empty, will be filled by deltas
|
|
954
|
+
),
|
|
955
|
+
)
|
|
956
|
+
|
|
957
|
+
# Handle content block stop (tool call complete)
|
|
958
|
+
elif chunk_data.get("type") == "content_block_stop":
|
|
959
|
+
index = chunk_data.get("index", 0)
|
|
960
|
+
if index in active_tool_calls:
|
|
961
|
+
# Tool call is complete, clean up
|
|
962
|
+
del active_tool_calls[index]
|
|
963
|
+
|
|
964
|
+
elif chunk_data.get("type") == "message_stop":
|
|
965
|
+
self._attributes.update(
|
|
966
|
+
{
|
|
967
|
+
LLM_TOKEN_COUNT_COMPLETION: chunk_data.get(
|
|
968
|
+
"amazon-bedrock-invocationMetrics", {}
|
|
969
|
+
).get("outputTokenCount", 0)
|
|
970
|
+
}
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
self._attributes.update(
|
|
974
|
+
{
|
|
975
|
+
LLM_TOKEN_COUNT_PROMPT: chunk_data.get(
|
|
976
|
+
"amazon-bedrock-invocationMetrics", {}
|
|
977
|
+
).get("inputTokenCount", 0)
|
|
978
|
+
}
|
|
979
|
+
)
|
|
980
|
+
|
|
981
|
+
def _build_bedrock_messages(
|
|
982
|
+
self,
|
|
983
|
+
messages: list[
|
|
984
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
985
|
+
],
|
|
986
|
+
) -> tuple[list[dict[str, Any]], str]:
|
|
987
|
+
bedrock_messages = []
|
|
988
|
+
system_prompt = ""
|
|
989
|
+
for role, content, _, _ in messages:
|
|
990
|
+
if role == ChatCompletionMessageRole.USER:
|
|
991
|
+
bedrock_messages.append(
|
|
992
|
+
{
|
|
993
|
+
"role": "user",
|
|
994
|
+
"content": content,
|
|
995
|
+
}
|
|
996
|
+
)
|
|
997
|
+
elif role == ChatCompletionMessageRole.AI:
|
|
998
|
+
bedrock_messages.append(
|
|
999
|
+
{
|
|
1000
|
+
"role": "assistant",
|
|
1001
|
+
"content": content,
|
|
1002
|
+
}
|
|
1003
|
+
)
|
|
1004
|
+
elif role == ChatCompletionMessageRole.SYSTEM:
|
|
1005
|
+
system_prompt += content + "\n"
|
|
1006
|
+
return bedrock_messages, system_prompt
|
|
1007
|
+
|
|
1008
|
+
def _extract_system_prompt(
|
|
1009
|
+
self,
|
|
1010
|
+
messages: list[
|
|
1011
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
1012
|
+
],
|
|
1013
|
+
) -> str:
|
|
1014
|
+
"""Extract system prompt from messages."""
|
|
1015
|
+
system_prompts = []
|
|
1016
|
+
for role, content, _, _ in messages:
|
|
1017
|
+
if role == ChatCompletionMessageRole.SYSTEM:
|
|
1018
|
+
system_prompts.append(content)
|
|
1019
|
+
return "\n".join(system_prompts)
|
|
1020
|
+
|
|
1021
|
+
def _build_converse_messages(
|
|
1022
|
+
self,
|
|
1023
|
+
messages: list[
|
|
1024
|
+
tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
|
|
1025
|
+
],
|
|
1026
|
+
) -> list[dict[str, Any]]:
|
|
1027
|
+
"""Convert messages to Converse API format."""
|
|
1028
|
+
converse_messages: list[dict[str, Any]] = []
|
|
1029
|
+
for role, content, _id, tool_calls in messages:
|
|
1030
|
+
if role == ChatCompletionMessageRole.USER:
|
|
1031
|
+
converse_messages.append({"role": "user", "content": [{"text": content}]})
|
|
1032
|
+
elif role == ChatCompletionMessageRole.TOOL:
|
|
1033
|
+
converse_messages.append(
|
|
1034
|
+
{
|
|
1035
|
+
"role": "user",
|
|
1036
|
+
"content": [
|
|
1037
|
+
{
|
|
1038
|
+
"toolResult": {
|
|
1039
|
+
"toolUseId": _id,
|
|
1040
|
+
"content": [{"json": json.loads(content)}],
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
],
|
|
1044
|
+
}
|
|
1045
|
+
)
|
|
1046
|
+
|
|
1047
|
+
elif role == ChatCompletionMessageRole.AI:
|
|
1048
|
+
# Handle assistant messages with potential tool calls
|
|
1049
|
+
message: dict[str, Any] = {"role": "assistant", "content": []}
|
|
1050
|
+
if content:
|
|
1051
|
+
message["content"].append({"text": content})
|
|
1052
|
+
if tool_calls:
|
|
1053
|
+
for tool_call in tool_calls:
|
|
1054
|
+
message["content"].append(tool_call)
|
|
1055
|
+
converse_messages.append(message)
|
|
1056
|
+
return converse_messages
|
|
1057
|
+
|
|
1058
|
+
|
|
600
1059
|
@register_llm_client(
|
|
601
1060
|
provider_key=GenerativeProviderKey.OPENAI,
|
|
602
1061
|
model_names=[
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Optional, Union
|
|
4
|
+
|
|
5
|
+
from typing_extensions import assert_never
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from anthropic.types import (
|
|
9
|
+
ToolChoiceAnyParam,
|
|
10
|
+
ToolChoiceAutoParam,
|
|
11
|
+
ToolChoiceParam,
|
|
12
|
+
ToolChoiceToolParam,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
from phoenix.server.api.helpers.prompts.models import (
|
|
16
|
+
PromptToolChoiceNone,
|
|
17
|
+
PromptToolChoiceOneOrMore,
|
|
18
|
+
PromptToolChoiceSpecificFunctionTool,
|
|
19
|
+
PromptToolChoiceZeroOrMore,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AwsToolChoiceConversion:
|
|
24
|
+
@staticmethod
|
|
25
|
+
def to_aws(
|
|
26
|
+
obj: Union[
|
|
27
|
+
PromptToolChoiceNone,
|
|
28
|
+
PromptToolChoiceZeroOrMore,
|
|
29
|
+
PromptToolChoiceOneOrMore,
|
|
30
|
+
PromptToolChoiceSpecificFunctionTool,
|
|
31
|
+
],
|
|
32
|
+
disable_parallel_tool_use: Optional[bool] = None,
|
|
33
|
+
) -> ToolChoiceParam:
|
|
34
|
+
if obj.type == "zero_or_more":
|
|
35
|
+
choice_auto: ToolChoiceAutoParam = {"type": "auto"}
|
|
36
|
+
if disable_parallel_tool_use is not None:
|
|
37
|
+
choice_auto["disable_parallel_tool_use"] = disable_parallel_tool_use
|
|
38
|
+
return choice_auto
|
|
39
|
+
if obj.type == "one_or_more":
|
|
40
|
+
choice_any: ToolChoiceAnyParam = {"type": "any"}
|
|
41
|
+
if disable_parallel_tool_use is not None:
|
|
42
|
+
choice_any["disable_parallel_tool_use"] = disable_parallel_tool_use
|
|
43
|
+
return choice_any
|
|
44
|
+
if obj.type == "specific_function":
|
|
45
|
+
choice_tool: ToolChoiceToolParam = {"type": "tool", "name": obj.function_name}
|
|
46
|
+
if disable_parallel_tool_use is not None:
|
|
47
|
+
choice_tool["disable_parallel_tool_use"] = disable_parallel_tool_use
|
|
48
|
+
return choice_tool
|
|
49
|
+
if obj.type == "none":
|
|
50
|
+
return {"type": "none"}
|
|
51
|
+
assert_never(obj.type)
|
|
52
|
+
|
|
53
|
+
@staticmethod
|
|
54
|
+
def from_aws(
|
|
55
|
+
obj: ToolChoiceParam,
|
|
56
|
+
) -> Union[
|
|
57
|
+
PromptToolChoiceNone,
|
|
58
|
+
PromptToolChoiceZeroOrMore,
|
|
59
|
+
PromptToolChoiceOneOrMore,
|
|
60
|
+
PromptToolChoiceSpecificFunctionTool,
|
|
61
|
+
]:
|
|
62
|
+
from phoenix.server.api.helpers.prompts.models import (
|
|
63
|
+
PromptToolChoiceNone,
|
|
64
|
+
PromptToolChoiceOneOrMore,
|
|
65
|
+
PromptToolChoiceSpecificFunctionTool,
|
|
66
|
+
PromptToolChoiceZeroOrMore,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
if obj["type"] == "auto":
|
|
70
|
+
choice_zero_or_more = PromptToolChoiceZeroOrMore(type="zero_or_more")
|
|
71
|
+
return choice_zero_or_more
|
|
72
|
+
if obj["type"] == "any":
|
|
73
|
+
choice_one_or_more = PromptToolChoiceOneOrMore(type="one_or_more")
|
|
74
|
+
return choice_one_or_more
|
|
75
|
+
if obj["type"] == "tool":
|
|
76
|
+
choice_function_tool = PromptToolChoiceSpecificFunctionTool(
|
|
77
|
+
type="specific_function",
|
|
78
|
+
function_name=obj["name"],
|
|
79
|
+
)
|
|
80
|
+
return choice_function_tool
|
|
81
|
+
if obj["type"] == "none":
|
|
82
|
+
return PromptToolChoiceNone(type="none")
|
|
83
|
+
assert_never(obj)
|