arize-phoenix 4.1.1__tar.gz → 4.1.2__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.
- arize_phoenix-4.1.2/PKG-INFO +177 -0
- arize_phoenix-4.1.2/README.md +77 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/dsl/helpers.py +32 -20
- arize_phoenix-4.1.2/src/phoenix/version.py +1 -0
- arize_phoenix-4.1.1/PKG-INFO +0 -520
- arize_phoenix-4.1.1/README.md +0 -420
- arize_phoenix-4.1.1/src/phoenix/version.py +0 -1
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/.gitignore +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/IP_NOTICE +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/LICENSE +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/pyproject.toml +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/config.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/py.typed +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/helpers.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DatasetRole.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/ExportEventsMutation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Model.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/openapi/docs.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/index.css +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/index.js +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/services.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/settings.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/langchain/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/langchain/instrumentor.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/llama_index/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/llama_index/callback.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/openai/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/openai/instrumentor.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-4.1.1 → arize_phoenix-4.1.2}/src/phoenix/utilities/span_store.py +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: arize-phoenix
|
|
3
|
+
Version: 4.1.2
|
|
4
|
+
Summary: AI Observability and Evaluation
|
|
5
|
+
Project-URL: Documentation, https://docs.arize.com/phoenix/
|
|
6
|
+
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
7
|
+
Project-URL: Source, https://github.com/Arize-ai/phoenix
|
|
8
|
+
Author-email: Arize AI <phoenix-devs@arize.com>
|
|
9
|
+
License: Elastic-2.0
|
|
10
|
+
License-File: IP_NOTICE
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: Explainability,Monitoring,Observability
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Requires-Python: <3.13,>=3.8
|
|
20
|
+
Requires-Dist: aioitertools
|
|
21
|
+
Requires-Dist: aiosqlite
|
|
22
|
+
Requires-Dist: alembic<2,>=1.3.0
|
|
23
|
+
Requires-Dist: cachetools
|
|
24
|
+
Requires-Dist: grpcio
|
|
25
|
+
Requires-Dist: hdbscan>=0.8.33
|
|
26
|
+
Requires-Dist: jinja2
|
|
27
|
+
Requires-Dist: numpy
|
|
28
|
+
Requires-Dist: openinference-instrumentation
|
|
29
|
+
Requires-Dist: openinference-instrumentation-langchain>=0.1.12
|
|
30
|
+
Requires-Dist: openinference-instrumentation-llama-index>=1.2.0
|
|
31
|
+
Requires-Dist: openinference-instrumentation-openai>=0.1.4
|
|
32
|
+
Requires-Dist: openinference-semantic-conventions>=0.1.5
|
|
33
|
+
Requires-Dist: opentelemetry-exporter-otlp
|
|
34
|
+
Requires-Dist: opentelemetry-proto>=1.12.0
|
|
35
|
+
Requires-Dist: opentelemetry-sdk
|
|
36
|
+
Requires-Dist: opentelemetry-semantic-conventions
|
|
37
|
+
Requires-Dist: pandas
|
|
38
|
+
Requires-Dist: protobuf<6.0,>=3.20
|
|
39
|
+
Requires-Dist: psutil
|
|
40
|
+
Requires-Dist: pyarrow
|
|
41
|
+
Requires-Dist: requests
|
|
42
|
+
Requires-Dist: scikit-learn
|
|
43
|
+
Requires-Dist: scipy
|
|
44
|
+
Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
|
|
45
|
+
Requires-Dist: sqlean-py>=3.45.1
|
|
46
|
+
Requires-Dist: starlette
|
|
47
|
+
Requires-Dist: strawberry-graphql==0.227.2
|
|
48
|
+
Requires-Dist: tqdm
|
|
49
|
+
Requires-Dist: typing-extensions>=4.5; python_version < '3.12'
|
|
50
|
+
Requires-Dist: typing-extensions>=4.6; python_version >= '3.12'
|
|
51
|
+
Requires-Dist: umap-learn
|
|
52
|
+
Requires-Dist: uvicorn
|
|
53
|
+
Requires-Dist: wrapt
|
|
54
|
+
Provides-Extra: container
|
|
55
|
+
Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
|
|
56
|
+
Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
|
|
57
|
+
Requires-Dist: opentelemetry-instrumentation-sqlalchemy; extra == 'container'
|
|
58
|
+
Requires-Dist: opentelemetry-instrumentation-starlette; extra == 'container'
|
|
59
|
+
Requires-Dist: opentelemetry-proto>=1.12.0; extra == 'container'
|
|
60
|
+
Requires-Dist: opentelemetry-sdk; extra == 'container'
|
|
61
|
+
Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
|
|
62
|
+
Requires-Dist: prometheus-client; extra == 'container'
|
|
63
|
+
Requires-Dist: py-grpc-prometheus; extra == 'container'
|
|
64
|
+
Requires-Dist: strawberry-graphql[opentelemetry]==0.227.2; extra == 'container'
|
|
65
|
+
Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
|
|
66
|
+
Provides-Extra: dev
|
|
67
|
+
Requires-Dist: anthropic; extra == 'dev'
|
|
68
|
+
Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
|
|
69
|
+
Requires-Dist: asyncpg; extra == 'dev'
|
|
70
|
+
Requires-Dist: gcsfs; extra == 'dev'
|
|
71
|
+
Requires-Dist: google-cloud-aiplatform>=1.3; extra == 'dev'
|
|
72
|
+
Requires-Dist: hatch; extra == 'dev'
|
|
73
|
+
Requires-Dist: jupyter; extra == 'dev'
|
|
74
|
+
Requires-Dist: langchain>=0.0.334; extra == 'dev'
|
|
75
|
+
Requires-Dist: litellm>=1.0.3; extra == 'dev'
|
|
76
|
+
Requires-Dist: llama-index>=0.10.3; extra == 'dev'
|
|
77
|
+
Requires-Dist: nbqa; extra == 'dev'
|
|
78
|
+
Requires-Dist: pandas-stubs<=2.0.2.230605; extra == 'dev'
|
|
79
|
+
Requires-Dist: pre-commit; extra == 'dev'
|
|
80
|
+
Requires-Dist: prometheus-client; extra == 'dev'
|
|
81
|
+
Requires-Dist: psycopg[binary]; extra == 'dev'
|
|
82
|
+
Requires-Dist: pytest-asyncio; extra == 'dev'
|
|
83
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
84
|
+
Requires-Dist: pytest-lazy-fixture; extra == 'dev'
|
|
85
|
+
Requires-Dist: pytest-postgresql; extra == 'dev'
|
|
86
|
+
Requires-Dist: pytest==7.4.4; extra == 'dev'
|
|
87
|
+
Requires-Dist: ruff==0.3.0; extra == 'dev'
|
|
88
|
+
Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.227.2; extra == 'dev'
|
|
89
|
+
Provides-Extra: evals
|
|
90
|
+
Requires-Dist: arize-phoenix-evals>=0.3.0; extra == 'evals'
|
|
91
|
+
Provides-Extra: experimental
|
|
92
|
+
Requires-Dist: tenacity; extra == 'experimental'
|
|
93
|
+
Provides-Extra: llama-index
|
|
94
|
+
Requires-Dist: llama-index-callbacks-arize-phoenix>=0.1.2; extra == 'llama-index'
|
|
95
|
+
Requires-Dist: llama-index==0.10.3; extra == 'llama-index'
|
|
96
|
+
Requires-Dist: openinference-instrumentation-llama-index>=1.2.0; extra == 'llama-index'
|
|
97
|
+
Provides-Extra: pg
|
|
98
|
+
Requires-Dist: asyncpg; extra == 'pg'
|
|
99
|
+
Description-Content-Type: text/markdown
|
|
100
|
+
|
|
101
|
+
<p align="center">
|
|
102
|
+
<a target="_blank" href="https://phoenix.arize.com" style="background:none">
|
|
103
|
+
<img alt="phoenix banner" src="https://github.com/Arize-ai/phoenix-assets/blob/main/images/socal/github-large-banner-phoenix.jpg?raw=true" width="auto" height="auto"></img>
|
|
104
|
+
</a>
|
|
105
|
+
<br/>
|
|
106
|
+
<br/>
|
|
107
|
+
<a href="https://docs.arize.com/phoenix/">
|
|
108
|
+
<img src="https://img.shields.io/static/v1?message=Docs&logo=data:image/png;base64,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&labelColor=grey&color=blue&logoColor=white&label=%20"/>
|
|
109
|
+
</a>
|
|
110
|
+
<a target="_blank" href="https://join.slack.com/t/arize-ai/shared_invite/zt-1px8dcmlf-fmThhDFD_V_48oU7ALan4Q">
|
|
111
|
+
<img src="https://img.shields.io/static/v1?message=Community&logo=slack&labelColor=grey&color=blue&logoColor=white&label=%20"/>
|
|
112
|
+
</a>
|
|
113
|
+
<a target="_blank" href="https://twitter.com/ArizePhoenix">
|
|
114
|
+
<img src="https://img.shields.io/badge/-ArizePhoenix-blue.svg?color=blue&labelColor=gray&logo=twitter">
|
|
115
|
+
</a>
|
|
116
|
+
<a target="_blank" href="https://pypi.org/project/arize-phoenix/">
|
|
117
|
+
<img src="https://img.shields.io/pypi/v/arize-phoenix?color=blue">
|
|
118
|
+
</a>
|
|
119
|
+
<a target="_blank" href="https://anaconda.org/conda-forge/arize-phoenix">
|
|
120
|
+
<img src="https://img.shields.io/conda/vn/conda-forge/arize-phoenix.svg?color=blue">
|
|
121
|
+
</a>
|
|
122
|
+
<a target="_blank" href="https://pypi.org/project/arize-phoenix/">
|
|
123
|
+
<img src="https://img.shields.io/pypi/pyversions/arize-phoenix">
|
|
124
|
+
</a>
|
|
125
|
+
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix/tags">
|
|
126
|
+
<img src="https://img.shields.io/docker/v/arizephoenix/phoenix?sort=semver&logo=docker&label=image&color=blue">
|
|
127
|
+
</a>
|
|
128
|
+
</p>
|
|
129
|
+
|
|
130
|
+
Phoenix is an open-source AI observability platform designed for experimentation, evaluation, and troubleshooting. It provides:
|
|
131
|
+
|
|
132
|
+
- **_Tracing_** - Trace your LLM application's runtime using using OpenTelemetry-based instrumentation.
|
|
133
|
+
- **_Evaluation_** - Leverage LLMs to benchmark your application's performance using response and retrieval evals.
|
|
134
|
+
- **_Inference Analysis_** - Visualize inferences and embeddings using dimensionality reduction and clustering to identify drift and performance degradation.
|
|
135
|
+
|
|
136
|
+
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙LlamaIndex, 🦜⛓LangChain, 🧩DSPy) and LLM providers (OpenAI, Bedrock, and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
137
|
+
|
|
138
|
+
Phoenix runs practically anywhere, including your Jupyter notebook, local machine, containerized deployment, or in the cloud.
|
|
139
|
+
|
|
140
|
+
## Installation
|
|
141
|
+
|
|
142
|
+
Install Phoenix via `pip` or `conda` along with extra dependencies for running evals:
|
|
143
|
+
|
|
144
|
+
```shell
|
|
145
|
+
pip install 'arize-phoenix[evals]'
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Phoenix container images are available via [Docker Hub](https://hub.docker.com/r/arizephoenix/phoenix) and can be deployed using Docker or Kubernetes.
|
|
149
|
+
|
|
150
|
+
## Community
|
|
151
|
+
|
|
152
|
+
Join our community to connect with thousands of AI builders.
|
|
153
|
+
|
|
154
|
+
- 🌍 Join our [Slack community](https://join.slack.com/t/arize-ai/shared_invite/zt-1px8dcmlf-fmThhDFD_V_48oU7ALan4Q).
|
|
155
|
+
- 💡 Ask questions and provide feedback in the _#phoenix-support_ channel.
|
|
156
|
+
- 🌟 Leave a star on our [GitHub](https://github.com/Arize-ai/phoenix).
|
|
157
|
+
- 🐞 Report bugs with [GitHub Issues](https://github.com/Arize-ai/phoenix/issues).
|
|
158
|
+
- 𝕏 Follow us on [𝕏](https://twitter.com/ArizePhoenix).
|
|
159
|
+
- 💌️ Sign up for our [mailing list](https://phoenix.arize.com/#updates).
|
|
160
|
+
- 🗺️ Check out our [roadmap](https://github.com/orgs/Arize-ai/projects/45) to see where we're heading next.
|
|
161
|
+
|
|
162
|
+
## Thanks
|
|
163
|
+
|
|
164
|
+
- [UMAP](https://github.com/lmcinnes/umap) For unlocking the ability to visualize and reason about embeddings
|
|
165
|
+
- [HDBSCAN](https://github.com/scikit-learn-contrib/hdbscan) For providing a clustering algorithm to aid in the discovery of drift and performance degradation
|
|
166
|
+
|
|
167
|
+
## Breaking Changes
|
|
168
|
+
|
|
169
|
+
See the [migration guide](./MIGRATION.md) for a list of breaking changes.
|
|
170
|
+
|
|
171
|
+
## Copyright, Patent, and License
|
|
172
|
+
|
|
173
|
+
Copyright 2023 Arize AI, Inc. All Rights Reserved.
|
|
174
|
+
|
|
175
|
+
Portions of this code are patent protected by one or more U.S. Patents. See [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
|
|
176
|
+
|
|
177
|
+
This software is licensed under the terms of the Elastic License 2.0 (ELv2). See [LICENSE](https://github.com/Arize-ai/phoenix/blob/main/LICENSE).
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a target="_blank" href="https://phoenix.arize.com" style="background:none">
|
|
3
|
+
<img alt="phoenix banner" src="https://github.com/Arize-ai/phoenix-assets/blob/main/images/socal/github-large-banner-phoenix.jpg?raw=true" width="auto" height="auto"></img>
|
|
4
|
+
</a>
|
|
5
|
+
<br/>
|
|
6
|
+
<br/>
|
|
7
|
+
<a href="https://docs.arize.com/phoenix/">
|
|
8
|
+
<img src="https://img.shields.io/static/v1?message=Docs&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAG4ElEQVR4nO2d4XHjNhCFcTf+b3ZgdWCmgmMqOKUC0xXYrsBOBVEqsFRB7ApCVRCygrMriFQBM7h5mNlwKBECARLg7jeDscamSQj7sFgsQfBL27ZK4MtXsT1vRADMEQEwRwTAHBEAc0QAzBEBMEcEwBwRAHNEAMwRATBnjAByFGE+MqVUMcYOY24GVUqpb/h8VErVKAf87QNFcEcbd4WSw+D6803njHscO5sATmGEURGBiCj6yUlv1uX2gv91FsDViArbcA2RUKF8QhAV8RQc0b15DcOt0VaTE1oAfWj3dYdCBfGGsmSM0XX5HsP3nEMAXbqCeCdiOERQPx9og5exGJ0S4zRQN9KrUupfpdQWjZciure/YIj7K0bjqwTyAHdovA805iqCOg2xgnB1nZ97IvaoSCURdIPG/IHGjTH/YAz/A8KdJai7lBQzgbpx/0Hg6DT18UzWMXxSjMkDrElPNEmKfAbl6znwI3IMU/OCa0/1nfckwWaSbvWYYDnEsvCMJDNckhqu7GCMKWYOBXp9yPGd5kvqUAKf6rkAk7M2SY9QDXdEr9wEOr9x96EiejMFnixBNteDISsyNw7hHRqc22evWcP4vt39O85bzZH30AKg4+eo8cQRI4bHAJ7hyYM3CNHrG9RrimSXuZmUkZjN/O6nAPpcwCcJNmipAle2QM/1GU3vITCXhvY91u9geN/jOY27VuTnYL1PCeAcRhwh7/Bl8Ai+IuxPiOCShtfX/sPDtY8w+sZjby86dw6dBeoigD7obd/Ko6fI4BF8DA9HnGdrcU0fLt+n4dfE6H5jpjYcVdu2L23b5lpjHoo+18FDbcszddF1rUee/4C6ZiO+80rHZmjDoIQUQLdRtm3brkcKIUPjjqVPBIUHgW1GGN4YfawAL2IqAVB8iEE31tvIelARlCPPVaFOLoIupzY6xVcM4MoRUyHXyHhslH6PaPl5RP1Lh4UsOeKR2e8dzC0Aiuvc2Nx3fwhfxf/hknouUYbWUk5GTAIwmOh5e+H0cor8vEL91hfOdEqINLq1AV+RKImJ6869f9tFIBVc6y7gd3lHfWyNX0LEr7EuDElhRdAlQjig0e/RU31xxDltM4pF7IY3pLIgxAhhgzF/iC2M0Hi4dkOGlyGMd/g7dsMbUlsR9ICe9WhxbA3DjRkSdjiHzQzlBSKNJsCzIcUlYdfI0dcWS8LMkPDkcJ0n/O+Qyy/IAtDkSPnp4Fu4WpthQR/zm2VcoI/51fI28iYld9/HEh4Pf7D0Bm845pwIPnHMUJSf45pT5x68s5T9AW6INzhHDeP1BYcNMew5SghkinWOwVnaBhHGG5ybMn70zBDe8buh8X6DqV0Sa/5tWOIOIbcWQ8KBiGBnMb/P0OuTd/lddCrY5jn/VLm3nL+fY4X4YREuv8vS9wh6HSkAExMs0viKySZRd44iyOH2FzPe98Fll7A7GNMmjay4GF9BAKGXesfCN0sRsDG+YrhP4O2ACFgZXzHdKPL2RMJoxc34ivFOod3AMMNUj5XxFfOtYrUIXvB5MandS+G+V/AzZ+MrEcBPlpoFtUIEwBwRAG+OIgDe1CIA5ogAmCMCYI4IgDkiAOaIAJgjAmCOCIA5IgDmiACYIwJgjgiAOSIA5ogAmCMCYI4IgDkiAOaIAJgjAmCOCIA5IgDmiACYIwJgjgiAOSIA5ogAmCMCYI4IgDkiAOaIAJgjAmDOVYBXvwvxQV8NWJOd0esvJ94babZaz7B5ovldxnlDpYhp0JFr/KTlLKcEMMQKpcDPXIQxGXsYmhZnXAXQh/EWBQrr3bc80mATyyrEvs4+BdBHgbdxFOIhrDkSg1/6Iu2LCS0AyoqI4ftUF00EY/Q3h1fRj2JKAVCMGErmnsH1lfnemEsAlByvgl0z2qx5B8OPCuB8EIMADBlEEOV79j1whNE3c/X2PmISAGUNr7CEmUSUhjfEKgBDAY+QohCiNrwhdgEYzPv7UxkadvBg0RrekMrNoAozh3vLN4DPhc7S/WL52vkoSO1u4BZC+DOCulC0KJ/gqWaP7C8hlSGgjxyCmDuPsEePT/KuasrrAcyr4H+f6fq01yd7Sz1lD0CZ2hs06PVJufs+lrIiyLwufjfBtXYpjvWnWIoHoJSYe4dIK/t4HX1ULFEACkPCm8e8wXFJvZ6y1EWhJkDcWxw7RINzLc74auGrgg8e4oIm9Sh/CA7LwkvHqaIJ9pLI6Lmy1BigDy2EV8tjdzh+8XB6MGSLKH4INsZXDJ8MGhIBK+Mrpo+GnRIBO+MrZjFAFxoTNBwCvj6u4qvSZJiM3iNX4yvmHoA9Sh4PF0QAzBEBMEcEwBwRAHNEAMwRAXBGKfUfr5hKvglRfO4AAAAASUVORK5CYII=&labelColor=grey&color=blue&logoColor=white&label=%20"/>
|
|
9
|
+
</a>
|
|
10
|
+
<a target="_blank" href="https://join.slack.com/t/arize-ai/shared_invite/zt-1px8dcmlf-fmThhDFD_V_48oU7ALan4Q">
|
|
11
|
+
<img src="https://img.shields.io/static/v1?message=Community&logo=slack&labelColor=grey&color=blue&logoColor=white&label=%20"/>
|
|
12
|
+
</a>
|
|
13
|
+
<a target="_blank" href="https://twitter.com/ArizePhoenix">
|
|
14
|
+
<img src="https://img.shields.io/badge/-ArizePhoenix-blue.svg?color=blue&labelColor=gray&logo=twitter">
|
|
15
|
+
</a>
|
|
16
|
+
<a target="_blank" href="https://pypi.org/project/arize-phoenix/">
|
|
17
|
+
<img src="https://img.shields.io/pypi/v/arize-phoenix?color=blue">
|
|
18
|
+
</a>
|
|
19
|
+
<a target="_blank" href="https://anaconda.org/conda-forge/arize-phoenix">
|
|
20
|
+
<img src="https://img.shields.io/conda/vn/conda-forge/arize-phoenix.svg?color=blue">
|
|
21
|
+
</a>
|
|
22
|
+
<a target="_blank" href="https://pypi.org/project/arize-phoenix/">
|
|
23
|
+
<img src="https://img.shields.io/pypi/pyversions/arize-phoenix">
|
|
24
|
+
</a>
|
|
25
|
+
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix/tags">
|
|
26
|
+
<img src="https://img.shields.io/docker/v/arizephoenix/phoenix?sort=semver&logo=docker&label=image&color=blue">
|
|
27
|
+
</a>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
Phoenix is an open-source AI observability platform designed for experimentation, evaluation, and troubleshooting. It provides:
|
|
31
|
+
|
|
32
|
+
- **_Tracing_** - Trace your LLM application's runtime using using OpenTelemetry-based instrumentation.
|
|
33
|
+
- **_Evaluation_** - Leverage LLMs to benchmark your application's performance using response and retrieval evals.
|
|
34
|
+
- **_Inference Analysis_** - Visualize inferences and embeddings using dimensionality reduction and clustering to identify drift and performance degradation.
|
|
35
|
+
|
|
36
|
+
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙LlamaIndex, 🦜⛓LangChain, 🧩DSPy) and LLM providers (OpenAI, Bedrock, and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
37
|
+
|
|
38
|
+
Phoenix runs practically anywhere, including your Jupyter notebook, local machine, containerized deployment, or in the cloud.
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
Install Phoenix via `pip` or `conda` along with extra dependencies for running evals:
|
|
43
|
+
|
|
44
|
+
```shell
|
|
45
|
+
pip install 'arize-phoenix[evals]'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Phoenix container images are available via [Docker Hub](https://hub.docker.com/r/arizephoenix/phoenix) and can be deployed using Docker or Kubernetes.
|
|
49
|
+
|
|
50
|
+
## Community
|
|
51
|
+
|
|
52
|
+
Join our community to connect with thousands of AI builders.
|
|
53
|
+
|
|
54
|
+
- 🌍 Join our [Slack community](https://join.slack.com/t/arize-ai/shared_invite/zt-1px8dcmlf-fmThhDFD_V_48oU7ALan4Q).
|
|
55
|
+
- 💡 Ask questions and provide feedback in the _#phoenix-support_ channel.
|
|
56
|
+
- 🌟 Leave a star on our [GitHub](https://github.com/Arize-ai/phoenix).
|
|
57
|
+
- 🐞 Report bugs with [GitHub Issues](https://github.com/Arize-ai/phoenix/issues).
|
|
58
|
+
- 𝕏 Follow us on [𝕏](https://twitter.com/ArizePhoenix).
|
|
59
|
+
- 💌️ Sign up for our [mailing list](https://phoenix.arize.com/#updates).
|
|
60
|
+
- 🗺️ Check out our [roadmap](https://github.com/orgs/Arize-ai/projects/45) to see where we're heading next.
|
|
61
|
+
|
|
62
|
+
## Thanks
|
|
63
|
+
|
|
64
|
+
- [UMAP](https://github.com/lmcinnes/umap) For unlocking the ability to visualize and reason about embeddings
|
|
65
|
+
- [HDBSCAN](https://github.com/scikit-learn-contrib/hdbscan) For providing a clustering algorithm to aid in the discovery of drift and performance degradation
|
|
66
|
+
|
|
67
|
+
## Breaking Changes
|
|
68
|
+
|
|
69
|
+
See the [migration guide](./MIGRATION.md) for a list of breaking changes.
|
|
70
|
+
|
|
71
|
+
## Copyright, Patent, and License
|
|
72
|
+
|
|
73
|
+
Copyright 2023 Arize AI, Inc. All Rights Reserved.
|
|
74
|
+
|
|
75
|
+
Portions of this code are patent protected by one or more U.S. Patents. See [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
|
|
76
|
+
|
|
77
|
+
This software is licensed under the terms of the Elastic License 2.0 (ELv2). See [LICENSE](https://github.com/Arize-ai/phoenix/blob/main/LICENSE).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
from datetime import datetime
|
|
3
|
-
from typing import List, Optional, Protocol, Union, cast
|
|
3
|
+
from typing import List, Optional, Protocol, Tuple, Union, cast
|
|
4
4
|
|
|
5
5
|
import pandas as pd
|
|
6
6
|
from openinference.semconv.trace import DocumentAttributes, SpanAttributes
|
|
@@ -75,7 +75,7 @@ def get_qa_with_reference(
|
|
|
75
75
|
project_name: Optional[str] = None,
|
|
76
76
|
# Deprecated
|
|
77
77
|
stop_time: Optional[datetime] = None,
|
|
78
|
-
) -> pd.DataFrame:
|
|
78
|
+
) -> Optional[pd.DataFrame]:
|
|
79
79
|
project_name = project_name or get_env_project_name()
|
|
80
80
|
if stop_time:
|
|
81
81
|
# Deprecated. Raise a warning
|
|
@@ -84,23 +84,35 @@ def get_qa_with_reference(
|
|
|
84
84
|
DeprecationWarning,
|
|
85
85
|
)
|
|
86
86
|
end_time = end_time or stop_time
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
87
|
+
separator = "\n\n"
|
|
88
|
+
qa_query = SpanQuery().select("span_id", **IO).where(IS_ROOT).with_index("trace_id")
|
|
89
|
+
docs_query = (
|
|
90
|
+
SpanQuery()
|
|
91
|
+
.where(IS_RETRIEVER)
|
|
92
|
+
.concat(RETRIEVAL_DOCUMENTS, reference=DOCUMENT_CONTENT)
|
|
93
|
+
.with_concat_separator(separator=separator)
|
|
94
|
+
.with_index("trace_id")
|
|
95
|
+
)
|
|
96
|
+
df_qa, df_docs = cast(
|
|
97
|
+
Tuple[pd.DataFrame, pd.DataFrame],
|
|
98
|
+
obj.query_spans(
|
|
99
|
+
qa_query,
|
|
100
|
+
docs_query,
|
|
101
|
+
start_time=start_time,
|
|
102
|
+
end_time=end_time,
|
|
103
|
+
project_name=project_name,
|
|
103
104
|
),
|
|
104
|
-
axis=1,
|
|
105
|
-
join="inner",
|
|
106
105
|
)
|
|
106
|
+
if df_qa is None or df_qa.empty:
|
|
107
|
+
print("No spans found.")
|
|
108
|
+
return None
|
|
109
|
+
if df_docs is None or df_docs.empty:
|
|
110
|
+
print("No retrieval documents found.")
|
|
111
|
+
return None
|
|
112
|
+
# Consolidate duplicate rows via concatenation. This can happen if there are multiple
|
|
113
|
+
# retriever spans in the same trace. We simply concatenate all of them (in no particular
|
|
114
|
+
# order) into a single row.
|
|
115
|
+
ref = df_docs.groupby("context.trace_id")["reference"].apply(lambda x: separator.join(x))
|
|
116
|
+
df_ref = pd.DataFrame({"reference": ref})
|
|
117
|
+
df_qa_ref = pd.concat([df_qa, df_ref], axis=1, join="inner").set_index("context.span_id")
|
|
118
|
+
return df_qa_ref
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "4.1.2"
|