arize-phoenix 5.11.0__tar.gz → 5.12.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.
Files changed (332) hide show
  1. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/PKG-INFO +1 -1
  2. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/helpers/playground_clients.py +38 -67
  3. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/chat_mutations.py +6 -2
  4. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/subscriptions.py +52 -13
  5. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/TemplateLanguage.py +1 -0
  6. arize_phoenix-5.12.0/src/phoenix/server/static/.vite/manifest.json +78 -0
  7. arize_phoenix-5.11.0/src/phoenix/server/static/assets/components-C_HASv83.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/components-72cQL1d1.js +48 -48
  8. arize_phoenix-5.11.0/src/phoenix/server/static/assets/index-D7UiCRtr.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/index-BowjltW-.js +2 -2
  9. arize_phoenix-5.11.0/src/phoenix/server/static/assets/pages-DYHcAdjT.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/pages-DFAkBAUh.js +296 -277
  10. arize_phoenix-5.11.0/src/phoenix/server/static/assets/vendor-BCxsh5i3.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/vendor-DexmGnha.js +1 -1
  11. arize_phoenix-5.11.0/src/phoenix/server/static/assets/vendor-arizeai-C2CDZgMz.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/vendor-arizeai--Q3ol330.js +8 -8
  12. arize_phoenix-5.11.0/src/phoenix/server/static/assets/vendor-codemirror-DYbtnCTn.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/vendor-codemirror-B4bYvWa6.js +1 -1
  13. arize_phoenix-5.11.0/src/phoenix/server/static/assets/vendor-recharts-P6W8G0Mb.js → arize_phoenix-5.12.0/src/phoenix/server/static/assets/vendor-recharts-B4ZzJhNh.js +1 -1
  14. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/template_formatters.py +18 -0
  15. arize_phoenix-5.12.0/src/phoenix/version.py +1 -0
  16. arize_phoenix-5.11.0/src/phoenix/server/static/.vite/manifest.json +0 -78
  17. arize_phoenix-5.11.0/src/phoenix/version.py +0 -1
  18. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/.gitignore +0 -0
  19. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/IP_NOTICE +0 -0
  20. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/LICENSE +0 -0
  21. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/README.md +0 -0
  22. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/pyproject.toml +0 -0
  23. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/__init__.py +0 -0
  24. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/auth.py +0 -0
  25. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/config.py +0 -0
  26. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/core/__init__.py +0 -0
  27. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/core/embedding_dimension.py +0 -0
  28. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/core/model.py +0 -0
  29. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/core/model_schema.py +0 -0
  30. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  31. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/datetime_utils.py +0 -0
  32. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/README.md +0 -0
  33. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/__init__.py +0 -0
  34. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/alembic.ini +0 -0
  35. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/bulk_inserter.py +0 -0
  36. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/engines.py +0 -0
  37. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/enums.py +0 -0
  38. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/facilitator.py +0 -0
  39. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/helpers.py +0 -0
  40. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/__init__.py +0 -0
  41. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/constants.py +0 -0
  42. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/dataset.py +0 -0
  43. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  44. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  45. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/helpers.py +0 -0
  46. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/span.py +0 -0
  47. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  48. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  49. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/insertion/types.py +0 -0
  50. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrate.py +0 -0
  51. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/__init__.py +0 -0
  52. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/env.py +0 -0
  53. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  54. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  55. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  56. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  57. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  58. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/db/models.py +0 -0
  59. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/exceptions.py +0 -0
  60. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/__init__.py +0 -0
  61. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  62. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  63. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  64. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  65. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  66. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/functions.py +0 -0
  67. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/tracing.py +0 -0
  68. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/types.py +0 -0
  69. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/experiments/utils.py +0 -0
  70. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/__init__.py +0 -0
  71. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/errors.py +0 -0
  72. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/fixtures.py +0 -0
  73. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/inferences.py +0 -0
  74. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/schema.py +0 -0
  75. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/inferences/validation.py +0 -0
  76. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/logging/__init__.py +0 -0
  77. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/logging/_config.py +0 -0
  78. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/logging/_filter.py +0 -0
  79. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/logging/_formatter.py +0 -0
  80. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/README.md +0 -0
  81. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/__init__.py +0 -0
  82. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/binning.py +0 -0
  83. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/metrics.py +0 -0
  84. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/mixins.py +0 -0
  85. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  86. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/timeseries.py +0 -0
  87. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/metrics/wrappers.py +0 -0
  88. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/pointcloud/__init__.py +0 -0
  89. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/pointcloud/clustering.py +0 -0
  90. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  91. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/pointcloud/projectors.py +0 -0
  92. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  93. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/py.typed +0 -0
  94. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/__init__.py +0 -0
  95. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/README.md +0 -0
  96. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/__init__.py +0 -0
  97. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/auth.py +0 -0
  98. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/context.py +0 -0
  99. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  100. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  101. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  102. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  103. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  104. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  105. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  106. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  107. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  108. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  109. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  110. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  111. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  112. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  113. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  114. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  115. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  116. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  117. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  118. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  119. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  120. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  121. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  122. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  123. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  124. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  125. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  126. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/exceptions.py +0 -0
  127. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  128. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  129. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  130. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  131. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  132. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  133. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  134. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  135. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  136. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  137. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  138. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  139. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  140. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  141. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  142. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  143. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  144. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  145. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  146. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  147. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  148. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  149. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  150. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  151. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  152. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  153. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  154. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  155. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  156. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  157. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  158. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  159. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  160. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/TemplateOptions.py +0 -0
  161. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  162. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  163. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  164. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  165. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/interceptor.py +0 -0
  166. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  167. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  168. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  169. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  170. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  171. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  172. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  173. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  174. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  175. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  176. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/openapi/main.py +0 -0
  177. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  178. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/queries.py +0 -0
  179. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  180. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/auth.py +0 -0
  181. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  182. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  183. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/utils.py +0 -0
  184. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  185. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  186. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  187. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  188. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  189. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  190. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  191. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  192. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  193. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  194. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/schema.py +0 -0
  195. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  196. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  197. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  198. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  199. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  200. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  201. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  202. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  203. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  204. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  205. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  206. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  207. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  208. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  209. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  210. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  211. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  212. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  213. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  214. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  215. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  216. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  217. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  218. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  219. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  220. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  221. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Event.py +0 -0
  222. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  223. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  224. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  225. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  226. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  227. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  228. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  229. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  230. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  231. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  232. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  233. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  234. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  235. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  236. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  237. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Model.py +0 -0
  238. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  239. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  240. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Project.py +0 -0
  241. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  242. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  243. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  244. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Segments.py +0 -0
  245. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  246. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Span.py +0 -0
  247. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  248. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  249. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  250. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/Trace.py +0 -0
  251. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  252. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  253. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/User.py +0 -0
  254. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  255. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  256. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  257. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  258. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/__init__.py +0 -0
  259. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/node.py +0 -0
  260. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/types/pagination.py +0 -0
  261. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/api/utils.py +0 -0
  262. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/app.py +0 -0
  263. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/bearer_auth.py +0 -0
  264. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/dml_event.py +0 -0
  265. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/dml_event_handler.py +0 -0
  266. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/email/__init__.py +0 -0
  267. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/email/sender.py +0 -0
  268. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  269. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  270. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/email/types.py +0 -0
  271. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/grpc_server.py +0 -0
  272. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/jwt_store.py +0 -0
  273. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/main.py +0 -0
  274. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/oauth2.py +0 -0
  275. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/openapi/__init__.py +0 -0
  276. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/prometheus.py +0 -0
  277. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/rate_limiters.py +0 -0
  278. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  279. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  280. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  281. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  282. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  283. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  284. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  285. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  286. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  287. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  288. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/favicon.ico +0 -0
  289. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/static/modernizr.js +0 -0
  290. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/telemetry.py +0 -0
  291. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/templates/__init__.py +0 -0
  292. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/templates/index.html +0 -0
  293. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/thread_server.py +0 -0
  294. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/server/types.py +0 -0
  295. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/services.py +0 -0
  296. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/session/__init__.py +0 -0
  297. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/session/client.py +0 -0
  298. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/session/data_extractor.py +0 -0
  299. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/session/evaluation.py +0 -0
  300. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/session/session.py +0 -0
  301. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/settings.py +0 -0
  302. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/__init__.py +0 -0
  303. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/attributes.py +0 -0
  304. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/dsl/README.md +0 -0
  305. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  306. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/dsl/filter.py +0 -0
  307. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  308. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/dsl/query.py +0 -0
  309. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/errors.py +0 -0
  310. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  311. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/exporter.py +0 -0
  312. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/fixtures.py +0 -0
  313. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/otel.py +0 -0
  314. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/projects.py +0 -0
  315. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/schemas.py +0 -0
  316. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/span_evaluations.py +0 -0
  317. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  318. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  319. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/trace_dataset.py +0 -0
  320. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/utils.py +0 -0
  321. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/v1/__init__.py +0 -0
  322. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  323. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  324. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/__init__.py +0 -0
  325. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/client.py +0 -0
  326. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/deprecation.py +0 -0
  327. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/error_handling.py +0 -0
  328. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/json.py +0 -0
  329. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/logging.py +0 -0
  330. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/project.py +0 -0
  331. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/re.py +0 -0
  332. {arize_phoenix-5.11.0 → arize_phoenix-5.12.0}/src/phoenix/utilities/span_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 5.11.0
3
+ Version: 5.12.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
@@ -131,8 +131,8 @@ class PlaygroundRateLimiter(RateLimiter, KeyedSingleton):
131
131
  await self._throttler.async_wait_until_ready()
132
132
  request_start_time = time.time()
133
133
  maybe_coroutine = fn(*args, **kwargs)
134
- if inspect.iscoroutine(maybe_coroutine):
135
- return await maybe_coroutine # type: ignore
134
+ if inspect.isawaitable(maybe_coroutine):
135
+ return await maybe_coroutine # type: ignore[no-any-return]
136
136
  else:
137
137
  return maybe_coroutine
138
138
  except self._rate_limit_error:
@@ -144,10 +144,11 @@ class PlaygroundRateLimiter(RateLimiter, KeyedSingleton):
144
144
  try:
145
145
  request_start_time = time.time()
146
146
  await self._throttler.async_wait_until_ready()
147
- if inspect.iscoroutinefunction(fn):
148
- return await fn(*args, **kwargs) # type: ignore
147
+ maybe_coroutine = fn(*args, **kwargs)
148
+ if inspect.isawaitable(maybe_coroutine):
149
+ return await maybe_coroutine # type: ignore[no-any-return]
149
150
  else:
150
- return fn(*args, **kwargs)
151
+ return maybe_coroutine
151
152
  except self._rate_limit_error:
152
153
  self._throttler.on_rate_limit_error(
153
154
  request_start_time, verbose=self._verbose
@@ -295,12 +296,14 @@ class OpenAIStreamingClient(PlaygroundStreamingClient):
295
296
  BoundedFloatInvocationParameter(
296
297
  invocation_name="frequency_penalty",
297
298
  label="Frequency Penalty",
299
+ default_value=0.0,
298
300
  min_value=-2.0,
299
301
  max_value=2.0,
300
302
  ),
301
303
  BoundedFloatInvocationParameter(
302
304
  invocation_name="presence_penalty",
303
305
  label="Presence Penalty",
306
+ default_value=0.0,
304
307
  min_value=-2.0,
305
308
  max_value=2.0,
306
309
  ),
@@ -313,12 +316,14 @@ class OpenAIStreamingClient(PlaygroundStreamingClient):
313
316
  invocation_name="top_p",
314
317
  canonical_name=CanonicalParameterName.TOP_P,
315
318
  label="Top P",
319
+ default_value=1.0,
316
320
  min_value=0.0,
317
321
  max_value=1.0,
318
322
  ),
319
323
  IntInvocationParameter(
320
324
  invocation_name="seed",
321
325
  canonical_name=CanonicalParameterName.RANDOM_SEED,
326
+ default_value=0,
322
327
  label="Seed",
323
328
  ),
324
329
  JSONInvocationParameter(
@@ -345,7 +350,11 @@ class OpenAIStreamingClient(PlaygroundStreamingClient):
345
350
  from openai.types.chat import ChatCompletionStreamOptionsParam
346
351
 
347
352
  # Convert standard messages to OpenAI messages
348
- openai_messages = [self.to_openai_chat_completion_param(*message) for message in messages]
353
+ openai_messages = []
354
+ for message in messages:
355
+ openai_message = self.to_openai_chat_completion_param(*message)
356
+ if openai_message is not None:
357
+ openai_messages.append(openai_message)
349
358
  tool_call_ids: dict[int, str] = {}
350
359
  token_usage: Optional["CompletionUsage"] = None
351
360
  throttled_create = self.rate_limiter._alimit(self.client.chat.completions.create)
@@ -395,7 +404,7 @@ class OpenAIStreamingClient(PlaygroundStreamingClient):
395
404
  content: JSONScalarType,
396
405
  tool_call_id: Optional[str] = None,
397
406
  tool_calls: Optional[list[JSONScalarType]] = None,
398
- ) -> "ChatCompletionMessageParam":
407
+ ) -> Optional["ChatCompletionMessageParam"]:
399
408
  from openai.types.chat import (
400
409
  ChatCompletionAssistantMessageParam,
401
410
  ChatCompletionSystemMessageParam,
@@ -487,6 +496,7 @@ class OpenAIO1StreamingClient(OpenAIStreamingClient):
487
496
  invocation_name="seed",
488
497
  canonical_name=CanonicalParameterName.RANDOM_SEED,
489
498
  label="Seed",
499
+ default_value=0,
490
500
  ),
491
501
  JSONInvocationParameter(
492
502
  invocation_name="tool_choice",
@@ -495,65 +505,7 @@ class OpenAIO1StreamingClient(OpenAIStreamingClient):
495
505
  ),
496
506
  ]
497
507
 
498
- async def chat_completion_create(
499
- self,
500
- messages: list[
501
- tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
502
- ],
503
- tools: list[JSONScalarType],
504
- **invocation_parameters: Any,
505
- ) -> AsyncIterator[ChatCompletionChunk]:
506
- from openai import NOT_GIVEN
507
-
508
- # Convert standard messages to OpenAI messages
509
- unfiltered_openai_messages = [
510
- self.to_openai_o1_chat_completion_param(*message) for message in messages
511
- ]
512
-
513
- # filter out unsupported messages
514
- openai_messages: list[ChatCompletionMessageParam] = [
515
- message for message in unfiltered_openai_messages if message is not None
516
- ]
517
-
518
- tool_call_ids: dict[int, str] = {}
519
-
520
- throttled_create = self.rate_limiter._alimit(self.client.chat.completions.create)
521
- response = await throttled_create(
522
- messages=openai_messages,
523
- model=self.model_name,
524
- tools=tools or NOT_GIVEN,
525
- **invocation_parameters,
526
- )
527
-
528
- choice = response.choices[0]
529
- message = choice.message
530
- content = message.content
531
-
532
- text_chunk = TextChunk(content=content)
533
- yield text_chunk
534
-
535
- if (tool_calls := message.tool_calls) is not None:
536
- for tool_call_index, tool_call in enumerate(tool_calls):
537
- tool_call_id = (
538
- tool_call.id
539
- if tool_call.id is not None
540
- else tool_call_ids.get(tool_call_index, f"tool_call_{tool_call_index}")
541
- )
542
- tool_call_ids[tool_call_index] = tool_call_id
543
- if (function := tool_call.function) is not None:
544
- tool_call_chunk = ToolCallChunk(
545
- id=tool_call_id,
546
- function=FunctionCallChunk(
547
- name=function.name or "",
548
- arguments=function.arguments or "",
549
- ),
550
- )
551
- yield tool_call_chunk
552
-
553
- if (usage := response.usage) is not None:
554
- self._attributes.update(dict(self._llm_token_counts(usage)))
555
-
556
- def to_openai_o1_chat_completion_param(
508
+ def to_openai_chat_completion_param(
557
509
  self,
558
510
  role: ChatCompletionMessageRole,
559
511
  content: JSONScalarType,
@@ -640,8 +592,12 @@ class AzureOpenAIStreamingClient(OpenAIStreamingClient):
640
592
  provider_key=GenerativeProviderKey.ANTHROPIC,
641
593
  model_names=[
642
594
  PROVIDER_DEFAULT,
595
+ "claude-3-5-sonnet-latest",
596
+ "claude-3-5-haiku-latest",
597
+ "claude-3-5-sonnet-20241022",
598
+ "claude-3-5-haiku-20241022",
643
599
  "claude-3-5-sonnet-20240620",
644
- "claude-3-opus-20240229",
600
+ "claude-3-opus-latest",
645
601
  "claude-3-sonnet-20240229",
646
602
  "claude-3-haiku-20240307",
647
603
  ],
@@ -674,12 +630,14 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
674
630
  invocation_name="max_tokens",
675
631
  canonical_name=CanonicalParameterName.MAX_COMPLETION_TOKENS,
676
632
  label="Max Tokens",
633
+ default_value=1024,
677
634
  required=True,
678
635
  ),
679
636
  BoundedFloatInvocationParameter(
680
637
  invocation_name="temperature",
681
638
  canonical_name=CanonicalParameterName.TEMPERATURE,
682
639
  label="Temperature",
640
+ default_value=0.0,
683
641
  min_value=0.0,
684
642
  max_value=1.0,
685
643
  ),
@@ -692,6 +650,7 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
692
650
  invocation_name="top_p",
693
651
  canonical_name=CanonicalParameterName.TOP_P,
694
652
  label="Top P",
653
+ default_value=1.0,
695
654
  min_value=0.0,
696
655
  max_value=1.0,
697
656
  ),
@@ -867,21 +826,25 @@ class GeminiStreamingClient(PlaygroundStreamingClient):
867
826
  FloatInvocationParameter(
868
827
  invocation_name="presence_penalty",
869
828
  label="Presence Penalty",
829
+ default_value=0.0,
870
830
  ),
871
831
  FloatInvocationParameter(
872
832
  invocation_name="frequency_penalty",
873
833
  label="Frequency Penalty",
834
+ default_value=0.0,
874
835
  ),
875
836
  BoundedFloatInvocationParameter(
876
837
  invocation_name="top_p",
877
838
  canonical_name=CanonicalParameterName.TOP_P,
878
839
  label="Top P",
840
+ default_value=1.0,
879
841
  min_value=0.0,
880
842
  max_value=1.0,
881
843
  ),
882
844
  BoundedFloatInvocationParameter(
883
845
  invocation_name="top_k",
884
846
  label="Top K",
847
+ default_value=1.0,
885
848
  min_value=0.0,
886
849
  max_value=1.0,
887
850
  ),
@@ -889,6 +852,7 @@ class GeminiStreamingClient(PlaygroundStreamingClient):
889
852
  invocation_name="seed",
890
853
  canonical_name=CanonicalParameterName.RANDOM_SEED,
891
854
  label="Seed",
855
+ default_value=0,
892
856
  ),
893
857
  ]
894
858
 
@@ -923,6 +887,13 @@ class GeminiStreamingClient(PlaygroundStreamingClient):
923
887
  chat = client.start_chat(history=gemini_message_history)
924
888
  stream = await chat.send_message_async(**gemini_params)
925
889
  async for event in stream:
890
+ self._attributes.update(
891
+ {
892
+ LLM_TOKEN_COUNT_PROMPT: event.usage_metadata.prompt_token_count,
893
+ LLM_TOKEN_COUNT_COMPLETION: event.usage_metadata.candidates_token_count,
894
+ LLM_TOKEN_COUNT_TOTAL: event.usage_metadata.total_token_count,
895
+ }
896
+ )
926
897
  yield TextChunk(content=event.text)
927
898
 
928
899
  def _build_gemini_messages(
@@ -25,6 +25,7 @@ from typing_extensions import assert_never
25
25
  from phoenix.datetime_utils import local_now, normalize_datetime
26
26
  from phoenix.db import models
27
27
  from phoenix.db.helpers import get_dataset_example_revisions
28
+ from phoenix.server.api.auth import IsNotReadOnly
28
29
  from phoenix.server.api.context import Context
29
30
  from phoenix.server.api.exceptions import BadRequest, CustomGraphQLError, NotFound
30
31
  from phoenix.server.api.helpers.playground_clients import (
@@ -67,6 +68,7 @@ from phoenix.utilities.json import jsonify
67
68
  from phoenix.utilities.template_formatters import (
68
69
  FStringTemplateFormatter,
69
70
  MustacheTemplateFormatter,
71
+ NoOpFormatter,
70
72
  TemplateFormatter,
71
73
  )
72
74
 
@@ -117,7 +119,7 @@ class ChatCompletionOverDatasetMutationPayload:
117
119
 
118
120
  @strawberry.type
119
121
  class ChatCompletionMutationMixin:
120
- @strawberry.mutation
122
+ @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
121
123
  @classmethod
122
124
  async def chat_completion_over_dataset(
123
125
  cls,
@@ -272,7 +274,7 @@ class ChatCompletionMutationMixin:
272
274
  payload.examples.append(example_payload)
273
275
  return payload
274
276
 
275
- @strawberry.mutation
277
+ @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
276
278
  @classmethod
277
279
  async def chat_completion(
278
280
  cls, info: Info[Context, None], input: ChatCompletionInput
@@ -481,6 +483,8 @@ def _template_formatter(template_language: TemplateLanguage) -> TemplateFormatte
481
483
  return MustacheTemplateFormatter()
482
484
  if template_language is TemplateLanguage.F_STRING:
483
485
  return FStringTemplateFormatter()
486
+ if template_language is TemplateLanguage.NONE:
487
+ return NoOpFormatter()
484
488
  assert_never(template_language)
485
489
 
486
490
 
@@ -1,11 +1,11 @@
1
1
  import asyncio
2
2
  import logging
3
- from asyncio import FIRST_COMPLETED, Queue, QueueEmpty, Task, create_task, wait, wait_for
4
3
  from collections.abc import AsyncIterator, Iterator
5
4
  from datetime import datetime, timedelta, timezone
6
5
  from typing import (
7
6
  Any,
8
7
  AsyncGenerator,
8
+ Coroutine,
9
9
  Iterable,
10
10
  Mapping,
11
11
  Optional,
@@ -24,6 +24,7 @@ from typing_extensions import TypeAlias, assert_never
24
24
 
25
25
  from phoenix.datetime_utils import local_now, normalize_datetime
26
26
  from phoenix.db import models
27
+ from phoenix.server.api.auth import IsNotReadOnly
27
28
  from phoenix.server.api.context import Context
28
29
  from phoenix.server.api.exceptions import BadRequest, CustomGraphQLError, NotFound
29
30
  from phoenix.server.api.helpers.playground_clients import (
@@ -63,6 +64,7 @@ from phoenix.server.types import DbSessionFactory
63
64
  from phoenix.utilities.template_formatters import (
64
65
  FStringTemplateFormatter,
65
66
  MustacheTemplateFormatter,
67
+ NoOpFormatter,
66
68
  TemplateFormatter,
67
69
  TemplateFormatterError,
68
70
  )
@@ -86,7 +88,7 @@ PLAYGROUND_PROJECT_NAME = "playground"
86
88
 
87
89
  @strawberry.type
88
90
  class Subscription:
89
- @strawberry.subscription
91
+ @strawberry.subscription(permission_classes=[IsNotReadOnly]) # type: ignore
90
92
  async def chat_completion(
91
93
  self, info: Info[Context, None], input: ChatCompletionInput
92
94
  ) -> AsyncIterator[ChatCompletionSubscriptionPayload]:
@@ -161,7 +163,7 @@ class Subscription:
161
163
  info.context.event_queue.put(SpanInsertEvent(ids=(playground_project_id,)))
162
164
  yield ChatCompletionSubscriptionResult(span=to_gql_span(db_span))
163
165
 
164
- @strawberry.subscription
166
+ @strawberry.subscription(permission_classes=[IsNotReadOnly]) # type: ignore
165
167
  async def chat_completion_over_dataset(
166
168
  self, info: Info[Context, None], input: ChatCompletionOverDatasetInput
167
169
  ) -> AsyncIterator[ChatCompletionSubscriptionPayload]:
@@ -286,7 +288,7 @@ class Subscription:
286
288
  experiment=to_gql_experiment(experiment)
287
289
  ) # eagerly yields experiment so it can be linked by consumers of the subscription
288
290
 
289
- results: Queue[ChatCompletionResult] = Queue()
291
+ results: asyncio.Queue[ChatCompletionResult] = asyncio.Queue()
290
292
  not_started: list[tuple[DatasetExampleID, ChatStream]] = [
291
293
  (
292
294
  GlobalID(DatasetExample.__name__, str(revision.dataset_example_id)),
@@ -302,7 +304,11 @@ class Subscription:
302
304
  for revision in revisions
303
305
  ]
304
306
  in_progress: list[
305
- tuple[Optional[DatasetExampleID], ChatStream, Task[ChatCompletionSubscriptionPayload]]
307
+ tuple[
308
+ Optional[DatasetExampleID],
309
+ ChatStream,
310
+ asyncio.Task[ChatCompletionSubscriptionPayload],
311
+ ]
306
312
  ] = []
307
313
  max_in_progress = 3
308
314
  write_batch_size = 10
@@ -314,7 +320,9 @@ class Subscription:
314
320
  task = _create_task_with_timeout(stream)
315
321
  in_progress.append((ex_id, stream, task))
316
322
  async_tasks_to_run = [task for _, _, task in in_progress]
317
- completed_tasks, _ = await wait(async_tasks_to_run, return_when=FIRST_COMPLETED)
323
+ completed_tasks, _ = await asyncio.wait(
324
+ async_tasks_to_run, return_when=asyncio.FIRST_COMPLETED
325
+ )
318
326
  for completed_task in completed_tasks:
319
327
  idx = [task for _, _, task in in_progress].index(completed_task)
320
328
  example_id, stream, _ = in_progress[idx]
@@ -326,7 +334,7 @@ class Subscription:
326
334
  del in_progress[idx] # removes timed-out stream
327
335
  if example_id is not None:
328
336
  yield ChatCompletionSubscriptionError(
329
- message="Timed out", dataset_example_id=example_id
337
+ message="Playground task timed out", dataset_example_id=example_id
330
338
  )
331
339
  except Exception as error:
332
340
  del in_progress[idx] # removes failed stream
@@ -367,7 +375,7 @@ async def _stream_chat_completion_over_dataset_example(
367
375
  input: ChatCompletionOverDatasetInput,
368
376
  llm_client: PlaygroundStreamingClient,
369
377
  revision: models.DatasetExampleRevision,
370
- results: Queue[ChatCompletionResult],
378
+ results: asyncio.Queue[ChatCompletionResult],
371
379
  experiment_id: int,
372
380
  project_id: int,
373
381
  ) -> ChatStream:
@@ -469,23 +477,52 @@ def _is_result_payloads_stream(
469
477
 
470
478
  def _create_task_with_timeout(
471
479
  iterable: AsyncIterator[GenericType], timeout_in_seconds: int = 90
472
- ) -> Task[GenericType]:
473
- return create_task(wait_for(_as_coroutine(iterable), timeout=timeout_in_seconds))
480
+ ) -> asyncio.Task[GenericType]:
481
+ return asyncio.create_task(
482
+ _wait_for(
483
+ _as_coroutine(iterable),
484
+ timeout=timeout_in_seconds,
485
+ timeout_message="Playground task timed out",
486
+ )
487
+ )
488
+
489
+
490
+ async def _wait_for(
491
+ coro: Coroutine[None, None, GenericType],
492
+ timeout: float,
493
+ timeout_message: Optional[str] = None,
494
+ ) -> GenericType:
495
+ """
496
+ A function that imitates asyncio.wait_for, but allows the task to be
497
+ cancelled with a custom message.
498
+ """
499
+ task = asyncio.create_task(coro)
500
+ done, pending = await asyncio.wait([task], timeout=timeout)
501
+ assert len(done) + len(pending) == 1
502
+ if done:
503
+ task = done.pop()
504
+ return task.result()
505
+ task = pending.pop()
506
+ task.cancel(msg=timeout_message)
507
+ try:
508
+ return await task
509
+ except asyncio.CancelledError:
510
+ raise asyncio.TimeoutError()
474
511
 
475
512
 
476
- async def _drain(queue: Queue[GenericType]) -> list[GenericType]:
513
+ async def _drain(queue: asyncio.Queue[GenericType]) -> list[GenericType]:
477
514
  values: list[GenericType] = []
478
515
  while not queue.empty():
479
516
  values.append(await queue.get())
480
517
  return values
481
518
 
482
519
 
483
- def _drain_no_wait(queue: Queue[GenericType]) -> list[GenericType]:
520
+ def _drain_no_wait(queue: asyncio.Queue[GenericType]) -> list[GenericType]:
484
521
  values: list[GenericType] = []
485
522
  while True:
486
523
  try:
487
524
  values.append(queue.get_nowait())
488
- except QueueEmpty:
525
+ except asyncio.QueueEmpty:
489
526
  break
490
527
  return values
491
528
 
@@ -526,6 +563,8 @@ def _template_formatter(template_language: TemplateLanguage) -> TemplateFormatte
526
563
  return MustacheTemplateFormatter()
527
564
  if template_language is TemplateLanguage.F_STRING:
528
565
  return FStringTemplateFormatter()
566
+ if template_language is TemplateLanguage.NONE:
567
+ return NoOpFormatter()
529
568
  assert_never(template_language)
530
569
 
531
570
 
@@ -5,5 +5,6 @@ import strawberry
5
5
 
6
6
  @strawberry.enum
7
7
  class TemplateLanguage(Enum):
8
+ NONE = "NONE"
8
9
  MUSTACHE = "MUSTACHE"
9
10
  F_STRING = "F_STRING"
@@ -0,0 +1,78 @@
1
+ {
2
+ "_components-72cQL1d1.js": {
3
+ "file": "assets/components-72cQL1d1.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-DexmGnha.js",
7
+ "_pages-DFAkBAUh.js",
8
+ "_vendor-arizeai--Q3ol330.js",
9
+ "_vendor-codemirror-B4bYvWa6.js",
10
+ "_vendor-three-DwGkEfCM.js"
11
+ ]
12
+ },
13
+ "_pages-DFAkBAUh.js": {
14
+ "file": "assets/pages-DFAkBAUh.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-DexmGnha.js",
18
+ "_vendor-arizeai--Q3ol330.js",
19
+ "_components-72cQL1d1.js",
20
+ "_vendor-recharts-B4ZzJhNh.js",
21
+ "_vendor-codemirror-B4bYvWa6.js"
22
+ ]
23
+ },
24
+ "_vendor-!~{003}~.js": {
25
+ "file": "assets/vendor-DxkFTwjz.css",
26
+ "src": "_vendor-!~{003}~.js"
27
+ },
28
+ "_vendor-DexmGnha.js": {
29
+ "file": "assets/vendor-DexmGnha.js",
30
+ "name": "vendor",
31
+ "imports": [
32
+ "_vendor-three-DwGkEfCM.js"
33
+ ],
34
+ "css": [
35
+ "assets/vendor-DxkFTwjz.css"
36
+ ]
37
+ },
38
+ "_vendor-arizeai--Q3ol330.js": {
39
+ "file": "assets/vendor-arizeai--Q3ol330.js",
40
+ "name": "vendor-arizeai",
41
+ "imports": [
42
+ "_vendor-DexmGnha.js"
43
+ ]
44
+ },
45
+ "_vendor-codemirror-B4bYvWa6.js": {
46
+ "file": "assets/vendor-codemirror-B4bYvWa6.js",
47
+ "name": "vendor-codemirror",
48
+ "imports": [
49
+ "_vendor-DexmGnha.js"
50
+ ]
51
+ },
52
+ "_vendor-recharts-B4ZzJhNh.js": {
53
+ "file": "assets/vendor-recharts-B4ZzJhNh.js",
54
+ "name": "vendor-recharts",
55
+ "imports": [
56
+ "_vendor-DexmGnha.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-BowjltW-.js",
65
+ "name": "index",
66
+ "src": "index.tsx",
67
+ "isEntry": true,
68
+ "imports": [
69
+ "_vendor-DexmGnha.js",
70
+ "_vendor-arizeai--Q3ol330.js",
71
+ "_pages-DFAkBAUh.js",
72
+ "_components-72cQL1d1.js",
73
+ "_vendor-three-DwGkEfCM.js",
74
+ "_vendor-recharts-B4ZzJhNh.js",
75
+ "_vendor-codemirror-B4bYvWa6.js"
76
+ ]
77
+ }
78
+ }