arize-phoenix 8.32.0__py3-none-any.whl → 9.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.
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/METADATA +3 -2
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/RECORD +78 -58
- phoenix/db/constants.py +1 -0
- phoenix/db/facilitator.py +55 -0
- phoenix/db/insertion/document_annotation.py +31 -13
- phoenix/db/insertion/evaluation.py +15 -3
- phoenix/db/insertion/helpers.py +2 -1
- phoenix/db/insertion/span_annotation.py +26 -9
- phoenix/db/insertion/trace_annotation.py +25 -9
- phoenix/db/insertion/types.py +7 -0
- phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +322 -0
- phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +76 -0
- phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +77 -0
- phoenix/db/models.py +151 -10
- phoenix/db/types/annotation_configs.py +97 -0
- phoenix/db/types/db_models.py +41 -0
- phoenix/db/types/trace_retention.py +267 -0
- phoenix/experiments/functions.py +5 -1
- phoenix/server/api/auth.py +9 -0
- phoenix/server/api/context.py +5 -0
- phoenix/server/api/dataloaders/__init__.py +4 -0
- phoenix/server/api/dataloaders/annotation_summaries.py +203 -24
- phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +42 -0
- phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +34 -0
- phoenix/server/api/helpers/annotations.py +9 -0
- phoenix/server/api/helpers/prompts/models.py +34 -67
- phoenix/server/api/input_types/CreateSpanAnnotationInput.py +9 -0
- phoenix/server/api/input_types/CreateTraceAnnotationInput.py +3 -0
- phoenix/server/api/input_types/PatchAnnotationInput.py +3 -0
- phoenix/server/api/input_types/SpanAnnotationFilter.py +67 -0
- phoenix/server/api/mutations/__init__.py +6 -0
- phoenix/server/api/mutations/annotation_config_mutations.py +413 -0
- phoenix/server/api/mutations/dataset_mutations.py +62 -39
- phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +245 -0
- phoenix/server/api/mutations/span_annotations_mutations.py +272 -70
- phoenix/server/api/mutations/trace_annotations_mutations.py +203 -74
- phoenix/server/api/queries.py +86 -0
- phoenix/server/api/routers/v1/__init__.py +4 -0
- phoenix/server/api/routers/v1/annotation_configs.py +449 -0
- phoenix/server/api/routers/v1/annotations.py +161 -0
- phoenix/server/api/routers/v1/evaluations.py +6 -0
- phoenix/server/api/routers/v1/projects.py +1 -50
- phoenix/server/api/routers/v1/spans.py +37 -8
- phoenix/server/api/routers/v1/traces.py +22 -13
- phoenix/server/api/routers/v1/utils.py +60 -0
- phoenix/server/api/types/Annotation.py +7 -0
- phoenix/server/api/types/AnnotationConfig.py +124 -0
- phoenix/server/api/types/AnnotationSource.py +9 -0
- phoenix/server/api/types/AnnotationSummary.py +28 -14
- phoenix/server/api/types/AnnotatorKind.py +1 -0
- phoenix/server/api/types/CronExpression.py +15 -0
- phoenix/server/api/types/Evaluation.py +4 -30
- phoenix/server/api/types/Project.py +50 -2
- phoenix/server/api/types/ProjectTraceRetentionPolicy.py +110 -0
- phoenix/server/api/types/Span.py +78 -0
- phoenix/server/api/types/SpanAnnotation.py +24 -0
- phoenix/server/api/types/Trace.py +2 -2
- phoenix/server/api/types/TraceAnnotation.py +23 -0
- phoenix/server/app.py +20 -0
- phoenix/server/retention.py +76 -0
- phoenix/server/static/.vite/manifest.json +36 -36
- phoenix/server/static/assets/components-B2MWTXnm.js +4326 -0
- phoenix/server/static/assets/{index-B0CbpsxD.js → index-Bfvpea_-.js} +10 -10
- phoenix/server/static/assets/pages-CZ2vKu8H.js +7268 -0
- phoenix/server/static/assets/vendor-BRDkBC5J.js +903 -0
- phoenix/server/static/assets/{vendor-arizeai-CxXYQNUl.js → vendor-arizeai-BvTqp_W8.js} +3 -3
- phoenix/server/static/assets/{vendor-codemirror-B0NIFPOL.js → vendor-codemirror-COt9UfW7.js} +1 -1
- phoenix/server/static/assets/{vendor-recharts-CrrDFWK1.js → vendor-recharts-BoHX9Hvs.js} +2 -2
- phoenix/server/static/assets/{vendor-shiki-C5bJ-RPf.js → vendor-shiki-Cw1dsDAz.js} +1 -1
- phoenix/session/client.py +6 -1
- phoenix/trace/dsl/filter.py +25 -5
- phoenix/trace/dsl/query.py +93 -13
- phoenix/utilities/__init__.py +18 -0
- phoenix/version.py +1 -1
- phoenix/server/static/assets/components-x-gKFJ8C.js +0 -3414
- phoenix/server/static/assets/pages-BU4VdyeH.js +0 -5867
- phoenix/server/static/assets/vendor-BfhM_F1u.js +0 -902
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/entry_points.txt +0 -0
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-8.32.0.dist-info → arize_phoenix-9.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arize-phoenix
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.0
|
|
4
4
|
Summary: AI Observability and Evaluation
|
|
5
5
|
Project-URL: Documentation, https://docs.arize.com/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -172,7 +172,7 @@ Phoenix is an open-source AI observability platform designed for experimentation
|
|
|
172
172
|
- [**_Playground_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts)- Optimize prompts, compare models, adjust parameters, and replay traced LLM calls.
|
|
173
173
|
- [**_Prompt Management_**](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts/prompt-management)- Manage and test prompt changes systematically using version control, tagging, and experimentation.
|
|
174
174
|
|
|
175
|
-
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy), 🤗[smolagents](https://docs.arize.com/phoenix/tracing/integrations-tracing/hfsmolagents)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
175
|
+
Phoenix is vendor and language agnostic with out-of-the-box support for popular frameworks (🦙[LlamaIndex](https://docs.arize.com/phoenix/tracing/integrations-tracing/llamaindex), 🦜⛓[LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain), [Haystack](https://docs.arize.com/phoenix/tracing/integrations-tracing/haystack), 🧩[DSPy](https://docs.arize.com/phoenix/tracing/integrations-tracing/dspy), 🤗[smolagents](https://docs.arize.com/phoenix/tracing/integrations-tracing/hfsmolagents)) and LLM providers ([OpenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/openai), [Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock), [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai), [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai), [LiteLLM](https://docs.arize.com/phoenix/tracing/integrations-tracing/litellm), [Google GenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/google-genai) and more). For details on auto-instrumentation, check out the [OpenInference](https://github.com/Arize-ai/openinference) project.
|
|
176
176
|
|
|
177
177
|
Phoenix runs practically anywhere, including your local machine, a Jupyter notebook, a containerized deployment, or in the cloud.
|
|
178
178
|
|
|
@@ -214,6 +214,7 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
|
|
|
214
214
|
| [AWS Bedrock](https://docs.arize.com/phoenix/tracing/integrations-tracing/bedrock) | `openinference-instrumentation-bedrock` | [](https://pypi.python.org/pypi/openinference-instrumentation-bedrock) |
|
|
215
215
|
| [LangChain](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain) | `openinference-instrumentation-langchain` | [](https://pypi.python.org/pypi/openinference-instrumentation-langchain) |
|
|
216
216
|
| [MistralAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/mistralai) | `openinference-instrumentation-mistralai` | [](https://pypi.python.org/pypi/openinference-instrumentation-mistralai) |
|
|
217
|
+
| [Google GenAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/google-gen-ai) | `openinference-instrumentation-google-genai` | [](https://pypi.python.org/pypi/openinference-instrumentation-google-genai) |
|
|
217
218
|
| [Guardrails](https://docs.arize.com/phoenix/tracing/integrations-tracing/guardrails) | `openinference-instrumentation-guardrails` | [](https://pypi.python.org/pypi/openinference-instrumentation-guardrails) |
|
|
218
219
|
| [VertexAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/vertexai) | `openinference-instrumentation-vertexai` | [](https://pypi.python.org/pypi/openinference-instrumentation-vertexai) |
|
|
219
220
|
| [CrewAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/crewai) | `openinference-instrumentation-crewai` | [](https://pypi.python.org/pypi/openinference-instrumentation-crewai) |
|
|
@@ -6,7 +6,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
|
|
|
6
6
|
phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
7
7
|
phoenix/services.py,sha256=ngkyKGVatX3cO2WJdo2hKdaVKP-xJCMvqthvga6kJss,5196
|
|
8
8
|
phoenix/settings.py,sha256=x87BX7hWGQQZbrW_vrYqFR_izCGfO9gFc--JXUG4Tdk,754
|
|
9
|
-
phoenix/version.py,sha256=
|
|
9
|
+
phoenix/version.py,sha256=fmjeF1kRBUkpbk6F_YtljM4OmJk-qNnHjds6vJCK9fc,22
|
|
10
10
|
phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
|
|
12
12
|
phoenix/core/model.py,sha256=qBFraOtmwCCnWJltKNP18DDG0mULXigytlFsa6YOz6k,4837
|
|
@@ -16,39 +16,46 @@ phoenix/db/README.md,sha256=7BFJuecWJjFSxEYmoSv4CvoFHHszX4tFy3HJExOxS-4,8661
|
|
|
16
16
|
phoenix/db/__init__.py,sha256=pDjEFXukHmJBM-1D8RjmXkvLsz85YWNxMQczt81ec3A,118
|
|
17
17
|
phoenix/db/alembic.ini,sha256=GIS6HpHaKaJbbuahZg1Rc1D2_QqyCkV9r58wdARGf6w,3262
|
|
18
18
|
phoenix/db/bulk_inserter.py,sha256=faNjuwLqqsw4ky8sa4D0h9u5TvEDTOjrccUW89L008E,12725
|
|
19
|
+
phoenix/db/constants.py,sha256=-YE2rkzcROG06_rerfnX5hC7fLzOHx1Gjw4nXhX_um4,46
|
|
19
20
|
phoenix/db/engines.py,sha256=tB_8iWMDz0folryVvw29sbBUxJOB2XZ-Xx0Uexj3uns,6889
|
|
20
21
|
phoenix/db/enums.py,sha256=tt7iovXLhVTLZ3_LbHNGgcI44SnNjXfkKtLAZG57T54,428
|
|
21
|
-
phoenix/db/facilitator.py,sha256=
|
|
22
|
+
phoenix/db/facilitator.py,sha256=dznnV_kZNgpUe5D1BRpznfsClEkb1cgmd2QRMO4KyOM,9370
|
|
22
23
|
phoenix/db/helpers.py,sha256=rbbHcl-STzcEpcXCYx6jbKzko7r3ggrWHHsXjZ48HsM,5352
|
|
23
24
|
phoenix/db/migrate.py,sha256=oUrXH8yEbcpL4eh09aSCuUiSrhFli0eT5D_j4ZmYChY,2797
|
|
24
|
-
phoenix/db/models.py,sha256=
|
|
25
|
+
phoenix/db/models.py,sha256=6a8-3Ciz2OylXlwQvWupODGcmHUNguolmJwk_PWa2QQ,51185
|
|
25
26
|
phoenix/db/pg_config.py,sha256=h6mB7qF7t4Zk6VGvAiyefHGVu74o-yJynaWzeE39k9Y,6001
|
|
26
27
|
phoenix/db/insertion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
28
|
phoenix/db/insertion/constants.py,sha256=8wifm7X-1XvroZ__R2Gc96NsgLhTDn0zXl4lehlXtcA,70
|
|
28
29
|
phoenix/db/insertion/dataset.py,sha256=I9OC1ouVx7m6BH_c8hvcxW1dWGRAtpvXee29yBTuFkg,7136
|
|
29
|
-
phoenix/db/insertion/document_annotation.py,sha256=
|
|
30
|
-
phoenix/db/insertion/evaluation.py,sha256=
|
|
31
|
-
phoenix/db/insertion/helpers.py,sha256=
|
|
30
|
+
phoenix/db/insertion/document_annotation.py,sha256=46IHWgILlIIoCkzgEtZIubqfpgF9KVA8ETWeblcpff0,6544
|
|
31
|
+
phoenix/db/insertion/evaluation.py,sha256=XIlDQMx9FFu_hO1TEao8_ScgKETw61AoeGezsmngXrY,6876
|
|
32
|
+
phoenix/db/insertion/helpers.py,sha256=PAYKxm21OKe_cLsIo08KGJCqT9avjabWLmvD1CpteRs,3499
|
|
32
33
|
phoenix/db/insertion/span.py,sha256=02hpGo5ZY6N-n6Z-far-AC_yVAloXpJyt-CIHOeor0k,8126
|
|
33
|
-
phoenix/db/insertion/span_annotation.py,sha256=
|
|
34
|
-
phoenix/db/insertion/trace_annotation.py,sha256=
|
|
35
|
-
phoenix/db/insertion/types.py,sha256=
|
|
34
|
+
phoenix/db/insertion/span_annotation.py,sha256=7m0kaOkdHhLTqs_E9Kt8BeCiHUpaU3mspm5ZdMz3lio,5728
|
|
35
|
+
phoenix/db/insertion/trace_annotation.py,sha256=Qijh7eROXLjV6OLIuKwsrc2OB9A7JnefzP4eZxlPRlc,5768
|
|
36
|
+
phoenix/db/insertion/types.py,sha256=0p1IQj4WlhNAWonuCnNzWaV6G6xTvAFXRattUGw_zrk,8378
|
|
36
37
|
phoenix/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
38
|
phoenix/db/migrations/env.py,sha256=tFO3ceuCx9Es5_2w_BXclaQMmNQKNX21b1UEV5mYdeo,3387
|
|
38
39
|
phoenix/db/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
39
40
|
phoenix/db/migrations/data_migration_scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
41
|
phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py,sha256=NJPoEX2-OhYxQXl0jRcX5eoq1azgLi8RLArZZw2pTY4,6046
|
|
41
42
|
phoenix/db/migrations/versions/10460e46d750_datasets.py,sha256=E2xC5NCmY6bEvJGf1SbxblvmERHdxeEq13mbWTz3clQ,8663
|
|
43
|
+
phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py,sha256=hkGeTYYw-2gZufjXD0OMhJiBrGepoCJ7hUc28IN3twY,10775
|
|
42
44
|
phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py,sha256=RxE_1vrpSAy2GKwHvrU3cOLA_bxcRRDibAj87nJEDKE,3622
|
|
43
45
|
phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py,sha256=HDP3X5yxm5PwxMkODd-wrSwspQpFotTEz40jXRgq320,1787
|
|
46
|
+
phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py,sha256=VWluPffBH11NADJ1-CTzoFvbrqIFmEAOSKI21_jsLk8,1841
|
|
47
|
+
phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py,sha256=MmkEZRfDPppX9iM9yxyDzmXlJXlGCEqhbN0nCT8aBF0,2044
|
|
44
48
|
phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py,sha256=rq-bwg0grRVvbKvwE2ZBCFG_nQRmYNCd2PJeFd_5SDk,5527
|
|
45
49
|
phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py,sha256=fkpmh5PgMZJiZpvLbZIaqlI2cucVpVbbNYpQ-Tznil8,5180
|
|
46
50
|
phoenix/db/migrations/versions/cf03bd6bae1d_init.py,sha256=ZNQzTUyb3p9Bkq7rjd5MRxGQV8W08zpY8E3GlzSJ2cM,8630
|
|
47
51
|
phoenix/db/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
+
phoenix/db/types/annotation_configs.py,sha256=keiQ9mzLZWE8Eqsu1xFxQBXvBiym0s-yPzoL8qIR4PY,2904
|
|
53
|
+
phoenix/db/types/db_models.py,sha256=nMSd9gWHwObnVO3_slztlHqoeh04czS-Jxu-omS6M6E,1135
|
|
48
54
|
phoenix/db/types/identifier.py,sha256=Opr3_1di6e5ncrBDn30WfBSr-jN_VGBnkkA4BMuSoyc,244
|
|
49
55
|
phoenix/db/types/model_provider.py,sha256=96UMeqiy5X9PmYMOWA6dZAmI_BSV3yVxt9HEVYGe5Ns,157
|
|
56
|
+
phoenix/db/types/trace_retention.py,sha256=UoLVX4efhv-mcF32zHpMX_hXWe8474cmhEyPmYqeMfI,9573
|
|
50
57
|
phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
|
|
51
|
-
phoenix/experiments/functions.py,sha256=
|
|
58
|
+
phoenix/experiments/functions.py,sha256=rqhKgo7F0jMlkR_7zTZ6UqknrSF44v2XgEd-JR5ISmY,32818
|
|
52
59
|
phoenix/experiments/tracing.py,sha256=seNh9rBH-rtQe8_FPI_VJj1rbo3ADcP6wDvERkMoxNc,2858
|
|
53
60
|
phoenix/experiments/types.py,sha256=yntt6fnAny1U4Q9Y5Mm4ZYIb9319OaJovl-kyXFtGQE,23475
|
|
54
61
|
phoenix/experiments/utils.py,sha256=MZ1-OnTcavk_KUtbfGqt55Fk9TGtJpYG_K71WsN-zDk,785
|
|
@@ -81,7 +88,7 @@ phoenix/pointcloud/pointcloud.py,sha256=SN_1wXZcwKrtSnHGZLDZGx71orqE1WyVF7E-D58d
|
|
|
81
88
|
phoenix/pointcloud/projectors.py,sha256=TQgwc9cJDjJkin1WZyZzgl3HsYrLLiyWD7Czy4jNW3U,1088
|
|
82
89
|
phoenix/pointcloud/umap_parameters.py,sha256=db_WEPoamuWtopZx7tQfAXPnoE0MS8FkAV0_ThjEx_Q,1735
|
|
83
90
|
phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
phoenix/server/app.py,sha256=
|
|
91
|
+
phoenix/server/app.py,sha256=zDBaR8GPphzxV9HyVY8ktPovwxVcnKPXRIWnxKJMSGY,39961
|
|
85
92
|
phoenix/server/authorization.py,sha256=fofeRwuoodCUB3DQYPCuAgIyeiwopXW0tkH_KZvU0Rg,1848
|
|
86
93
|
phoenix/server/bearer_auth.py,sha256=9AY0-aOSHm-B7OYB-20jFA7bETAA6S1_W1za42A8Yt8,6804
|
|
87
94
|
phoenix/server/dml_event.py,sha256=MjJmVEKytq75chBOSyvYDusUnEbg1pHpIjR3pZkUaJA,2838
|
|
@@ -92,21 +99,22 @@ phoenix/server/main.py,sha256=Twpig08FSHIwICMr-2qGNLNoCrgk6EjyHrrxiBwS_VU,18029
|
|
|
92
99
|
phoenix/server/oauth2.py,sha256=EV4wcCwG0N7cJRcfGNURdP5rZgRVCeRDvXyle19A27Y,2064
|
|
93
100
|
phoenix/server/prometheus.py,sha256=1KjvSfjSa2-BPjDybVMM_Kag316CsN-Zwt64YNr_snc,7825
|
|
94
101
|
phoenix/server/rate_limiters.py,sha256=cFc73D2NaxqNZZDbwfIDw4So-fRVOJPBtqxOZ8Qky_s,7155
|
|
102
|
+
phoenix/server/retention.py,sha256=MQe1FWuc_NxhqgIq5q2hfFhWT8ddAmpppgI74xYEQ6c,3064
|
|
95
103
|
phoenix/server/telemetry.py,sha256=4EluDDrhdDPxAjaW6lVSbi73xkB5XeUCZWOmZGdk0hg,2755
|
|
96
104
|
phoenix/server/thread_server.py,sha256=Ea2AWreN1lwJsT2wYvGaRaiXrzBqH4kgkZpx0FO5Ocw,2144
|
|
97
105
|
phoenix/server/types.py,sha256=gJJPBcDRkQ9VHZIt_aLqG_OBbGt1oWp4e3W3Jp61oKs,7409
|
|
98
106
|
phoenix/server/api/README.md,sha256=Pyq1PLPgTzXAswrfIhGXrjI3Skq8it2jTVnanT6Ba4Q,1162
|
|
99
107
|
phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
|
-
phoenix/server/api/auth.py,sha256=
|
|
101
|
-
phoenix/server/api/context.py,sha256=
|
|
108
|
+
phoenix/server/api/auth.py,sha256=cvKH2FQLL7PasiqZMHgu9P4qchhEG7a7P9Nxy35FoIQ,1551
|
|
109
|
+
phoenix/server/api/context.py,sha256=O1-mnFWcxV69r0Uw4zz_630qEdRGHiZQCPicAbrZYxo,6898
|
|
102
110
|
phoenix/server/api/exceptions.py,sha256=TA0JuY2YRnj35qGuMSQ8d0ToHum9gWm9W--3fSKHrX0,1171
|
|
103
111
|
phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
|
|
104
|
-
phoenix/server/api/queries.py,sha256=
|
|
112
|
+
phoenix/server/api/queries.py,sha256=NxVJMVEPuqOcPczHSMwSOVe8i_DadYlS_r7QTjbZxZc,39679
|
|
105
113
|
phoenix/server/api/schema.py,sha256=fcs36xQwFF_Qe41_5cWR8wYpDvOrnbcyTeo5WNMbDsA,1702
|
|
106
114
|
phoenix/server/api/subscriptions.py,sha256=TnZhdoNHMXp1NkUVLA-eB54woll7FvxtsB2pLt1dO0w,23001
|
|
107
115
|
phoenix/server/api/utils.py,sha256=quCBRcusc6PUq9tJq7M8PgwFZp7nXgVAxtbw8feribY,833
|
|
108
|
-
phoenix/server/api/dataloaders/__init__.py,sha256=
|
|
109
|
-
phoenix/server/api/dataloaders/annotation_summaries.py,sha256=
|
|
116
|
+
phoenix/server/api/dataloaders/__init__.py,sha256=jAdt8Tuoj8X2iszbjqJ-LVNo5PicmyxyCTQWL51NMxU,4659
|
|
117
|
+
phoenix/server/api/dataloaders/annotation_summaries.py,sha256=U-mVB6pY65umyjtmF-cLGJAp5QCAaB7psgTie6_gLGI,12943
|
|
110
118
|
phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=GLFoFAbztOH-0FVzzZ77mATIO63UcjB50j3qXiNi-tE,1811
|
|
111
119
|
phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=xF7M2dg3UmjhdCrscnztCIBBI0cg3RF48IIqvilpc18,4623
|
|
112
120
|
phoenix/server/api/dataloaders/dataset_example_spans.py,sha256=z_MFquqAcJ9wat7BBp7MVeJ9BYuu2EZEdaog52iWDno,1390
|
|
@@ -123,6 +131,7 @@ phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=1jYglTXv4S8k
|
|
|
123
131
|
phoenix/server/api/dataloaders/num_child_spans.py,sha256=655g9SP_3gfT4qqukfgKzLy5uBLQmnVQBP-mZL3in0s,1200
|
|
124
132
|
phoenix/server/api/dataloaders/num_spans_per_trace.py,sha256=nNAxj6QYcTc8oykfJZxH0vtS9tE83oXoArVwQTJHzTw,922
|
|
125
133
|
phoenix/server/api/dataloaders/project_by_name.py,sha256=O24Rjs0ZQaYtSnPfA6YBQfbHfUgNsHKUcc_gIKyK9vo,1086
|
|
134
|
+
phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py,sha256=KWaFZGI4wJaUftLoUJ4ufJYNx1UAWrFfVfloVGOX1XE,1606
|
|
126
135
|
phoenix/server/api/dataloaders/prompt_version_sequence_number.py,sha256=tBaCbpI9KgjCACvpd-5hZy5TDSHH7PJPn4bd1xJuN-g,1314
|
|
127
136
|
phoenix/server/api/dataloaders/record_counts.py,sha256=NLlMEaJ-HxiJavqbSkMbzOrIRzqzYxO8-t2mfp1vXqM,4160
|
|
128
137
|
phoenix/server/api/dataloaders/session_io.py,sha256=1c2b-87KGHuF2sgeQvXmIv1-kFHEt6CfAvuH11jKfh4,3168
|
|
@@ -138,19 +147,21 @@ phoenix/server/api/dataloaders/span_projects.py,sha256=JTfuKn2BBn72QdAP53ZGP2OUC
|
|
|
138
147
|
phoenix/server/api/dataloaders/table_fields.py,sha256=C3ywv87XphMEvqsQGl33H4iOiXbvqWqvaM4Snps4Sv0,3068
|
|
139
148
|
phoenix/server/api/dataloaders/token_counts.py,sha256=Sr_sBfLgsKYCIjgzTFV-fuat7s7DATM2u6ZftLaOnoQ,4629
|
|
140
149
|
phoenix/server/api/dataloaders/trace_by_trace_ids.py,sha256=xqYJOjCgXlTzour4vY72kO-2gJFgWMjD3759o78cq44,874
|
|
150
|
+
phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py,sha256=WYaq1iR43ekBljZLldZScjXrweY0D7S9FNzCeaYO9Y0,1213
|
|
141
151
|
phoenix/server/api/dataloaders/trace_root_spans.py,sha256=0Y2ImTPmDHpz_quRMIjuxED2M0dAm2M0StZUmSTiTiw,1000
|
|
142
152
|
phoenix/server/api/dataloaders/user_roles.py,sha256=TvPWve38TlGFvaFkMeFvnnHBn1OMHUJTErRLeYrXR8I,1029
|
|
143
153
|
phoenix/server/api/dataloaders/users.py,sha256=Uh86Kny_xpqDdEvEklcTBUA_MELgu4Z0jgh45ZqTzXs,1075
|
|
144
154
|
phoenix/server/api/dataloaders/cache/__init__.py,sha256=SYoOM9n8FJaMdQarma5d1blu-jIg2GB8Shqg5ezSzZ8,106
|
|
145
155
|
phoenix/server/api/dataloaders/cache/two_tier_cache.py,sha256=cmo8FUT3E91R139IEzh4yCga-6nTamc5KPXAfMrzNDM,2315
|
|
146
156
|
phoenix/server/api/helpers/__init__.py,sha256=m2-xaSPqUiSs91k62JaRDjFNfl-1byxBfY-m_Vxw16U,272
|
|
157
|
+
phoenix/server/api/helpers/annotations.py,sha256=9gMXKpMTfWEChoSCnvdWYuyB0hlSnNOp-qUdar9Vono,262
|
|
147
158
|
phoenix/server/api/helpers/dataset_helpers.py,sha256=DoMBTg-qXTnC_K4Evx1WKpCCYgRbITpVqyY-8efJRf0,8984
|
|
148
159
|
phoenix/server/api/helpers/experiment_run_filters.py,sha256=DOnVwrmn39eAkk2mwuZP8kIcAnR5jrOgllEwWSjsw94,29893
|
|
149
160
|
phoenix/server/api/helpers/playground_clients.py,sha256=tHwW-HbnoxU-EXXVvmY_1lbYh3Mv7QKw-e9KnREc7m4,41814
|
|
150
161
|
phoenix/server/api/helpers/playground_registry.py,sha256=CPLMziFB2wmr-dfbx7VbzO2f8YIG_k5RftzvGXYGQ1w,2570
|
|
151
162
|
phoenix/server/api/helpers/playground_spans.py,sha256=ObAhvV_yNwEQDkjzgU5G73wfIisc8q4cpB0OFH5cd24,16974
|
|
152
163
|
phoenix/server/api/helpers/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
153
|
-
phoenix/server/api/helpers/prompts/models.py,sha256=
|
|
164
|
+
phoenix/server/api/helpers/prompts/models.py,sha256=6AAYRqmuDMNrqelK9v-bh1qkfKLB3iHmISj7W6Awzqw,18585
|
|
154
165
|
phoenix/server/api/helpers/prompts/conversions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
166
|
phoenix/server/api/helpers/prompts/conversions/anthropic.py,sha256=ZT--UqBwoGf7QMusajB6aeB7zyWGttaZigb113kgiY8,3571
|
|
156
167
|
phoenix/server/api/helpers/prompts/conversions/openai.py,sha256=a43WAftFn_me6ePHDufqvlg-4Z2C31owUSsqYC0YUP8,2589
|
|
@@ -162,8 +173,8 @@ phoenix/server/api/input_types/ClearProjectInput.py,sha256=cpPFRyQ3ffy2dLbCZgYpw
|
|
|
162
173
|
phoenix/server/api/input_types/ClusterInput.py,sha256=AfhuYYHlYgdMO6Ap8cLXqAp70S0Wutx-RTzZYetN62A,173
|
|
163
174
|
phoenix/server/api/input_types/Coordinates.py,sha256=meTwbIjwTfqx5DGD2DBlH9wQzdQVNM5a8x9dp1FfIgA,173
|
|
164
175
|
phoenix/server/api/input_types/CreateDatasetInput.py,sha256=Q3MwouIx9jTQBRWDju75iMQXEGJCrL4aD4ESQp771nc,248
|
|
165
|
-
phoenix/server/api/input_types/CreateSpanAnnotationInput.py,sha256=
|
|
166
|
-
phoenix/server/api/input_types/CreateTraceAnnotationInput.py,sha256=
|
|
176
|
+
phoenix/server/api/input_types/CreateSpanAnnotationInput.py,sha256=BtPB8udqnpK7kQxPpryxoO4D4yoN1E4qYF2VZxqw2LQ,706
|
|
177
|
+
phoenix/server/api/input_types/CreateTraceAnnotationInput.py,sha256=GBzOwRw_GNQq3RwS5kDp32j55VI1czOmvEmRESqCsRQ,625
|
|
167
178
|
phoenix/server/api/input_types/DataQualityMetricInput.py,sha256=WPWRlqSejOnxlLqsbEwPCDgz8ocsyGSb-9SptdCjZEc,1361
|
|
168
179
|
phoenix/server/api/input_types/DatasetExampleInput.py,sha256=9oJ6pCFxFd02IWJuK4YAUvz-jCgFGDUCDDb2--GAzCw,289
|
|
169
180
|
phoenix/server/api/input_types/DatasetSort.py,sha256=KDKjx5L8WFNwx7O-g1pDzCMMwY-ErgDd1_HkkZBAvCY,333
|
|
@@ -177,31 +188,34 @@ phoenix/server/api/input_types/DimensionInput.py,sha256=Vfx5FmiMKey4-EHDQsQRPzSA
|
|
|
177
188
|
phoenix/server/api/input_types/GenerativeModelInput.py,sha256=n6OCkX44I1AIovMAHCxy8SvqPKDb_BYDPA-fn_JnckQ,634
|
|
178
189
|
phoenix/server/api/input_types/Granularity.py,sha256=dbBlD_GsIBa8_xrx4JlLuR59bQ0NRB5H-cv1zvcb-cw,2299
|
|
179
190
|
phoenix/server/api/input_types/InvocationParameters.py,sha256=62xL0iIKvuQherkuJaJ6Lha4TTEoYLpvH-pEP9awK6k,5260
|
|
180
|
-
phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=
|
|
191
|
+
phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=2wxC-ibQU59I28amTxLMYMo9SSvJwAIor0w0YvS0e48,676
|
|
181
192
|
phoenix/server/api/input_types/PatchDatasetExamplesInput.py,sha256=_uMqkAInhLDvzUSASl6HgLNulTsekMcYzyd5J6LF90I,884
|
|
182
193
|
phoenix/server/api/input_types/PatchDatasetInput.py,sha256=OURtTVY8Z_oFEDtKwT1LCMaOK5D4QYo5TVQ6mDrex-g,328
|
|
183
194
|
phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=4SG5AymxV2dMeCrK7eREThdt9SuC43irMYZtY-Oq-bg,658
|
|
184
195
|
phoenix/server/api/input_types/ProjectSessionSort.py,sha256=qFgLmKYeyFpx7An9ZNdDNkkt7tghrG6XXruQbFLiFt8,919
|
|
185
196
|
phoenix/server/api/input_types/PromptTemplateOptions.py,sha256=8ZJdH1F9fExcdH9dF8SJ29WycCvtEpK-Z6dZwFO7KgQ,232
|
|
186
197
|
phoenix/server/api/input_types/PromptVersionInput.py,sha256=n6zBeSkK8ZFRHTjtVx4BK--azZIxXeYETa6Cufcet2I,3743
|
|
198
|
+
phoenix/server/api/input_types/SpanAnnotationFilter.py,sha256=-djfIXYCxV6sV3GPOZQUV0SPfiWDhRlTORfeQ7tCBgQ,2671
|
|
187
199
|
phoenix/server/api/input_types/SpanAnnotationSort.py,sha256=T5pAGzmh4MiJp9JMAzNDByFVTczfw02FH4WFWwFezyI,361
|
|
188
200
|
phoenix/server/api/input_types/SpanSort.py,sha256=oqvcWHYgp_nXvXYNi5l8Bhe7PHT3LbAhUn6ZXDSzdXo,5959
|
|
189
201
|
phoenix/server/api/input_types/TimeRange.py,sha256=pwhC2jx6dFIgT0qFfnO68qiJp9-m7Je5QkNscNsuVxA,700
|
|
190
202
|
phoenix/server/api/input_types/TraceAnnotationSort.py,sha256=BzwiUnMh2VsgQYnhDlbJ6ljHugqIS4YDUlYzvq_tl3o,365
|
|
191
203
|
phoenix/server/api/input_types/UserRoleInput.py,sha256=xxhFe0ITZOgRVEJbVem_W6F1Ip_H6xDENdQqMMx-kKE,129
|
|
192
204
|
phoenix/server/api/input_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
193
|
-
phoenix/server/api/mutations/__init__.py,sha256=
|
|
205
|
+
phoenix/server/api/mutations/__init__.py,sha256=fGFokUtX4J1q9yYzRtPOwRyfJNyL_8z60gaWX9IPvtM,1872
|
|
206
|
+
phoenix/server/api/mutations/annotation_config_mutations.py,sha256=i7NsQhYICcQ-I-tnFjGtVAYc8WVmMBacmRaqHWJ25t4,15433
|
|
194
207
|
phoenix/server/api/mutations/api_key_mutations.py,sha256=diNBL06zrFCmzR-leYbL-AxDqN05-YtbzsnsAdew_K8,6194
|
|
195
208
|
phoenix/server/api/mutations/chat_mutations.py,sha256=ChRh4YbNkBgFO05CNElzqJ1hIvo7lr5Zn0lvlRs51pE,22997
|
|
196
|
-
phoenix/server/api/mutations/dataset_mutations.py,sha256=
|
|
209
|
+
phoenix/server/api/mutations/dataset_mutations.py,sha256=KRlF-Ag3twqaBpLR_6WYxf57DffaGuFBm-soaBPStbI,27787
|
|
197
210
|
phoenix/server/api/mutations/experiment_mutations.py,sha256=p3CoLAa8nFPa3D759Y2A7De_PVJNGOL98mA3HoZBrRQ,3188
|
|
198
211
|
phoenix/server/api/mutations/export_events_mutations.py,sha256=xoDnVWC7eA_8wNQP0-oyiHojyUZ0EhVVSrsAnztetC0,3993
|
|
199
212
|
phoenix/server/api/mutations/project_mutations.py,sha256=u7kLvJbBFR418F9lMamiisZerF18E8h5wGKV4sDTF-g,2674
|
|
213
|
+
phoenix/server/api/mutations/project_trace_retention_policy_mutations.py,sha256=AqBe8TBxlXdIL56Afs4FIBqkI0bEgf-v9bHlbc-O6VI,9839
|
|
200
214
|
phoenix/server/api/mutations/prompt_label_mutations.py,sha256=uCiVcULtmgaNaav4M08ipPYM68sZv1MVLrCgvW-Xyn8,7317
|
|
201
215
|
phoenix/server/api/mutations/prompt_mutations.py,sha256=Yg-6L2PiKUZfFyNarptu3OdE0uA2_Nyl3VrLVP8FJ9Y,12114
|
|
202
216
|
phoenix/server/api/mutations/prompt_version_tag_mutations.py,sha256=t77osYb5he2Am4UeNis7pzY9MnaA9PNEQhsQelRH8k8,5767
|
|
203
|
-
phoenix/server/api/mutations/span_annotations_mutations.py,sha256=
|
|
204
|
-
phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=
|
|
217
|
+
phoenix/server/api/mutations/span_annotations_mutations.py,sha256=LQPcODp7-ZobXspjmtLaamyQa8UkTONC_va-ST9r-k8,15015
|
|
218
|
+
phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=PLNNzSlk3fyJHkAVaMGR8pbWB63nOos-cStUWbTi7f8,11995
|
|
205
219
|
phoenix/server/api/mutations/trace_mutations.py,sha256=D5h2HYdlTo6yYZNq-O-PjaS9GeiZHxxVaOxDdh7fwjw,2957
|
|
206
220
|
phoenix/server/api/mutations/user_mutations.py,sha256=7CSTuUENIfKkdFhwLguqPG28h3zO5KrhMhfQqSCjNIg,14164
|
|
207
221
|
phoenix/server/api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -212,27 +226,32 @@ phoenix/server/api/routers/auth.py,sha256=T774FE5mqrfRSSYo1snpR5NIp3YzAJnsLsY9FJ
|
|
|
212
226
|
phoenix/server/api/routers/embeddings.py,sha256=BpZGJee0pdL0W5Rp1L0b30dEtZTgJeVqXky8LgZ0ZXw,898
|
|
213
227
|
phoenix/server/api/routers/oauth2.py,sha256=qXSUmnHPoRS8extKB8qUD8zbnUerAHeoEyEiVPiCyek,17285
|
|
214
228
|
phoenix/server/api/routers/utils.py,sha256=M41BoH-fl37izhRuN2aX7lWm7jOC20A_3uClv9TVUUY,583
|
|
215
|
-
phoenix/server/api/routers/v1/__init__.py,sha256=
|
|
229
|
+
phoenix/server/api/routers/v1/__init__.py,sha256=0oOcsKJkQtBXAjZAo3AMtfjyW3OGCU4MI4TGW5nV6lo,2614
|
|
230
|
+
phoenix/server/api/routers/v1/annotation_configs.py,sha256=rZ3yJm7m75BVegSjSHqsdqf7n26roGg7vYYiiKfWA3A,15898
|
|
231
|
+
phoenix/server/api/routers/v1/annotations.py,sha256=oeafR2tCLu-uIwM9J72gN3MX5WDhrOMU3Jqd1uIiFqg,5921
|
|
216
232
|
phoenix/server/api/routers/v1/datasets.py,sha256=gHlF4x0EmWiJ-8vwJygoh0bO3gvDBmi6vYnLAbSkQw4,37057
|
|
217
|
-
phoenix/server/api/routers/v1/evaluations.py,sha256=
|
|
233
|
+
phoenix/server/api/routers/v1/evaluations.py,sha256=GFTo42aIEX0Htn0EjjoE1JZDYlvryeZ_CK9kowhwzGw,12830
|
|
218
234
|
phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=vx4CKlE84sAL1vtPiM_XWnbfrATQujOSzzduJDYgcyM,4829
|
|
219
235
|
phoenix/server/api/routers/v1/experiment_runs.py,sha256=bInuasRv7ogiYf8fq-LwpJ5tptmMQsBNDlJAqwdymko,6378
|
|
220
236
|
phoenix/server/api/routers/v1/experiments.py,sha256=V9_sxqLTE1MKGFu9H3FEdGKr70lYMbGZx813MGaavfQ,20430
|
|
221
237
|
phoenix/server/api/routers/v1/models.py,sha256=r0nM2kFJ3mxDqgc5vFr1cjNuyOPs3RIKE_DS2VMdF48,1749
|
|
222
|
-
phoenix/server/api/routers/v1/projects.py,sha256=
|
|
238
|
+
phoenix/server/api/routers/v1/projects.py,sha256=RVOAWW8RQIqaebQFcIbk1OGxO7B1BITtUewlcSUhasg,12615
|
|
223
239
|
phoenix/server/api/routers/v1/prompts.py,sha256=aBOUBwLDzZDIzJQkxJcR8ZKnakNJOLMwzsLKINSs1mA,26545
|
|
224
|
-
phoenix/server/api/routers/v1/spans.py,sha256=
|
|
225
|
-
phoenix/server/api/routers/v1/traces.py,sha256=
|
|
226
|
-
phoenix/server/api/routers/v1/utils.py,sha256=
|
|
227
|
-
phoenix/server/api/types/Annotation.py,sha256=
|
|
228
|
-
phoenix/server/api/types/
|
|
229
|
-
phoenix/server/api/types/
|
|
240
|
+
phoenix/server/api/routers/v1/spans.py,sha256=RsmHZ-KusCUleCObNLzlHgOtbTqR50PU82sr8mspecc,10811
|
|
241
|
+
phoenix/server/api/routers/v1/traces.py,sha256=DfzeszQvtlrVxvurJLaWJJAhkCZ4BodLwpFuBYPwN5Q,8206
|
|
242
|
+
phoenix/server/api/routers/v1/utils.py,sha256=oXIOGPzPTkE0ZWUTRCoRIQQ7wTzoSwtWFaUSjlGBqts,4960
|
|
243
|
+
phoenix/server/api/types/Annotation.py,sha256=gsl8CwjIbDUbZRj4d9USwZ_w_Tkz4i7zuZh9ftV80jA,1132
|
|
244
|
+
phoenix/server/api/types/AnnotationConfig.py,sha256=TPukZUgvFC17W93Vnme21EhswasBMR-ZiuSWteiWZOU,3891
|
|
245
|
+
phoenix/server/api/types/AnnotationSource.py,sha256=nwWL8HdnMNE8LKvAbeZix-dzfBNymACyBt9f6nzk0PM,122
|
|
246
|
+
phoenix/server/api/types/AnnotationSummary.py,sha256=mXp2bdlcId_i8swVuv7I72mMvFv0ZOTTgI03CT5X8gQ,2080
|
|
247
|
+
phoenix/server/api/types/AnnotatorKind.py,sha256=6L_1iuxYYwmEMdKNlET1bPKhJ-INfCsY_VHDwCLi63E,254
|
|
230
248
|
phoenix/server/api/types/ApiKey.py,sha256=76HIkWxyJqL3UjdMesX9l5y6XaD9QphwabXGQVY-MaQ,793
|
|
231
249
|
phoenix/server/api/types/AuthMethod.py,sha256=M25usT6FCNKi-QFMdtMqRjJVGfq1ACnVoSjHXGxfrUk,126
|
|
232
250
|
phoenix/server/api/types/ChatCompletionMessageRole.py,sha256=kmQOilOlVntlmqbaHkqXZuimfljfYaHc3kbo53uK8_0,227
|
|
233
251
|
phoenix/server/api/types/ChatCompletionSubscriptionPayload.py,sha256=G0YsirJzDMFDqEK7I_FCkPmIugAof-8D9fNfFlHdhjY,1031
|
|
234
252
|
phoenix/server/api/types/Cluster.py,sha256=duX0pSC7P3YT1IztduuJtPsRj1x6oOOLfmWf2Y-FdEk,5699
|
|
235
253
|
phoenix/server/api/types/CreateDatasetPayload.py,sha256=R-6zCmuD0f76RU9Giu78xwTHlASQs6Aq8yzvX1Kxc3g,140
|
|
254
|
+
phoenix/server/api/types/CronExpression.py,sha256=R7oxuSSX_eTUHQWaoaSueQqWDmkkHr5dBKRN6q-6ROk,331
|
|
236
255
|
phoenix/server/api/types/DataQualityMetric.py,sha256=Aieg3bHeBFaAf4mqeRcH1zT04sXAtQD8ATSHJt7FaBQ,1538
|
|
237
256
|
phoenix/server/api/types/Dataset.py,sha256=1NACY8_s-TZGgTwv6pkFlYPJDy14EVcQlrjgNd7dQ_U,11732
|
|
238
257
|
phoenix/server/api/types/DatasetExample.py,sha256=_9byxGpXfYb-hmFMUJeG7Bw1wsRKSJaHwF2IPAbFpFw,3115
|
|
@@ -248,7 +267,7 @@ phoenix/server/api/types/DocumentEvaluationSummary.py,sha256=dx4Btlfw9_XsfmibjfW
|
|
|
248
267
|
phoenix/server/api/types/DocumentRetrievalMetrics.py,sha256=amkpC3H5IU5-9GvO0telpbq00m6lIcv_2v446OpwFwc,1822
|
|
249
268
|
phoenix/server/api/types/EmbeddingDimension.py,sha256=AYvpZ1nWINAgN4BAZsA_xI_2TNFK6h5jmqzvkPs651M,19428
|
|
250
269
|
phoenix/server/api/types/EmbeddingMetadata.py,sha256=fJvNNYCbkf3SJalArLy9rcBq9Uj1SNac60zjqe1PFnM,461
|
|
251
|
-
phoenix/server/api/types/Evaluation.py,sha256=
|
|
270
|
+
phoenix/server/api/types/Evaluation.py,sha256=jPUH4fUFTpQHmiHA4zS4o3zigYp2LNX7VhlT580HJ_I,1301
|
|
252
271
|
phoenix/server/api/types/EvaluationSummary.py,sha256=vILYejnfPvMwWEXOwhQZsANvYe3AdO2OkMR2rcgp1H4,1512
|
|
253
272
|
phoenix/server/api/types/Event.py,sha256=iYt_Jx1Roioo0vZ0iPeJTHcTu6NSm4ilVMJ-IMUHAKk,3970
|
|
254
273
|
phoenix/server/api/types/EventMetadata.py,sha256=-J0tYF9eZTHwCjwxQHY7Gckr2_MNW5OoWT1mydweZNM,635
|
|
@@ -270,8 +289,9 @@ phoenix/server/api/types/MimeType.py,sha256=Zpi6zCalkSFgsvhzvOs-O1gYA04usAi9H__Q
|
|
|
270
289
|
phoenix/server/api/types/Model.py,sha256=8UIFqMe1q-2ufBNg-gxHusV8wM1h-KbfLUeJjyVcMvQ,8081
|
|
271
290
|
phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
|
|
272
291
|
phoenix/server/api/types/PerformanceMetric.py,sha256=KFkmJDqP43eDUtARQOUqR7NYcxvL6Vh2uisHWU6H3ko,387
|
|
273
|
-
phoenix/server/api/types/Project.py,sha256=
|
|
292
|
+
phoenix/server/api/types/Project.py,sha256=91yfPnu717qVQJJaJYBkJo6YXNbNql2HC4sWSXsfBFM,22638
|
|
274
293
|
phoenix/server/api/types/ProjectSession.py,sha256=fyfVtpUpFOTnBx8DFnH3dr7WXAssN0ooAgrQSSi7kEI,4677
|
|
294
|
+
phoenix/server/api/types/ProjectTraceRetentionPolicy.py,sha256=tYy2kgalPDyuaYZr0VUHjH0YpXaiF_QOzg5yfaV_c7c,3782
|
|
275
295
|
phoenix/server/api/types/Prompt.py,sha256=ccP4eq1e38xbF0afclGWLOuDpBVpNbJ3AOSRClF8yFQ,4955
|
|
276
296
|
phoenix/server/api/types/PromptLabel.py,sha256=g3IDSPYRZwb0qpMAk93R6J96jgYULUYGOciTnpeh3sI,1321
|
|
277
297
|
phoenix/server/api/types/PromptResponse.py,sha256=Q8HKtpp8GpUOcxPCzZpkkokidDd6u0aZOv_SuPZZd5Q,630
|
|
@@ -283,15 +303,15 @@ phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSF
|
|
|
283
303
|
phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
|
|
284
304
|
phoenix/server/api/types/Segments.py,sha256=vT2v0efoa5cuBKxLtxTnsUP5YJJCZfTloM71Spu0tMI,2915
|
|
285
305
|
phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
|
|
286
|
-
phoenix/server/api/types/Span.py,sha256=
|
|
287
|
-
phoenix/server/api/types/SpanAnnotation.py,sha256=
|
|
306
|
+
phoenix/server/api/types/Span.py,sha256=N61m2HKaF-F7t7myCfg5k2cbzM_4R86wZS4r881e-SY,28787
|
|
307
|
+
phoenix/server/api/types/SpanAnnotation.py,sha256=uPWu7Z8rmpfKhaaxbged4_o00pPCR3nkn7Gji9vB8jY,1959
|
|
288
308
|
phoenix/server/api/types/SpanIOValue.py,sha256=c5TWdZZN3v0gHI5xWeY7gjD-sE9ugWlGGAio-gDS-Uo,1653
|
|
289
309
|
phoenix/server/api/types/SystemApiKey.py,sha256=2ym8EgsTBIvxx1l9xZ-2YMovz58ZwYb_MaHBTJ9NH2E,166
|
|
290
310
|
phoenix/server/api/types/TimeSeries.py,sha256=nuuZtfHmOhTjeB8_SvZ5PUQexAkTcPScwYeFC5RUlRU,5491
|
|
291
311
|
phoenix/server/api/types/TokenUsage.py,sha256=g-PjAGVigpchQgkXAuC5sc53fn2YwAgfeXkGmFPi_TE,201
|
|
292
312
|
phoenix/server/api/types/ToolDefinition.py,sha256=T6UH2vcbuPBDy7jKYOqMth2NdqxMPgDBf11Tpbt5Yb8,187
|
|
293
|
-
phoenix/server/api/types/Trace.py,sha256=
|
|
294
|
-
phoenix/server/api/types/TraceAnnotation.py,sha256=
|
|
313
|
+
phoenix/server/api/types/Trace.py,sha256=fx1ozxiFMu-9AUyJ9LyMr6QtMqxzGEkucu7eE_dDZBM,8195
|
|
314
|
+
phoenix/server/api/types/TraceAnnotation.py,sha256=qUO9DhTIAOKIYqNd5uHqLAsVTsJLSddkXo-gmyjnPBI,1964
|
|
295
315
|
phoenix/server/api/types/UMAPPoints.py,sha256=49sWnxjcAJKRzqUY71Fa0tOPti5XjIIFT5cSg6oNu_U,1650
|
|
296
316
|
phoenix/server/api/types/User.py,sha256=iTVUrI8U6-asOhBt1bOZNtoRAaRNC4WHgR1Uv2rHnWQ,1975
|
|
297
317
|
phoenix/server/api/types/UserApiKey.py,sha256=EcsPNxV_PtgpqwA_bPTj_aRYt15l6X24YDy20hUPywU,1251
|
|
@@ -320,21 +340,21 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
|
|
|
320
340
|
phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
|
|
321
341
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
322
342
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
323
|
-
phoenix/server/static/.vite/manifest.json,sha256=
|
|
324
|
-
phoenix/server/static/assets/components-
|
|
325
|
-
phoenix/server/static/assets/index-
|
|
326
|
-
phoenix/server/static/assets/pages-
|
|
327
|
-
phoenix/server/static/assets/vendor-
|
|
343
|
+
phoenix/server/static/.vite/manifest.json,sha256=We1LFOj6nMnRbMzbxOE_1L06HVo7xXam1mg-DVoqPXA,2165
|
|
344
|
+
phoenix/server/static/assets/components-B2MWTXnm.js,sha256=2_C-61D2pzLsgB9f16vxJfTJDB5MXzarHcLYuWFGO_4,530209
|
|
345
|
+
phoenix/server/static/assets/index-Bfvpea_-.js,sha256=RPCq3x94S7VsuWdc0Lk7Y0wX323mvKYnPJnn_AC9kaI,60669
|
|
346
|
+
phoenix/server/static/assets/pages-CZ2vKu8H.js,sha256=m2dfQXuAII1BGgr4CayJOJKsZ6ds0iH-hgAIj6phaRo,1013141
|
|
347
|
+
phoenix/server/static/assets/vendor-BRDkBC5J.js,sha256=qRSj_aFoih8Zxp-Vya-CWYj-24wgjIYzQLloWW7oa8s,2661112
|
|
328
348
|
phoenix/server/static/assets/vendor-Cg6lcjUC.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
|
|
329
|
-
phoenix/server/static/assets/vendor-arizeai-
|
|
330
|
-
phoenix/server/static/assets/vendor-codemirror-
|
|
331
|
-
phoenix/server/static/assets/vendor-recharts-
|
|
332
|
-
phoenix/server/static/assets/vendor-shiki-
|
|
349
|
+
phoenix/server/static/assets/vendor-arizeai-BvTqp_W8.js,sha256=oGu_hHPbWuwvQRlH6ryyXtWRUXJfysRmbz9A1UPN9JU,193248
|
|
350
|
+
phoenix/server/static/assets/vendor-codemirror-COt9UfW7.js,sha256=UyZx84hDMEGKM9lU8O6tbzUtgwZTV7rh25Dvn00UGiQ,781264
|
|
351
|
+
phoenix/server/static/assets/vendor-recharts-BoHX9Hvs.js,sha256=D9n3-7nfMookUbweXQd9e2CO9upBbtmFdA8hzmI6oz0,282151
|
|
352
|
+
phoenix/server/static/assets/vendor-shiki-Cw1dsDAz.js,sha256=7tEVbYPDltuhQcLpdJ2QlMLfJuenNeHhiuB6zUjzGEI,8980312
|
|
333
353
|
phoenix/server/static/assets/vendor-three-C5WAXd5r.js,sha256=ELkg06u70N7h8oFmvqdoHyPuUf9VgGEWeT4LKFx4VWo,620975
|
|
334
354
|
phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
335
355
|
phoenix/server/templates/index.html,sha256=e8_jdi7Eo19SK7DI_gglkTW094D17E0VAegoMmmmvIc,4330
|
|
336
356
|
phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
337
|
-
phoenix/session/client.py,sha256=
|
|
357
|
+
phoenix/session/client.py,sha256=uw5WlCuFcN_eEj7Ko2bhJVcaihEIp7Evy50KnL6Sq-k,35602
|
|
338
358
|
phoenix/session/data_extractor.py,sha256=Y0RzYFaNy9fQj8PEIeQ76TBZ90_E1FW7bXu3K5x0EZY,2782
|
|
339
359
|
phoenix/session/evaluation.py,sha256=Q3fOMNELvqkk-b6a6PKc8pDJdsNQ0ZbTpseUSA2NKqs,5300
|
|
340
360
|
phoenix/session/session.py,sha256=twE8tld8knShmTpZp6R80CUt2jau3RmfdfZAQCLSTKU,27621
|
|
@@ -354,13 +374,13 @@ phoenix/trace/trace_dataset.py,sha256=jOlAD8_QqbI3hwqya72hrd3zo-pg7ok1I1a4psoHqb
|
|
|
354
374
|
phoenix/trace/utils.py,sha256=nlOmbF4n57s6qwZsMoeyEdfPHl6KE0fZM8V9aHaIR-I,1681
|
|
355
375
|
phoenix/trace/dsl/README.md,sha256=ihmP9zGUC5V-TDbzKla76LuyDqPDQIBUH2BORwxNI68,2902
|
|
356
376
|
phoenix/trace/dsl/__init__.py,sha256=WIQIjJg362XD3s50OsPJJ0xbDsGp41bSv7vDllLrPuA,144
|
|
357
|
-
phoenix/trace/dsl/filter.py,sha256=
|
|
377
|
+
phoenix/trace/dsl/filter.py,sha256=FYOzH1gkwlKBYepscZzwHeeXnJdTadC_m4v0cYRs00Y,31557
|
|
358
378
|
phoenix/trace/dsl/helpers.py,sha256=pJESAz7sDNE7HTVCFzxIx5sEsyUSh7RIN7yqmndAaF8,4171
|
|
359
|
-
phoenix/trace/dsl/query.py,sha256=
|
|
379
|
+
phoenix/trace/dsl/query.py,sha256=qi5k83Ch7mouSzd8w8dkMHVJ9C45tYXZLtb4lMwToZM,36350
|
|
360
380
|
phoenix/trace/v1/__init__.py,sha256=-IbAD0ruESMjvQLvGAg9CTfjBUATFDx1OXseDPis6-0,88
|
|
361
381
|
phoenix/trace/v1/evaluation_pb2.py,sha256=8sXvv2BW_vqD30MOMbmkeE2zpmm7ncik21kl3e-HzeQ,2254
|
|
362
382
|
phoenix/trace/v1/evaluation_pb2.pyi,sha256=cCbbx06gwQmaH14s3J1X25TtaARh-k1abbxQdQCXGm8,4500
|
|
363
|
-
phoenix/utilities/__init__.py,sha256=
|
|
383
|
+
phoenix/utilities/__init__.py,sha256=PCtaszUCo9GZvXewPd09gmXxTJB4WRmfAsEeDwRHV4E,461
|
|
364
384
|
phoenix/utilities/client.py,sha256=sUiy8FsxzIf6Hmd1rpD6infmijOdM9r24zJokA5RjZM,5595
|
|
365
385
|
phoenix/utilities/deprecation.py,sha256=LL1LWfVqnYulceMQw2CggoIv8Uogrj7fAD_85devnoo,1067
|
|
366
386
|
phoenix/utilities/error_handling.py,sha256=5_ggfwmd0xZPoI3qi1fwm0x1F0i7g5j-gr0ny1TFzPU,1967
|
|
@@ -370,9 +390,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
|
|
|
370
390
|
phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
|
|
371
391
|
phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
372
392
|
phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
|
|
373
|
-
arize_phoenix-
|
|
374
|
-
arize_phoenix-
|
|
375
|
-
arize_phoenix-
|
|
376
|
-
arize_phoenix-
|
|
377
|
-
arize_phoenix-
|
|
378
|
-
arize_phoenix-
|
|
393
|
+
arize_phoenix-9.0.0.dist-info/METADATA,sha256=Xu20K4JjcUX625FlF2GkjBkCE8GglKvWw0XR9BMy2R4,25038
|
|
394
|
+
arize_phoenix-9.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
395
|
+
arize_phoenix-9.0.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
|
|
396
|
+
arize_phoenix-9.0.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
397
|
+
arize_phoenix-9.0.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
398
|
+
arize_phoenix-9.0.0.dist-info/RECORD,,
|
phoenix/db/constants.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID = 0
|
phoenix/db/facilitator.py
CHANGED
|
@@ -9,6 +9,7 @@ from typing import Optional
|
|
|
9
9
|
|
|
10
10
|
from sqlalchemy import (
|
|
11
11
|
distinct,
|
|
12
|
+
exists,
|
|
12
13
|
insert,
|
|
13
14
|
select,
|
|
14
15
|
)
|
|
@@ -27,7 +28,13 @@ from phoenix.config import (
|
|
|
27
28
|
get_env_default_admin_initial_password,
|
|
28
29
|
)
|
|
29
30
|
from phoenix.db import models
|
|
31
|
+
from phoenix.db.constants import DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
30
32
|
from phoenix.db.enums import COLUMN_ENUMS, UserRole
|
|
33
|
+
from phoenix.db.types.trace_retention import (
|
|
34
|
+
MaxDaysRule,
|
|
35
|
+
TraceRetentionCronExpression,
|
|
36
|
+
TraceRetentionRule,
|
|
37
|
+
)
|
|
31
38
|
from phoenix.server.email.types import WelcomeEmailSender
|
|
32
39
|
from phoenix.server.types import DbSessionFactory
|
|
33
40
|
|
|
@@ -57,6 +64,7 @@ class Facilitator:
|
|
|
57
64
|
_ensure_user_roles,
|
|
58
65
|
_get_system_user_id,
|
|
59
66
|
partial(_ensure_admins, email_sender=self._email_sender),
|
|
67
|
+
_ensure_default_project_trace_retention_policy,
|
|
60
68
|
):
|
|
61
69
|
await fn(self._db)
|
|
62
70
|
|
|
@@ -205,3 +213,50 @@ async def _ensure_admins(
|
|
|
205
213
|
):
|
|
206
214
|
if isinstance(exc, Exception):
|
|
207
215
|
logger.error(f"Failed to send welcome email: {exc}")
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
async def _ensure_default_project_trace_retention_policy(db: DbSessionFactory) -> None:
|
|
219
|
+
"""
|
|
220
|
+
Ensures the default trace retention policy (id=1) exists in the database. Default policy
|
|
221
|
+
applies to all projects without a specific policy (i.e. foreign key is null).
|
|
222
|
+
|
|
223
|
+
This function checks for the presence of the default trace retention policy and
|
|
224
|
+
creates it if missing. The default trace retention policy:
|
|
225
|
+
|
|
226
|
+
- Has ID=0
|
|
227
|
+
- Is named "Default"
|
|
228
|
+
- Runs every Sunday at midnight UTC (cron: "0 0 * * 0")
|
|
229
|
+
- Retains traces indefinitely
|
|
230
|
+
|
|
231
|
+
If the default policy already exists, this function makes no changes.
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
db (DbSessionFactory): An async SQLAlchemy session factory.
|
|
235
|
+
|
|
236
|
+
Returns:
|
|
237
|
+
None
|
|
238
|
+
"""
|
|
239
|
+
assert DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID == 0
|
|
240
|
+
async with db() as session:
|
|
241
|
+
if await session.scalar(
|
|
242
|
+
select(
|
|
243
|
+
exists().where(
|
|
244
|
+
models.ProjectTraceRetentionPolicy.id
|
|
245
|
+
== DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
246
|
+
)
|
|
247
|
+
)
|
|
248
|
+
):
|
|
249
|
+
return
|
|
250
|
+
cron_expression = TraceRetentionCronExpression(root="0 0 * * 0")
|
|
251
|
+
rule = TraceRetentionRule(root=MaxDaysRule(max_days=0))
|
|
252
|
+
await session.execute(
|
|
253
|
+
insert(models.ProjectTraceRetentionPolicy),
|
|
254
|
+
[
|
|
255
|
+
{
|
|
256
|
+
"id": DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID,
|
|
257
|
+
"name": "Default",
|
|
258
|
+
"cron_expression": cron_expression,
|
|
259
|
+
"rule": rule,
|
|
260
|
+
}
|
|
261
|
+
],
|
|
262
|
+
)
|
|
@@ -24,9 +24,17 @@ _SpanRowId: TypeAlias = int
|
|
|
24
24
|
_DocumentPosition: TypeAlias = int
|
|
25
25
|
_AnnoRowId: TypeAlias = int
|
|
26
26
|
_NumDocs: TypeAlias = int
|
|
27
|
+
_Identifier: TypeAlias = str
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
|
|
30
|
+
class _Key(NamedTuple):
|
|
31
|
+
annotation_name: _Name
|
|
32
|
+
annotation_identifier: _Identifier
|
|
33
|
+
span_id: _SpanId
|
|
34
|
+
document_position: _DocumentPosition
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
_UniqueBy: TypeAlias = tuple[_Name, _SpanRowId, _DocumentPosition, _Identifier]
|
|
30
38
|
_Existing: TypeAlias = tuple[
|
|
31
39
|
_SpanRowId,
|
|
32
40
|
_SpanId,
|
|
@@ -34,6 +42,7 @@ _Existing: TypeAlias = tuple[
|
|
|
34
42
|
Optional[_AnnoRowId],
|
|
35
43
|
Optional[_Name],
|
|
36
44
|
Optional[_DocumentPosition],
|
|
45
|
+
Optional[_Identifier],
|
|
37
46
|
Optional[datetime],
|
|
38
47
|
]
|
|
39
48
|
|
|
@@ -46,7 +55,8 @@ class DocumentAnnotationQueueInserter(
|
|
|
46
55
|
DocumentAnnotationDmlEvent,
|
|
47
56
|
],
|
|
48
57
|
table=models.DocumentAnnotation,
|
|
49
|
-
unique_by=("name", "span_rowid", "document_position"),
|
|
58
|
+
unique_by=("name", "span_rowid", "document_position", "identifier"),
|
|
59
|
+
constraint_name="uq_document_annotations_name_span_rowid_document_pos_identifier",
|
|
50
60
|
):
|
|
51
61
|
async def _events(
|
|
52
62
|
self,
|
|
@@ -77,12 +87,14 @@ class DocumentAnnotationQueueInserter(
|
|
|
77
87
|
e.span_id: _SpanAttr(e.span_rowid, e.num_docs) for e in existing
|
|
78
88
|
}
|
|
79
89
|
existing_annos: Mapping[_Key, _AnnoAttr] = {
|
|
80
|
-
(
|
|
90
|
+
_Key(
|
|
91
|
+
annotation_name=e.name,
|
|
92
|
+
annotation_identifier=e.identifier,
|
|
93
|
+
span_id=e.span_id,
|
|
94
|
+
document_position=e.document_position,
|
|
95
|
+
): _AnnoAttr(e.span_rowid, e.id, e.updated_at)
|
|
81
96
|
for e in existing
|
|
82
|
-
if e.id is not None
|
|
83
|
-
and e.name is not None
|
|
84
|
-
and e.document_position is not None
|
|
85
|
-
and e.updated_at is not None
|
|
97
|
+
if e.id is not None and e.name is not None and e.updated_at is not None
|
|
86
98
|
}
|
|
87
99
|
|
|
88
100
|
for p in parcels:
|
|
@@ -129,13 +141,13 @@ class DocumentAnnotationQueueInserter(
|
|
|
129
141
|
anno = self.table
|
|
130
142
|
span = (
|
|
131
143
|
select(models.Span.id, models.Span.span_id, num_docs_col(self._db.dialect))
|
|
132
|
-
.where(models.Span.span_id.in_({span_id for
|
|
144
|
+
.where(models.Span.span_id.in_({k.span_id for k in keys}))
|
|
133
145
|
.cte()
|
|
134
146
|
)
|
|
135
147
|
onclause = and_(
|
|
136
148
|
span.c.id == anno.span_rowid,
|
|
137
|
-
anno.name.in_({
|
|
138
|
-
tuple_(anno.name, span.c.span_id, anno.document_position).in_(keys),
|
|
149
|
+
anno.name.in_({k.annotation_name for k in keys}),
|
|
150
|
+
tuple_(anno.name, anno.identifier, span.c.span_id, anno.document_position).in_(keys),
|
|
139
151
|
)
|
|
140
152
|
return select(
|
|
141
153
|
span.c.id.label("span_rowid"),
|
|
@@ -144,6 +156,7 @@ class DocumentAnnotationQueueInserter(
|
|
|
144
156
|
anno.id,
|
|
145
157
|
anno.name,
|
|
146
158
|
anno.document_position,
|
|
159
|
+
anno.identifier,
|
|
147
160
|
anno.updated_at,
|
|
148
161
|
).outerjoin_from(span, anno, onclause)
|
|
149
162
|
|
|
@@ -160,11 +173,16 @@ class _AnnoAttr(NamedTuple):
|
|
|
160
173
|
|
|
161
174
|
|
|
162
175
|
def _key(p: Received[Precursors.DocumentAnnotation]) -> _Key:
|
|
163
|
-
return
|
|
176
|
+
return _Key(
|
|
177
|
+
annotation_name=p.item.obj.name,
|
|
178
|
+
annotation_identifier=p.item.obj.identifier,
|
|
179
|
+
span_id=p.item.span_id,
|
|
180
|
+
document_position=p.item.document_position,
|
|
181
|
+
)
|
|
164
182
|
|
|
165
183
|
|
|
166
184
|
def _unique_by(p: Received[Insertables.DocumentAnnotation]) -> _UniqueBy:
|
|
167
|
-
return p.item.obj.name, p.item.span_rowid, p.item.document_position
|
|
185
|
+
return p.item.obj.name, p.item.span_rowid, p.item.document_position, p.item.identifier
|
|
168
186
|
|
|
169
187
|
|
|
170
188
|
def _time(p: Received[Any]) -> datetime:
|
|
@@ -86,13 +86,15 @@ async def _insert_trace_evaluation(
|
|
|
86
86
|
explanation=explanation,
|
|
87
87
|
metadata_={}, # `metadata_` must match ORM
|
|
88
88
|
annotator_kind="LLM",
|
|
89
|
+
identifier="",
|
|
90
|
+
source="API",
|
|
89
91
|
)
|
|
90
92
|
await session.execute(
|
|
91
93
|
insert_on_conflict(
|
|
92
94
|
values,
|
|
93
95
|
dialect=dialect,
|
|
94
96
|
table=models.TraceAnnotation,
|
|
95
|
-
unique_by=("name", "trace_rowid"),
|
|
97
|
+
unique_by=("name", "trace_rowid", "identifier"),
|
|
96
98
|
)
|
|
97
99
|
)
|
|
98
100
|
return TraceEvaluationInsertionEvent(project_rowid, evaluation_name)
|
|
@@ -128,13 +130,15 @@ async def _insert_span_evaluation(
|
|
|
128
130
|
explanation=explanation,
|
|
129
131
|
metadata_={}, # `metadata_` must match ORM
|
|
130
132
|
annotator_kind="LLM",
|
|
133
|
+
identifier="",
|
|
134
|
+
source="API",
|
|
131
135
|
)
|
|
132
136
|
await session.execute(
|
|
133
137
|
insert_on_conflict(
|
|
134
138
|
values,
|
|
135
139
|
dialect=dialect,
|
|
136
140
|
table=models.SpanAnnotation,
|
|
137
|
-
unique_by=("name", "span_rowid"),
|
|
141
|
+
unique_by=("name", "span_rowid", "identifier"),
|
|
138
142
|
)
|
|
139
143
|
)
|
|
140
144
|
return SpanEvaluationInsertionEvent(project_rowid, evaluation_name)
|
|
@@ -179,13 +183,21 @@ async def _insert_document_evaluation(
|
|
|
179
183
|
explanation=explanation,
|
|
180
184
|
metadata_={}, # `metadata_` must match ORM
|
|
181
185
|
annotator_kind="LLM",
|
|
186
|
+
identifier="",
|
|
187
|
+
source="API",
|
|
182
188
|
)
|
|
183
189
|
await session.execute(
|
|
184
190
|
insert_on_conflict(
|
|
185
191
|
values,
|
|
186
192
|
dialect=dialect,
|
|
187
193
|
table=models.DocumentAnnotation,
|
|
188
|
-
unique_by=(
|
|
194
|
+
unique_by=(
|
|
195
|
+
"name",
|
|
196
|
+
"span_rowid",
|
|
197
|
+
"document_position",
|
|
198
|
+
"identifier",
|
|
199
|
+
),
|
|
200
|
+
constraint_name="uq_document_annotations_name_span_rowid_document_pos_identifier", # The name of the unique constraint is specified manually since the auto-generated name is longer than the Postgres limit of 63 characters # noqa: E501
|
|
189
201
|
)
|
|
190
202
|
)
|
|
191
203
|
return DocumentEvaluationInsertionEvent(project_rowid, evaluation_name)
|