arize-phoenix 5.9.1__tar.gz → 5.10.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 (333) hide show
  1. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/PKG-INFO +1 -1
  2. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/config.py +3 -1
  3. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/helpers/playground_clients.py +44 -6
  4. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/helpers/playground_spans.py +34 -8
  5. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/subscriptions.py +1 -1
  6. arize_phoenix-5.10.0/src/phoenix/server/api/types/GenerativeProvider.py +85 -0
  7. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Span.py +4 -5
  8. arize_phoenix-5.10.0/src/phoenix/server/static/.vite/manifest.json +78 -0
  9. arize_phoenix-5.9.1/src/phoenix/server/static/assets/components-BcvRmBnN.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/components-BXIz9ZO8.js +124 -124
  10. arize_phoenix-5.9.1/src/phoenix/server/static/assets/index-BF4RUiOz.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/index-DTut7g1y.js +2 -2
  11. arize_phoenix-5.9.1/src/phoenix/server/static/assets/pages-CM_Zho_x.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/pages-B8FpJuXu.js +264 -264
  12. arize_phoenix-5.9.1/src/phoenix/server/static/assets/vendor-Bjm5T3cE.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/vendor-BX8_Znqy.js +146 -146
  13. arize_phoenix-5.9.1/src/phoenix/server/static/assets/vendor-arizeai-CQhWGEdL.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/vendor-arizeai-CtHir-Ua.js +1 -1
  14. arize_phoenix-5.9.1/src/phoenix/server/static/assets/vendor-codemirror-CdtiO80y.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/vendor-codemirror-DLlGiguX.js +2 -2
  15. arize_phoenix-5.9.1/src/phoenix/server/static/assets/vendor-recharts-BqWon6Py.js → arize_phoenix-5.10.0/src/phoenix/server/static/assets/vendor-recharts-CJRple0d.js +1 -1
  16. arize_phoenix-5.10.0/src/phoenix/version.py +1 -0
  17. arize_phoenix-5.9.1/src/phoenix/server/api/types/GenerativeProvider.py +0 -41
  18. arize_phoenix-5.9.1/src/phoenix/server/static/.vite/manifest.json +0 -78
  19. arize_phoenix-5.9.1/src/phoenix/version.py +0 -1
  20. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/.gitignore +0 -0
  21. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/IP_NOTICE +0 -0
  22. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/LICENSE +0 -0
  23. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/README.md +0 -0
  24. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/pyproject.toml +0 -0
  25. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/__init__.py +0 -0
  26. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/auth.py +0 -0
  27. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/core/__init__.py +0 -0
  28. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/core/embedding_dimension.py +0 -0
  29. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/core/model.py +0 -0
  30. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/core/model_schema.py +0 -0
  31. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  32. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/datetime_utils.py +0 -0
  33. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/README.md +0 -0
  34. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/__init__.py +0 -0
  35. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/alembic.ini +0 -0
  36. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/bulk_inserter.py +0 -0
  37. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/engines.py +0 -0
  38. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/enums.py +0 -0
  39. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/facilitator.py +0 -0
  40. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/helpers.py +0 -0
  41. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/__init__.py +0 -0
  42. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/constants.py +0 -0
  43. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/dataset.py +0 -0
  44. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  45. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  46. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/helpers.py +0 -0
  47. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/span.py +0 -0
  48. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  49. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  50. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/insertion/types.py +0 -0
  51. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrate.py +0 -0
  52. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/__init__.py +0 -0
  53. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/env.py +0 -0
  54. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  55. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  56. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  57. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  58. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  59. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/db/models.py +0 -0
  60. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/exceptions.py +0 -0
  61. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/__init__.py +0 -0
  62. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  63. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  64. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  65. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  66. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  67. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/functions.py +0 -0
  68. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/tracing.py +0 -0
  69. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/types.py +0 -0
  70. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/experiments/utils.py +0 -0
  71. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/__init__.py +0 -0
  72. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/errors.py +0 -0
  73. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/fixtures.py +0 -0
  74. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/inferences.py +0 -0
  75. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/schema.py +0 -0
  76. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/inferences/validation.py +0 -0
  77. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/logging/__init__.py +0 -0
  78. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/logging/_config.py +0 -0
  79. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/logging/_filter.py +0 -0
  80. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/logging/_formatter.py +0 -0
  81. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/README.md +0 -0
  82. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/__init__.py +0 -0
  83. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/binning.py +0 -0
  84. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/metrics.py +0 -0
  85. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/mixins.py +0 -0
  86. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  87. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/timeseries.py +0 -0
  88. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/metrics/wrappers.py +0 -0
  89. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/pointcloud/__init__.py +0 -0
  90. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/pointcloud/clustering.py +0 -0
  91. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  92. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/pointcloud/projectors.py +0 -0
  93. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  94. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/py.typed +0 -0
  95. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/__init__.py +0 -0
  96. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/README.md +0 -0
  97. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/__init__.py +0 -0
  98. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/auth.py +0 -0
  99. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/context.py +0 -0
  100. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  101. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  102. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  103. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  104. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  105. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  106. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  107. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  108. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  109. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  110. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  111. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  112. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  113. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  114. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  115. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  116. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  117. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  118. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  119. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  120. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  121. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  122. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  123. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  124. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  125. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  126. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  127. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/exceptions.py +0 -0
  128. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  129. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  130. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  131. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  132. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  133. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  134. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  135. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  136. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  137. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  138. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  139. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  140. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  141. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  142. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  143. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  144. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  145. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  146. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  147. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  148. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  149. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  150. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  151. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  152. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  153. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  154. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  155. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  156. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  157. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  158. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  159. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  160. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/TemplateOptions.py +0 -0
  161. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  162. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  163. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  164. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  165. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/interceptor.py +0 -0
  166. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  167. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  168. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  169. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  170. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  171. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  172. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  173. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  174. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  175. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  176. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  177. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/openapi/main.py +0 -0
  178. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  179. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/queries.py +0 -0
  180. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  181. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/auth.py +0 -0
  182. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  183. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  184. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/utils.py +0 -0
  185. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  186. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  187. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  188. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  189. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  190. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  191. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  192. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  193. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  194. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  195. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/schema.py +0 -0
  196. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  197. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  198. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  199. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  200. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  201. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  202. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  203. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  204. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  205. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  206. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  207. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  208. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  209. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  210. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  211. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  212. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  213. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  214. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  215. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  216. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  217. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  218. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  219. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  220. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  221. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  222. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Event.py +0 -0
  223. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  224. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  225. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  226. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  227. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  228. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  229. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  230. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  231. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  232. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  233. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  234. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  235. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  236. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  237. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Model.py +0 -0
  238. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  239. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  240. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Project.py +0 -0
  241. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  242. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  243. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  244. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Segments.py +0 -0
  245. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  246. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  247. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  248. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/TemplateLanguage.py +0 -0
  249. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  250. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/Trace.py +0 -0
  251. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  252. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  253. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/User.py +0 -0
  254. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  255. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  256. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  257. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  258. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/__init__.py +0 -0
  259. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/node.py +0 -0
  260. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/types/pagination.py +0 -0
  261. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/api/utils.py +0 -0
  262. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/app.py +0 -0
  263. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/bearer_auth.py +0 -0
  264. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/dml_event.py +0 -0
  265. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/dml_event_handler.py +0 -0
  266. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/email/__init__.py +0 -0
  267. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/email/sender.py +0 -0
  268. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  269. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  270. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/email/types.py +0 -0
  271. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/grpc_server.py +0 -0
  272. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/jwt_store.py +0 -0
  273. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/main.py +0 -0
  274. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/oauth2.py +0 -0
  275. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/openapi/__init__.py +0 -0
  276. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/prometheus.py +0 -0
  277. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/rate_limiters.py +0 -0
  278. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  279. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  280. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  281. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  282. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  283. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  284. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  285. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  286. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  287. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  288. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/favicon.ico +0 -0
  289. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/static/modernizr.js +0 -0
  290. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/telemetry.py +0 -0
  291. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/templates/__init__.py +0 -0
  292. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/templates/index.html +0 -0
  293. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/thread_server.py +0 -0
  294. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/server/types.py +0 -0
  295. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/services.py +0 -0
  296. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/session/__init__.py +0 -0
  297. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/session/client.py +0 -0
  298. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/session/data_extractor.py +0 -0
  299. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/session/evaluation.py +0 -0
  300. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/session/session.py +0 -0
  301. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/settings.py +0 -0
  302. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/__init__.py +0 -0
  303. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/attributes.py +0 -0
  304. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/dsl/README.md +0 -0
  305. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  306. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/dsl/filter.py +0 -0
  307. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  308. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/dsl/query.py +0 -0
  309. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/errors.py +0 -0
  310. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  311. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/exporter.py +0 -0
  312. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/fixtures.py +0 -0
  313. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/otel.py +0 -0
  314. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/projects.py +0 -0
  315. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/schemas.py +0 -0
  316. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/span_evaluations.py +0 -0
  317. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  318. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  319. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/trace_dataset.py +0 -0
  320. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/utils.py +0 -0
  321. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/v1/__init__.py +0 -0
  322. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  323. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  324. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/__init__.py +0 -0
  325. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/client.py +0 -0
  326. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/deprecation.py +0 -0
  327. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/error_handling.py +0 -0
  328. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/json.py +0 -0
  329. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/logging.py +0 -0
  330. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/project.py +0 -0
  331. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/re.py +0 -0
  332. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/span_store.py +0 -0
  333. {arize_phoenix-5.9.1 → arize_phoenix-5.10.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 5.9.1
3
+ Version: 5.10.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
@@ -424,7 +424,9 @@ class OAuth2ClientConfig:
424
424
  f"An OpenID Connect configuration URL must be set for the {idp_name} OAuth2 IDP "
425
425
  f"via the {oidc_config_url_env_var} environment variable"
426
426
  )
427
- if urlparse(oidc_config_url).scheme != "https":
427
+ parsed_oidc_config_url = urlparse(oidc_config_url)
428
+ is_local_oidc_config_url = parsed_oidc_config_url.hostname in ("localhost", "127.0.0.1")
429
+ if parsed_oidc_config_url.scheme != "https" and not is_local_oidc_config_url:
428
430
  raise ValueError(
429
431
  f"Server metadata URL for {idp_name} OAuth2 IDP "
430
432
  "must be a valid URL using the https protocol"
@@ -9,7 +9,11 @@ from functools import wraps
9
9
  from typing import TYPE_CHECKING, Any, Hashable, Mapping, Optional, Union
10
10
 
11
11
  from openinference.instrumentation import safe_json_dumps
12
- from openinference.semconv.trace import SpanAttributes
12
+ from openinference.semconv.trace import (
13
+ OpenInferenceLLMProviderValues,
14
+ OpenInferenceLLMSystemValues,
15
+ SpanAttributes,
16
+ )
13
17
  from strawberry import UNSET
14
18
  from strawberry.scalars import JSON as JSONScalarType
15
19
  from typing_extensions import TypeAlias, assert_never
@@ -44,7 +48,7 @@ from phoenix.server.api.types.ChatCompletionSubscriptionPayload import (
44
48
  from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
45
49
 
46
50
  if TYPE_CHECKING:
47
- from anthropic.types import MessageParam
51
+ from anthropic.types import MessageParam, TextBlockParam, ToolResultBlockParam
48
52
  from google.generativeai.types import ContentType
49
53
  from openai.types import CompletionUsage
50
54
  from openai.types.chat import ChatCompletionMessageParam, ChatCompletionMessageToolCallParam
@@ -255,6 +259,8 @@ class OpenAIStreamingClient(PlaygroundStreamingClient):
255
259
  from openai import RateLimitError as OpenAIRateLimitError
256
260
 
257
261
  super().__init__(model=model, api_key=api_key)
262
+ self._attributes[LLM_PROVIDER] = OpenInferenceLLMProviderValues.OPENAI.value
263
+ self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.OPENAI.value
258
264
  self.client = AsyncOpenAI(api_key=api_key)
259
265
  self.model_name = model.name
260
266
  self.rate_limiter = PlaygroundRateLimiter(model.provider_key, OpenAIRateLimitError)
@@ -610,6 +616,8 @@ class AzureOpenAIStreamingClient(OpenAIStreamingClient):
610
616
  from openai import AsyncAzureOpenAI
611
617
 
612
618
  super().__init__(model=model, api_key=api_key)
619
+ self._attributes[LLM_PROVIDER] = OpenInferenceLLMProviderValues.AZURE.value
620
+ self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.OPENAI.value
613
621
  if model.endpoint is None or model.api_version is None:
614
622
  raise ValueError("endpoint and api_version are required for Azure OpenAI models")
615
623
  self.client = AsyncAzureOpenAI(
@@ -638,6 +646,8 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
638
646
  import anthropic
639
647
 
640
648
  super().__init__(model=model, api_key=api_key)
649
+ self._attributes[LLM_PROVIDER] = OpenInferenceLLMProviderValues.ANTHROPIC.value
650
+ self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.ANTHROPIC.value
641
651
  self.client = anthropic.AsyncAnthropic(api_key=api_key)
642
652
  self.model_name = model.name
643
653
  self.rate_limiter = PlaygroundRateLimiter(model.provider_key, anthropic.RateLimitError)
@@ -693,7 +703,6 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
693
703
  import anthropic.types as anthropic_types
694
704
 
695
705
  anthropic_messages, system_prompt = self._build_anthropic_messages(messages)
696
-
697
706
  anthropic_params = {
698
707
  "messages": anthropic_messages,
699
708
  "model": self.model_name,
@@ -751,19 +760,44 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
751
760
  anthropic_messages: list["MessageParam"] = []
752
761
  system_prompt = ""
753
762
  for role, content, _tool_call_id, _tool_calls in messages:
763
+ tool_aware_content = self._anthropic_message_content(content, _tool_calls)
754
764
  if role == ChatCompletionMessageRole.USER:
755
- anthropic_messages.append({"role": "user", "content": content})
765
+ anthropic_messages.append({"role": "user", "content": tool_aware_content})
756
766
  elif role == ChatCompletionMessageRole.AI:
757
- anthropic_messages.append({"role": "assistant", "content": content})
767
+ anthropic_messages.append({"role": "assistant", "content": tool_aware_content})
758
768
  elif role == ChatCompletionMessageRole.SYSTEM:
759
769
  system_prompt += content + "\n"
760
770
  elif role == ChatCompletionMessageRole.TOOL:
761
- raise NotImplementedError
771
+ anthropic_messages.append(
772
+ {
773
+ "role": "user",
774
+ "content": [
775
+ {
776
+ "type": "tool_result",
777
+ "tool_use_id": _tool_call_id or "",
778
+ "content": content or "",
779
+ }
780
+ ],
781
+ }
782
+ )
762
783
  else:
763
784
  assert_never(role)
764
785
 
765
786
  return anthropic_messages, system_prompt
766
787
 
788
+ def _anthropic_message_content(
789
+ self, content: str, tool_calls: Optional[list[JSONScalarType]]
790
+ ) -> Union[str, list[Union["ToolResultBlockParam", "TextBlockParam"]]]:
791
+ if tool_calls:
792
+ # Anthropic combines tool calls and the reasoning text into a single message object
793
+ tool_use_content: list[Union["ToolResultBlockParam", "TextBlockParam"]] = []
794
+ if content:
795
+ tool_use_content.append({"type": "text", "text": content})
796
+ tool_use_content.extend(tool_calls)
797
+ return tool_use_content
798
+
799
+ return content
800
+
767
801
 
768
802
  @register_llm_client(
769
803
  provider_key=GenerativeProviderKey.GEMINI,
@@ -784,6 +818,8 @@ class GeminiStreamingClient(PlaygroundStreamingClient):
784
818
  import google.generativeai as google_genai
785
819
 
786
820
  super().__init__(model=model, api_key=api_key)
821
+ self._attributes[LLM_PROVIDER] = OpenInferenceLLMProviderValues.GOOGLE.value
822
+ self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.VERTEXAI.value
787
823
  google_genai.configure(api_key=api_key)
788
824
  self.model_name = model.name
789
825
 
@@ -905,6 +941,8 @@ def initialize_playground_clients() -> None:
905
941
  pass
906
942
 
907
943
 
944
+ LLM_PROVIDER = SpanAttributes.LLM_PROVIDER
945
+ LLM_SYSTEM = SpanAttributes.LLM_SYSTEM
908
946
  LLM_TOKEN_COUNT_PROMPT = SpanAttributes.LLM_TOKEN_COUNT_PROMPT
909
947
  LLM_TOKEN_COUNT_COMPLETION = SpanAttributes.LLM_TOKEN_COUNT_COMPLETION
910
948
  LLM_TOKEN_COUNT_TOTAL = SpanAttributes.LLM_TOKEN_COUNT_TOTAL
@@ -330,20 +330,45 @@ def llm_input_messages(
330
330
  tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
331
331
  ],
332
332
  ) -> Iterator[tuple[str, Any]]:
333
- for i, (role, content, _tool_call_id, tool_calls) in enumerate(messages):
333
+ for i, (role, content, tool_call_id, tool_calls) in enumerate(messages):
334
334
  yield f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_ROLE}", role.value.lower()
335
335
  yield f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_CONTENT}", content
336
+ if role == ChatCompletionMessageRole.TOOL and tool_call_id:
337
+ # Anthropic tool result spans
338
+ yield f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALL_ID}", tool_call_id
339
+
336
340
  if tool_calls is not None:
337
341
  for tool_call_index, tool_call in enumerate(tool_calls):
338
- yield (
339
- f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_FUNCTION_NAME}",
340
- tool_call["function"]["name"],
341
- )
342
- if arguments := tool_call["function"]["arguments"]:
342
+ if tool_call.get("type") == "tool_use":
343
+ # Anthropic tool call spans
344
+ yield (
345
+ f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_FUNCTION_NAME}",
346
+ tool_call["name"],
347
+ )
343
348
  yield (
344
349
  f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_FUNCTION_ARGUMENTS_JSON}",
345
- safe_json_dumps(jsonify(arguments)),
350
+ safe_json_dumps(jsonify(tool_call["input"])),
346
351
  )
352
+ yield (
353
+ f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_ID}",
354
+ tool_call["id"],
355
+ )
356
+ elif tool_call_function := tool_call.get("function"):
357
+ # OpenAI tool call spans
358
+ yield (
359
+ f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_FUNCTION_NAME}",
360
+ tool_call_function["name"],
361
+ )
362
+ if arguments := tool_call_function["arguments"]:
363
+ yield (
364
+ f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_FUNCTION_ARGUMENTS_JSON}",
365
+ safe_json_dumps(jsonify(arguments)),
366
+ )
367
+ if tool_call_id := tool_call.get("id"):
368
+ yield (
369
+ f"{LLM_INPUT_MESSAGES}.{i}.{MESSAGE_TOOL_CALLS}.{tool_call_index}.{TOOL_CALL_ID}",
370
+ tool_call_id,
371
+ )
347
372
 
348
373
 
349
374
  def _llm_output_messages(
@@ -418,5 +443,6 @@ MESSAGE_TOOL_CALLS = MessageAttributes.MESSAGE_TOOL_CALLS
418
443
 
419
444
  TOOL_CALL_FUNCTION_NAME = ToolCallAttributes.TOOL_CALL_FUNCTION_NAME
420
445
  TOOL_CALL_FUNCTION_ARGUMENTS_JSON = ToolCallAttributes.TOOL_CALL_FUNCTION_ARGUMENTS_JSON
421
-
446
+ TOOL_CALL_ID = ToolCallAttributes.TOOL_CALL_ID
447
+ MESSAGE_TOOL_CALL_ID = MessageAttributes.MESSAGE_TOOL_CALL_ID
422
448
  TOOL_JSON_SCHEMA = ToolAttributes.TOOL_JSON_SCHEMA
@@ -127,7 +127,7 @@ class Subscription:
127
127
  ):
128
128
  span.add_response_chunk(chunk)
129
129
  yield chunk
130
- span.set_attributes(llm_client.attributes)
130
+ span.set_attributes(llm_client.attributes)
131
131
  if span.status_message is not None:
132
132
  yield ChatCompletionSubscriptionError(message=span.status_message)
133
133
  async with info.context.db() as session:
@@ -0,0 +1,85 @@
1
+ from enum import Enum
2
+ from typing import Any, ClassVar, Optional, Union
3
+
4
+ import strawberry
5
+ from openinference.semconv.trace import OpenInferenceLLMProviderValues, SpanAttributes
6
+
7
+ from phoenix.trace.attributes import get_attribute_value
8
+
9
+
10
+ @strawberry.enum
11
+ class GenerativeProviderKey(Enum):
12
+ OPENAI = "OpenAI"
13
+ ANTHROPIC = "Anthropic"
14
+ AZURE_OPENAI = "Azure OpenAI"
15
+ GEMINI = "Google AI Studio"
16
+
17
+
18
+ @strawberry.type
19
+ class GenerativeProvider:
20
+ name: str
21
+ key: GenerativeProviderKey
22
+
23
+ model_provider_to_model_prefix_map: ClassVar[dict[GenerativeProviderKey, list[str]]] = {
24
+ GenerativeProviderKey.AZURE_OPENAI: [],
25
+ GenerativeProviderKey.ANTHROPIC: ["claude"],
26
+ GenerativeProviderKey.OPENAI: ["gpt", "o1"],
27
+ GenerativeProviderKey.GEMINI: ["gemini"],
28
+ }
29
+
30
+ attribute_provider_to_generative_provider_map: ClassVar[dict[str, GenerativeProviderKey]] = {
31
+ OpenInferenceLLMProviderValues.OPENAI.value: GenerativeProviderKey.OPENAI,
32
+ OpenInferenceLLMProviderValues.ANTHROPIC.value: GenerativeProviderKey.ANTHROPIC,
33
+ OpenInferenceLLMProviderValues.AZURE.value: GenerativeProviderKey.AZURE_OPENAI,
34
+ OpenInferenceLLMProviderValues.GOOGLE.value: GenerativeProviderKey.GEMINI,
35
+ }
36
+
37
+ @strawberry.field
38
+ async def dependencies(self) -> list[str]:
39
+ from phoenix.server.api.helpers.playground_registry import (
40
+ PLAYGROUND_CLIENT_REGISTRY,
41
+ PROVIDER_DEFAULT,
42
+ )
43
+
44
+ default_client = PLAYGROUND_CLIENT_REGISTRY.get_client(self.key, PROVIDER_DEFAULT)
45
+ if default_client:
46
+ return [dependency.name for dependency in default_client.dependencies()]
47
+ return []
48
+
49
+ @strawberry.field
50
+ async def dependencies_installed(self) -> bool:
51
+ from phoenix.server.api.helpers.playground_registry import (
52
+ PLAYGROUND_CLIENT_REGISTRY,
53
+ PROVIDER_DEFAULT,
54
+ )
55
+
56
+ default_client = PLAYGROUND_CLIENT_REGISTRY.get_client(self.key, PROVIDER_DEFAULT)
57
+ if default_client:
58
+ return default_client.dependencies_are_installed()
59
+ return False
60
+
61
+ @classmethod
62
+ def _infer_model_provider_from_model_name(
63
+ cls,
64
+ model_name: str,
65
+ ) -> Union[GenerativeProviderKey, None]:
66
+ for provider, prefixes in cls.model_provider_to_model_prefix_map.items():
67
+ if any(prefix.lower() in model_name.lower() for prefix in prefixes):
68
+ return provider
69
+ return None
70
+
71
+ @classmethod
72
+ def get_model_provider_from_attributes(
73
+ cls,
74
+ attributes: dict[str, Any],
75
+ ) -> Union[GenerativeProviderKey, None]:
76
+ llm_provider: Optional[str] = get_attribute_value(attributes, SpanAttributes.LLM_PROVIDER)
77
+
78
+ if isinstance(llm_provider, str) and (
79
+ provider := cls.attribute_provider_to_generative_provider_map.get(llm_provider)
80
+ ):
81
+ return provider
82
+ llm_model = get_attribute_value(attributes, SpanAttributes.LLM_MODEL_NAME)
83
+ if isinstance(llm_model, str):
84
+ return cls._infer_model_provider_from_model_name(llm_model)
85
+ return None
@@ -25,7 +25,7 @@ from phoenix.server.api.input_types.SpanAnnotationSort import (
25
25
  SpanAnnotationColumn,
26
26
  SpanAnnotationSort,
27
27
  )
28
- from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
28
+ from phoenix.server.api.types.GenerativeProvider import GenerativeProvider
29
29
  from phoenix.server.api.types.SortDir import SortDir
30
30
  from phoenix.server.api.types.SpanAnnotation import to_gql_span_annotation
31
31
  from phoenix.trace.attributes import get_attribute_value
@@ -300,10 +300,9 @@ class Span(Node):
300
300
 
301
301
  db_span = self.db_span
302
302
  attributes = db_span.attributes
303
- llm_provider: GenerativeProviderKey = (
304
- get_attribute_value(attributes, SpanAttributes.LLM_PROVIDER)
305
- or GenerativeProviderKey.OPENAI
306
- )
303
+ llm_provider = GenerativeProvider.get_model_provider_from_attributes(attributes)
304
+ if llm_provider is None:
305
+ return []
307
306
  llm_model = get_attribute_value(attributes, SpanAttributes.LLM_MODEL_NAME)
308
307
  invocation_parameters = get_attribute_value(
309
308
  attributes, SpanAttributes.LLM_INVOCATION_PARAMETERS
@@ -0,0 +1,78 @@
1
+ {
2
+ "_components-BXIz9ZO8.js": {
3
+ "file": "assets/components-BXIz9ZO8.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-BX8_Znqy.js",
7
+ "_pages-B8FpJuXu.js",
8
+ "_vendor-arizeai-CtHir-Ua.js",
9
+ "_vendor-codemirror-DLlGiguX.js",
10
+ "_vendor-three-DwGkEfCM.js"
11
+ ]
12
+ },
13
+ "_pages-B8FpJuXu.js": {
14
+ "file": "assets/pages-B8FpJuXu.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-BX8_Znqy.js",
18
+ "_vendor-arizeai-CtHir-Ua.js",
19
+ "_components-BXIz9ZO8.js",
20
+ "_vendor-recharts-CJRple0d.js",
21
+ "_vendor-codemirror-DLlGiguX.js"
22
+ ]
23
+ },
24
+ "_vendor-!~{003}~.js": {
25
+ "file": "assets/vendor-DxkFTwjz.css",
26
+ "src": "_vendor-!~{003}~.js"
27
+ },
28
+ "_vendor-BX8_Znqy.js": {
29
+ "file": "assets/vendor-BX8_Znqy.js",
30
+ "name": "vendor",
31
+ "imports": [
32
+ "_vendor-three-DwGkEfCM.js"
33
+ ],
34
+ "css": [
35
+ "assets/vendor-DxkFTwjz.css"
36
+ ]
37
+ },
38
+ "_vendor-arizeai-CtHir-Ua.js": {
39
+ "file": "assets/vendor-arizeai-CtHir-Ua.js",
40
+ "name": "vendor-arizeai",
41
+ "imports": [
42
+ "_vendor-BX8_Znqy.js"
43
+ ]
44
+ },
45
+ "_vendor-codemirror-DLlGiguX.js": {
46
+ "file": "assets/vendor-codemirror-DLlGiguX.js",
47
+ "name": "vendor-codemirror",
48
+ "imports": [
49
+ "_vendor-BX8_Znqy.js"
50
+ ]
51
+ },
52
+ "_vendor-recharts-CJRple0d.js": {
53
+ "file": "assets/vendor-recharts-CJRple0d.js",
54
+ "name": "vendor-recharts",
55
+ "imports": [
56
+ "_vendor-BX8_Znqy.js"
57
+ ]
58
+ },
59
+ "_vendor-three-DwGkEfCM.js": {
60
+ "file": "assets/vendor-three-DwGkEfCM.js",
61
+ "name": "vendor-three"
62
+ },
63
+ "index.tsx": {
64
+ "file": "assets/index-DTut7g1y.js",
65
+ "name": "index",
66
+ "src": "index.tsx",
67
+ "isEntry": true,
68
+ "imports": [
69
+ "_vendor-BX8_Znqy.js",
70
+ "_vendor-arizeai-CtHir-Ua.js",
71
+ "_pages-B8FpJuXu.js",
72
+ "_components-BXIz9ZO8.js",
73
+ "_vendor-three-DwGkEfCM.js",
74
+ "_vendor-recharts-CJRple0d.js",
75
+ "_vendor-codemirror-DLlGiguX.js"
76
+ ]
77
+ }
78
+ }