arize-phoenix 4.7.1__tar.gz → 4.7.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.7.1 → arize_phoenix-4.7.2}/PKG-INFO +1 -1
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/functions.py +27 -9
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/types.py +5 -23
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/experiment_runs.py +12 -15
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/index.js +201 -178
- arize_phoenix-4.7.2/src/phoenix/version.py +1 -0
- arize_phoenix-4.7.1/src/phoenix/version.py +0 -1
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/.gitignore +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/IP_NOTICE +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/LICENSE +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/README.md +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/pyproject.toml +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/config.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/types.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/db/models.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/py.typed +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/auth.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/queries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/dataset_examples.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Model.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/openapi/docs.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/index.css +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/services.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/settings.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/langchain/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/langchain/instrumentor.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/llama_index/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/llama_index/callback.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/openai/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/openai/instrumentor.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/utilities/span_store.py +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import asyncio
|
|
1
2
|
import functools
|
|
2
3
|
import inspect
|
|
3
4
|
import json
|
|
@@ -62,7 +63,6 @@ from phoenix.experiments.types import (
|
|
|
62
63
|
ExperimentEvaluationRun,
|
|
63
64
|
ExperimentParameters,
|
|
64
65
|
ExperimentRun,
|
|
65
|
-
ExperimentRunOutput,
|
|
66
66
|
ExperimentTask,
|
|
67
67
|
RanExperiment,
|
|
68
68
|
TaskSummary,
|
|
@@ -284,7 +284,7 @@ def run_experiment(
|
|
|
284
284
|
experiment_id=experiment.id,
|
|
285
285
|
dataset_example_id=example.id,
|
|
286
286
|
repetition_number=repetition_number,
|
|
287
|
-
|
|
287
|
+
output=output,
|
|
288
288
|
error=repr(error) if error else None,
|
|
289
289
|
trace_id=_str_trace_id(span.get_span_context().trace_id), # type: ignore[no-untyped-call]
|
|
290
290
|
)
|
|
@@ -345,13 +345,21 @@ def run_experiment(
|
|
|
345
345
|
experiment_id=experiment.id,
|
|
346
346
|
dataset_example_id=example.id,
|
|
347
347
|
repetition_number=repetition_number,
|
|
348
|
-
|
|
348
|
+
output=output,
|
|
349
349
|
error=repr(error) if error else None,
|
|
350
350
|
trace_id=_str_trace_id(span.get_span_context().trace_id), # type: ignore[no-untyped-call]
|
|
351
351
|
)
|
|
352
352
|
if not dry_run:
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
# Below is a workaround to avoid timeout errors sometimes
|
|
354
|
+
# encountered when the task is a synchronous function that
|
|
355
|
+
# blocks for too long.
|
|
356
|
+
resp = await asyncio.get_running_loop().run_in_executor(
|
|
357
|
+
None,
|
|
358
|
+
functools.partial(
|
|
359
|
+
sync_client.post,
|
|
360
|
+
url=f"/v1/experiments/{experiment.id}/runs",
|
|
361
|
+
json=jsonify(exp_run),
|
|
362
|
+
),
|
|
355
363
|
)
|
|
356
364
|
resp.raise_for_status()
|
|
357
365
|
exp_run = replace(exp_run, id=resp.json()["data"]["id"])
|
|
@@ -393,7 +401,7 @@ def run_experiment(
|
|
|
393
401
|
ran_experiment.__init__( # type: ignore[misc]
|
|
394
402
|
params=params,
|
|
395
403
|
dataset=dataset,
|
|
396
|
-
runs={r.id: r for r in task_runs},
|
|
404
|
+
runs={r.id: r for r in task_runs if r is not None},
|
|
397
405
|
task_summary=task_summary,
|
|
398
406
|
**_asdict(experiment),
|
|
399
407
|
)
|
|
@@ -498,7 +506,7 @@ def evaluate_experiment(
|
|
|
498
506
|
stack.enter_context(capture_spans(resource))
|
|
499
507
|
try:
|
|
500
508
|
result = evaluator.evaluate(
|
|
501
|
-
output=experiment_run.output,
|
|
509
|
+
output=deepcopy(experiment_run.output),
|
|
502
510
|
expected=example.output,
|
|
503
511
|
reference=example.output,
|
|
504
512
|
input=example.input,
|
|
@@ -550,7 +558,7 @@ def evaluate_experiment(
|
|
|
550
558
|
stack.enter_context(capture_spans(resource))
|
|
551
559
|
try:
|
|
552
560
|
result = await evaluator.async_evaluate(
|
|
553
|
-
output=experiment_run.output,
|
|
561
|
+
output=deepcopy(experiment_run.output),
|
|
554
562
|
expected=example.output,
|
|
555
563
|
reference=example.output,
|
|
556
564
|
input=example.input,
|
|
@@ -582,7 +590,17 @@ def evaluate_experiment(
|
|
|
582
590
|
trace_id=_str_trace_id(span.get_span_context().trace_id), # type: ignore[no-untyped-call]
|
|
583
591
|
)
|
|
584
592
|
if not dry_run:
|
|
585
|
-
|
|
593
|
+
# Below is a workaround to avoid timeout errors sometimes
|
|
594
|
+
# encountered when the evaluator is a synchronous function
|
|
595
|
+
# that blocks for too long.
|
|
596
|
+
resp = await asyncio.get_running_loop().run_in_executor(
|
|
597
|
+
None,
|
|
598
|
+
functools.partial(
|
|
599
|
+
sync_client.post,
|
|
600
|
+
url="/v1/experiment_evaluations",
|
|
601
|
+
json=jsonify(eval_run),
|
|
602
|
+
),
|
|
603
|
+
)
|
|
586
604
|
resp.raise_for_status()
|
|
587
605
|
eval_run = replace(eval_run, id=resp.json()["data"]["id"])
|
|
588
606
|
return eval_run
|
|
@@ -198,20 +198,6 @@ class Experiment:
|
|
|
198
198
|
)
|
|
199
199
|
|
|
200
200
|
|
|
201
|
-
@dataclass(frozen=True)
|
|
202
|
-
class ExperimentRunOutput:
|
|
203
|
-
task_output: TaskOutput
|
|
204
|
-
|
|
205
|
-
def __post_init__(self) -> None:
|
|
206
|
-
object.__setattr__(self, "task_output", _make_read_only(self.task_output))
|
|
207
|
-
|
|
208
|
-
@classmethod
|
|
209
|
-
def from_dict(cls, obj: Optional[Mapping[str, Any]]) -> ExperimentRunOutput:
|
|
210
|
-
if not obj:
|
|
211
|
-
return cls(task_output=None)
|
|
212
|
-
return cls(task_output=obj["task_output"])
|
|
213
|
-
|
|
214
|
-
|
|
215
201
|
@dataclass(frozen=True)
|
|
216
202
|
class ExperimentRun:
|
|
217
203
|
start_time: datetime
|
|
@@ -219,15 +205,11 @@ class ExperimentRun:
|
|
|
219
205
|
experiment_id: ExperimentId
|
|
220
206
|
dataset_example_id: ExampleId
|
|
221
207
|
repetition_number: RepetitionNumber
|
|
222
|
-
|
|
208
|
+
output: JSONSerializable
|
|
223
209
|
error: Optional[str] = None
|
|
224
210
|
id: ExperimentRunId = field(default_factory=_dry_run_id)
|
|
225
211
|
trace_id: Optional[TraceId] = None
|
|
226
212
|
|
|
227
|
-
@property
|
|
228
|
-
def output(self) -> Optional[TaskOutput]:
|
|
229
|
-
return deepcopy(self.experiment_run_output.task_output)
|
|
230
|
-
|
|
231
213
|
@classmethod
|
|
232
214
|
def from_dict(cls, obj: Mapping[str, Any]) -> ExperimentRun:
|
|
233
215
|
return cls(
|
|
@@ -236,14 +218,14 @@ class ExperimentRun:
|
|
|
236
218
|
experiment_id=obj["experiment_id"],
|
|
237
219
|
dataset_example_id=obj["dataset_example_id"],
|
|
238
220
|
repetition_number=obj.get("repetition_number") or 1,
|
|
239
|
-
|
|
221
|
+
output=_make_read_only(obj.get("output")),
|
|
240
222
|
error=obj.get("error"),
|
|
241
223
|
id=obj["id"],
|
|
242
224
|
trace_id=obj.get("trace_id"),
|
|
243
225
|
)
|
|
244
226
|
|
|
245
227
|
def __post_init__(self) -> None:
|
|
246
|
-
if bool(self.
|
|
228
|
+
if bool(self.output) == bool(self.error):
|
|
247
229
|
ValueError("Must specify exactly one of experiment_run_output or error")
|
|
248
230
|
|
|
249
231
|
|
|
@@ -381,7 +363,7 @@ class EvaluationSummary(_HasStats):
|
|
|
381
363
|
if df.empty:
|
|
382
364
|
df = pd.DataFrame.from_records(
|
|
383
365
|
[
|
|
384
|
-
{"evaluator": name, "error":
|
|
366
|
+
{"evaluator": name, "error": None, "score": None, "label": None}
|
|
385
367
|
for name in params.eval_names
|
|
386
368
|
]
|
|
387
369
|
)
|
|
@@ -571,7 +553,7 @@ class RanExperiment(Experiment):
|
|
|
571
553
|
{
|
|
572
554
|
"run_id": run.id,
|
|
573
555
|
"error": run.error,
|
|
574
|
-
"output": deepcopy(run.
|
|
556
|
+
"output": deepcopy(run.output),
|
|
575
557
|
"input": deepcopy((ex := self.dataset.examples[run.dataset_example_id]).input),
|
|
576
558
|
"expected": deepcopy(ex.output),
|
|
577
559
|
"metadata": deepcopy(ex.metadata),
|
{arize_phoenix-4.7.1 → arize_phoenix-4.7.2}/src/phoenix/server/api/routers/v1/experiment_runs.py
RENAMED
|
@@ -7,9 +7,8 @@ from starlette.status import HTTP_404_NOT_FOUND
|
|
|
7
7
|
from strawberry.relay import GlobalID
|
|
8
8
|
|
|
9
9
|
from phoenix.db import models
|
|
10
|
-
from phoenix.
|
|
10
|
+
from phoenix.db.models import ExperimentRunOutput
|
|
11
11
|
from phoenix.server.api.types.node import from_global_id_with_expected_type
|
|
12
|
-
from phoenix.utilities.json import jsonify
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
async def create_experiment_run(request: Request) -> Response:
|
|
@@ -39,9 +38,8 @@ async def create_experiment_run(request: Request) -> Response:
|
|
|
39
38
|
trace_id:
|
|
40
39
|
type: string
|
|
41
40
|
description: Optional trace ID for tracking
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
description: The output of the experiment run
|
|
41
|
+
output:
|
|
42
|
+
description: The output of the experiment task
|
|
45
43
|
repetition_number:
|
|
46
44
|
type: integer
|
|
47
45
|
description: The repetition number of the experiment run
|
|
@@ -101,7 +99,7 @@ async def create_experiment_run(request: Request) -> Response:
|
|
|
101
99
|
)
|
|
102
100
|
|
|
103
101
|
trace_id = payload.get("trace_id", None)
|
|
104
|
-
|
|
102
|
+
task_output = payload["output"]
|
|
105
103
|
repetition_number = payload["repetition_number"]
|
|
106
104
|
start_time = payload["start_time"]
|
|
107
105
|
end_time = payload["end_time"]
|
|
@@ -112,7 +110,7 @@ async def create_experiment_run(request: Request) -> Response:
|
|
|
112
110
|
experiment_id=experiment_id,
|
|
113
111
|
dataset_example_id=dataset_example_id,
|
|
114
112
|
trace_id=trace_id,
|
|
115
|
-
output=
|
|
113
|
+
output=ExperimentRunOutput(task_output=task_output),
|
|
116
114
|
repetition_number=repetition_number,
|
|
117
115
|
start_time=datetime.fromisoformat(start_time),
|
|
118
116
|
end_time=datetime.fromisoformat(end_time),
|
|
@@ -170,9 +168,8 @@ async def list_experiment_runs(request: Request) -> Response:
|
|
|
170
168
|
type: string
|
|
171
169
|
format: date-time
|
|
172
170
|
description: The end time of the experiment run in ISO format
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
description: The output of the experiment run
|
|
171
|
+
output:
|
|
172
|
+
description: The output of the experiment task
|
|
176
173
|
error:
|
|
177
174
|
type: string
|
|
178
175
|
description: Error message if the experiment run encountered an error
|
|
@@ -205,16 +202,16 @@ async def list_experiment_runs(request: Request) -> Response:
|
|
|
205
202
|
experiment_gid = GlobalID("Experiment", str(exp_run.experiment_id))
|
|
206
203
|
example_gid = GlobalID("DatasetExample", str(exp_run.dataset_example_id))
|
|
207
204
|
runs.append(
|
|
208
|
-
|
|
209
|
-
start_time=exp_run.start_time,
|
|
210
|
-
end_time=exp_run.end_time,
|
|
205
|
+
dict(
|
|
206
|
+
start_time=exp_run.start_time.isoformat(),
|
|
207
|
+
end_time=exp_run.end_time.isoformat(),
|
|
211
208
|
experiment_id=str(experiment_gid),
|
|
212
209
|
dataset_example_id=str(example_gid),
|
|
213
210
|
repetition_number=exp_run.repetition_number,
|
|
214
|
-
|
|
211
|
+
output=exp_run.output.get("task_output"),
|
|
215
212
|
error=exp_run.error,
|
|
216
213
|
id=str(run_gid),
|
|
217
214
|
trace_id=exp_run.trace_id,
|
|
218
215
|
)
|
|
219
216
|
)
|
|
220
|
-
return JSONResponse(content={"data":
|
|
217
|
+
return JSONResponse(content={"data": runs}, status_code=200)
|