arize-phoenix 4.35.2__py3-none-any.whl → 5.0.0__py3-none-any.whl

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 (104) hide show
  1. {arize_phoenix-4.35.2.dist-info → arize_phoenix-5.0.0.dist-info}/METADATA +10 -12
  2. {arize_phoenix-4.35.2.dist-info → arize_phoenix-5.0.0.dist-info}/RECORD +92 -79
  3. phoenix/__init__.py +86 -0
  4. phoenix/auth.py +275 -14
  5. phoenix/config.py +369 -27
  6. phoenix/db/alembic.ini +0 -34
  7. phoenix/db/engines.py +27 -10
  8. phoenix/db/enums.py +20 -0
  9. phoenix/db/facilitator.py +112 -0
  10. phoenix/db/insertion/dataset.py +0 -1
  11. phoenix/db/insertion/types.py +1 -1
  12. phoenix/db/migrate.py +3 -3
  13. phoenix/db/migrations/env.py +0 -7
  14. phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +157 -0
  15. phoenix/db/models.py +145 -60
  16. phoenix/experiments/evaluators/code_evaluators.py +9 -3
  17. phoenix/experiments/functions.py +1 -4
  18. phoenix/inferences/fixtures.py +0 -1
  19. phoenix/inferences/inferences.py +0 -1
  20. phoenix/logging/__init__.py +3 -0
  21. phoenix/logging/_config.py +90 -0
  22. phoenix/logging/_filter.py +6 -0
  23. phoenix/logging/_formatter.py +69 -0
  24. phoenix/metrics/__init__.py +0 -1
  25. phoenix/otel/settings.py +4 -4
  26. phoenix/server/api/README.md +28 -0
  27. phoenix/server/api/auth.py +32 -0
  28. phoenix/server/api/context.py +50 -2
  29. phoenix/server/api/dataloaders/__init__.py +4 -0
  30. phoenix/server/api/dataloaders/user_roles.py +30 -0
  31. phoenix/server/api/dataloaders/users.py +33 -0
  32. phoenix/server/api/exceptions.py +7 -0
  33. phoenix/server/api/mutations/__init__.py +0 -2
  34. phoenix/server/api/mutations/api_key_mutations.py +104 -86
  35. phoenix/server/api/mutations/dataset_mutations.py +8 -8
  36. phoenix/server/api/mutations/experiment_mutations.py +2 -2
  37. phoenix/server/api/mutations/export_events_mutations.py +3 -3
  38. phoenix/server/api/mutations/project_mutations.py +3 -3
  39. phoenix/server/api/mutations/span_annotations_mutations.py +4 -4
  40. phoenix/server/api/mutations/trace_annotations_mutations.py +4 -4
  41. phoenix/server/api/mutations/user_mutations.py +282 -42
  42. phoenix/server/api/openapi/schema.py +2 -2
  43. phoenix/server/api/queries.py +48 -39
  44. phoenix/server/api/routers/__init__.py +11 -0
  45. phoenix/server/api/routers/auth.py +284 -0
  46. phoenix/server/api/routers/embeddings.py +26 -0
  47. phoenix/server/api/routers/oauth2.py +456 -0
  48. phoenix/server/api/routers/v1/__init__.py +38 -16
  49. phoenix/server/api/routers/v1/datasets.py +0 -1
  50. phoenix/server/api/types/ApiKey.py +11 -0
  51. phoenix/server/api/types/AuthMethod.py +9 -0
  52. phoenix/server/api/types/User.py +48 -4
  53. phoenix/server/api/types/UserApiKey.py +35 -1
  54. phoenix/server/api/types/UserRole.py +7 -0
  55. phoenix/server/app.py +105 -34
  56. phoenix/server/bearer_auth.py +161 -0
  57. phoenix/server/email/__init__.py +0 -0
  58. phoenix/server/email/sender.py +26 -0
  59. phoenix/server/email/templates/__init__.py +0 -0
  60. phoenix/server/email/templates/password_reset.html +19 -0
  61. phoenix/server/email/types.py +11 -0
  62. phoenix/server/grpc_server.py +6 -0
  63. phoenix/server/jwt_store.py +504 -0
  64. phoenix/server/main.py +61 -30
  65. phoenix/server/oauth2.py +51 -0
  66. phoenix/server/prometheus.py +20 -0
  67. phoenix/server/rate_limiters.py +191 -0
  68. phoenix/server/static/.vite/manifest.json +31 -31
  69. phoenix/server/static/assets/{components-Dte7_KRd.js → components-REunxTt6.js} +348 -286
  70. phoenix/server/static/assets/index-DAPJxlCw.js +101 -0
  71. phoenix/server/static/assets/{pages-CnTvEGEN.js → pages-1VrMk2pW.js} +559 -291
  72. phoenix/server/static/assets/{vendor-BC3OPQuM.js → vendor-B5IC0ivG.js} +5 -5
  73. phoenix/server/static/assets/{vendor-arizeai-NjB3cZzD.js → vendor-arizeai-aFbT4kl1.js} +2 -2
  74. phoenix/server/static/assets/{vendor-codemirror-gE_JCOgX.js → vendor-codemirror-BEGorXSV.js} +1 -1
  75. phoenix/server/static/assets/{vendor-recharts-BXLYwcXF.js → vendor-recharts-6nUU7gU_.js} +1 -1
  76. phoenix/server/telemetry.py +2 -2
  77. phoenix/server/templates/index.html +1 -0
  78. phoenix/server/types.py +157 -1
  79. phoenix/services.py +0 -1
  80. phoenix/session/client.py +7 -3
  81. phoenix/session/evaluation.py +0 -1
  82. phoenix/session/session.py +0 -1
  83. phoenix/settings.py +9 -0
  84. phoenix/trace/exporter.py +0 -1
  85. phoenix/trace/fixtures.py +0 -2
  86. phoenix/utilities/client.py +16 -0
  87. phoenix/utilities/logging.py +9 -1
  88. phoenix/utilities/re.py +3 -3
  89. phoenix/version.py +1 -1
  90. phoenix/db/migrations/future_versions/README.md +0 -4
  91. phoenix/db/migrations/future_versions/cd164e83824f_users_and_tokens.py +0 -293
  92. phoenix/db/migrations/versions/.gitignore +0 -1
  93. phoenix/server/api/mutations/auth.py +0 -18
  94. phoenix/server/api/mutations/auth_mutations.py +0 -65
  95. phoenix/server/static/assets/index-fq1-hCK4.js +0 -100
  96. phoenix/trace/langchain/__init__.py +0 -3
  97. phoenix/trace/langchain/instrumentor.py +0 -35
  98. phoenix/trace/llama_index/__init__.py +0 -3
  99. phoenix/trace/llama_index/callback.py +0 -103
  100. phoenix/trace/openai/__init__.py +0 -3
  101. phoenix/trace/openai/instrumentor.py +0 -31
  102. {arize_phoenix-4.35.2.dist-info → arize_phoenix-5.0.0.dist-info}/WHEEL +0 -0
  103. {arize_phoenix-4.35.2.dist-info → arize_phoenix-5.0.0.dist-info}/licenses/IP_NOTICE +0 -0
  104. {arize_phoenix-4.35.2.dist-info → arize_phoenix-5.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,103 +0,0 @@
1
- import logging
2
- from importlib.metadata import PackageNotFoundError, version
3
- from typing import Any, Optional, Tuple
4
-
5
- from openinference.semconv.resource import ResourceAttributes
6
- from opentelemetry import trace as trace_api
7
- from opentelemetry.sdk import trace as trace_sdk
8
- from opentelemetry.sdk.resources import Resource
9
- from opentelemetry.sdk.trace.export import SimpleSpanProcessor
10
-
11
- from phoenix.config import get_env_project_name
12
- from phoenix.trace.errors import IncompatibleLibraryVersionError
13
- from phoenix.trace.exporter import _OpenInferenceExporter
14
-
15
- logger = logging.getLogger(__name__)
16
- logger.addHandler(logging.NullHandler())
17
-
18
- LLAMA_INDEX_MODERN_VERSION = (0, 10, 0)
19
- INSTRUMENTATION_MODERN_VERSION = (1, 0, 0)
20
-
21
-
22
- def _check_instrumentation_compatibility() -> bool:
23
- llama_index_version_str = _get_version_if_installed("llama-index")
24
- llama_index_installed = llama_index_version_str is not None
25
- llama_index_core_version_str = _get_version_if_installed("llama-index-core")
26
- llama_index_core_installed = modern_llama_index_installed = (
27
- llama_index_core_version_str is not None
28
- )
29
- instrumentation_version_str = version("openinference-instrumentation-llama-index")
30
- instrumentation_version = _parse_semantic_version(instrumentation_version_str)
31
-
32
- if not llama_index_installed and not llama_index_core_installed:
33
- raise PackageNotFoundError(
34
- "Missing `llama_index`. "
35
- "Install with `pip install llama-index` or "
36
- "`pip install llama-index-core` for a minimal installation."
37
- )
38
- elif modern_llama_index_installed and instrumentation_version < INSTRUMENTATION_MODERN_VERSION:
39
- raise IncompatibleLibraryVersionError(
40
- f"llama-index-core v{llama_index_core_version_str} is not compatible with "
41
- f"openinference-instrumentation-llama-index v{instrumentation_version_str}. "
42
- "Please upgrade openinference-instrumentation-llama-index to at least 1.0.0 via "
43
- "`pip install 'openinference-instrumentation-llama-index>=1.0.0'`."
44
- )
45
- elif (
46
- llama_index_installed
47
- and llama_index_version_str
48
- and _parse_semantic_version(llama_index_version_str) < LLAMA_INDEX_MODERN_VERSION
49
- and instrumentation_version >= INSTRUMENTATION_MODERN_VERSION
50
- ):
51
- raise IncompatibleLibraryVersionError(
52
- f"llama-index v{llama_index_version_str} is not compatible with "
53
- f"openinference-instrumentation-llama-index v{instrumentation_version_str}. "
54
- "Please either migrate llama-index to at least 0.10.0 or downgrade "
55
- "openinference-instrumentation-llama-index via "
56
- "`pip install 'openinference-instrumentation-llama-index<1.0.0'`."
57
- )
58
- return True
59
-
60
-
61
- def _get_version_if_installed(package_name: str) -> Optional[str]:
62
- """
63
- Gets the version of the package if it is installed, otherwise, returns None.
64
- """
65
- try:
66
- return version(package_name)
67
- except PackageNotFoundError:
68
- return None
69
-
70
-
71
- def _parse_semantic_version(semver_string: str) -> Tuple[int, ...]:
72
- """
73
- Parse a semantic version string into a tuple of integers.
74
- """
75
- return tuple(map(int, semver_string.split(".")[:3]))
76
-
77
-
78
- if _check_instrumentation_compatibility():
79
- from openinference.instrumentation.llama_index._callback import (
80
- OpenInferenceTraceCallbackHandler as _OpenInferenceTraceCallbackHandler,
81
- )
82
- from openinference.instrumentation.llama_index.version import (
83
- __version__,
84
- )
85
-
86
-
87
- class OpenInferenceTraceCallbackHandler(_OpenInferenceTraceCallbackHandler):
88
- """Callback handler for storing LLM application trace data in OpenInference format.
89
- OpenInference is an open standard for capturing and storing AI model
90
- inferences. It enables production LLMapp servers to seamlessly integrate
91
- with LLM observability solutions such as Arize and Phoenix.
92
-
93
- For more information on the specification, see
94
- https://github.com/Arize-ai/openinference
95
- """
96
-
97
- def __init__(self, *args: Any, **kwargs: Any) -> None:
98
- tracer_provider = trace_sdk.TracerProvider(
99
- resource=Resource({ResourceAttributes.PROJECT_NAME: get_env_project_name()}),
100
- span_limits=trace_sdk.SpanLimits(max_attributes=10_000),
101
- )
102
- tracer_provider.add_span_processor(SimpleSpanProcessor(_OpenInferenceExporter()))
103
- super().__init__(trace_api.get_tracer(__name__, __version__, tracer_provider))
@@ -1,3 +0,0 @@
1
- from .instrumentor import OpenAIInstrumentor
2
-
3
- __all__ = ["OpenAIInstrumentor"]
@@ -1,31 +0,0 @@
1
- import logging
2
- from importlib.metadata import PackageNotFoundError
3
- from importlib.util import find_spec
4
- from typing import Any
5
-
6
- from openinference.instrumentation.openai import OpenAIInstrumentor as Instrumentor
7
- from openinference.semconv.resource import ResourceAttributes
8
- from opentelemetry.sdk import trace as trace_sdk
9
- from opentelemetry.sdk.resources import Resource
10
- from opentelemetry.sdk.trace.export import SimpleSpanProcessor
11
-
12
- from phoenix.config import get_env_project_name
13
- from phoenix.trace.exporter import _OpenInferenceExporter
14
-
15
- logger = logging.getLogger(__name__)
16
- logger.addHandler(logging.NullHandler())
17
-
18
-
19
- class OpenAIInstrumentor(Instrumentor):
20
- def __init__(self, *args: Any, **kwargs: Any) -> None:
21
- if find_spec("openai") is None:
22
- raise PackageNotFoundError("Missing `openai`. Install with `pip install openai`.")
23
- super().__init__()
24
-
25
- def instrument(self) -> None:
26
- tracer_provider = trace_sdk.TracerProvider(
27
- resource=Resource({ResourceAttributes.PROJECT_NAME: get_env_project_name()}),
28
- span_limits=trace_sdk.SpanLimits(max_attributes=10_000),
29
- )
30
- tracer_provider.add_span_processor(SimpleSpanProcessor(_OpenInferenceExporter()))
31
- super().instrument(skip_dep_check=True, tracer_provider=tracer_provider)