arize-phoenix 8.2.2__tar.gz → 8.4.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.

Files changed (372) hide show
  1. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/.gitignore +3 -0
  2. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/PKG-INFO +4 -3
  3. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/README.md +1 -0
  4. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/pyproject.toml +2 -2
  5. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/config.py +32 -5
  6. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/models.py +1 -25
  7. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/context.py +6 -2
  8. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/__init__.py +4 -2
  9. arize_phoenix-8.4.0/src/phoenix/server/api/dataloaders/num_child_spans.py +35 -0
  10. arize_phoenix-8.2.2/src/phoenix/server/api/dataloaders/span_fields.py → arize_phoenix-8.4.0/src/phoenix/server/api/dataloaders/table_fields.py +21 -19
  11. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/playground_clients.py +4 -0
  12. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/prompts/models.py +1 -0
  13. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/queries.py +80 -20
  14. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Experiment.py +2 -4
  15. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExperimentRun.py +2 -2
  16. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +2 -2
  17. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Project.py +67 -38
  18. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ProjectSession.py +2 -2
  19. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Span.py +35 -2
  20. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Trace.py +98 -30
  21. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/app.py +6 -2
  22. arize_phoenix-8.4.0/src/phoenix/server/static/.vite/manifest.json +87 -0
  23. arize_phoenix-8.2.2/src/phoenix/server/static/assets/components-MeFAEc1z.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/components-BgFPI6sn.js +166 -167
  24. arize_phoenix-8.2.2/src/phoenix/server/static/assets/index-BSRuZ-_J.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/index-CIkk8uHr.js +9 -9
  25. arize_phoenix-8.2.2/src/phoenix/server/static/assets/pages-NrL4hb9q.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/pages-CmDiPH1A.js +660 -623
  26. arize_phoenix-8.2.2/src/phoenix/server/static/assets/vendor-Cqfydjep.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/vendor-CRRq3WgM.js +116 -116
  27. arize_phoenix-8.2.2/src/phoenix/server/static/assets/vendor-arizeai-WnerlUPN.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/vendor-arizeai-Dq64X_0o.js +1 -1
  28. arize_phoenix-8.2.2/src/phoenix/server/static/assets/vendor-codemirror-D-ZZKLFq.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/vendor-codemirror-C1oevlym.js +1 -1
  29. arize_phoenix-8.2.2/src/phoenix/server/static/assets/vendor-recharts-KY97ZPfK.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/vendor-recharts-CPj01S89.js +1 -1
  30. arize_phoenix-8.2.2/src/phoenix/server/static/assets/vendor-shiki-D5K9GnFn.js → arize_phoenix-8.4.0/src/phoenix/server/static/assets/vendor-shiki-aY7rz1pm.js +1 -1
  31. arize_phoenix-8.4.0/src/phoenix/version.py +1 -0
  32. arize_phoenix-8.2.2/src/phoenix/server/static/.vite/manifest.json +0 -87
  33. arize_phoenix-8.2.2/src/phoenix/version.py +0 -1
  34. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/IP_NOTICE +0 -0
  35. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/LICENSE +0 -0
  36. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/__init__.py +0 -0
  37. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/auth.py +0 -0
  38. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/core/__init__.py +0 -0
  39. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/core/embedding_dimension.py +0 -0
  40. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/core/model.py +0 -0
  41. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/core/model_schema.py +0 -0
  42. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  43. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/datetime_utils.py +0 -0
  44. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/README.md +0 -0
  45. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/__init__.py +0 -0
  46. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/alembic.ini +0 -0
  47. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/bulk_inserter.py +0 -0
  48. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/engines.py +0 -0
  49. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/enums.py +0 -0
  50. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/facilitator.py +0 -0
  51. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/helpers.py +0 -0
  52. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/__init__.py +0 -0
  53. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/constants.py +0 -0
  54. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/dataset.py +0 -0
  55. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  56. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  57. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/helpers.py +0 -0
  58. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/span.py +0 -0
  59. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  60. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  61. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/insertion/types.py +0 -0
  62. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrate.py +0 -0
  63. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/__init__.py +0 -0
  64. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  65. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  66. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/env.py +0 -0
  67. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  68. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  69. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  70. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  71. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  72. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  73. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  74. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/types/__init__.py +0 -0
  75. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/types/identifier.py +0 -0
  76. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/db/types/model_provider.py +0 -0
  77. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/exceptions.py +0 -0
  78. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/__init__.py +0 -0
  79. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  80. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  81. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  82. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  83. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  84. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/functions.py +0 -0
  85. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/tracing.py +0 -0
  86. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/types.py +0 -0
  87. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/experiments/utils.py +0 -0
  88. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/__init__.py +0 -0
  89. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/errors.py +0 -0
  90. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/fixtures.py +0 -0
  91. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/inferences.py +0 -0
  92. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/schema.py +0 -0
  93. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/inferences/validation.py +0 -0
  94. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/logging/__init__.py +0 -0
  95. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/logging/_config.py +0 -0
  96. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/logging/_filter.py +0 -0
  97. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/logging/_formatter.py +0 -0
  98. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/README.md +0 -0
  99. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/__init__.py +0 -0
  100. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/binning.py +0 -0
  101. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/metrics.py +0 -0
  102. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/mixins.py +0 -0
  103. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  104. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/timeseries.py +0 -0
  105. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/metrics/wrappers.py +0 -0
  106. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/pointcloud/__init__.py +0 -0
  107. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/pointcloud/clustering.py +0 -0
  108. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  109. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/pointcloud/projectors.py +0 -0
  110. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  111. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/py.typed +0 -0
  112. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/__init__.py +0 -0
  113. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/README.md +0 -0
  114. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/__init__.py +0 -0
  115. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/auth.py +0 -0
  116. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  117. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  118. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  119. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  120. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  121. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  122. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  123. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  124. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  125. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  126. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  127. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  128. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  129. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  130. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  131. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  132. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  133. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  134. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  135. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  136. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  137. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  138. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  139. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  140. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  141. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  142. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  143. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  144. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  145. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  146. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  147. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  148. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  149. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  150. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/exceptions.py +0 -0
  151. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  152. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  153. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  154. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  155. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  156. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  157. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  158. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  159. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  160. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  161. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  162. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  163. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  164. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  165. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  166. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  167. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  168. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  169. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  170. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  171. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  172. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  173. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  174. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  175. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  176. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  177. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  178. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  179. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  180. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  181. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  182. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  183. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  184. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  185. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  186. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  187. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  188. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  189. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  190. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  191. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  192. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  193. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  194. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  195. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  196. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/interceptor.py +0 -0
  197. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  198. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  199. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  200. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  201. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  202. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  203. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  204. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  205. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  206. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  207. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  208. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  209. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  210. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  211. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/openapi/main.py +0 -0
  212. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  213. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  214. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/auth.py +0 -0
  215. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  216. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  217. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/utils.py +0 -0
  218. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  219. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  220. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  221. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  222. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  223. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  224. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  225. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  226. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  227. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  228. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  229. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/schema.py +0 -0
  230. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/subscriptions.py +0 -0
  231. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  232. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  233. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  234. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  235. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  236. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  237. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  238. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  239. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  240. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  241. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  242. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  243. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  244. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  245. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  246. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  247. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  248. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  249. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  250. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  251. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  252. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  253. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  254. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  255. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  256. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  257. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Event.py +0 -0
  258. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  259. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  260. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  261. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  262. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  263. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  264. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  265. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  266. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  267. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  268. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  269. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  270. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  271. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Model.py +0 -0
  272. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  273. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  274. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  275. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  276. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  277. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  278. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  279. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  280. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  281. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  282. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  283. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/Segments.py +0 -0
  284. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  285. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  286. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  287. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  288. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  289. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  290. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  291. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  292. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  293. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/User.py +0 -0
  294. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  295. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  296. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  297. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  298. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/__init__.py +0 -0
  299. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/node.py +0 -0
  300. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/types/pagination.py +0 -0
  301. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/api/utils.py +0 -0
  302. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/bearer_auth.py +0 -0
  303. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/dml_event.py +0 -0
  304. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/dml_event_handler.py +0 -0
  305. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/email/__init__.py +0 -0
  306. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/email/sender.py +0 -0
  307. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  308. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  309. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/email/types.py +0 -0
  310. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/grpc_server.py +0 -0
  311. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/jwt_store.py +0 -0
  312. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/main.py +0 -0
  313. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/oauth2.py +0 -0
  314. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/openapi/__init__.py +0 -0
  315. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/prometheus.py +0 -0
  316. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/rate_limiters.py +0 -0
  317. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  318. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  319. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  320. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  321. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  322. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  323. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  324. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  325. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/assets/vendor-Cg6lcjUC.css +0 -0
  326. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/assets/vendor-three-C-AGeJYv.js +0 -0
  327. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/favicon.ico +0 -0
  328. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/static/modernizr.js +0 -0
  329. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/telemetry.py +0 -0
  330. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/templates/__init__.py +0 -0
  331. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/templates/index.html +0 -0
  332. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/thread_server.py +0 -0
  333. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/server/types.py +0 -0
  334. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/services.py +0 -0
  335. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/session/__init__.py +0 -0
  336. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/session/client.py +0 -0
  337. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/session/data_extractor.py +0 -0
  338. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/session/evaluation.py +0 -0
  339. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/session/session.py +0 -0
  340. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/settings.py +0 -0
  341. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/__init__.py +0 -0
  342. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/attributes.py +0 -0
  343. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/dsl/README.md +0 -0
  344. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  345. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/dsl/filter.py +0 -0
  346. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  347. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/dsl/query.py +0 -0
  348. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/errors.py +0 -0
  349. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  350. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/exporter.py +0 -0
  351. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/fixtures.py +0 -0
  352. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/otel.py +0 -0
  353. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/projects.py +0 -0
  354. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/schemas.py +0 -0
  355. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/span_evaluations.py +0 -0
  356. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  357. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  358. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/trace_dataset.py +0 -0
  359. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/utils.py +0 -0
  360. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/v1/__init__.py +0 -0
  361. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  362. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  363. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/__init__.py +0 -0
  364. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/client.py +0 -0
  365. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/deprecation.py +0 -0
  366. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/error_handling.py +0 -0
  367. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/json.py +0 -0
  368. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/logging.py +0 -0
  369. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/project.py +0 -0
  370. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/re.py +0 -0
  371. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/span_store.py +0 -0
  372. {arize_phoenix-8.2.2 → arize_phoenix-8.4.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -13,6 +13,9 @@ sdist
13
13
  # Server static files
14
14
  /src/phoenix/server/static/*
15
15
 
16
+ # Docgen
17
+ /js/**/docs
18
+
16
19
  # Data files
17
20
  *.csv
18
21
  !tests/**/fixtures/*.csv
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 8.2.2
3
+ Version: 8.4.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -55,7 +55,7 @@ Requires-Dist: uvicorn
55
55
  Requires-Dist: websockets
56
56
  Requires-Dist: wrapt>=1.17.2
57
57
  Provides-Extra: container
58
- Requires-Dist: anthropic>=0.45.2; extra == 'container'
58
+ Requires-Dist: anthropic>=0.47.0; extra == 'container'
59
59
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
60
60
  Requires-Dist: google-generativeai; extra == 'container'
61
61
  Requires-Dist: numba>=0.60.0; extra == 'container'
@@ -73,7 +73,7 @@ Requires-Dist: strawberry-graphql[opentelemetry]==0.253.1; extra == 'container'
73
73
  Requires-Dist: umap-learn; extra == 'container'
74
74
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
75
75
  Provides-Extra: dev
76
- Requires-Dist: anthropic; extra == 'dev'
76
+ Requires-Dist: anthropic>=0.47.0; extra == 'dev'
77
77
  Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
78
78
  Requires-Dist: asgi-lifespan; extra == 'dev'
79
79
  Requires-Dist: asyncpg; extra == 'dev'
@@ -162,6 +162,7 @@ Phoenix is an open-source AI observability platform designed for experimentation
162
162
  - [**_Datasets_**](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) - Create versioned datasets of examples for experimentation, evaluation, and fine-tuning.
163
163
  - [**_Experiments_**](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets#experiments) - Track and evaluate changes to prompts, LLMs, and retrieval.
164
164
  - [**_Playground_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts)- Optimize prompts, compare models, adjust parameters, and replay traced LLM calls.
165
+ - [**_Prompt Mangement_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts/prompt-management)- Manage and test prompt changes systematically using version control, tagging, and experimentation.
165
166
 
166
167
  Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
167
168
 
@@ -34,6 +34,7 @@ Phoenix is an open-source AI observability platform designed for experimentation
34
34
  - [**_Datasets_**](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) - Create versioned datasets of examples for experimentation, evaluation, and fine-tuning.
35
35
  - [**_Experiments_**](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets#experiments) - Track and evaluate changes to prompts, LLMs, and retrieval.
36
36
  - [**_Playground_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts)- Optimize prompts, compare models, adjust parameters, and replay traced LLM calls.
37
+ - [**_Prompt Mangement_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts/prompt-management)- Manage and test prompt changes systematically using version control, tagging, and experimentation.
37
38
 
38
39
  Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
39
40
 
@@ -95,7 +95,7 @@ dev = [
95
95
  "langchain>=0.0.334",
96
96
  "litellm>=1.0.3,<1.57.5", # windows compatibility broken on 1.57.5 (https://github.com/BerriAI/litellm/issues/7677)
97
97
  "google-cloud-aiplatform>=1.3",
98
- "anthropic",
98
+ "anthropic>=0.47.0",
99
99
  "prometheus_client",
100
100
  "asgi-lifespan",
101
101
  "Faker>=30.1.0",
@@ -123,7 +123,7 @@ pg = [
123
123
  "psycopg[binary,pool]",
124
124
  ]
125
125
  container = [
126
- "anthropic>=0.45.2",
126
+ "anthropic>=0.47.0",
127
127
  "google-generativeai",
128
128
  "prometheus-client",
129
129
  "openai>=1.0.0",
@@ -54,6 +54,33 @@ Phoenix supports two types of database URLs:
54
54
  Note that if you plan on using SQLite, it's advised to to use a persistent volume
55
55
  and simply point the PHOENIX_WORKING_DIR to that volume.
56
56
  """
57
+ ENV_PHOENIX_POSTGRES_HOST = "PHOENIX_POSTGRES_HOST"
58
+ """
59
+ As an alternative to setting PHOENIX_SQL_DATABASE_URL, you can set the following
60
+ environment variables to connect to a PostgreSQL database:
61
+ - PHOENIX_POSTGRES_HOST
62
+ - PHOENIX_POSTGRES_PORT
63
+ - PHOENIX_POSTGRES_USER
64
+ - PHOENIX_POSTGRES_PASSWORD
65
+ - PHOENIX_POSTGRES_DB
66
+ """
67
+ ENV_PHOENIX_POSTGRES_PORT = "PHOENIX_POSTGRES_PORT"
68
+ """
69
+ Used with PHOENIX_POSTGRES_HOST to specify the port to use for the PostgreSQL database.
70
+ """
71
+ ENV_PHOENIX_POSTGRES_USER = "PHOENIX_POSTGRES_USER"
72
+ """
73
+ Used with PHOENIX_POSTGRES_HOST to specify the user to use for the PostgreSQL database (required).
74
+ """
75
+ ENV_PHOENIX_POSTGRES_PASSWORD = "PHOENIX_POSTGRES_PASSWORD"
76
+ """
77
+ Used with PHOENIX_POSTGRES_HOST to specify the password to use for the PostgreSQL database
78
+ (required).
79
+ """
80
+ ENV_PHOENIX_POSTGRES_DB = "PHOENIX_POSTGRES_DB"
81
+ """
82
+ Used with PHOENIX_POSTGRES_HOST to specify the database to use for the PostgreSQL database.
83
+ """
57
84
  ENV_PHOENIX_SQL_DATABASE_SCHEMA = "PHOENIX_SQL_DATABASE_SCHEMA"
58
85
  """
59
86
  The schema to use for the PostgresSQL database. (This is ignored for SQLite.)
@@ -635,11 +662,11 @@ def get_env_database_connection_str() -> str:
635
662
 
636
663
 
637
664
  def get_env_postgres_connection_str() -> Optional[str]:
638
- pg_user = os.getenv("PHOENIX_POSTGRES_USER")
639
- pg_password = os.getenv("PHOENIX_POSTGRES_PASSWORD")
640
- pg_host = os.getenv("PHOENIX_POSTGRES_HOST")
641
- pg_port = os.getenv("PHOENIX_POSTGRES_PORT")
642
- pg_db = os.getenv("PHOENIX_POSTGRES_DB")
665
+ pg_user = os.getenv(ENV_PHOENIX_POSTGRES_USER)
666
+ pg_password = os.getenv(ENV_PHOENIX_POSTGRES_PASSWORD)
667
+ pg_host = os.getenv(ENV_PHOENIX_POSTGRES_HOST)
668
+ pg_port = os.getenv(ENV_PHOENIX_POSTGRES_PORT)
669
+ pg_db = os.getenv(ENV_PHOENIX_POSTGRES_DB)
643
670
 
644
671
  if pg_host and ":" in pg_host:
645
672
  pg_host, parsed_port = pg_host.split(":")
@@ -271,6 +271,7 @@ class ExperimentRunOutput(TypedDict, total=False):
271
271
 
272
272
 
273
273
  class Base(DeclarativeBase):
274
+ id: Mapped[int] = mapped_column(Integer, primary_key=True)
274
275
  # Enforce best practices for naming constraints
275
276
  # https://alembic.sqlalchemy.org/en/latest/naming.html#integration-of-naming-conventions-into-operations-autogenerate
276
277
  metadata = MetaData(
@@ -292,7 +293,6 @@ class Base(DeclarativeBase):
292
293
 
293
294
  class Project(Base):
294
295
  __tablename__ = "projects"
295
- id: Mapped[int] = mapped_column(primary_key=True)
296
296
  name: Mapped[str]
297
297
  description: Mapped[Optional[str]]
298
298
  gradient_start_color: Mapped[str] = mapped_column(
@@ -325,7 +325,6 @@ class Project(Base):
325
325
 
326
326
  class ProjectSession(Base):
327
327
  __tablename__ = "project_sessions"
328
- id: Mapped[int] = mapped_column(primary_key=True)
329
328
  session_id: Mapped[str] = mapped_column(String, nullable=False, unique=True)
330
329
  project_id: Mapped[int] = mapped_column(
331
330
  ForeignKey("projects.id", ondelete="CASCADE"),
@@ -343,7 +342,6 @@ class ProjectSession(Base):
343
342
 
344
343
  class Trace(Base):
345
344
  __tablename__ = "traces"
346
- id: Mapped[int] = mapped_column(primary_key=True)
347
345
  project_rowid: Mapped[int] = mapped_column(
348
346
  ForeignKey("projects.id", ondelete="CASCADE"),
349
347
  nullable=False,
@@ -393,7 +391,6 @@ class Trace(Base):
393
391
 
394
392
  class Span(Base):
395
393
  __tablename__ = "spans"
396
- id: Mapped[int] = mapped_column(primary_key=True)
397
394
  trace_rowid: Mapped[int] = mapped_column(
398
395
  ForeignKey("traces.id", ondelete="CASCADE"),
399
396
  index=True,
@@ -660,7 +657,6 @@ async def init_models(engine: AsyncEngine) -> None:
660
657
 
661
658
  class SpanAnnotation(Base):
662
659
  __tablename__ = "span_annotations"
663
- id: Mapped[int] = mapped_column(primary_key=True)
664
660
  span_rowid: Mapped[int] = mapped_column(
665
661
  ForeignKey("spans.id", ondelete="CASCADE"),
666
662
  index=True,
@@ -687,7 +683,6 @@ class SpanAnnotation(Base):
687
683
 
688
684
  class TraceAnnotation(Base):
689
685
  __tablename__ = "trace_annotations"
690
- id: Mapped[int] = mapped_column(primary_key=True)
691
686
  trace_rowid: Mapped[int] = mapped_column(
692
687
  ForeignKey("traces.id", ondelete="CASCADE"),
693
688
  index=True,
@@ -714,7 +709,6 @@ class TraceAnnotation(Base):
714
709
 
715
710
  class DocumentAnnotation(Base):
716
711
  __tablename__ = "document_annotations"
717
- id: Mapped[int] = mapped_column(primary_key=True)
718
712
  span_rowid: Mapped[int] = mapped_column(
719
713
  ForeignKey("spans.id", ondelete="CASCADE"),
720
714
  index=True,
@@ -745,7 +739,6 @@ class DocumentAnnotation(Base):
745
739
 
746
740
  class Dataset(Base):
747
741
  __tablename__ = "datasets"
748
- id: Mapped[int] = mapped_column(primary_key=True)
749
742
  name: Mapped[str] = mapped_column(unique=True)
750
743
  description: Mapped[Optional[str]]
751
744
  metadata_: Mapped[dict[str, Any]] = mapped_column("metadata")
@@ -805,7 +798,6 @@ class Dataset(Base):
805
798
 
806
799
  class DatasetVersion(Base):
807
800
  __tablename__ = "dataset_versions"
808
- id: Mapped[int] = mapped_column(primary_key=True)
809
801
  dataset_id: Mapped[int] = mapped_column(
810
802
  ForeignKey("datasets.id", ondelete="CASCADE"),
811
803
  index=True,
@@ -817,7 +809,6 @@ class DatasetVersion(Base):
817
809
 
818
810
  class DatasetExample(Base):
819
811
  __tablename__ = "dataset_examples"
820
- id: Mapped[int] = mapped_column(primary_key=True)
821
812
  dataset_id: Mapped[int] = mapped_column(
822
813
  ForeignKey("datasets.id", ondelete="CASCADE"),
823
814
  index=True,
@@ -834,7 +825,6 @@ class DatasetExample(Base):
834
825
 
835
826
  class DatasetExampleRevision(Base):
836
827
  __tablename__ = "dataset_example_revisions"
837
- id: Mapped[int] = mapped_column(primary_key=True)
838
828
  dataset_example_id: Mapped[int] = mapped_column(
839
829
  ForeignKey("dataset_examples.id", ondelete="CASCADE"),
840
830
  index=True,
@@ -863,7 +853,6 @@ class DatasetExampleRevision(Base):
863
853
 
864
854
  class Experiment(Base):
865
855
  __tablename__ = "experiments"
866
- id: Mapped[int] = mapped_column(primary_key=True)
867
856
  dataset_id: Mapped[int] = mapped_column(
868
857
  ForeignKey("datasets.id", ondelete="CASCADE"),
869
858
  index=True,
@@ -885,7 +874,6 @@ class Experiment(Base):
885
874
 
886
875
  class ExperimentRun(Base):
887
876
  __tablename__ = "experiment_runs"
888
- id: Mapped[int] = mapped_column(primary_key=True)
889
877
  experiment_id: Mapped[int] = mapped_column(
890
878
  ForeignKey("experiments.id", ondelete="CASCADE"),
891
879
  index=True,
@@ -928,7 +916,6 @@ class ExperimentRun(Base):
928
916
 
929
917
  class ExperimentRunAnnotation(Base):
930
918
  __tablename__ = "experiment_run_annotations"
931
- id: Mapped[int] = mapped_column(primary_key=True)
932
919
  experiment_run_id: Mapped[int] = mapped_column(
933
920
  ForeignKey("experiment_runs.id", ondelete="CASCADE"),
934
921
  index=True,
@@ -956,14 +943,12 @@ class ExperimentRunAnnotation(Base):
956
943
 
957
944
  class UserRole(Base):
958
945
  __tablename__ = "user_roles"
959
- id: Mapped[int] = mapped_column(primary_key=True)
960
946
  name: Mapped[str] = mapped_column(unique=True, index=True)
961
947
  users: Mapped[list["User"]] = relationship("User", back_populates="role")
962
948
 
963
949
 
964
950
  class User(Base):
965
951
  __tablename__ = "users"
966
- id: Mapped[int] = mapped_column(primary_key=True)
967
952
  user_role_id: Mapped[int] = mapped_column(
968
953
  ForeignKey("user_roles.id", ondelete="CASCADE"),
969
954
  index=True,
@@ -1038,7 +1023,6 @@ class User(Base):
1038
1023
 
1039
1024
  class PasswordResetToken(Base):
1040
1025
  __tablename__ = "password_reset_tokens"
1041
- id: Mapped[int] = mapped_column(primary_key=True)
1042
1026
  user_id: Mapped[int] = mapped_column(
1043
1027
  ForeignKey("users.id", ondelete="CASCADE"),
1044
1028
  unique=True,
@@ -1052,7 +1036,6 @@ class PasswordResetToken(Base):
1052
1036
 
1053
1037
  class RefreshToken(Base):
1054
1038
  __tablename__ = "refresh_tokens"
1055
- id: Mapped[int] = mapped_column(primary_key=True)
1056
1039
  user_id: Mapped[int] = mapped_column(
1057
1040
  ForeignKey("users.id", ondelete="CASCADE"),
1058
1041
  index=True,
@@ -1065,7 +1048,6 @@ class RefreshToken(Base):
1065
1048
 
1066
1049
  class AccessToken(Base):
1067
1050
  __tablename__ = "access_tokens"
1068
- id: Mapped[int] = mapped_column(primary_key=True)
1069
1051
  user_id: Mapped[int] = mapped_column(
1070
1052
  ForeignKey("users.id", ondelete="CASCADE"),
1071
1053
  index=True,
@@ -1083,7 +1065,6 @@ class AccessToken(Base):
1083
1065
 
1084
1066
  class ApiKey(Base):
1085
1067
  __tablename__ = "api_keys"
1086
- id: Mapped[int] = mapped_column(primary_key=True)
1087
1068
  user_id: Mapped[int] = mapped_column(
1088
1069
  ForeignKey("users.id", ondelete="CASCADE"),
1089
1070
  index=True,
@@ -1099,7 +1080,6 @@ class ApiKey(Base):
1099
1080
  class PromptLabel(Base):
1100
1081
  __tablename__ = "prompt_labels"
1101
1082
 
1102
- id: Mapped[int] = mapped_column(primary_key=True)
1103
1083
  name: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False)
1104
1084
  description: Mapped[Optional[str]]
1105
1085
  color: Mapped[str] = mapped_column(String, nullable=True)
@@ -1115,7 +1095,6 @@ class PromptLabel(Base):
1115
1095
  class Prompt(Base):
1116
1096
  __tablename__ = "prompts"
1117
1097
 
1118
- id: Mapped[int] = mapped_column(primary_key=True)
1119
1098
  source_prompt_id: Mapped[Optional[int]] = mapped_column(
1120
1099
  ForeignKey("prompts.id", ondelete="SET NULL"),
1121
1100
  index=True,
@@ -1154,7 +1133,6 @@ class Prompt(Base):
1154
1133
  class PromptPromptLabel(Base):
1155
1134
  __tablename__ = "prompts_prompt_labels"
1156
1135
 
1157
- id: Mapped[int] = mapped_column(primary_key=True)
1158
1136
  prompt_label_id: Mapped[int] = mapped_column(
1159
1137
  ForeignKey("prompt_labels.id", ondelete="CASCADE"),
1160
1138
  index=True,
@@ -1177,7 +1155,6 @@ class PromptPromptLabel(Base):
1177
1155
  class PromptVersion(Base):
1178
1156
  __tablename__ = "prompt_versions"
1179
1157
 
1180
- id: Mapped[int] = mapped_column(primary_key=True)
1181
1158
  prompt_id: Mapped[int] = mapped_column(
1182
1159
  ForeignKey("prompts.id", ondelete="CASCADE"),
1183
1160
  index=True,
@@ -1227,7 +1204,6 @@ class PromptVersion(Base):
1227
1204
  class PromptVersionTag(Base):
1228
1205
  __tablename__ = "prompt_version_tags"
1229
1206
 
1230
- id: Mapped[int] = mapped_column(primary_key=True)
1231
1207
  name: Mapped[Identifier] = mapped_column(_Identifier, nullable=False)
1232
1208
  description: Mapped[Optional[str]] = mapped_column(String, nullable=True)
1233
1209
  prompt_id: Mapped[int] = mapped_column(
@@ -29,6 +29,7 @@ from phoenix.server.api.dataloaders import (
29
29
  ExperimentSequenceNumberDataLoader,
30
30
  LatencyMsQuantileDataLoader,
31
31
  MinStartOrMaxEndTimeDataLoader,
32
+ NumChildSpansDataLoader,
32
33
  ProjectByNameDataLoader,
33
34
  PromptVersionSequenceNumberDataLoader,
34
35
  RecordCountDataLoader,
@@ -41,8 +42,8 @@ from phoenix.server.api.dataloaders import (
41
42
  SpanByIdDataLoader,
42
43
  SpanDatasetExamplesDataLoader,
43
44
  SpanDescendantsDataLoader,
44
- SpanFieldsDataLoader,
45
45
  SpanProjectsDataLoader,
46
+ TableFieldsDataLoader,
46
47
  TokenCountDataLoader,
47
48
  TraceByTraceIdsDataLoader,
48
49
  TraceRootSpansDataLoader,
@@ -76,6 +77,8 @@ class DataLoaders:
76
77
  experiment_sequence_number: ExperimentSequenceNumberDataLoader
77
78
  latency_ms_quantile: LatencyMsQuantileDataLoader
78
79
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
80
+ num_child_spans: NumChildSpansDataLoader
81
+ project_fields: TableFieldsDataLoader
79
82
  prompt_version_sequence_number: PromptVersionSequenceNumberDataLoader
80
83
  record_counts: RecordCountDataLoader
81
84
  session_first_inputs: SessionIODataLoader
@@ -88,10 +91,11 @@ class DataLoaders:
88
91
  span_by_id: SpanByIdDataLoader
89
92
  span_dataset_examples: SpanDatasetExamplesDataLoader
90
93
  span_descendants: SpanDescendantsDataLoader
91
- span_fields: SpanFieldsDataLoader
94
+ span_fields: TableFieldsDataLoader
92
95
  span_projects: SpanProjectsDataLoader
93
96
  token_counts: TokenCountDataLoader
94
97
  trace_by_trace_ids: TraceByTraceIdsDataLoader
98
+ trace_fields: TableFieldsDataLoader
95
99
  trace_root_spans: TraceRootSpansDataLoader
96
100
  project_by_name: ProjectByNameDataLoader
97
101
  users: UsersDataLoader
@@ -17,6 +17,7 @@ from .experiment_run_counts import ExperimentRunCountsDataLoader
17
17
  from .experiment_sequence_number import ExperimentSequenceNumberDataLoader
18
18
  from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLoader
19
19
  from .min_start_or_max_end_times import MinStartOrMaxEndTimeCache, MinStartOrMaxEndTimeDataLoader
20
+ from .num_child_spans import NumChildSpansDataLoader
20
21
  from .project_by_name import ProjectByNameDataLoader
21
22
  from .prompt_version_sequence_number import PromptVersionSequenceNumberDataLoader
22
23
  from .record_counts import RecordCountCache, RecordCountDataLoader
@@ -29,8 +30,8 @@ from .span_annotations import SpanAnnotationsDataLoader
29
30
  from .span_by_id import SpanByIdDataLoader
30
31
  from .span_dataset_examples import SpanDatasetExamplesDataLoader
31
32
  from .span_descendants import SpanDescendantsDataLoader
32
- from .span_fields import SpanFieldsDataLoader
33
33
  from .span_projects import SpanProjectsDataLoader
34
+ from .table_fields import TableFieldsDataLoader
34
35
  from .token_counts import TokenCountCache, TokenCountDataLoader
35
36
  from .trace_by_trace_ids import TraceByTraceIdsDataLoader
36
37
  from .trace_root_spans import TraceRootSpansDataLoader
@@ -53,6 +54,7 @@ __all__ = [
53
54
  "ExperimentSequenceNumberDataLoader",
54
55
  "LatencyMsQuantileDataLoader",
55
56
  "MinStartOrMaxEndTimeDataLoader",
57
+ "NumChildSpansDataLoader",
56
58
  "PromptVersionSequenceNumberDataLoader",
57
59
  "RecordCountDataLoader",
58
60
  "SessionIODataLoader",
@@ -60,11 +62,11 @@ __all__ = [
60
62
  "SessionNumTracesWithErrorDataLoader",
61
63
  "SessionTokenUsagesDataLoader",
62
64
  "SessionTraceLatencyMsQuantileDataLoader",
63
- "SpanFieldsDataLoader",
64
65
  "SpanByIdDataLoader",
65
66
  "SpanDatasetExamplesDataLoader",
66
67
  "SpanDescendantsDataLoader",
67
68
  "SpanProjectsDataLoader",
69
+ "TableFieldsDataLoader",
68
70
  "TokenCountDataLoader",
69
71
  "TraceByTraceIdsDataLoader",
70
72
  "TraceRootSpansDataLoader",
@@ -0,0 +1,35 @@
1
+ from typing import Iterable
2
+
3
+ from sqlalchemy import func, select
4
+ from strawberry.dataloader import DataLoader
5
+ from typing_extensions import TypeAlias
6
+
7
+ from phoenix.db import models
8
+ from phoenix.server.types import DbSessionFactory
9
+
10
+ SpanRowId: TypeAlias = int
11
+
12
+ Key: TypeAlias = SpanRowId
13
+ Result: TypeAlias = int
14
+
15
+
16
+ class NumChildSpansDataLoader(DataLoader[Key, Result]):
17
+ def __init__(self, db: DbSessionFactory) -> None:
18
+ super().__init__(load_fn=self._load_fn)
19
+ self._db = db
20
+
21
+ async def _load_fn(self, keys: Iterable[Key]) -> list[Result]:
22
+ span_rowids = list(set(keys))
23
+ result: dict[Key, Result] = {}
24
+ children = select(models.Span).alias("children")
25
+ stmt = (
26
+ select(models.Span.id, func.count())
27
+ .where(models.Span.id.in_(span_rowids))
28
+ .join(children, children.c.parent_id == models.Span.span_id)
29
+ .group_by(models.Span.id)
30
+ )
31
+ async with self._db() as session:
32
+ data = await session.stream(stmt)
33
+ async for span_rowid, num_child_spans in data:
34
+ result[span_rowid] = num_child_spans
35
+ return [result.get(span_rowid, 0) for span_rowid in keys]
@@ -8,35 +8,36 @@ from typing_extensions import TypeAlias
8
8
  from phoenix.db import models
9
9
  from phoenix.server.types import DbSessionFactory
10
10
 
11
- SpanRowId: TypeAlias = int
11
+ RowId: TypeAlias = int
12
12
 
13
- Key: TypeAlias = tuple[SpanRowId, QueryableAttribute[Any]]
13
+ Key: TypeAlias = tuple[RowId, QueryableAttribute[Any]]
14
14
  Result: TypeAlias = Any
15
15
 
16
-
17
16
  _ResultColumnPosition: TypeAlias = int
18
17
  _AttrStrIdentifier: TypeAlias = str
19
18
 
20
19
 
21
- class SpanFieldsDataLoader(DataLoader[Key, Result]):
22
- def __init__(self, db: DbSessionFactory) -> None:
20
+ class TableFieldsDataLoader(DataLoader[Key, Result]):
21
+ def __init__(self, db: DbSessionFactory, table: type[models.Base]) -> None:
23
22
  super().__init__(load_fn=self._load_fn)
24
23
  self._db = db
24
+ self._table = table
25
25
 
26
26
  async def _load_fn(self, keys: Iterable[Key]) -> list[Union[Result, ValueError]]:
27
- result: dict[tuple[SpanRowId, _AttrStrIdentifier], Result] = {}
28
- stmt, attr_strs = _get_stmt(keys)
27
+ result: dict[tuple[RowId, _AttrStrIdentifier], Result] = {}
28
+ stmt, attr_strs = _get_stmt(keys, self._table)
29
29
  async with self._db() as session:
30
30
  data = await session.stream(stmt)
31
31
  async for row in data:
32
- span_rowid: SpanRowId = row[0] # models.Span's primary key
32
+ rowid: RowId = row[0] # models.Span's primary key
33
33
  for i, value in enumerate(row[1:]):
34
- result[span_rowid, attr_strs[i]] = value
35
- return [result.get((span_rowid, str(attr))) for span_rowid, attr in keys]
34
+ result[rowid, attr_strs[i]] = value
35
+ return [result.get((rowid, str(attr))) for rowid, attr in keys]
36
36
 
37
37
 
38
38
  def _get_stmt(
39
- keys: Iterable[Key],
39
+ keys: Iterable[tuple[RowId, QueryableAttribute[Any]]],
40
+ table: type[models.Base],
40
41
  ) -> tuple[
41
42
  Select[Any],
42
43
  dict[_ResultColumnPosition, _AttrStrIdentifier],
@@ -52,7 +53,8 @@ def _get_stmt(
52
53
 
53
54
  Args:
54
55
  keys (list[Key]): A list of tuples, where each tuple contains an integer ID, i.e. the
55
- primary key of models.Span, and a QueryableAttribute.
56
+ primary key of table, and a QueryableAttribute.
57
+ table (models.Base): The table to query.
56
58
 
57
59
  Returns:
58
60
  tuple: A tuple containing:
@@ -61,16 +63,16 @@ def _get_stmt(
61
63
  at the second column (because the first column is the span's primary key)--in the
62
64
  result to the attribute's string identifier.
63
65
  """
64
- span_rowids: set[SpanRowId] = set()
66
+ rowids: set[RowId] = set()
65
67
  attrs: dict[_AttrStrIdentifier, QueryableAttribute[Any]] = {}
66
68
  joins = set()
67
- for span_rowid, attr in keys:
68
- span_rowids.add(span_rowid)
69
+ for rowid, attr in keys:
70
+ rowids.add(rowid)
69
71
  attrs[str(attr)] = attr
70
- if (entity := attr.parent.entity) is not models.Span:
72
+ if (entity := attr.parent.entity) is not table:
71
73
  joins.add(entity)
72
- stmt = select(models.Span.id).where(models.Span.id.in_(span_rowids))
73
- for table in joins:
74
- stmt = stmt.join(table)
74
+ stmt = select(table.id).where(table.id.in_(rowids))
75
+ for other_table in joins:
76
+ stmt = stmt.join(other_table)
75
77
  identifiers, columns = zip(*attrs.items())
76
78
  return stmt.add_columns(*columns), dict(enumerate(identifiers))
@@ -806,6 +806,10 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
806
806
  raise NotImplementedError
807
807
  elif isinstance(event, anthropic_streaming._types.CitationEvent):
808
808
  raise NotImplementedError
809
+ elif isinstance(event, anthropic_streaming._types.ThinkingEvent):
810
+ raise NotImplementedError
811
+ elif isinstance(event, anthropic_streaming._types.SignatureEvent):
812
+ raise NotImplementedError
809
813
  else:
810
814
  assert_never(event)
811
815
 
@@ -348,6 +348,7 @@ class AnthropicToolDefinition(PromptModel):
348
348
  class PromptOpenAIInvocationParametersContent(PromptModel):
349
349
  temperature: float = UNDEFINED
350
350
  max_tokens: int = UNDEFINED
351
+ max_completion_tokens: int = UNDEFINED
351
352
  frequency_penalty: float = UNDEFINED
352
353
  presence_penalty: float = UNDEFINED
353
354
  top_p: float = UNDEFINED