arize-phoenix 11.10.0__tar.gz → 11.11.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 (450) hide show
  1. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/PKG-INFO +1 -1
  2. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/playground_clients.py +146 -63
  3. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/playground_registry.py +2 -2
  4. arize_phoenix-11.11.0/src/phoenix/server/api/input_types/PromptFilter.py +14 -0
  5. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/queries.py +14 -3
  6. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/GenerativeModel.py +48 -3
  7. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Project.py +125 -0
  8. arize_phoenix-11.11.0/src/phoenix/server/static/.vite/manifest.json +87 -0
  9. arize_phoenix-11.10.0/src/phoenix/server/static/assets/components-XAeml0-1.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/components-B7lK-RgC.js +396 -314
  10. arize_phoenix-11.10.0/src/phoenix/server/static/assets/index-D7EtHUpz.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/index-CpePoyTU.js +11 -2
  11. arize_phoenix-11.10.0/src/phoenix/server/static/assets/pages-CPfaxiKa.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/pages-CnVg_GUi.js +518 -482
  12. arize_phoenix-11.10.0/src/phoenix/server/static/assets/vendor-arizeai-4fVwwnrI.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/vendor-arizeai-CXCKGfvH.js +3 -3
  13. arize_phoenix-11.11.0/src/phoenix/server/static/assets/vendor-codemirror-DWr46-WB.js +27 -0
  14. arize_phoenix-11.10.0/src/phoenix/server/static/assets/vendor-recharts-w6bSawXG.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/vendor-recharts-0Yf6lanX.js +1 -1
  15. arize_phoenix-11.10.0/src/phoenix/server/static/assets/vendor-shiki-CplrhwOk.js → arize_phoenix-11.11.0/src/phoenix/server/static/assets/vendor-shiki-Caei6iKO.js +1 -1
  16. arize_phoenix-11.11.0/src/phoenix/server/static/assets/vendor-uWG2jYEi.js +936 -0
  17. arize_phoenix-11.11.0/src/phoenix/version.py +1 -0
  18. arize_phoenix-11.10.0/src/phoenix/server/static/.vite/manifest.json +0 -87
  19. arize_phoenix-11.10.0/src/phoenix/server/static/assets/vendor-DhvamIr8.js +0 -939
  20. arize_phoenix-11.10.0/src/phoenix/server/static/assets/vendor-codemirror-DRfFHb57.js +0 -33
  21. arize_phoenix-11.10.0/src/phoenix/version.py +0 -1
  22. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/.gitignore +0 -0
  23. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/IP_NOTICE +0 -0
  24. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/LICENSE +0 -0
  25. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/README.md +0 -0
  26. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/pyproject.toml +0 -0
  27. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/__init__.py +0 -0
  28. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/auth.py +0 -0
  29. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/config.py +0 -0
  30. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/core/__init__.py +0 -0
  31. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/core/embedding_dimension.py +0 -0
  32. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/core/model.py +0 -0
  33. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/core/model_schema.py +0 -0
  34. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  35. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/datetime_utils.py +0 -0
  36. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/README.md +0 -0
  37. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/__init__.py +0 -0
  38. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/alembic.ini +0 -0
  39. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/bulk_inserter.py +0 -0
  40. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/constants.py +0 -0
  41. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/engines.py +0 -0
  42. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/enums.py +0 -0
  43. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/facilitator.py +0 -0
  44. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/helpers.py +0 -0
  45. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/__init__.py +0 -0
  46. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/constants.py +0 -0
  47. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/dataset.py +0 -0
  48. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  49. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  50. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/helpers.py +0 -0
  51. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/span.py +0 -0
  52. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  53. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  54. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/insertion/types.py +0 -0
  55. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrate.py +0 -0
  56. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/__init__.py +0 -0
  57. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  58. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  59. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/env.py +0 -0
  60. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  61. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  62. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  63. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  64. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  65. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  66. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  67. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  68. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  69. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  70. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  71. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  72. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/models.py +0 -0
  73. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/pg_config.py +0 -0
  74. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/__init__.py +0 -0
  75. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  76. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/db_models.py +0 -0
  77. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/identifier.py +0 -0
  78. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/model_provider.py +0 -0
  79. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  80. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/db/types/trace_retention.py +0 -0
  81. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/exceptions.py +0 -0
  82. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/__init__.py +0 -0
  83. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  84. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  85. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  86. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  87. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  88. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/functions.py +0 -0
  89. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/tracing.py +0 -0
  90. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/types.py +0 -0
  91. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/experiments/utils.py +0 -0
  92. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/__init__.py +0 -0
  93. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/errors.py +0 -0
  94. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/fixtures.py +0 -0
  95. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/inferences.py +0 -0
  96. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/schema.py +0 -0
  97. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/inferences/validation.py +0 -0
  98. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/logging/__init__.py +0 -0
  99. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/logging/_config.py +0 -0
  100. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/logging/_filter.py +0 -0
  101. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/logging/_formatter.py +0 -0
  102. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/README.md +0 -0
  103. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/__init__.py +0 -0
  104. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/binning.py +0 -0
  105. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/metrics.py +0 -0
  106. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/mixins.py +0 -0
  107. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  108. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/timeseries.py +0 -0
  109. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/metrics/wrappers.py +0 -0
  110. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/pointcloud/__init__.py +0 -0
  111. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/pointcloud/clustering.py +0 -0
  112. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  113. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/pointcloud/projectors.py +0 -0
  114. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  115. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/py.typed +0 -0
  116. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/__init__.py +0 -0
  117. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/README.md +0 -0
  118. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/__init__.py +0 -0
  119. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/auth.py +0 -0
  120. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/context.py +0 -0
  121. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  122. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  123. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  124. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  125. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  126. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  127. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  128. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  129. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  130. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  131. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  132. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  133. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  134. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  135. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  136. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  137. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  138. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  139. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  140. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  141. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  142. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  143. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  144. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  145. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  146. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  147. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  148. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  149. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  150. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  151. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  152. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  153. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  154. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  155. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  156. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  157. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  158. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  159. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  160. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  161. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  162. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  163. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  164. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  165. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  166. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  167. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  168. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  169. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  170. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  171. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  172. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  173. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  174. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  175. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  176. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  177. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/exceptions.py +0 -0
  178. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  179. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  180. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  181. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  182. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  183. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  184. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  185. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  186. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  187. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  188. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  189. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  190. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  191. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  192. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  193. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  194. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  195. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  196. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  197. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  198. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  199. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  200. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  201. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  202. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  203. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  204. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  205. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  206. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  207. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  208. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  209. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  210. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  211. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  212. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  213. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  214. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  215. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  216. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  217. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  218. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  219. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  220. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  221. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  222. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  223. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  224. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  225. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  226. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  227. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  228. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  229. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  230. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  231. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  232. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/interceptor.py +0 -0
  233. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  234. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  235. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  236. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  237. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  238. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  239. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  240. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  241. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  242. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  243. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  244. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  245. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  246. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  247. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  248. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  249. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  250. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  251. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/openapi/main.py +0 -0
  252. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  253. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  254. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/auth.py +0 -0
  255. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  256. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  257. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/utils.py +0 -0
  258. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  259. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  260. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  261. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  262. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  263. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  264. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  265. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  266. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  267. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  268. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  269. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  270. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  271. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  272. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  273. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/schema.py +0 -0
  274. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/subscriptions.py +0 -0
  275. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  276. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  277. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  278. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  279. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  280. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  281. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  282. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  283. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  284. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  285. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  286. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  287. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  288. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  289. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  290. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  291. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  292. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  293. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  294. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  295. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  296. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  297. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  298. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  299. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  300. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  301. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  302. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  303. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  304. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  305. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Event.py +0 -0
  306. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  307. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  308. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  309. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  310. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  311. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  312. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  313. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  314. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  315. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  316. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  317. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  318. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  319. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  320. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  321. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  322. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  323. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  324. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  325. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  326. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  327. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  328. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  329. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  330. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  331. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  332. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  333. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  334. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  335. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  336. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  337. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Segments.py +0 -0
  338. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  339. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Span.py +0 -0
  340. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  341. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  342. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  343. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  344. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  345. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  346. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  347. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  348. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  349. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  350. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/Trace.py +0 -0
  351. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  352. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  353. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/User.py +0 -0
  354. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  355. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  356. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  357. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  358. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/__init__.py +0 -0
  359. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/node.py +0 -0
  360. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/types/pagination.py +0 -0
  361. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/api/utils.py +0 -0
  362. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/app.py +0 -0
  363. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/authorization.py +0 -0
  364. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/bearer_auth.py +0 -0
  365. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  366. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  367. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  368. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  369. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  370. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  371. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  372. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/daemons/__init__.py +0 -0
  373. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  374. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  375. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  376. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/dml_event.py +0 -0
  377. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/dml_event_handler.py +0 -0
  378. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/__init__.py +0 -0
  379. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/sender.py +0 -0
  380. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  381. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  382. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  383. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  384. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/email/types.py +0 -0
  385. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/grpc_server.py +0 -0
  386. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/jwt_store.py +0 -0
  387. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/main.py +0 -0
  388. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/middleware/__init__.py +0 -0
  389. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/middleware/gzip.py +0 -0
  390. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/oauth2.py +0 -0
  391. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/openapi/__init__.py +0 -0
  392. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/prometheus.py +0 -0
  393. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/rate_limiters.py +0 -0
  394. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/retention.py +0 -0
  395. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  396. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  397. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  398. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  399. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  400. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  401. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  402. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  403. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/assets/vendor-CqDb5u4o.css +0 -0
  404. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
  405. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/favicon.ico +0 -0
  406. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/static/modernizr.js +0 -0
  407. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/telemetry.py +0 -0
  408. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/templates/__init__.py +0 -0
  409. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/templates/index.html +0 -0
  410. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/thread_server.py +0 -0
  411. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/server/types.py +0 -0
  412. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/services.py +0 -0
  413. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/session/__init__.py +0 -0
  414. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/session/client.py +0 -0
  415. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/session/data_extractor.py +0 -0
  416. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/session/evaluation.py +0 -0
  417. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/session/session.py +0 -0
  418. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/settings.py +0 -0
  419. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/__init__.py +0 -0
  420. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/attributes.py +0 -0
  421. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/dsl/README.md +0 -0
  422. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  423. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/dsl/filter.py +0 -0
  424. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  425. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/dsl/query.py +0 -0
  426. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/errors.py +0 -0
  427. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  428. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/exporter.py +0 -0
  429. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/fixtures.py +0 -0
  430. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/otel.py +0 -0
  431. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/projects.py +0 -0
  432. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/schemas.py +0 -0
  433. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/span_evaluations.py +0 -0
  434. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  435. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  436. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/trace_dataset.py +0 -0
  437. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/utils.py +0 -0
  438. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/v1/__init__.py +0 -0
  439. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  440. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  441. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/__init__.py +0 -0
  442. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/client.py +0 -0
  443. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/deprecation.py +0 -0
  444. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/error_handling.py +0 -0
  445. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/json.py +0 -0
  446. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/logging.py +0 -0
  447. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/project.py +0 -0
  448. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/re.py +0 -0
  449. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/span_store.py +0 -0
  450. {arize_phoenix-11.10.0 → arize_phoenix-11.11.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 11.10.0
3
+ Version: 11.11.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -20,7 +20,7 @@ from openinference.semconv.trace import (
20
20
  )
21
21
  from strawberry import UNSET
22
22
  from strawberry.scalars import JSON as JSONScalarType
23
- from typing_extensions import TypeAlias, assert_never
23
+ from typing_extensions import TypeAlias, assert_never, override
24
24
 
25
25
  from phoenix.config import getenv
26
26
  from phoenix.evals.models.rate_limiters import (
@@ -437,9 +437,9 @@ class OpenAIBaseStreamingClient(PlaygroundStreamingClient):
437
437
  if role is ChatCompletionMessageRole.TOOL:
438
438
  if tool_call_id is None:
439
439
  raise ValueError("tool_call_id is required for tool messages")
440
- return ChatCompletionToolMessageParam(
441
- {"content": content, "role": "tool", "tool_call_id": tool_call_id}
442
- )
440
+ return ChatCompletionToolMessageParam(
441
+ {"content": content, "role": "tool", "tool_call_id": tool_call_id}
442
+ )
443
443
  assert_never(role)
444
444
 
445
445
  def to_openai_tool_call_param(
@@ -1140,27 +1140,28 @@ class OpenAIStreamingClient(OpenAIBaseStreamingClient):
1140
1140
  self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.OPENAI.value
1141
1141
 
1142
1142
 
1143
- @register_llm_client(
1144
- provider_key=GenerativeProviderKey.OPENAI,
1145
- model_names=[
1146
- "o1",
1147
- "o1-pro",
1148
- "o1-2024-12-17",
1149
- "o1-pro-2025-03-19",
1150
- "o1-mini",
1151
- "o1-mini-2024-09-12",
1152
- "o1-preview",
1153
- "o1-preview-2024-09-12",
1154
- "o3",
1155
- "o3-pro",
1156
- "o3-2025-04-16",
1157
- "o3-mini",
1158
- "o3-mini-2025-01-31",
1159
- "o4-mini",
1160
- "o4-mini-2025-04-16",
1161
- ],
1162
- )
1163
- class OpenAIReasoningStreamingClient(OpenAIStreamingClient):
1143
+ _OPENAI_REASONING_MODELS = [
1144
+ "o1",
1145
+ "o1-pro",
1146
+ "o1-2024-12-17",
1147
+ "o1-pro-2025-03-19",
1148
+ "o1-mini",
1149
+ "o1-mini-2024-09-12",
1150
+ "o1-preview",
1151
+ "o1-preview-2024-09-12",
1152
+ "o3",
1153
+ "o3-pro",
1154
+ "o3-2025-04-16",
1155
+ "o3-mini",
1156
+ "o3-mini-2025-01-31",
1157
+ "o4-mini",
1158
+ "o4-mini-2025-04-16",
1159
+ ]
1160
+
1161
+
1162
+ class OpenAIReasoningReasoningModelsMixin:
1163
+ """Mixin class for OpenAI-style reasoning model clients (o1, o3 series)."""
1164
+
1164
1165
  @classmethod
1165
1166
  def supported_invocation_parameters(cls) -> list[InvocationParameter]:
1166
1167
  return [
@@ -1191,6 +1192,16 @@ class OpenAIReasoningStreamingClient(OpenAIStreamingClient):
1191
1192
  ),
1192
1193
  ]
1193
1194
 
1195
+
1196
+ @register_llm_client(
1197
+ provider_key=GenerativeProviderKey.OPENAI,
1198
+ model_names=_OPENAI_REASONING_MODELS,
1199
+ )
1200
+ class OpenAIReasoningNonStreamingClient(
1201
+ OpenAIReasoningReasoningModelsMixin,
1202
+ OpenAIStreamingClient,
1203
+ ):
1204
+ @override
1194
1205
  async def chat_completion_create(
1195
1206
  self,
1196
1207
  messages: list[
@@ -1283,46 +1294,11 @@ class OpenAIReasoningStreamingClient(OpenAIStreamingClient):
1283
1294
  if role is ChatCompletionMessageRole.TOOL:
1284
1295
  if tool_call_id is None:
1285
1296
  raise ValueError("tool_call_id is required for tool messages")
1286
- return ChatCompletionToolMessageParam(
1287
- {"content": content, "role": "tool", "tool_call_id": tool_call_id}
1288
- )
1297
+ return ChatCompletionToolMessageParam(
1298
+ {"content": content, "role": "tool", "tool_call_id": tool_call_id}
1299
+ )
1289
1300
  assert_never(role)
1290
1301
 
1291
- @staticmethod
1292
- def _llm_token_counts(usage: "CompletionUsage") -> Iterator[tuple[str, Any]]:
1293
- yield LLM_TOKEN_COUNT_PROMPT, usage.prompt_tokens
1294
- yield LLM_TOKEN_COUNT_COMPLETION, usage.completion_tokens
1295
- yield LLM_TOKEN_COUNT_TOTAL, usage.total_tokens
1296
-
1297
- if hasattr(usage, "prompt_tokens_details") and usage.prompt_tokens_details is not None:
1298
- prompt_details = usage.prompt_tokens_details
1299
- if (
1300
- hasattr(prompt_details, "cached_tokens")
1301
- and prompt_details.cached_tokens is not None
1302
- ):
1303
- yield LLM_TOKEN_COUNT_PROMPT_DETAILS_CACHE_READ, prompt_details.cached_tokens
1304
- if hasattr(prompt_details, "audio_tokens") and prompt_details.audio_tokens is not None:
1305
- yield LLM_TOKEN_COUNT_PROMPT_DETAILS_AUDIO, prompt_details.audio_tokens
1306
-
1307
- if (
1308
- hasattr(usage, "completion_tokens_details")
1309
- and usage.completion_tokens_details is not None
1310
- ):
1311
- completion_details = usage.completion_tokens_details
1312
- if (
1313
- hasattr(completion_details, "reasoning_tokens")
1314
- and completion_details.reasoning_tokens is not None
1315
- ):
1316
- yield (
1317
- LLM_TOKEN_COUNT_COMPLETION_DETAILS_REASONING,
1318
- completion_details.reasoning_tokens,
1319
- )
1320
- if (
1321
- hasattr(completion_details, "audio_tokens")
1322
- and completion_details.audio_tokens is not None
1323
- ):
1324
- yield LLM_TOKEN_COUNT_COMPLETION_DETAILS_AUDIO, completion_details.audio_tokens
1325
-
1326
1302
 
1327
1303
  @register_llm_client(
1328
1304
  provider_key=GenerativeProviderKey.AZURE_OPENAI,
@@ -1376,6 +1352,113 @@ class AzureOpenAIStreamingClient(OpenAIBaseStreamingClient):
1376
1352
  self._attributes[LLM_SYSTEM] = OpenInferenceLLMSystemValues.OPENAI.value
1377
1353
 
1378
1354
 
1355
+ @register_llm_client(
1356
+ provider_key=GenerativeProviderKey.AZURE_OPENAI,
1357
+ model_names=_OPENAI_REASONING_MODELS,
1358
+ )
1359
+ class AzureOpenAIReasoningNonStreamingClient(
1360
+ OpenAIReasoningReasoningModelsMixin,
1361
+ AzureOpenAIStreamingClient,
1362
+ ):
1363
+ @override
1364
+ async def chat_completion_create(
1365
+ self,
1366
+ messages: list[
1367
+ tuple[ChatCompletionMessageRole, str, Optional[str], Optional[list[JSONScalarType]]]
1368
+ ],
1369
+ tools: list[JSONScalarType],
1370
+ **invocation_parameters: Any,
1371
+ ) -> AsyncIterator[ChatCompletionChunk]:
1372
+ from openai import NOT_GIVEN
1373
+
1374
+ # Convert standard messages to OpenAI messages
1375
+ openai_messages = []
1376
+ for message in messages:
1377
+ openai_message = self.to_openai_chat_completion_param(*message)
1378
+ if openai_message is not None:
1379
+ openai_messages.append(openai_message)
1380
+
1381
+ throttled_create = self.rate_limiter._alimit(self.client.chat.completions.create)
1382
+ response = await throttled_create(
1383
+ messages=openai_messages,
1384
+ model=self.model_name,
1385
+ stream=False,
1386
+ tools=tools or NOT_GIVEN,
1387
+ **invocation_parameters,
1388
+ )
1389
+
1390
+ if response.usage is not None:
1391
+ self._attributes.update(dict(self._llm_token_counts(response.usage)))
1392
+
1393
+ choice = response.choices[0]
1394
+ if choice.message.content:
1395
+ yield TextChunk(content=choice.message.content)
1396
+
1397
+ if choice.message.tool_calls:
1398
+ for tool_call in choice.message.tool_calls:
1399
+ yield ToolCallChunk(
1400
+ id=tool_call.id,
1401
+ function=FunctionCallChunk(
1402
+ name=tool_call.function.name,
1403
+ arguments=tool_call.function.arguments,
1404
+ ),
1405
+ )
1406
+
1407
+ def to_openai_chat_completion_param(
1408
+ self,
1409
+ role: ChatCompletionMessageRole,
1410
+ content: JSONScalarType,
1411
+ tool_call_id: Optional[str] = None,
1412
+ tool_calls: Optional[list[JSONScalarType]] = None,
1413
+ ) -> Optional["ChatCompletionMessageParam"]:
1414
+ from openai.types.chat import (
1415
+ ChatCompletionAssistantMessageParam,
1416
+ ChatCompletionDeveloperMessageParam,
1417
+ ChatCompletionToolMessageParam,
1418
+ ChatCompletionUserMessageParam,
1419
+ )
1420
+
1421
+ if role is ChatCompletionMessageRole.USER:
1422
+ return ChatCompletionUserMessageParam(
1423
+ {
1424
+ "content": content,
1425
+ "role": "user",
1426
+ }
1427
+ )
1428
+ if role is ChatCompletionMessageRole.SYSTEM:
1429
+ return ChatCompletionDeveloperMessageParam(
1430
+ {
1431
+ "content": content,
1432
+ "role": "developer",
1433
+ }
1434
+ )
1435
+ if role is ChatCompletionMessageRole.AI:
1436
+ if tool_calls is None:
1437
+ return ChatCompletionAssistantMessageParam(
1438
+ {
1439
+ "content": content,
1440
+ "role": "assistant",
1441
+ }
1442
+ )
1443
+ else:
1444
+ return ChatCompletionAssistantMessageParam(
1445
+ {
1446
+ "content": content,
1447
+ "role": "assistant",
1448
+ "tool_calls": [
1449
+ self.to_openai_tool_call_param(tool_call) for tool_call in tool_calls
1450
+ ],
1451
+ }
1452
+ )
1453
+ if role is ChatCompletionMessageRole.TOOL:
1454
+ if tool_call_id is None:
1455
+ raise ValueError("tool_call_id is required for tool messages")
1456
+ return ChatCompletionToolMessageParam(
1457
+ {"content": content, "role": "tool", "tool_call_id": tool_call_id}
1458
+ )
1459
+ assert_never(role)
1460
+
1461
+
1379
1462
  @register_llm_client(
1380
1463
  provider_key=GenerativeProviderKey.ANTHROPIC,
1381
1464
  model_names=[
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, Any, Callable, Optional, Union
1
+ from typing import TYPE_CHECKING, Any, Callable, Optional, Sequence, Union
2
2
 
3
3
  from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
4
4
 
@@ -59,7 +59,7 @@ PLAYGROUND_CLIENT_REGISTRY: PlaygroundClientRegistry = PlaygroundClientRegistry(
59
59
 
60
60
  def register_llm_client(
61
61
  provider_key: GenerativeProviderKey,
62
- model_names: list[ModelName],
62
+ model_names: Sequence[ModelName],
63
63
  ) -> Callable[[type["PlaygroundStreamingClient"]], type["PlaygroundStreamingClient"]]:
64
64
  def decorator(cls: type["PlaygroundStreamingClient"]) -> type["PlaygroundStreamingClient"]:
65
65
  provider_registry = PLAYGROUND_CLIENT_REGISTRY._registry.setdefault(provider_key, {})
@@ -0,0 +1,14 @@
1
+ from enum import Enum
2
+
3
+ import strawberry
4
+
5
+
6
+ @strawberry.enum
7
+ class PromptFilterColumn(Enum):
8
+ name = "name"
9
+
10
+
11
+ @strawberry.input(description="The filter key and value for prompt connections")
12
+ class PromptFilter:
13
+ col: PromptFilterColumn
14
+ value: str
@@ -1,12 +1,13 @@
1
1
  import re
2
2
  from collections import defaultdict
3
3
  from datetime import datetime
4
- from typing import Iterable, Iterator, Optional, Union, cast
4
+ from typing import Iterable, Iterator, Optional, Union
5
+ from typing import cast as type_cast
5
6
 
6
7
  import numpy as np
7
8
  import numpy.typing as npt
8
9
  import strawberry
9
- from sqlalchemy import and_, distinct, func, select, text
10
+ from sqlalchemy import String, and_, cast, distinct, func, select, text
10
11
  from sqlalchemy.orm import joinedload
11
12
  from starlette.authentication import UnauthenticatedUser
12
13
  from strawberry import ID, UNSET
@@ -41,6 +42,7 @@ from phoenix.server.api.input_types.DatasetSort import DatasetSort
41
42
  from phoenix.server.api.input_types.InvocationParameters import InvocationParameter
42
43
  from phoenix.server.api.input_types.ProjectFilter import ProjectFilter
43
44
  from phoenix.server.api.input_types.ProjectSort import ProjectColumn, ProjectSort
45
+ from phoenix.server.api.input_types.PromptFilter import PromptFilter
44
46
  from phoenix.server.api.types.AnnotationConfig import AnnotationConfig, to_gql_annotation_config
45
47
  from phoenix.server.api.types.Cluster import Cluster, to_gql_clusters
46
48
  from phoenix.server.api.types.Dataset import Dataset, to_gql_dataset
@@ -728,6 +730,7 @@ class Query:
728
730
  last: Optional[int] = UNSET,
729
731
  after: Optional[CursorString] = UNSET,
730
732
  before: Optional[CursorString] = UNSET,
733
+ filter: Optional[PromptFilter] = UNSET,
731
734
  ) -> Connection[Prompt]:
732
735
  args = ConnectionArgs(
733
736
  first=first,
@@ -736,6 +739,14 @@ class Query:
736
739
  before=before if isinstance(before, CursorString) else None,
737
740
  )
738
741
  stmt = select(models.Prompt)
742
+ if filter:
743
+ column = getattr(models.Prompt, filter.col.value)
744
+ # Cast Identifier columns to String for ilike operations
745
+ if filter.col.value == "name":
746
+ column = cast(column, String)
747
+ stmt = stmt.where(column.ilike(f"%{filter.value}%")).order_by(
748
+ models.Prompt.updated_at.desc()
749
+ )
739
750
  async with info.context.db() as session:
740
751
  orm_prompts = await session.stream_scalars(stmt)
741
752
  data = [to_gql_prompt_from_orm(orm_prompt) async for orm_prompt in orm_prompts]
@@ -994,7 +1005,7 @@ class Query:
994
1005
  """).bindparams(nspname=nspname)
995
1006
  try:
996
1007
  async with info.context.db() as session:
997
- stats = cast(Iterable[tuple[str, int]], await session.execute(stmt))
1008
+ stats = type_cast(Iterable[tuple[str, int]], await session.execute(stmt))
998
1009
  except Exception:
999
1010
  # TODO: temporary workaround until we can reproduce the error
1000
1011
  return []
@@ -6,14 +6,19 @@ import strawberry
6
6
  from openinference.semconv.trace import OpenInferenceLLMProviderValues
7
7
  from sqlalchemy import inspect
8
8
  from strawberry.relay import Node, NodeID
9
+ from strawberry.relay.types import GlobalID
9
10
  from strawberry.types import Info
10
- from typing_extensions import assert_never
11
+ from strawberry.types.unset import UNSET
12
+ from typing_extensions import TypeAlias, assert_never
11
13
 
12
14
  from phoenix.db import models
13
15
  from phoenix.server.api.context import Context
16
+ from phoenix.server.api.exceptions import BadRequest
17
+ from phoenix.server.api.input_types.TimeRange import TimeRange
14
18
  from phoenix.server.api.types.CostBreakdown import CostBreakdown
15
19
  from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
16
20
  from phoenix.server.api.types.ModelInterface import ModelInterface
21
+ from phoenix.server.api.types.node import from_global_id
17
22
  from phoenix.server.api.types.SpanCostDetailSummaryEntry import SpanCostDetailSummaryEntry
18
23
  from phoenix.server.api.types.SpanCostSummary import SpanCostSummary
19
24
  from phoenix.server.api.types.TokenPrice import TokenKind, TokenPrice
@@ -25,6 +30,11 @@ class GenerativeModelKind(Enum):
25
30
  BUILT_IN = "BUILT_IN"
26
31
 
27
32
 
33
+ ProjectId: TypeAlias = int
34
+ TimeRangeKey: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
35
+ CachedCostSummaryKey: TypeAlias = tuple[Optional[ProjectId], TimeRangeKey]
36
+
37
+
28
38
  @strawberry.type
29
39
  class GenerativeModel(Node, ModelInterface):
30
40
  id_attr: NodeID[int]
@@ -37,6 +47,18 @@ class GenerativeModel(Node, ModelInterface):
37
47
  provider_key: Optional[GenerativeProviderKey]
38
48
  costs: strawberry.Private[Optional[list[models.TokenPrice]]] = None
39
49
  start_time: Optional[datetime] = None
50
+ cached_cost_summary: strawberry.Private[
51
+ Optional[dict[CachedCostSummaryKey, SpanCostSummary]]
52
+ ] = None
53
+
54
+ def add_cached_cost_summary(
55
+ self, project_id: Optional[int], time_range: TimeRange, cost_summary: SpanCostSummary
56
+ ) -> None:
57
+ if self.cached_cost_summary is None:
58
+ self.cached_cost_summary = {}
59
+ time_range_key = (time_range.start, time_range.end) if time_range else (None, None)
60
+ cache_key = (project_id, time_range_key)
61
+ self.cached_cost_summary[cache_key] = cost_summary
40
62
 
41
63
  @strawberry.field
42
64
  async def token_prices(self) -> list[TokenPrice]:
@@ -55,7 +77,28 @@ class GenerativeModel(Node, ModelInterface):
55
77
  return token_prices
56
78
 
57
79
  @strawberry.field
58
- async def cost_summary(self, info: Info[Context, None]) -> SpanCostSummary:
80
+ async def cost_summary(
81
+ self,
82
+ info: Info[Context, None],
83
+ project_id: Optional[GlobalID] = UNSET,
84
+ time_range: Optional[TimeRange] = UNSET,
85
+ ) -> SpanCostSummary:
86
+ if self.cached_cost_summary is not None:
87
+ time_range_key = (time_range.start, time_range.end) if time_range else (None, None)
88
+ project_rowid: Optional[int] = None
89
+ if project_id:
90
+ type_name, project_rowid = from_global_id(project_id)
91
+ if type_name != models.Project.__name__:
92
+ raise BadRequest("Invalid Project ID")
93
+ cache_key = (project_rowid, time_range_key)
94
+ if cache_key in self.cached_cost_summary:
95
+ return self.cached_cost_summary[cache_key]
96
+
97
+ if time_range or project_id:
98
+ raise BadRequest(
99
+ "Cost summaries for specific projects or time ranges are not yet implemented"
100
+ )
101
+
59
102
  loader = info.context.data_loaders.span_cost_summary_by_generative_model
60
103
  summary = await loader.load(self.id_attr)
61
104
  return SpanCostSummary(
@@ -98,7 +141,9 @@ class GenerativeModel(Node, ModelInterface):
98
141
  return await info.context.data_loaders.last_used_times_by_generative_model_id.load(model_id)
99
142
 
100
143
 
101
- def to_gql_generative_model(model: models.GenerativeModel) -> GenerativeModel:
144
+ def to_gql_generative_model(
145
+ model: models.GenerativeModel,
146
+ ) -> GenerativeModel:
102
147
  costs_are_loaded = isinstance(inspect(model).attrs.token_prices.loaded_value, list)
103
148
  name_pattern = model.name_pattern.pattern
104
149
  assert isinstance(name_pattern, str)
@@ -33,6 +33,7 @@ from phoenix.server.api.types.AnnotationConfig import AnnotationConfig, to_gql_a
33
33
  from phoenix.server.api.types.AnnotationSummary import AnnotationSummary
34
34
  from phoenix.server.api.types.CostBreakdown import CostBreakdown
35
35
  from phoenix.server.api.types.DocumentEvaluationSummary import DocumentEvaluationSummary
36
+ from phoenix.server.api.types.GenerativeModel import GenerativeModel, to_gql_generative_model
36
37
  from phoenix.server.api.types.pagination import (
37
38
  ConnectionArgs,
38
39
  Cursor,
@@ -1326,6 +1327,130 @@ class Project(Node):
1326
1327
  names=sorted(list(unique_names)),
1327
1328
  )
1328
1329
 
1330
+ @strawberry.field
1331
+ async def top_models_by_cost(
1332
+ self,
1333
+ info: Info[Context, None],
1334
+ time_range: TimeRange,
1335
+ ) -> list[GenerativeModel]:
1336
+ if time_range.start is None:
1337
+ raise BadRequest("Start time is required")
1338
+
1339
+ async with info.context.db() as session:
1340
+ stmt = (
1341
+ select(
1342
+ models.GenerativeModel,
1343
+ func.sum(models.SpanCost.total_tokens).label("total_tokens"),
1344
+ func.sum(models.SpanCost.prompt_tokens).label("prompt_tokens"),
1345
+ func.sum(models.SpanCost.completion_tokens).label("completion_tokens"),
1346
+ func.sum(models.SpanCost.total_cost).label("total_cost"),
1347
+ func.sum(models.SpanCost.prompt_cost).label("prompt_cost"),
1348
+ func.sum(models.SpanCost.completion_cost).label("completion_cost"),
1349
+ )
1350
+ .join(
1351
+ models.SpanCost,
1352
+ models.SpanCost.model_id == models.GenerativeModel.id,
1353
+ )
1354
+ .join(
1355
+ models.Trace,
1356
+ models.SpanCost.trace_rowid == models.Trace.id,
1357
+ )
1358
+ .where(models.Trace.project_rowid == self.project_rowid)
1359
+ .where(models.SpanCost.model_id.isnot(None))
1360
+ .where(models.SpanCost.span_start_time >= time_range.start)
1361
+ .group_by(models.SpanCost.model_id)
1362
+ .order_by(func.sum(models.SpanCost.total_cost).desc())
1363
+ )
1364
+ if time_range.end:
1365
+ stmt = stmt.where(models.SpanCost.span_start_time < time_range.end)
1366
+ results: list[GenerativeModel] = []
1367
+ async for (
1368
+ model,
1369
+ total_tokens,
1370
+ prompt_tokens,
1371
+ completion_tokens,
1372
+ total_cost,
1373
+ prompt_cost,
1374
+ completion_cost,
1375
+ ) in await session.stream(stmt):
1376
+ cost_summary = SpanCostSummary(
1377
+ prompt=CostBreakdown(tokens=prompt_tokens, cost=prompt_cost),
1378
+ completion=CostBreakdown(tokens=completion_tokens, cost=completion_cost),
1379
+ total=CostBreakdown(tokens=total_tokens, cost=total_cost),
1380
+ )
1381
+ cache_time_range = TimeRange(
1382
+ start=time_range.start,
1383
+ end=time_range.end,
1384
+ )
1385
+ gql_model = to_gql_generative_model(model)
1386
+ gql_model.add_cached_cost_summary(
1387
+ self.project_rowid, cache_time_range, cost_summary
1388
+ )
1389
+ results.append(gql_model)
1390
+ return results
1391
+
1392
+ @strawberry.field
1393
+ async def top_models_by_token_count(
1394
+ self,
1395
+ info: Info[Context, None],
1396
+ time_range: TimeRange,
1397
+ ) -> list[GenerativeModel]:
1398
+ if time_range.start is None:
1399
+ raise BadRequest("Start time is required")
1400
+
1401
+ async with info.context.db() as session:
1402
+ stmt = (
1403
+ select(
1404
+ models.GenerativeModel,
1405
+ func.sum(models.SpanCost.total_tokens).label("total_tokens"),
1406
+ func.sum(models.SpanCost.prompt_tokens).label("prompt_tokens"),
1407
+ func.sum(models.SpanCost.completion_tokens).label("completion_tokens"),
1408
+ func.sum(models.SpanCost.total_cost).label("total_cost"),
1409
+ func.sum(models.SpanCost.prompt_cost).label("prompt_cost"),
1410
+ func.sum(models.SpanCost.completion_cost).label("completion_cost"),
1411
+ )
1412
+ .join(
1413
+ models.SpanCost,
1414
+ models.SpanCost.model_id == models.GenerativeModel.id,
1415
+ )
1416
+ .join(
1417
+ models.Trace,
1418
+ models.SpanCost.trace_rowid == models.Trace.id,
1419
+ )
1420
+ .where(models.Trace.project_rowid == self.project_rowid)
1421
+ .where(models.SpanCost.model_id.isnot(None))
1422
+ .where(models.SpanCost.span_start_time >= time_range.start)
1423
+ .group_by(models.SpanCost.model_id)
1424
+ .order_by(func.sum(models.SpanCost.total_tokens).desc())
1425
+ )
1426
+ if time_range.end:
1427
+ stmt = stmt.where(models.SpanCost.span_start_time < time_range.end)
1428
+ results: list[GenerativeModel] = []
1429
+ async for (
1430
+ model,
1431
+ total_tokens,
1432
+ prompt_tokens,
1433
+ completion_tokens,
1434
+ total_cost,
1435
+ prompt_cost,
1436
+ completion_cost,
1437
+ ) in await session.stream(stmt):
1438
+ cost_summary = SpanCostSummary(
1439
+ prompt=CostBreakdown(tokens=prompt_tokens, cost=prompt_cost),
1440
+ completion=CostBreakdown(tokens=completion_tokens, cost=completion_cost),
1441
+ total=CostBreakdown(tokens=total_tokens, cost=total_cost),
1442
+ )
1443
+ cache_time_range = TimeRange(
1444
+ start=time_range.start,
1445
+ end=time_range.end,
1446
+ )
1447
+ gql_model = to_gql_generative_model(model)
1448
+ gql_model.add_cached_cost_summary(
1449
+ self.project_rowid, cache_time_range, cost_summary
1450
+ )
1451
+ results.append(gql_model)
1452
+ return results
1453
+
1329
1454
 
1330
1455
  @strawberry.type
1331
1456
  class SpanCountTimeSeriesDataPoint:
@@ -0,0 +1,87 @@
1
+ {
2
+ "_components-B7lK-RgC.js": {
3
+ "file": "assets/components-B7lK-RgC.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-uWG2jYEi.js",
7
+ "_pages-CnVg_GUi.js",
8
+ "_vendor-arizeai-CXCKGfvH.js",
9
+ "_vendor-codemirror-DWr46-WB.js",
10
+ "_vendor-three-C5WAXd5r.js"
11
+ ]
12
+ },
13
+ "_pages-CnVg_GUi.js": {
14
+ "file": "assets/pages-CnVg_GUi.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-uWG2jYEi.js",
18
+ "_vendor-arizeai-CXCKGfvH.js",
19
+ "_components-B7lK-RgC.js",
20
+ "_vendor-codemirror-DWr46-WB.js",
21
+ "_vendor-recharts-0Yf6lanX.js"
22
+ ]
23
+ },
24
+ "_vendor-CqDb5u4o.css": {
25
+ "file": "assets/vendor-CqDb5u4o.css",
26
+ "src": "_vendor-CqDb5u4o.css"
27
+ },
28
+ "_vendor-arizeai-CXCKGfvH.js": {
29
+ "file": "assets/vendor-arizeai-CXCKGfvH.js",
30
+ "name": "vendor-arizeai",
31
+ "imports": [
32
+ "_vendor-uWG2jYEi.js"
33
+ ]
34
+ },
35
+ "_vendor-codemirror-DWr46-WB.js": {
36
+ "file": "assets/vendor-codemirror-DWr46-WB.js",
37
+ "name": "vendor-codemirror",
38
+ "imports": [
39
+ "_vendor-uWG2jYEi.js",
40
+ "_vendor-shiki-Caei6iKO.js"
41
+ ]
42
+ },
43
+ "_vendor-recharts-0Yf6lanX.js": {
44
+ "file": "assets/vendor-recharts-0Yf6lanX.js",
45
+ "name": "vendor-recharts",
46
+ "imports": [
47
+ "_vendor-uWG2jYEi.js"
48
+ ]
49
+ },
50
+ "_vendor-shiki-Caei6iKO.js": {
51
+ "file": "assets/vendor-shiki-Caei6iKO.js",
52
+ "name": "vendor-shiki",
53
+ "imports": [
54
+ "_vendor-uWG2jYEi.js"
55
+ ]
56
+ },
57
+ "_vendor-three-C5WAXd5r.js": {
58
+ "file": "assets/vendor-three-C5WAXd5r.js",
59
+ "name": "vendor-three"
60
+ },
61
+ "_vendor-uWG2jYEi.js": {
62
+ "file": "assets/vendor-uWG2jYEi.js",
63
+ "name": "vendor",
64
+ "imports": [
65
+ "_vendor-three-C5WAXd5r.js"
66
+ ],
67
+ "css": [
68
+ "assets/vendor-CqDb5u4o.css"
69
+ ]
70
+ },
71
+ "index.tsx": {
72
+ "file": "assets/index-CpePoyTU.js",
73
+ "name": "index",
74
+ "src": "index.tsx",
75
+ "isEntry": true,
76
+ "imports": [
77
+ "_vendor-uWG2jYEi.js",
78
+ "_vendor-arizeai-CXCKGfvH.js",
79
+ "_pages-CnVg_GUi.js",
80
+ "_components-B7lK-RgC.js",
81
+ "_vendor-three-C5WAXd5r.js",
82
+ "_vendor-codemirror-DWr46-WB.js",
83
+ "_vendor-shiki-Caei6iKO.js",
84
+ "_vendor-recharts-0Yf6lanX.js"
85
+ ]
86
+ }
87
+ }