arize-phoenix 4.4.4rc6__tar.gz → 4.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

Files changed (271) hide show
  1. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/PKG-INFO +8 -14
  2. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/README.md +1 -1
  3. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/requirements.txt +2 -2
  4. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/pyproject.toml +14 -35
  5. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/__init__.py +27 -0
  6. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/config.py +7 -42
  7. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/core/model.py +25 -25
  8. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/core/model_schema.py +62 -64
  9. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/core/model_schema_adapter.py +25 -27
  10. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/datetime_utils.py +0 -4
  11. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/bulk_inserter.py +14 -54
  12. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/insertion/evaluation.py +10 -10
  13. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/insertion/helpers.py +14 -17
  14. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/insertion/span.py +3 -3
  15. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +28 -2
  16. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/models.py +4 -236
  17. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/fixtures.py +23 -23
  18. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/inferences.py +7 -7
  19. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/validation.py +1 -1
  20. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/context.py +0 -20
  21. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -20
  22. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/span_descendants.py +3 -2
  23. arize_phoenix-4.5.0/src/phoenix/server/api/routers/v1/__init__.py +11 -0
  24. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/routers/v1/evaluations.py +13 -8
  25. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/routers/v1/spans.py +5 -9
  26. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/routers/v1/traces.py +4 -1
  27. arize_phoenix-4.5.0/src/phoenix/server/api/schema.py +314 -0
  28. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Cluster.py +19 -19
  29. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/Inferences.py → arize_phoenix-4.5.0/src/phoenix/server/api/types/Dataset.py +14 -14
  30. arize_phoenix-4.5.0/src/phoenix/server/api/types/DatasetRole.py +23 -0
  31. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Dimension.py +29 -30
  32. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/EmbeddingDimension.py +34 -40
  33. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Event.py +16 -16
  34. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/export_events_mutations.py → arize_phoenix-4.5.0/src/phoenix/server/api/types/ExportEventsMutation.py +14 -17
  35. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Model.py +42 -43
  36. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Project.py +12 -26
  37. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Span.py +2 -79
  38. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/TimeSeries.py +6 -6
  39. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Trace.py +4 -15
  40. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/UMAPPoints.py +1 -1
  41. arize_phoenix-4.5.0/src/phoenix/server/api/types/node.py +133 -0
  42. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/pagination.py +52 -10
  43. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/app.py +49 -103
  44. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/main.py +27 -49
  45. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/openapi/docs.py +0 -3
  46. arize_phoenix-4.5.0/src/phoenix/server/static/index.js +7498 -0
  47. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/templates/index.html +0 -1
  48. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/services.py +15 -15
  49. arize_phoenix-4.5.0/src/phoenix/session/client.py +254 -0
  50. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/session/session.py +37 -47
  51. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/exporter.py +9 -14
  52. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/fixtures.py +7 -133
  53. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/schemas.py +2 -1
  54. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/span_evaluations.py +3 -3
  55. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/trace_dataset.py +6 -6
  56. arize_phoenix-4.5.0/src/phoenix/version.py +1 -0
  57. arize_phoenix-4.4.4rc6/src/phoenix/db/insertion/dataset.py +0 -237
  58. arize_phoenix-4.4.4rc6/src/phoenix/db/migrations/types.py +0 -29
  59. arize_phoenix-4.4.4rc6/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -291
  60. arize_phoenix-4.4.4rc6/src/phoenix/experiments/__init__.py +0 -6
  61. arize_phoenix-4.4.4rc6/src/phoenix/experiments/evaluators/__init__.py +0 -29
  62. arize_phoenix-4.4.4rc6/src/phoenix/experiments/evaluators/base.py +0 -153
  63. arize_phoenix-4.4.4rc6/src/phoenix/experiments/evaluators/code_evaluators.py +0 -99
  64. arize_phoenix-4.4.4rc6/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -244
  65. arize_phoenix-4.4.4rc6/src/phoenix/experiments/evaluators/utils.py +0 -189
  66. arize_phoenix-4.4.4rc6/src/phoenix/experiments/functions.py +0 -616
  67. arize_phoenix-4.4.4rc6/src/phoenix/experiments/tracing.py +0 -85
  68. arize_phoenix-4.4.4rc6/src/phoenix/experiments/types.py +0 -722
  69. arize_phoenix-4.4.4rc6/src/phoenix/experiments/utils.py +0 -9
  70. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -54
  71. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -100
  72. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -43
  73. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -85
  74. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -43
  75. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -42
  76. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -49
  77. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/project_by_name.py +0 -31
  78. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/span_projects.py +0 -33
  79. arize_phoenix-4.4.4rc6/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -39
  80. arize_phoenix-4.4.4rc6/src/phoenix/server/api/helpers/dataset_helpers.py +0 -179
  81. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -16
  82. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -14
  83. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -15
  84. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -12
  85. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -14
  86. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DatasetSort.py +0 -17
  87. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -16
  88. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -13
  89. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -7
  90. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -9
  91. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -35
  92. arize_phoenix-4.4.4rc6/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -14
  93. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/__init__.py +0 -13
  94. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/auth.py +0 -11
  95. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/dataset_mutations.py +0 -520
  96. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/experiment_mutations.py +0 -65
  97. arize_phoenix-4.4.4rc6/src/phoenix/server/api/mutations/project_mutations.py +0 -47
  98. arize_phoenix-4.4.4rc6/src/phoenix/server/api/openapi/main.py +0 -6
  99. arize_phoenix-4.4.4rc6/src/phoenix/server/api/openapi/schema.py +0 -16
  100. arize_phoenix-4.4.4rc6/src/phoenix/server/api/queries.py +0 -503
  101. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/__init__.py +0 -86
  102. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/dataset_examples.py +0 -178
  103. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/datasets.py +0 -965
  104. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -65
  105. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -96
  106. arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers/v1/experiments.py +0 -174
  107. arize_phoenix-4.4.4rc6/src/phoenix/server/api/schema.py +0 -13
  108. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/AnnotatorKind.py +0 -10
  109. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -8
  110. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/Dataset.py +0 -299
  111. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/DatasetExample.py +0 -85
  112. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -34
  113. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/DatasetVersion.py +0 -14
  114. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -14
  115. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/Experiment.py +0 -147
  116. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -13
  117. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/ExperimentComparison.py +0 -19
  118. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/ExperimentRun.py +0 -91
  119. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -57
  120. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/InferencesRole.py +0 -23
  121. arize_phoenix-4.4.4rc6/src/phoenix/server/api/types/node.py +0 -27
  122. arize_phoenix-4.4.4rc6/src/phoenix/server/static/index.js +0 -8504
  123. arize_phoenix-4.4.4rc6/src/phoenix/session/client.py +0 -842
  124. arize_phoenix-4.4.4rc6/src/phoenix/utilities/__init__.py +0 -0
  125. arize_phoenix-4.4.4rc6/src/phoenix/utilities/json.py +0 -61
  126. arize_phoenix-4.4.4rc6/src/phoenix/utilities/re.py +0 -50
  127. arize_phoenix-4.4.4rc6/src/phoenix/version.py +0 -1
  128. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/.gitignore +0 -0
  129. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/IP_NOTICE +0 -0
  130. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/LICENSE +0 -0
  131. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  132. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  133. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  134. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  135. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  136. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  137. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  138. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  139. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/core/__init__.py +0 -0
  140. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/core/embedding_dimension.py +0 -0
  141. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/README.md +0 -0
  142. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/__init__.py +0 -0
  143. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/alembic.ini +0 -0
  144. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/engines.py +0 -0
  145. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/helpers.py +0 -0
  146. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/insertion/__init__.py +0 -0
  147. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/migrate.py +0 -0
  148. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/migrations/__init__.py +0 -0
  149. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/migrations/env.py +0 -0
  150. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  151. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/exceptions.py +0 -0
  152. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/__init__.py +0 -0
  153. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/errors.py +0 -0
  154. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/inferences/schema.py +0 -0
  155. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/README.md +0 -0
  156. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/__init__.py +0 -0
  157. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/binning.py +0 -0
  158. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/metrics.py +0 -0
  159. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/mixins.py +0 -0
  160. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  161. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/timeseries.py +0 -0
  162. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/metrics/wrappers.py +0 -0
  163. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/pointcloud/__init__.py +0 -0
  164. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/pointcloud/clustering.py +0 -0
  165. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  166. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/pointcloud/projectors.py +0 -0
  167. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  168. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/py.typed +0 -0
  169. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/__init__.py +0 -0
  170. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/__init__.py +0 -0
  171. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  172. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  173. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  174. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  175. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  176. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
  177. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  178. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  179. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  180. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
  181. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  182. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
  183. /arize_phoenix-4.4.4rc6/src/phoenix/server/api/helpers/__init__.py → /arize_phoenix-4.5.0/src/phoenix/server/api/helpers.py +0 -0
  184. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  185. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  186. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  187. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  188. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  189. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  190. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  191. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  192. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  193. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  194. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/interceptor.py +0 -0
  195. {arize_phoenix-4.4.4rc6/src/phoenix/server/api/openapi → arize_phoenix-4.5.0/src/phoenix/server/api/routers}/__init__.py +0 -0
  196. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/routers/utils.py +0 -0
  197. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  198. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  199. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  200. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  201. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  202. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  203. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  204. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  205. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  206. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  207. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  208. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  209. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  210. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  211. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  212. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  213. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  214. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  215. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  216. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  217. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/Segments.py +0 -0
  218. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  219. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  220. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  221. {arize_phoenix-4.4.4rc6/src/phoenix/server/api/routers → arize_phoenix-4.5.0/src/phoenix/server/api/types}/__init__.py +0 -0
  222. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/grpc_server.py +0 -0
  223. {arize_phoenix-4.4.4rc6/src/phoenix/server/api/types → arize_phoenix-4.5.0/src/phoenix/server/openapi}/__init__.py +0 -0
  224. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/prometheus.py +0 -0
  225. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  226. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  227. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  228. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  229. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  230. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  231. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  232. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  233. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/favicon.ico +0 -0
  234. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/index.css +0 -0
  235. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/static/modernizr.js +0 -0
  236. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/telemetry.py +0 -0
  237. {arize_phoenix-4.4.4rc6/src/phoenix/server/openapi → arize_phoenix-4.5.0/src/phoenix/server/templates}/__init__.py +0 -0
  238. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/server/thread_server.py +0 -0
  239. {arize_phoenix-4.4.4rc6/src/phoenix/server/templates → arize_phoenix-4.5.0/src/phoenix/session}/__init__.py +0 -0
  240. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/session/data_extractor.py +0 -0
  241. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/session/evaluation.py +0 -0
  242. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/settings.py +0 -0
  243. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/__init__.py +0 -0
  244. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/attributes.py +0 -0
  245. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/dsl/README.md +0 -0
  246. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  247. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/dsl/filter.py +0 -0
  248. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  249. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/dsl/query.py +0 -0
  250. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/errors.py +0 -0
  251. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  252. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/langchain/__init__.py +0 -0
  253. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  254. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/llama_index/__init__.py +0 -0
  255. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/llama_index/callback.py +0 -0
  256. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/openai/__init__.py +0 -0
  257. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/openai/instrumentor.py +0 -0
  258. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/otel.py +0 -0
  259. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/projects.py +0 -0
  260. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  261. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  262. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/utils.py +0 -0
  263. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/v1/__init__.py +0 -0
  264. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  265. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  266. {arize_phoenix-4.4.4rc6/src/phoenix/session → arize_phoenix-4.5.0/src/phoenix/utilities}/__init__.py +0 -0
  267. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/utilities/deprecation.py +0 -0
  268. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/utilities/error_handling.py +0 -0
  269. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/utilities/logging.py +0 -0
  270. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.0}/src/phoenix/utilities/project.py +0 -0
  271. {arize_phoenix-4.4.4rc6 → arize_phoenix-4.5.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: 4.4.4rc6
3
+ Version: 4.5.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
@@ -20,27 +20,25 @@ Requires-Python: <3.13,>=3.8
20
20
  Requires-Dist: aioitertools
21
21
  Requires-Dist: aiosqlite
22
22
  Requires-Dist: alembic<2,>=1.3.0
23
- Requires-Dist: arize-phoenix-evals>=0.13.1
24
23
  Requires-Dist: cachetools
25
24
  Requires-Dist: grpcio
26
25
  Requires-Dist: hdbscan>=0.8.33
27
- Requires-Dist: httpx
28
26
  Requires-Dist: jinja2
29
27
  Requires-Dist: numpy<2
30
28
  Requires-Dist: openinference-instrumentation
31
29
  Requires-Dist: openinference-instrumentation-langchain>=0.1.12
32
30
  Requires-Dist: openinference-instrumentation-llama-index>=1.2.0
33
31
  Requires-Dist: openinference-instrumentation-openai>=0.1.4
34
- Requires-Dist: openinference-semantic-conventions>=0.1.9
32
+ Requires-Dist: openinference-semantic-conventions>=0.1.5
35
33
  Requires-Dist: opentelemetry-exporter-otlp
36
34
  Requires-Dist: opentelemetry-proto>=1.12.0
37
35
  Requires-Dist: opentelemetry-sdk
38
36
  Requires-Dist: opentelemetry-semantic-conventions
39
- Requires-Dist: pandas>=1.0
37
+ Requires-Dist: pandas
40
38
  Requires-Dist: protobuf<6.0,>=3.20
41
39
  Requires-Dist: psutil
42
40
  Requires-Dist: pyarrow
43
- Requires-Dist: python-multipart
41
+ Requires-Dist: requests
44
42
  Requires-Dist: scikit-learn
45
43
  Requires-Dist: scipy
46
44
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
@@ -79,7 +77,6 @@ Requires-Dist: llama-index>=0.10.3; extra == 'dev'
79
77
  Requires-Dist: nbqa; extra == 'dev'
80
78
  Requires-Dist: pandas-stubs==2.0.3.230814; (python_version < '3.9') and extra == 'dev'
81
79
  Requires-Dist: pandas-stubs==2.2.2.240603; (python_version >= '3.9') and extra == 'dev'
82
- Requires-Dist: pandas>=1.0; extra == 'dev'
83
80
  Requires-Dist: pre-commit; extra == 'dev'
84
81
  Requires-Dist: prometheus-client; extra == 'dev'
85
82
  Requires-Dist: psycopg[binary]; extra == 'dev'
@@ -89,15 +86,12 @@ Requires-Dist: pytest-postgresql; extra == 'dev'
89
86
  Requires-Dist: pytest==8.2.2; extra == 'dev'
90
87
  Requires-Dist: ruff==0.4.9; extra == 'dev'
91
88
  Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.235.0; extra == 'dev'
92
- Requires-Dist: tabulate; extra == 'dev'
93
- Requires-Dist: types-tabulate; extra == 'dev'
94
89
  Provides-Extra: evals
90
+ Requires-Dist: arize-phoenix-evals>=0.3.0; extra == 'evals'
95
91
  Provides-Extra: experimental
92
+ Requires-Dist: tenacity; extra == 'experimental'
96
93
  Provides-Extra: llama-index
97
- Requires-Dist: llama-index-embeddings-openai; extra == 'llama-index'
98
- Requires-Dist: llama-index-llms-openai; extra == 'llama-index'
99
- Requires-Dist: llama-index-readers-file; extra == 'llama-index'
100
- Requires-Dist: llama-index==0.10.51; extra == 'llama-index'
94
+ Requires-Dist: llama-index==0.10.44; extra == 'llama-index'
101
95
  Provides-Extra: pg
102
96
  Requires-Dist: asyncpg; extra == 'pg'
103
97
  Description-Content-Type: text/markdown
@@ -133,7 +127,7 @@ Description-Content-Type: text/markdown
133
127
 
134
128
  Phoenix is an open-source AI observability platform designed for experimentation, evaluation, and troubleshooting. It provides:
135
129
 
136
- - **_Tracing_** - Trace your LLM application's runtime using OpenTelemetry-based instrumentation.
130
+ - **_Tracing_** - Trace your LLM application's runtime using using OpenTelemetry-based instrumentation.
137
131
  - **_Evaluation_** - Leverage LLMs to benchmark your application's performance using response and retrieval evals.
138
132
  - **_Inference Analysis_** - Visualize inferences and embeddings using dimensionality reduction and clustering to identify drift and performance degradation.
139
133
 
@@ -29,7 +29,7 @@
29
29
 
30
30
  Phoenix is an open-source AI observability platform designed for experimentation, evaluation, and troubleshooting. It provides:
31
31
 
32
- - **_Tracing_** - Trace your LLM application's runtime using OpenTelemetry-based instrumentation.
32
+ - **_Tracing_** - Trace your LLM application's runtime using using OpenTelemetry-based instrumentation.
33
33
  - **_Evaluation_** - Leverage LLMs to benchmark your application's performance using response and retrieval evals.
34
34
  - **_Inference Analysis_** - Visualize inferences and embeddings using dimensionality reduction and clustering to identify drift and performance degradation.
35
35
 
@@ -87,7 +87,7 @@ referencing==0.34.0
87
87
  # via
88
88
  # jsonschema
89
89
  # jsonschema-specifications
90
- requests==2.32.2
90
+ requests==2.31.0
91
91
  # via streamlit
92
92
  rich==13.7.1
93
93
  # via streamlit
@@ -110,7 +110,7 @@ toml==0.10.2
110
110
  # via streamlit
111
111
  toolz==0.12.1
112
112
  # via altair
113
- tornado==6.4.1
113
+ tornado==6.4
114
114
  # via streamlit
115
115
  typing-extensions==4.11.0
116
116
  # via
@@ -24,7 +24,7 @@ classifiers = [
24
24
  dependencies = [
25
25
  "scikit-learn",
26
26
  "numpy<2", # https://github.com/scikit-learn-contrib/hdbscan/issues/642
27
- "pandas>=1.0",
27
+ "pandas",
28
28
  "jinja2",
29
29
  "umap-learn",
30
30
  "hdbscan>=0.8.33",
@@ -41,12 +41,12 @@ dependencies = [
41
41
  "protobuf>=3.20, <6.0",
42
42
  "grpcio",
43
43
  "tqdm",
44
- "httpx",
44
+ "requests",
45
45
  "opentelemetry-sdk",
46
46
  "opentelemetry-proto>=1.12.0", # needed to avoid this issue: https://github.com/Arize-ai/phoenix/issues/2695
47
47
  "opentelemetry-exporter-otlp",
48
48
  "opentelemetry-semantic-conventions",
49
- "openinference-semantic-conventions>=0.1.9",
49
+ "openinference-semantic-conventions>=0.1.5",
50
50
  "openinference-instrumentation",
51
51
  "openinference-instrumentation-langchain>=0.1.12",
52
52
  "openinference-instrumentation-llama-index>=1.2.0",
@@ -57,8 +57,6 @@ dependencies = [
57
57
  "aioitertools",
58
58
  "sqlean.py>=3.45.1",
59
59
  "cachetools",
60
- "python-multipart", # see https://www.starlette.io/#dependencies
61
- "arize-phoenix-evals>=0.13.1",
62
60
  ]
63
61
  dynamic = ["version"]
64
62
 
@@ -69,9 +67,6 @@ dev = [
69
67
  "jupyter",
70
68
  "nbqa",
71
69
  "ruff==0.4.9",
72
- "pandas>=1.0",
73
- "tabulate", # used by DataFrame.to_markdown()
74
- "types-tabulate",
75
70
  "pandas-stubs==2.2.2.240603; python_version>='3.9'",
76
71
  "pandas-stubs==2.0.3.230814; python_version<'3.9'",
77
72
  "pytest==8.2.2",
@@ -90,13 +85,14 @@ dev = [
90
85
  "anthropic",
91
86
  "prometheus_client",
92
87
  ]
93
- evals = []
94
- experimental = []
88
+ evals = [
89
+ "arize-phoenix-evals>=0.3.0",
90
+ ]
91
+ experimental = [
92
+ "tenacity",
93
+ ]
95
94
  llama-index = [
96
- "llama-index==0.10.51", # always pin to a version that keeps our notebooks working
97
- "llama-index-readers-file",
98
- "llama-index-llms-openai",
99
- "llama-index-embeddings-openai",
95
+ "llama-index==0.10.44", # always pin to a version that keeps our notebooks working
100
96
  ]
101
97
  pg = [
102
98
  "asyncpg",
@@ -154,6 +150,7 @@ dependencies = [
154
150
  "litellm>=1.0.3",
155
151
  "openai>=1.0.0",
156
152
  "tenacity",
153
+ "requests",
157
154
  "protobuf==3.20", # version minimum (for tests)
158
155
  "responses",
159
156
  "tiktoken",
@@ -169,11 +166,11 @@ dependencies = [
169
166
  dependencies = [
170
167
  "mypy==1.10.0",
171
168
  "tenacity",
172
- "pandas>=1.0",
173
- "pandas-stubs==2.0.3.230814",
174
- "types-tabulate",
169
+ "pandas-stubs==2.2.2.240603; python_version>='3.9'",
170
+ "pandas-stubs==2.0.3.230814; python_version<'3.9'",
175
171
  "types-psutil",
176
172
  "types-tqdm",
173
+ "types-requests",
177
174
  "types-protobuf",
178
175
  "types-setuptools",
179
176
  "types-cachetools",
@@ -190,21 +187,14 @@ dependencies = [
190
187
  "opentelemetry-instrumentation-grpc",
191
188
  "py-grpc-prometheus",
192
189
  "strawberry-graphql[opentelemetry]==0.235.0", # need to pin version because we're monkey-patching
193
- "requests", # this is needed to type-check third-party packages
194
190
  ]
195
191
 
196
- [[tool.hatch.envs.type.matrix]]
197
- python = ["3.8", "3.9", "3.12"]
198
-
199
192
  [tool.hatch.envs.style]
200
193
  detached = true
201
194
  dependencies = [
202
195
  "ruff==0.4.9",
203
196
  ]
204
197
 
205
- [[tool.hatch.envs.style.matrix]]
206
- python = ["3.8", "3.9", "3.12"]
207
-
208
198
  [tool.hatch.envs.notebooks]
209
199
  detached = true
210
200
  dependencies = [
@@ -214,7 +204,6 @@ dependencies = [
214
204
  [tool.hatch.envs.docs]
215
205
  detached = true
216
206
  dependencies = [
217
- "pyment",
218
207
  "interrogate",
219
208
  ]
220
209
 
@@ -303,14 +292,6 @@ dependencies = [
303
292
  [tool.hatch.envs.gql.scripts]
304
293
  build = 'strawberry export-schema phoenix.server.api.schema:schema > app/schema.graphql'
305
294
 
306
- [tool.hatch.envs.openapi]
307
- dependencies = [
308
- "pyyaml",
309
- ]
310
-
311
- [tool.hatch.envs.openapi.scripts]
312
- build = 'python -m phoenix.server.api.openapi.main > schemas/openapi.yaml'
313
-
314
295
  [tool.hatch.envs.proto]
315
296
  detached = true
316
297
  dependencies = [
@@ -345,7 +326,6 @@ disallow_untyped_defs = true
345
326
  disallow_incomplete_defs = true
346
327
  strict = true
347
328
  exclude = [
348
- "api_reference",
349
329
  "packages/",
350
330
  "src/phoenix/evals/",
351
331
  "dist/",
@@ -367,7 +347,6 @@ module = [
367
347
  "wrapt",
368
348
  "langchain.*",
369
349
  "litellm",
370
- "litellm.*",
371
350
  "nest_asyncio",
372
351
  "opentelemetry.*",
373
352
  "pyarrow",
@@ -1,3 +1,9 @@
1
+ import sys
2
+ from importlib.abc import Loader, MetaPathFinder
3
+ from importlib.machinery import ModuleSpec
4
+ from types import ModuleType
5
+ from typing import Any, Optional
6
+
1
7
  from .inferences.fixtures import ExampleInferences, load_example
2
8
  from .inferences.inferences import Inferences
3
9
  from .inferences.schema import EmbeddingColumnNames, RetrievalEmbeddingColumnNames, Schema
@@ -51,3 +57,24 @@ __all__ = [
51
57
  "Client",
52
58
  "evals",
53
59
  ]
60
+
61
+
62
+ class PhoenixEvalsFinder(MetaPathFinder):
63
+ def find_spec(self, fullname: Any, path: Any, target: Any = None) -> Optional[ModuleSpec]:
64
+ if fullname == "phoenix.evals":
65
+ return ModuleSpec(fullname, PhoenixEvalsLoader())
66
+ return None
67
+
68
+
69
+ class PhoenixEvalsLoader(Loader):
70
+ def create_module(self, spec: ModuleSpec) -> None:
71
+ return None
72
+
73
+ def exec_module(self, module: ModuleType) -> None:
74
+ raise ImportError(
75
+ "The optional `phoenix.evals` package is not installed. "
76
+ "Please install `phoenix` with the `evals` extra: `pip install 'arize-phoenix[evals]'`."
77
+ )
78
+
79
+
80
+ sys.meta_path.append(PhoenixEvalsFinder())
@@ -2,9 +2,7 @@ import os
2
2
  import tempfile
3
3
  from logging import getLogger
4
4
  from pathlib import Path
5
- from typing import Dict, List, Optional
6
-
7
- from .utilities.re import parse_env_headers
5
+ from typing import List, Optional
8
6
 
9
7
  logger = getLogger(__name__)
10
8
 
@@ -14,12 +12,6 @@ ENV_PHOENIX_GRPC_PORT = "PHOENIX_GRPC_PORT"
14
12
  ENV_PHOENIX_HOST = "PHOENIX_HOST"
15
13
  ENV_PHOENIX_HOST_ROOT_PATH = "PHOENIX_HOST_ROOT_PATH"
16
14
  ENV_NOTEBOOK_ENV = "PHOENIX_NOTEBOOK_ENV"
17
- ENV_PHOENIX_CLIENT_HEADERS = "PHOENIX_CLIENT_HEADERS"
18
- """
19
- The headers to include in Phoenix client requests.
20
- Note: This overrides OTEL_EXPORTER_OTLP_HEADERS in the case where
21
- phoenix.trace instrumentors are used.
22
- """
23
15
  ENV_PHOENIX_COLLECTOR_ENDPOINT = "PHOENIX_COLLECTOR_ENDPOINT"
24
16
  """
25
17
  The endpoint traces and evals are sent to. This must be set if the Phoenix
@@ -113,15 +105,15 @@ GRPC_PORT = 4317
113
105
  """The port the gRPC server will run on after launch_app is called.
114
106
  The default network port for OTLP/gRPC is 4317.
115
107
  See https://opentelemetry.io/docs/specs/otlp/#otlpgrpc-default-port"""
116
- GENERATED_INFERENCES_NAME_PREFIX = "phoenix_inferences_"
108
+ GENERATED_DATASET_NAME_PREFIX = "phoenix_dataset_"
117
109
  """The prefix of datasets that are auto-assigned a name."""
118
110
  WORKING_DIR = get_working_dir()
119
- """The work directory for saving, loading, and exporting data."""
111
+ """The work directory for saving, loading, and exporting datasets."""
120
112
 
121
113
  ROOT_DIR = WORKING_DIR
122
114
  EXPORT_DIR = ROOT_DIR / "exports"
123
- INFERENCES_DIR = ROOT_DIR / "inferences"
124
- TRACE_DATASETS_DIR = ROOT_DIR / "trace_datasets"
115
+ DATASET_DIR = ROOT_DIR / "datasets"
116
+ TRACE_DATASET_DIR = ROOT_DIR / "trace_datasets"
125
117
 
126
118
 
127
119
  def ensure_working_dir() -> None:
@@ -134,8 +126,8 @@ def ensure_working_dir() -> None:
134
126
  for path in (
135
127
  ROOT_DIR,
136
128
  EXPORT_DIR,
137
- INFERENCES_DIR,
138
- TRACE_DATASETS_DIR,
129
+ DATASET_DIR,
130
+ TRACE_DATASET_DIR,
139
131
  ):
140
132
  path.mkdir(parents=True, exist_ok=True)
141
133
  except Exception as e:
@@ -227,31 +219,4 @@ def get_env_enable_prometheus() -> bool:
227
219
  )
228
220
 
229
221
 
230
- def get_env_client_headers() -> Optional[Dict[str, str]]:
231
- if headers_str := os.getenv(ENV_PHOENIX_CLIENT_HEADERS):
232
- return parse_env_headers(headers_str)
233
- return None
234
-
235
-
236
- def get_base_url() -> str:
237
- host = get_env_host()
238
- if host == "0.0.0.0":
239
- host = "127.0.0.1"
240
- base_url = get_env_collector_endpoint() or f"http://{host}:{get_env_port()}"
241
- return base_url if base_url.endswith("/") else base_url + "/"
242
-
243
-
244
- def get_web_base_url() -> str:
245
- """Return the web UI base URL.
246
-
247
- Returns:
248
- str: the web UI base URL
249
- """
250
- from phoenix.session.session import active_session
251
-
252
- if session := active_session():
253
- return session.url
254
- return get_base_url()
255
-
256
-
257
222
  DEFAULT_PROJECT_NAME = "default"
@@ -7,73 +7,73 @@ from .embedding_dimension import EmbeddingDimension
7
7
 
8
8
 
9
9
  def _get_embedding_dimensions(
10
- primary_inferences: Inferences, reference_inferences: Optional[Inferences]
10
+ primary_dataset: Inferences, reference_dataset: Optional[Inferences]
11
11
  ) -> List[EmbeddingDimension]:
12
12
  embedding_dimensions: List[EmbeddingDimension] = []
13
13
  embedding_features: EmbeddingFeatures = {}
14
14
 
15
15
  primary_embedding_features: Optional[EmbeddingFeatures] = (
16
- primary_inferences.schema.embedding_feature_column_names
16
+ primary_dataset.schema.embedding_feature_column_names
17
17
  )
18
18
  if primary_embedding_features is not None:
19
19
  embedding_features.update(primary_embedding_features)
20
20
  primary_prompt_column_names: Optional[EmbeddingColumnNames] = (
21
- primary_inferences.schema.prompt_column_names
21
+ primary_dataset.schema.prompt_column_names
22
22
  )
23
23
  if primary_prompt_column_names is not None:
24
24
  embedding_features.update({"prompt": primary_prompt_column_names})
25
25
  primary_response_column_names: Optional[Union[str, EmbeddingColumnNames]] = (
26
- primary_inferences.schema.response_column_names
26
+ primary_dataset.schema.response_column_names
27
27
  )
28
28
  if isinstance(primary_response_column_names, EmbeddingColumnNames):
29
29
  embedding_features.update({"response": primary_response_column_names})
30
30
 
31
- if reference_inferences is not None:
31
+ if reference_dataset is not None:
32
32
  reference_embedding_features: Optional[EmbeddingFeatures] = (
33
- reference_inferences.schema.embedding_feature_column_names
33
+ reference_dataset.schema.embedding_feature_column_names
34
34
  )
35
35
  if reference_embedding_features is not None:
36
36
  embedding_features.update(reference_embedding_features)
37
37
  reference_prompt_column_names: Optional[EmbeddingColumnNames] = (
38
- reference_inferences.schema.prompt_column_names
38
+ reference_dataset.schema.prompt_column_names
39
39
  )
40
40
  if reference_prompt_column_names is not None:
41
41
  embedding_features.update({"prompt": reference_prompt_column_names})
42
42
  reference_response_column_names: Optional[Union[str, EmbeddingColumnNames]] = (
43
- reference_inferences.schema.response_column_names
43
+ reference_dataset.schema.response_column_names
44
44
  )
45
45
  if isinstance(reference_response_column_names, EmbeddingColumnNames):
46
46
  embedding_features.update({"response": reference_response_column_names})
47
47
 
48
48
  for embedding_feature, embedding_column_names in embedding_features.items():
49
49
  embedding_dimensions.append(EmbeddingDimension(name=embedding_feature))
50
- if reference_inferences is not None:
51
- _check_embedding_vector_lengths_match_across_inference_sets(
52
- embedding_feature, embedding_column_names, primary_inferences, reference_inferences
50
+ if reference_dataset is not None:
51
+ _check_embedding_vector_lengths_match_across_datasets(
52
+ embedding_feature, embedding_column_names, primary_dataset, reference_dataset
53
53
  )
54
54
 
55
55
  return embedding_dimensions
56
56
 
57
57
 
58
- def _check_embedding_vector_lengths_match_across_inference_sets(
58
+ def _check_embedding_vector_lengths_match_across_datasets(
59
59
  embedding_feature_name: str,
60
60
  embedding_column_names: EmbeddingColumnNames,
61
- primary_inferences: Inferences,
62
- reference_inferences: Inferences,
61
+ primary_dataset: Inferences,
62
+ reference_dataset: Inferences,
63
63
  ) -> None:
64
64
  """
65
65
  Ensure that for each embedding feature, the vector lengths match across the primary
66
- and reference inferences which is required for calculating embedding drift (vector distance)
66
+ and reference datasets which is required for calculating embedding drift (vector distance)
67
67
  """
68
68
  primary_vector_length = _get_column_vector_length(
69
- primary_inferences, embedding_column_names.vector_column_name
69
+ primary_dataset, embedding_column_names.vector_column_name
70
70
  )
71
71
  reference_vector_length = _get_column_vector_length(
72
- reference_inferences, embedding_column_names.vector_column_name
72
+ reference_dataset, embedding_column_names.vector_column_name
73
73
  )
74
74
 
75
- # if one of the inferences doesn't have the embedding column at all, which is fine since we
76
- # just consider this as missing from one of the inferences and won't need to worry about
75
+ # if one of the datasets doesn't have the embedding column at all, which is fine since we
76
+ # just consider this as missing from one of the datasets and won't need to worry about
77
77
  # calculating drift
78
78
  if primary_vector_length is None or reference_vector_length is None:
79
79
  return
@@ -81,23 +81,23 @@ def _check_embedding_vector_lengths_match_across_inference_sets(
81
81
  if primary_vector_length != reference_vector_length:
82
82
  raise ValueError(
83
83
  f"Embedding vector length must match for "
84
- f"both inference sets; embedding_feature={embedding_feature_name} "
84
+ f"both datasets; embedding_feature={embedding_feature_name} "
85
85
  f"vector_column={embedding_column_names.vector_column_name}"
86
86
  )
87
87
 
88
88
 
89
89
  def _get_column_vector_length(
90
- inferences: Inferences, embedding_vector_column_name: str
90
+ dataset: Inferences, embedding_vector_column_name: str
91
91
  ) -> Optional[int]:
92
92
  """
93
- Because a inferences has already been constructed, we can assume that the lengths
94
- of the vectors for any given embedding feature in the inferences are the same.
93
+ Because a dataset has already been constructed, we can assume that the lengths
94
+ of the vectors for any given embedding feature in the dataset are the same.
95
95
  Returns the length a vector by getting the length first non-null vector.
96
96
  """
97
- if embedding_vector_column_name not in inferences.dataframe:
97
+ if embedding_vector_column_name not in dataset.dataframe:
98
98
  return None
99
99
 
100
- column = inferences.dataframe[embedding_vector_column_name]
100
+ column = dataset.dataframe[embedding_vector_column_name]
101
101
 
102
102
  for row in column:
103
103
  # None/NaN is a valid entry for a row and represents the fact that the