arize-phoenix 4.10.0__tar.gz → 4.10.2rc0__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 (287) hide show
  1. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/PKG-INFO +1 -1
  2. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/context.py +2 -0
  3. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  4. arize_phoenix-4.10.2rc0/src/phoenix/server/api/dataloaders/span_annotations.py +35 -0
  5. arize_phoenix-4.10.2rc0/src/phoenix/server/api/types/Annotation.py +21 -0
  6. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Evaluation.py +4 -22
  7. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Span.py +16 -4
  8. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/SpanAnnotation.py +4 -6
  9. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/app.py +19 -0
  10. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/main.py +4 -1
  11. arize_phoenix-4.10.2rc0/src/phoenix/server/static/.vite/manifest.json +78 -0
  12. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/components-C8sm_r1F.js +1142 -0
  13. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/index-BEKPzgQs.js +100 -0
  14. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/pages-bN7juCjh.js +2885 -0
  15. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-CUDAPm8e.js +641 -0
  16. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +1 -0
  17. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-arizeai-Do2HOmcL.js +662 -0
  18. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-codemirror-CrdxOlMs.js +12 -0
  19. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-recharts-PKRvByVe.js +59 -0
  20. arize_phoenix-4.10.2rc0/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +2998 -0
  21. arize_phoenix-4.10.2rc0/src/phoenix/server/templates/index.html +99 -0
  22. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/schemas.py +1 -0
  23. arize_phoenix-4.10.2rc0/src/phoenix/version.py +1 -0
  24. arize_phoenix-4.10.0/src/phoenix/server/static/index.css +0 -6
  25. arize_phoenix-4.10.0/src/phoenix/server/static/index.js +0 -8547
  26. arize_phoenix-4.10.0/src/phoenix/server/templates/index.html +0 -48
  27. arize_phoenix-4.10.0/src/phoenix/version.py +0 -1
  28. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/.gitignore +0 -0
  29. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/IP_NOTICE +0 -0
  30. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/LICENSE +0 -0
  31. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/README.md +0 -0
  32. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  33. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  34. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  35. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  36. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  37. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  38. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  39. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
  40. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  41. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/pyproject.toml +0 -0
  42. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/__init__.py +0 -0
  43. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/config.py +0 -0
  44. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/core/__init__.py +0 -0
  45. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/core/embedding_dimension.py +0 -0
  46. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/core/model.py +0 -0
  47. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/core/model_schema.py +0 -0
  48. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/core/model_schema_adapter.py +0 -0
  49. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/datetime_utils.py +0 -0
  50. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/README.md +0 -0
  51. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/__init__.py +0 -0
  52. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/alembic.ini +0 -0
  53. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/bulk_inserter.py +0 -0
  54. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/engines.py +0 -0
  55. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/helpers.py +0 -0
  56. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/insertion/__init__.py +0 -0
  57. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/insertion/dataset.py +0 -0
  58. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/insertion/evaluation.py +0 -0
  59. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/insertion/helpers.py +0 -0
  60. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/insertion/span.py +0 -0
  61. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrate.py +0 -0
  62. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/__init__.py +0 -0
  63. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/env.py +0 -0
  64. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/script.py.mako +0 -0
  65. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/types.py +0 -0
  66. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  67. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  68. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/db/models.py +0 -0
  69. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/exceptions.py +0 -0
  70. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/__init__.py +0 -0
  71. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  72. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/evaluators/base.py +0 -0
  73. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  74. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  75. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  76. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/functions.py +0 -0
  77. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/tracing.py +0 -0
  78. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/types.py +0 -0
  79. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/experiments/utils.py +0 -0
  80. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/__init__.py +0 -0
  81. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/errors.py +0 -0
  82. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/fixtures.py +0 -0
  83. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/inferences.py +0 -0
  84. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/schema.py +0 -0
  85. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/inferences/validation.py +0 -0
  86. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/README.md +0 -0
  87. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/__init__.py +0 -0
  88. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/binning.py +0 -0
  89. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/metrics.py +0 -0
  90. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/mixins.py +0 -0
  91. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  92. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/timeseries.py +0 -0
  93. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/metrics/wrappers.py +0 -0
  94. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/pointcloud/__init__.py +0 -0
  95. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/pointcloud/clustering.py +0 -0
  96. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  97. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/pointcloud/projectors.py +0 -0
  98. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  99. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/py.typed +0 -0
  100. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/__init__.py +0 -0
  101. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/__init__.py +0 -0
  102. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  103. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  104. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  105. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  106. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  107. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  108. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  109. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  110. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
  111. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  112. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  113. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  114. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  115. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  116. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  117. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  118. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  119. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  120. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
  121. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  122. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  123. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
  124. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  125. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  126. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  127. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  128. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  129. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  130. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  131. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  132. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  133. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/CreateSpanAnnotationsInput.py +0 -0
  134. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/CreateTraceAnnotationsInput.py +0 -0
  135. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  136. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  137. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  138. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  139. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  140. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  141. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  142. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  143. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  144. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  145. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  146. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/PatchAnnotationsInput.py +0 -0
  147. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  148. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  149. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  150. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  151. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  152. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  153. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/interceptor.py +0 -0
  154. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  155. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/auth.py +0 -0
  156. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  157. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  158. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  159. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  160. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  161. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  162. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  163. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/openapi/main.py +0 -0
  164. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/openapi/schema.py +0 -0
  165. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/queries.py +0 -0
  166. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/__init__.py +0 -0
  167. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/utils.py +0 -0
  168. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  169. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/dataset_examples.py +0 -0
  170. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  171. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  172. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  173. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  174. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  175. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  176. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  177. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/schema.py +0 -0
  178. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  179. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Cluster.py +0 -0
  180. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  181. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  182. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Dataset.py +0 -0
  183. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  184. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  185. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  186. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  187. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Dimension.py +0 -0
  188. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  189. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  190. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  191. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  192. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  193. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  194. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  195. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  196. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  197. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Event.py +0 -0
  198. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  199. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  200. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Experiment.py +0 -0
  201. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  202. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  203. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  204. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  205. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  206. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Functionality.py +0 -0
  207. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Inferences.py +0 -0
  208. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  209. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/MimeType.py +0 -0
  210. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Model.py +0 -0
  211. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  212. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  213. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Project.py +0 -0
  214. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  215. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  216. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  217. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Segments.py +0 -0
  218. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/SortDir.py +0 -0
  219. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  220. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/Trace.py +0 -0
  221. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  222. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  223. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  224. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  225. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/__init__.py +0 -0
  226. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/node.py +0 -0
  227. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/types/pagination.py +0 -0
  228. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/api/utils.py +0 -0
  229. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/grpc_server.py +0 -0
  230. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/openapi/__init__.py +0 -0
  231. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/openapi/docs.py +0 -0
  232. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/prometheus.py +0 -0
  233. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  234. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  235. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  236. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  237. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  238. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  239. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  240. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  241. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/favicon.ico +0 -0
  242. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/static/modernizr.js +0 -0
  243. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/telemetry.py +0 -0
  244. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/templates/__init__.py +0 -0
  245. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/server/thread_server.py +0 -0
  246. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/services.py +0 -0
  247. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/session/__init__.py +0 -0
  248. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/session/client.py +0 -0
  249. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/session/data_extractor.py +0 -0
  250. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/session/evaluation.py +0 -0
  251. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/session/session.py +0 -0
  252. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/settings.py +0 -0
  253. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/__init__.py +0 -0
  254. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/attributes.py +0 -0
  255. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/dsl/README.md +0 -0
  256. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/dsl/__init__.py +0 -0
  257. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/dsl/filter.py +0 -0
  258. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/dsl/helpers.py +0 -0
  259. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/dsl/query.py +0 -0
  260. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/errors.py +0 -0
  261. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  262. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/exporter.py +0 -0
  263. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/fixtures.py +0 -0
  264. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/langchain/__init__.py +0 -0
  265. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  266. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/llama_index/__init__.py +0 -0
  267. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/llama_index/callback.py +0 -0
  268. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/openai/__init__.py +0 -0
  269. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/openai/instrumentor.py +0 -0
  270. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/otel.py +0 -0
  271. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/projects.py +0 -0
  272. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/span_evaluations.py +0 -0
  273. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/span_json_decoder.py +0 -0
  274. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/span_json_encoder.py +0 -0
  275. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/trace_dataset.py +0 -0
  276. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/utils.py +0 -0
  277. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/v1/__init__.py +0 -0
  278. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  279. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  280. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/__init__.py +0 -0
  281. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/deprecation.py +0 -0
  282. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/error_handling.py +0 -0
  283. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/json.py +0 -0
  284. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/logging.py +0 -0
  285. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/project.py +0 -0
  286. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/src/phoenix/utilities/re.py +0 -0
  287. {arize_phoenix-4.10.0 → arize_phoenix-4.10.2rc0}/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: 4.10.0
3
+ Version: 4.10.2rc0
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
@@ -27,6 +27,7 @@ from phoenix.server.api.dataloaders import (
27
27
  MinStartOrMaxEndTimeDataLoader,
28
28
  ProjectByNameDataLoader,
29
29
  RecordCountDataLoader,
30
+ SpanAnnotationsDataLoader,
30
31
  SpanDescendantsDataLoader,
31
32
  SpanEvaluationsDataLoader,
32
33
  SpanProjectsDataLoader,
@@ -59,6 +60,7 @@ class DataLoaders:
59
60
  trace_evaluations: TraceEvaluationsDataLoader
60
61
  trace_row_ids: TraceRowIdsDataLoader
61
62
  project_by_name: ProjectByNameDataLoader
63
+ span_annotations: SpanAnnotationsDataLoader
62
64
 
63
65
 
64
66
  ProjectRowId: TypeAlias = int
@@ -26,6 +26,7 @@ from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLo
26
26
  from .min_start_or_max_end_times import MinStartOrMaxEndTimeCache, MinStartOrMaxEndTimeDataLoader
27
27
  from .project_by_name import ProjectByNameDataLoader
28
28
  from .record_counts import RecordCountCache, RecordCountDataLoader
29
+ from .span_annotations import SpanAnnotationsDataLoader
29
30
  from .span_descendants import SpanDescendantsDataLoader
30
31
  from .span_evaluations import SpanEvaluationsDataLoader
31
32
  from .span_projects import SpanProjectsDataLoader
@@ -56,6 +57,7 @@ __all__ = [
56
57
  "TraceEvaluationsDataLoader",
57
58
  "TraceRowIdsDataLoader",
58
59
  "ProjectByNameDataLoader",
60
+ "SpanAnnotationsDataLoader",
59
61
  ]
60
62
 
61
63
 
@@ -0,0 +1,35 @@
1
+ from collections import defaultdict
2
+ from typing import (
3
+ AsyncContextManager,
4
+ Callable,
5
+ DefaultDict,
6
+ List,
7
+ )
8
+
9
+ from sqlalchemy import select
10
+ from sqlalchemy.ext.asyncio import AsyncSession
11
+ from strawberry.dataloader import DataLoader
12
+ from typing_extensions import TypeAlias
13
+
14
+ from phoenix.db import models
15
+ from phoenix.server.api.types.SpanAnnotation import SpanAnnotation, to_gql_span_annotation
16
+
17
+ Key: TypeAlias = int
18
+ Result: TypeAlias = List[SpanAnnotation]
19
+
20
+
21
+ class SpanAnnotationsDataLoader(DataLoader[Key, Result]):
22
+ def __init__(self, db: Callable[[], AsyncContextManager[AsyncSession]]) -> None:
23
+ super().__init__(load_fn=self._load_fn)
24
+ self._db = db
25
+
26
+ async def _load_fn(self, keys: List[Key]) -> List[Result]:
27
+ span_annotations_by_id: DefaultDict[Key, Result] = defaultdict(list)
28
+ msa = models.SpanAnnotation
29
+ async with self._db() as session:
30
+ data = await session.stream_scalars(select(msa).where(msa.span_rowid.in_(keys)))
31
+ async for span_annotation in data:
32
+ span_annotations_by_id[span_annotation.span_rowid].append(
33
+ to_gql_span_annotation(span_annotation)
34
+ )
35
+ return [span_annotations_by_id[key] for key in keys]
@@ -0,0 +1,21 @@
1
+ from typing import Optional
2
+
3
+ import strawberry
4
+
5
+
6
+ @strawberry.interface
7
+ class Annotation:
8
+ name: str = strawberry.field(
9
+ description="Name of the annotation, e.g. 'helpfulness' or 'relevance'."
10
+ )
11
+ score: Optional[float] = strawberry.field(
12
+ description="Value of the annotation in the form of a numeric score."
13
+ )
14
+ label: Optional[str] = strawberry.field(
15
+ description="Value of the annotation in the form of a string, e.g. "
16
+ "'helpful' or 'not helpful'. Note that the label is not necessarily binary."
17
+ )
18
+ explanation: Optional[str] = strawberry.field(
19
+ description="The annotator's explanation for the annotation result (i.e. "
20
+ "score or label, or both) given to the subject."
21
+ )
@@ -1,31 +1,13 @@
1
- from typing import Optional
2
-
3
1
  import strawberry
4
2
 
5
3
  import phoenix.trace.v1 as pb
6
4
  from phoenix.db.models import DocumentAnnotation, SpanAnnotation, TraceAnnotation
7
5
 
8
-
9
- @strawberry.interface
10
- class Evaluation:
11
- name: str = strawberry.field(
12
- description="Name of the evaluation, e.g. 'helpfulness' or 'relevance'."
13
- )
14
- score: Optional[float] = strawberry.field(
15
- description="Result of the evaluation in the form of a numeric score."
16
- )
17
- label: Optional[str] = strawberry.field(
18
- description="Result of the evaluation in the form of a string, e.g. "
19
- "'helpful' or 'not helpful'. Note that the label is not necessarily binary."
20
- )
21
- explanation: Optional[str] = strawberry.field(
22
- description="The evaluator's explanation for the evaluation result (i.e. "
23
- "score or label, or both) given to the subject."
24
- )
6
+ from .Annotation import Annotation
25
7
 
26
8
 
27
9
  @strawberry.type
28
- class TraceEvaluation(Evaluation):
10
+ class TraceEvaluation(Annotation):
29
11
  @staticmethod
30
12
  def from_pb_evaluation(evaluation: pb.Evaluation) -> "TraceEvaluation":
31
13
  result = evaluation.result
@@ -50,7 +32,7 @@ class TraceEvaluation(Evaluation):
50
32
 
51
33
 
52
34
  @strawberry.type
53
- class SpanEvaluation(Evaluation):
35
+ class SpanEvaluation(Annotation):
54
36
  @staticmethod
55
37
  def from_pb_evaluation(evaluation: pb.Evaluation) -> "SpanEvaluation":
56
38
  result = evaluation.result
@@ -75,7 +57,7 @@ class SpanEvaluation(Evaluation):
75
57
 
76
58
 
77
59
  @strawberry.type
78
- class DocumentEvaluation(Evaluation):
60
+ class DocumentEvaluation(Annotation):
79
61
  document_position: int = strawberry.field(
80
62
  description="The zero-based index among retrieved documents, which "
81
63
  "is collected as a list (even when ordering is not inherently meaningful)."
@@ -19,12 +19,14 @@ from phoenix.server.api.helpers.dataset_helpers import (
19
19
  get_dataset_example_input,
20
20
  get_dataset_example_output,
21
21
  )
22
- from phoenix.server.api.types.DocumentRetrievalMetrics import DocumentRetrievalMetrics
23
- from phoenix.server.api.types.Evaluation import DocumentEvaluation, SpanEvaluation
24
- from phoenix.server.api.types.ExampleRevisionInterface import ExampleRevision
25
- from phoenix.server.api.types.MimeType import MimeType
26
22
  from phoenix.trace.attributes import get_attribute_value
27
23
 
24
+ from .DocumentRetrievalMetrics import DocumentRetrievalMetrics
25
+ from .Evaluation import DocumentEvaluation, SpanEvaluation
26
+ from .ExampleRevisionInterface import ExampleRevision
27
+ from .MimeType import MimeType
28
+ from .SpanAnnotation import SpanAnnotation
29
+
28
30
  if TYPE_CHECKING:
29
31
  from phoenix.server.api.types.Project import Project
30
32
 
@@ -60,6 +62,7 @@ class SpanKind(Enum):
60
62
  agent = "AGENT"
61
63
  reranker = "RERANKER"
62
64
  evaluator = "EVALUATOR"
65
+ guardrail = "GUARDRAIL"
63
66
  unknown = "UNKNOWN"
64
67
 
65
68
  @classmethod
@@ -172,6 +175,15 @@ class Span(Node):
172
175
  async def span_evaluations(self, info: Info[Context, None]) -> List[SpanEvaluation]:
173
176
  return await info.context.data_loaders.span_evaluations.load(self.id_attr)
174
177
 
178
+ @strawberry.field(
179
+ description=(
180
+ "Annotations of the span's parent span. This encompasses both "
181
+ "LLM and human annotations."
182
+ )
183
+ ) # type: ignore
184
+ async def span_annotations(self, info: Info[Context, None]) -> List[SpanAnnotation]:
185
+ return await info.context.data_loaders.span_annotations.load(self.id_attr)
186
+
175
187
  @strawberry.field(
176
188
  description="Evaluations of the documents associated with the span, e.g. "
177
189
  "if the span is a RETRIEVER with a list of documents in its RETRIEVAL_DOCUMENTS "
@@ -6,17 +6,15 @@ from strawberry.relay import GlobalID, Node, NodeID
6
6
  from strawberry.scalars import JSON
7
7
 
8
8
  from phoenix.db import models
9
- from phoenix.server.api.types.AnnotatorKind import AnnotatorKind
9
+
10
+ from .Annotation import Annotation
11
+ from .AnnotatorKind import AnnotatorKind
10
12
 
11
13
 
12
14
  @strawberry.type
13
- class SpanAnnotation(Node):
15
+ class SpanAnnotation(Node, Annotation):
14
16
  id_attr: NodeID[int]
15
- name: str
16
17
  annotator_kind: AnnotatorKind
17
- label: Optional[str]
18
- score: Optional[float]
19
- explanation: Optional[str]
20
18
  metadata: JSON
21
19
  span_rowid: Private[Optional[int]]
22
20
 
@@ -1,4 +1,5 @@
1
1
  import contextlib
2
+ import json
2
3
  import logging
3
4
  from datetime import datetime
4
5
  from pathlib import Path
@@ -72,6 +73,7 @@ from phoenix.server.api.dataloaders import (
72
73
  MinStartOrMaxEndTimeDataLoader,
73
74
  ProjectByNameDataLoader,
74
75
  RecordCountDataLoader,
76
+ SpanAnnotationsDataLoader,
75
77
  SpanDescendantsDataLoader,
76
78
  SpanEvaluationsDataLoader,
77
79
  SpanProjectsDataLoader,
@@ -102,6 +104,8 @@ class AppConfig(NamedTuple):
102
104
  min_dist: float
103
105
  n_neighbors: int
104
106
  n_samples: int
107
+ is_development: bool
108
+ manifest_json_path: str
105
109
 
106
110
 
107
111
  class Static(StaticFiles):
@@ -111,8 +115,16 @@ class Static(StaticFiles):
111
115
 
112
116
  def __init__(self, *, app_config: AppConfig, **kwargs: Any):
113
117
  self._app_config = app_config
118
+ self.manifest = self._load_manifest()
114
119
  super().__init__(**kwargs)
115
120
 
121
+ def _load_manifest(self) -> Dict[str, str]:
122
+ try:
123
+ with open(self._app_config.manifest_json_path, "r") as f:
124
+ return json.load(f)
125
+ except (FileNotFoundError, json.JSONDecodeError) as e:
126
+ raise e
127
+
116
128
  async def get_response(self, path: str, scope: Scope) -> Response:
117
129
  response = None
118
130
  try:
@@ -134,6 +146,8 @@ class Static(StaticFiles):
134
146
  "basename": request.scope.get("root_path", ""),
135
147
  "platform_version": phoenix.__version__,
136
148
  "request": request,
149
+ "is_development": self._app_config.is_development,
150
+ "manifest": self.manifest,
137
151
  },
138
152
  )
139
153
  except Exception as e:
@@ -243,6 +257,7 @@ class GraphQLWithContext(GraphQL): # type: ignore
243
257
  trace_evaluations=TraceEvaluationsDataLoader(self.db),
244
258
  trace_row_ids=TraceRowIdsDataLoader(self.db),
245
259
  project_by_name=ProjectByNameDataLoader(self.db),
260
+ span_annotations=SpanAnnotationsDataLoader(self.db),
246
261
  ),
247
262
  cache_for_dataloaders=self.cache_for_dataloaders,
248
263
  read_only=self.read_only,
@@ -377,6 +392,7 @@ def create_app(
377
392
  umap_params: UMAPParameters,
378
393
  corpus: Optional[Model] = None,
379
394
  debug: bool = False,
395
+ dev: bool = False,
380
396
  read_only: bool = False,
381
397
  enable_prometheus: bool = False,
382
398
  initial_spans: Optional[Iterable[Union[Span, Tuple[Span, str]]]] = None,
@@ -408,6 +424,7 @@ def create_app(
408
424
  tracer_provider = None
409
425
  strawberry_extensions = schema.get_extensions()
410
426
  if server_instrumentation_is_enabled():
427
+ tracer_provider = initialize_opentelemetry_tracer_provider()
411
428
  from opentelemetry.trace import TracerProvider
412
429
  from strawberry.extensions.tracing import OpenTelemetryExtension
413
430
 
@@ -494,6 +511,8 @@ def create_app(
494
511
  min_dist=umap_params.min_dist,
495
512
  n_neighbors=umap_params.n_neighbors,
496
513
  n_samples=umap_params.n_samples,
514
+ is_development=dev,
515
+ manifest_json_path=SERVER_DIR / "static" / ".vite" / "manifest.json",
497
516
  ),
498
517
  ),
499
518
  name="static",
@@ -130,7 +130,9 @@ if __name__ == "__main__":
130
130
  parser.add_argument("--read-only", type=bool, default=False)
131
131
  parser.add_argument("--no-internet", action="store_true")
132
132
  parser.add_argument("--umap_params", type=str, required=False, default=DEFAULT_UMAP_PARAMS_STR)
133
- parser.add_argument("--debug", action="store_false")
133
+ parser.add_argument("--debug", action="store_true")
134
+ # Whether the app is running in a development environment
135
+ parser.add_argument("--dev", action="store_true")
134
136
  subparsers = parser.add_subparsers(dest="command", required=True)
135
137
  serve_parser = subparsers.add_parser("serve")
136
138
  datasets_parser = subparsers.add_parser("datasets")
@@ -258,6 +260,7 @@ if __name__ == "__main__":
258
260
  if corpus_inferences is None
259
261
  else create_model_from_inferences(corpus_inferences),
260
262
  debug=args.debug,
263
+ dev=args.dev,
261
264
  read_only=read_only,
262
265
  enable_prometheus=enable_prometheus,
263
266
  initial_spans=fixture_spans,
@@ -0,0 +1,78 @@
1
+ {
2
+ "_components-C8sm_r1F.js": {
3
+ "file": "assets/components-C8sm_r1F.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-CUDAPm8e.js",
7
+ "_vendor-arizeai-Do2HOmcL.js",
8
+ "_pages-bN7juCjh.js",
9
+ "_vendor-three-DwGkEfCM.js",
10
+ "_vendor-codemirror-CrdxOlMs.js"
11
+ ]
12
+ },
13
+ "_pages-bN7juCjh.js": {
14
+ "file": "assets/pages-bN7juCjh.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-CUDAPm8e.js",
18
+ "_components-C8sm_r1F.js",
19
+ "_vendor-arizeai-Do2HOmcL.js",
20
+ "_vendor-recharts-PKRvByVe.js",
21
+ "_vendor-codemirror-CrdxOlMs.js"
22
+ ]
23
+ },
24
+ "_vendor-!~{003}~.js": {
25
+ "file": "assets/vendor-DxkFTwjz.css",
26
+ "src": "_vendor-!~{003}~.js"
27
+ },
28
+ "_vendor-CUDAPm8e.js": {
29
+ "file": "assets/vendor-CUDAPm8e.js",
30
+ "name": "vendor",
31
+ "imports": [
32
+ "_vendor-three-DwGkEfCM.js"
33
+ ],
34
+ "css": [
35
+ "assets/vendor-DxkFTwjz.css"
36
+ ]
37
+ },
38
+ "_vendor-arizeai-Do2HOmcL.js": {
39
+ "file": "assets/vendor-arizeai-Do2HOmcL.js",
40
+ "name": "vendor-arizeai",
41
+ "imports": [
42
+ "_vendor-CUDAPm8e.js"
43
+ ]
44
+ },
45
+ "_vendor-codemirror-CrdxOlMs.js": {
46
+ "file": "assets/vendor-codemirror-CrdxOlMs.js",
47
+ "name": "vendor-codemirror",
48
+ "imports": [
49
+ "_vendor-CUDAPm8e.js"
50
+ ]
51
+ },
52
+ "_vendor-recharts-PKRvByVe.js": {
53
+ "file": "assets/vendor-recharts-PKRvByVe.js",
54
+ "name": "vendor-recharts",
55
+ "imports": [
56
+ "_vendor-CUDAPm8e.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-BEKPzgQs.js",
65
+ "name": "index",
66
+ "src": "index.tsx",
67
+ "isEntry": true,
68
+ "imports": [
69
+ "_vendor-CUDAPm8e.js",
70
+ "_vendor-arizeai-Do2HOmcL.js",
71
+ "_components-C8sm_r1F.js",
72
+ "_pages-bN7juCjh.js",
73
+ "_vendor-three-DwGkEfCM.js",
74
+ "_vendor-codemirror-CrdxOlMs.js",
75
+ "_vendor-recharts-PKRvByVe.js"
76
+ ]
77
+ }
78
+ }