arize-phoenix 11.10.1__py3-none-any.whl → 11.12.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-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/METADATA +1 -1
- {arize_phoenix-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/RECORD +24 -22
- phoenix/server/api/input_types/PromptFilter.py +14 -0
- phoenix/server/api/mutations/user_mutations.py +2 -2
- phoenix/server/api/queries.py +24 -3
- phoenix/server/api/types/GenerativeModel.py +48 -3
- phoenix/server/api/types/Project.py +125 -0
- phoenix/server/api/types/ServerStatus.py +6 -0
- phoenix/server/app.py +13 -0
- phoenix/server/static/.vite/manifest.json +36 -36
- phoenix/server/static/assets/{components-XAeml0-1.js → components-E49JuzFB.js} +499 -335
- phoenix/server/static/assets/{index-D7EtHUpz.js → index-CUhYDnlT.js} +26 -7
- phoenix/server/static/assets/{pages-CPfaxiKa.js → pages-C-8lZ5cv.js} +547 -483
- phoenix/server/static/assets/vendor-_6rG8OMg.js +936 -0
- phoenix/server/static/assets/{vendor-arizeai-4fVwwnrI.js → vendor-arizeai-BznCmJFh.js} +7 -7
- phoenix/server/static/assets/vendor-codemirror-29fWLPAy.js +27 -0
- phoenix/server/static/assets/{vendor-recharts-w6bSawXG.js → vendor-recharts-Cu431IpB.js} +1 -1
- phoenix/server/static/assets/{vendor-shiki-CplrhwOk.js → vendor-shiki-Ce9e01lU.js} +1 -1
- phoenix/server/templates/index.html +2 -1
- phoenix/version.py +1 -1
- phoenix/server/static/assets/vendor-DhvamIr8.js +0 -939
- phoenix/server/static/assets/vendor-codemirror-DRfFHb57.js +0 -33
- {arize_phoenix-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/entry_points.txt +0 -0
- {arize_phoenix-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-11.10.1.dist-info → arize_phoenix-11.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -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=2kHfT3BNOVd4dAO1bq-syEQbHSG8oX2-7NhOwK2QREk,896
|
|
9
|
-
phoenix/version.py,sha256=
|
|
9
|
+
phoenix/version.py,sha256=9XSgBthhuVWtqtaWiF-0OYf6yvKYdOgZnKxbf4chCEM,24
|
|
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
|
|
@@ -91,7 +91,7 @@ phoenix/pointcloud/pointcloud.py,sha256=SN_1wXZcwKrtSnHGZLDZGx71orqE1WyVF7E-D58d
|
|
|
91
91
|
phoenix/pointcloud/projectors.py,sha256=TQgwc9cJDjJkin1WZyZzgl3HsYrLLiyWD7Czy4jNW3U,1088
|
|
92
92
|
phoenix/pointcloud/umap_parameters.py,sha256=db_WEPoamuWtopZx7tQfAXPnoE0MS8FkAV0_ThjEx_Q,1735
|
|
93
93
|
phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
|
-
phoenix/server/app.py,sha256=
|
|
94
|
+
phoenix/server/app.py,sha256=Ja937LsaTx_u1EUR76BM_tpYSBpyWkv27tmBsDZlwKg,47708
|
|
95
95
|
phoenix/server/authorization.py,sha256=OxROn7ibpKtCTrcgDkzWuNxVaQcSQ8MAx7zbjZiliK0,3201
|
|
96
96
|
phoenix/server/bearer_auth.py,sha256=f4v4W94KyTdGGCPsK1tXOe0vouPuvanAEa03XSdCvPE,6650
|
|
97
97
|
phoenix/server/dml_event.py,sha256=8UciN7W8X_IqQfAnAeAh68BezNmfxSxuTeD6IUerTW8,2911
|
|
@@ -112,7 +112,7 @@ phoenix/server/api/auth.py,sha256=AyYhnZIbY9ALVjg2K6aC2UXSa3Pva5GVDBXyaZ3nD3o,27
|
|
|
112
112
|
phoenix/server/api/context.py,sha256=mqsq_8Ru50e-PxKWNTzh9zptb1PFjYFUf58uW59UYL0,8996
|
|
113
113
|
phoenix/server/api/exceptions.py,sha256=E2W0x63CBzc0CoQPptrLr9nZxPF9zIP8MCJ3RuJMddw,1322
|
|
114
114
|
phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
|
|
115
|
-
phoenix/server/api/queries.py,sha256
|
|
115
|
+
phoenix/server/api/queries.py,sha256=--ycVajCdDuN4Y-7bnD9py3BIXVWnZEwrpwDEW2Y8i4,46498
|
|
116
116
|
phoenix/server/api/schema.py,sha256=fcs36xQwFF_Qe41_5cWR8wYpDvOrnbcyTeo5WNMbDsA,1702
|
|
117
117
|
phoenix/server/api/subscriptions.py,sha256=ZOGNsLVr5TNjCWgbzO7Eq6Ls_NRdJH9AxC0cW_v0vhM,25332
|
|
118
118
|
phoenix/server/api/utils.py,sha256=quCBRcusc6PUq9tJq7M8PgwFZp7nXgVAxtbw8feribY,833
|
|
@@ -218,6 +218,7 @@ phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=4SG5AymxV2dMeCrK
|
|
|
218
218
|
phoenix/server/api/input_types/ProjectFilter.py,sha256=w3IimMXcNmMkrQ6h89-Yx6uh21r2wj1jci1nPZEDEhQ,260
|
|
219
219
|
phoenix/server/api/input_types/ProjectSessionSort.py,sha256=KZzEtOMpcxtP11brL4fXUAY_RLAK-Ul4luAWwVKnQgY,1043
|
|
220
220
|
phoenix/server/api/input_types/ProjectSort.py,sha256=ZTT-InFB6NvInDwLuivyHe9PxR5nsmQ8aXCHAPjZm9k,329
|
|
221
|
+
phoenix/server/api/input_types/PromptFilter.py,sha256=f2F7fDlYRsNJp_rKkmvpgUt9rfgr_e-dyZxuHX8YfkU,256
|
|
221
222
|
phoenix/server/api/input_types/PromptTemplateOptions.py,sha256=8ZJdH1F9fExcdH9dF8SJ29WycCvtEpK-Z6dZwFO7KgQ,232
|
|
222
223
|
phoenix/server/api/input_types/PromptVersionInput.py,sha256=n6zBeSkK8ZFRHTjtVx4BK--azZIxXeYETa6Cufcet2I,3743
|
|
223
224
|
phoenix/server/api/input_types/SpanAnnotationFilter.py,sha256=-djfIXYCxV6sV3GPOZQUV0SPfiWDhRlTORfeQ7tCBgQ,2671
|
|
@@ -244,7 +245,7 @@ phoenix/server/api/mutations/prompt_version_tag_mutations.py,sha256=t77osYb5he2A
|
|
|
244
245
|
phoenix/server/api/mutations/span_annotations_mutations.py,sha256=LQPcODp7-ZobXspjmtLaamyQa8UkTONC_va-ST9r-k8,15015
|
|
245
246
|
phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=PLNNzSlk3fyJHkAVaMGR8pbWB63nOos-cStUWbTi7f8,11995
|
|
246
247
|
phoenix/server/api/mutations/trace_mutations.py,sha256=AvtQAfqNWBQpJOZm4e0DZFimhVJ6HQHtSSZtezRadCo,4698
|
|
247
|
-
phoenix/server/api/mutations/user_mutations.py,sha256=
|
|
248
|
+
phoenix/server/api/mutations/user_mutations.py,sha256=9vFWfvfhb6RUdxL8xajV2-P2kVDtFRijRD58OFeBY4M,15373
|
|
248
249
|
phoenix/server/api/openapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
249
250
|
phoenix/server/api/openapi/main.py,sha256=yKdzJYI4cxy_1mFcK4_7YObIcuRviBIfwNjB23RG14k,461
|
|
250
251
|
phoenix/server/api/openapi/schema.py,sha256=WGmHWSIyJhtc5EIh_M3vlXU-EgHkFuTlyVofgS0kj1I,529
|
|
@@ -308,7 +309,7 @@ phoenix/server/api/types/ExperimentRun.py,sha256=_fcwDLuURV0yviOlkjWAgJJwcCPdz-x
|
|
|
308
309
|
phoenix/server/api/types/ExperimentRunAnnotation.py,sha256=YGw5zIbjRXUK3zH475DnEeg4SDNGOmdxtuUVkzGw1E8,1734
|
|
309
310
|
phoenix/server/api/types/ExportedFile.py,sha256=e3GTn7B5LgsTbqiwjhMCQH7VsiqXitrBO4aCMS1lHsg,163
|
|
310
311
|
phoenix/server/api/types/Functionality.py,sha256=zDDl2bANIqjwfooSOHg-VQk6-wQy05mREwjV_-VbSIg,262
|
|
311
|
-
phoenix/server/api/types/GenerativeModel.py,sha256=
|
|
312
|
+
phoenix/server/api/types/GenerativeModel.py,sha256=HHpM2aznlmOWeZY77NzTYOcB9iIvWnfbjNUxIOJtvIQ,7688
|
|
312
313
|
phoenix/server/api/types/GenerativeProvider.py,sha256=blXHIzZwe-xlu3-iF2dexvqnb4xxiD2XynS4Vw0iLx4,6750
|
|
313
314
|
phoenix/server/api/types/Identifier.py,sha256=n3rxpoKNCwEvZu7QY8yr7g3AW2mU-U62BxFXYaiHLKk,306
|
|
314
315
|
phoenix/server/api/types/InferenceModel.py,sha256=VWX7eKehFxXp4i_QW_dJAGzeOvh418VUt15AaT_Cv68,8090
|
|
@@ -320,7 +321,7 @@ phoenix/server/api/types/ModelInterface.py,sha256=Qe7H23wDb_Q2-HmeY2t0R5Jsn4aAfY
|
|
|
320
321
|
phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
|
|
321
322
|
phoenix/server/api/types/PerformanceMetric.py,sha256=KFkmJDqP43eDUtARQOUqR7NYcxvL6Vh2uisHWU6H3ko,387
|
|
322
323
|
phoenix/server/api/types/PlaygroundModel.py,sha256=IqJFxsAAJMRyaFI9ryI3GQrpFOJ5Llf6kIutEO-tFvM,321
|
|
323
|
-
phoenix/server/api/types/Project.py,sha256=
|
|
324
|
+
phoenix/server/api/types/Project.py,sha256=wL4jihXtyWjxAtSyRXBpz0DTH-vWZZBMhQFzBBFkl2A,69628
|
|
324
325
|
phoenix/server/api/types/ProjectSession.py,sha256=uwqTsDTfSGz13AvP-cwS_mJR5JZ1lHqu10ungbl7g5s,6245
|
|
325
326
|
phoenix/server/api/types/ProjectTraceRetentionPolicy.py,sha256=tYy2kgalPDyuaYZr0VUHjH0YpXaiF_QOzg5yfaV_c7c,3782
|
|
326
327
|
phoenix/server/api/types/Prompt.py,sha256=ccP4eq1e38xbF0afclGWLOuDpBVpNbJ3AOSRClF8yFQ,4955
|
|
@@ -333,6 +334,7 @@ phoenix/server/api/types/ResponseFormat.py,sha256=ymBsPWGViiaEo4vyw50ht1K6BveKcO
|
|
|
333
334
|
phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSFw-AO1rWw,285
|
|
334
335
|
phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
|
|
335
336
|
phoenix/server/api/types/Segments.py,sha256=vT2v0efoa5cuBKxLtxTnsUP5YJJCZfTloM71Spu0tMI,2915
|
|
337
|
+
phoenix/server/api/types/ServerStatus.py,sha256=t92OHuVhK9DXDk2vsBuHceQNKqYGpHwUp8DNGKz2wOk,88
|
|
336
338
|
phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
|
|
337
339
|
phoenix/server/api/types/Span.py,sha256=0o1lyceeZhEeBLBdd8gYo324nQ1P6eTPOi3aKdZZUd4,32015
|
|
338
340
|
phoenix/server/api/types/SpanAnnotation.py,sha256=uPWu7Z8rmpfKhaaxbged4_o00pPCR3nkn7Gji9vB8jY,1959
|
|
@@ -387,19 +389,19 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
|
|
|
387
389
|
phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
|
|
388
390
|
phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
|
|
389
391
|
phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
|
|
390
|
-
phoenix/server/static/.vite/manifest.json,sha256=
|
|
391
|
-
phoenix/server/static/assets/components-
|
|
392
|
-
phoenix/server/static/assets/index-
|
|
393
|
-
phoenix/server/static/assets/pages-
|
|
392
|
+
phoenix/server/static/.vite/manifest.json,sha256=WMXeF2598VFuXAiivZVlJZB_beO1q3aO7r9t9E4sKhI,2165
|
|
393
|
+
phoenix/server/static/assets/components-E49JuzFB.js,sha256=I-ZMZC6pdgJmcCrzqHhP5IAB_pzw59mmHxPMUK6s8WI,642431
|
|
394
|
+
phoenix/server/static/assets/index-CUhYDnlT.js,sha256=2qORSxTfiDWD8emwPdrdfbKdXEkiGcEgW-L0FaQa0xs,63113
|
|
395
|
+
phoenix/server/static/assets/pages-C-8lZ5cv.js,sha256=NmEmuEZcIp5sVvNNesn0WOE2g56V1lILPW0t3uIjMn0,1202834
|
|
394
396
|
phoenix/server/static/assets/vendor-CqDb5u4o.css,sha256=zIyFiNJKxMaQk8AvtLgt1rR01oO10d1MFndSDKH9Clw,5517
|
|
395
|
-
phoenix/server/static/assets/vendor-
|
|
396
|
-
phoenix/server/static/assets/vendor-arizeai-
|
|
397
|
-
phoenix/server/static/assets/vendor-codemirror-
|
|
398
|
-
phoenix/server/static/assets/vendor-recharts-
|
|
399
|
-
phoenix/server/static/assets/vendor-shiki-
|
|
397
|
+
phoenix/server/static/assets/vendor-_6rG8OMg.js,sha256=stdw5w5Q5kJ0EkGpzu_f_IYaEEwKHkn3eNDZSxBRQUE,2682340
|
|
398
|
+
phoenix/server/static/assets/vendor-arizeai-BznCmJFh.js,sha256=qFSHnyPDSh4mml_O0oiMaCmZv2e9E3VQXPxzySPABWA,151750
|
|
399
|
+
phoenix/server/static/assets/vendor-codemirror-29fWLPAy.js,sha256=dVUOVHLKRC3SXRgrMUeTXHXHMAsZqi0jZpLu75vg_JM,553698
|
|
400
|
+
phoenix/server/static/assets/vendor-recharts-Cu431IpB.js,sha256=-RxCpZURhh5aUEh1XjG6P2WwqZPqKmcyxhDNbvLTlCQ,231651
|
|
401
|
+
phoenix/server/static/assets/vendor-shiki-Ce9e01lU.js,sha256=FPFdF-MxIINIy5ujia044AyVID8jqcjjMvuYnbBZI6w,8980312
|
|
400
402
|
phoenix/server/static/assets/vendor-three-C5WAXd5r.js,sha256=ELkg06u70N7h8oFmvqdoHyPuUf9VgGEWeT4LKFx4VWo,620975
|
|
401
403
|
phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
402
|
-
phoenix/server/templates/index.html,sha256=
|
|
404
|
+
phoenix/server/templates/index.html,sha256=ld4wU6Agx8Cr5Bi3fvNNX6bO0mKo_Kvqd9dQn4I_HfI,6973
|
|
403
405
|
phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
404
406
|
phoenix/session/client.py,sha256=uw5WlCuFcN_eEj7Ko2bhJVcaihEIp7Evy50KnL6Sq-k,35602
|
|
405
407
|
phoenix/session/data_extractor.py,sha256=Y0RzYFaNy9fQj8PEIeQ76TBZ90_E1FW7bXu3K5x0EZY,2782
|
|
@@ -437,9 +439,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
|
|
|
437
439
|
phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
|
|
438
440
|
phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
439
441
|
phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
|
|
440
|
-
arize_phoenix-11.
|
|
441
|
-
arize_phoenix-11.
|
|
442
|
-
arize_phoenix-11.
|
|
443
|
-
arize_phoenix-11.
|
|
444
|
-
arize_phoenix-11.
|
|
445
|
-
arize_phoenix-11.
|
|
442
|
+
arize_phoenix-11.12.0.dist-info/METADATA,sha256=iFOBcTbzTRPB83DQEnsOMAPIp3-mcW5Z6eb2VWb72s0,30851
|
|
443
|
+
arize_phoenix-11.12.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
444
|
+
arize_phoenix-11.12.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
|
|
445
|
+
arize_phoenix-11.12.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
|
|
446
|
+
arize_phoenix-11.12.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
|
|
447
|
+
arize_phoenix-11.12.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
import strawberry
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@strawberry.enum
|
|
7
|
+
class PromptFilterColumn(Enum):
|
|
8
|
+
name = "name"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@strawberry.input(description="The filter key and value for prompt connections")
|
|
12
|
+
class PromptFilter:
|
|
13
|
+
col: PromptFilterColumn
|
|
14
|
+
value: str
|
|
@@ -153,7 +153,7 @@ class UserMutationMixin:
|
|
|
153
153
|
logger.error(f"Failed to send welcome email: {error}")
|
|
154
154
|
return UserMutationPayload(user=to_gql_user(user))
|
|
155
155
|
|
|
156
|
-
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin
|
|
156
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin]) # type: ignore
|
|
157
157
|
async def patch_user(
|
|
158
158
|
self,
|
|
159
159
|
info: Info[Context, None],
|
|
@@ -199,7 +199,7 @@ class UserMutationMixin:
|
|
|
199
199
|
await info.context.log_out(user.id)
|
|
200
200
|
return UserMutationPayload(user=to_gql_user(user))
|
|
201
201
|
|
|
202
|
-
@strawberry.mutation(permission_classes=[IsNotReadOnly
|
|
202
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
203
203
|
async def patch_viewer(
|
|
204
204
|
self,
|
|
205
205
|
info: Info[Context, None],
|
phoenix/server/api/queries.py
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import re
|
|
2
2
|
from collections import defaultdict
|
|
3
3
|
from datetime import datetime
|
|
4
|
-
from typing import Iterable, Iterator, Optional, Union
|
|
4
|
+
from typing import Iterable, Iterator, Optional, Union
|
|
5
|
+
from typing import cast as type_cast
|
|
5
6
|
|
|
6
7
|
import numpy as np
|
|
7
8
|
import numpy.typing as npt
|
|
8
9
|
import strawberry
|
|
9
|
-
from sqlalchemy import and_, distinct, func, select, text
|
|
10
|
+
from sqlalchemy import String, and_, cast, distinct, func, select, text
|
|
10
11
|
from sqlalchemy.orm import joinedload
|
|
11
12
|
from starlette.authentication import UnauthenticatedUser
|
|
12
13
|
from strawberry import ID, UNSET
|
|
@@ -41,6 +42,7 @@ from phoenix.server.api.input_types.DatasetSort import DatasetSort
|
|
|
41
42
|
from phoenix.server.api.input_types.InvocationParameters import InvocationParameter
|
|
42
43
|
from phoenix.server.api.input_types.ProjectFilter import ProjectFilter
|
|
43
44
|
from phoenix.server.api.input_types.ProjectSort import ProjectColumn, ProjectSort
|
|
45
|
+
from phoenix.server.api.input_types.PromptFilter import PromptFilter
|
|
44
46
|
from phoenix.server.api.types.AnnotationConfig import AnnotationConfig, to_gql_annotation_config
|
|
45
47
|
from phoenix.server.api.types.Cluster import Cluster, to_gql_clusters
|
|
46
48
|
from phoenix.server.api.types.Dataset import Dataset, to_gql_dataset
|
|
@@ -77,6 +79,7 @@ from phoenix.server.api.types.Prompt import Prompt, to_gql_prompt_from_orm
|
|
|
77
79
|
from phoenix.server.api.types.PromptLabel import PromptLabel, to_gql_prompt_label
|
|
78
80
|
from phoenix.server.api.types.PromptVersion import PromptVersion, to_gql_prompt_version
|
|
79
81
|
from phoenix.server.api.types.PromptVersionTag import PromptVersionTag, to_gql_prompt_version_tag
|
|
82
|
+
from phoenix.server.api.types.ServerStatus import ServerStatus
|
|
80
83
|
from phoenix.server.api.types.SortDir import SortDir
|
|
81
84
|
from phoenix.server.api.types.Span import Span
|
|
82
85
|
from phoenix.server.api.types.SpanAnnotation import SpanAnnotation, to_gql_span_annotation
|
|
@@ -728,6 +731,7 @@ class Query:
|
|
|
728
731
|
last: Optional[int] = UNSET,
|
|
729
732
|
after: Optional[CursorString] = UNSET,
|
|
730
733
|
before: Optional[CursorString] = UNSET,
|
|
734
|
+
filter: Optional[PromptFilter] = UNSET,
|
|
731
735
|
) -> Connection[Prompt]:
|
|
732
736
|
args = ConnectionArgs(
|
|
733
737
|
first=first,
|
|
@@ -736,6 +740,14 @@ class Query:
|
|
|
736
740
|
before=before if isinstance(before, CursorString) else None,
|
|
737
741
|
)
|
|
738
742
|
stmt = select(models.Prompt)
|
|
743
|
+
if filter:
|
|
744
|
+
column = getattr(models.Prompt, filter.col.value)
|
|
745
|
+
# Cast Identifier columns to String for ilike operations
|
|
746
|
+
if filter.col.value == "name":
|
|
747
|
+
column = cast(column, String)
|
|
748
|
+
stmt = stmt.where(column.ilike(f"%{filter.value}%")).order_by(
|
|
749
|
+
models.Prompt.updated_at.desc()
|
|
750
|
+
)
|
|
739
751
|
async with info.context.db() as session:
|
|
740
752
|
orm_prompts = await session.stream_scalars(stmt)
|
|
741
753
|
data = [to_gql_prompt_from_orm(orm_prompt) async for orm_prompt in orm_prompts]
|
|
@@ -994,7 +1006,7 @@ class Query:
|
|
|
994
1006
|
""").bindparams(nspname=nspname)
|
|
995
1007
|
try:
|
|
996
1008
|
async with info.context.db() as session:
|
|
997
|
-
stats =
|
|
1009
|
+
stats = type_cast(Iterable[tuple[str, int]], await session.execute(stmt))
|
|
998
1010
|
except Exception:
|
|
999
1011
|
# TODO: temporary workaround until we can reproduce the error
|
|
1000
1012
|
return []
|
|
@@ -1005,6 +1017,15 @@ class Query:
|
|
|
1005
1017
|
for table_name, num_bytes in stats
|
|
1006
1018
|
]
|
|
1007
1019
|
|
|
1020
|
+
@strawberry.field
|
|
1021
|
+
async def server_status(
|
|
1022
|
+
self,
|
|
1023
|
+
info: Info[Context, None],
|
|
1024
|
+
) -> ServerStatus:
|
|
1025
|
+
return ServerStatus(
|
|
1026
|
+
insufficient_storage=info.context.db.should_not_insert_or_update,
|
|
1027
|
+
)
|
|
1028
|
+
|
|
1008
1029
|
@strawberry.field
|
|
1009
1030
|
def validate_regular_expression(self, regex: str) -> ValidationResult:
|
|
1010
1031
|
try:
|
|
@@ -6,14 +6,19 @@ import strawberry
|
|
|
6
6
|
from openinference.semconv.trace import OpenInferenceLLMProviderValues
|
|
7
7
|
from sqlalchemy import inspect
|
|
8
8
|
from strawberry.relay import Node, NodeID
|
|
9
|
+
from strawberry.relay.types import GlobalID
|
|
9
10
|
from strawberry.types import Info
|
|
10
|
-
from
|
|
11
|
+
from strawberry.types.unset import UNSET
|
|
12
|
+
from typing_extensions import TypeAlias, assert_never
|
|
11
13
|
|
|
12
14
|
from phoenix.db import models
|
|
13
15
|
from phoenix.server.api.context import Context
|
|
16
|
+
from phoenix.server.api.exceptions import BadRequest
|
|
17
|
+
from phoenix.server.api.input_types.TimeRange import TimeRange
|
|
14
18
|
from phoenix.server.api.types.CostBreakdown import CostBreakdown
|
|
15
19
|
from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
|
|
16
20
|
from phoenix.server.api.types.ModelInterface import ModelInterface
|
|
21
|
+
from phoenix.server.api.types.node import from_global_id
|
|
17
22
|
from phoenix.server.api.types.SpanCostDetailSummaryEntry import SpanCostDetailSummaryEntry
|
|
18
23
|
from phoenix.server.api.types.SpanCostSummary import SpanCostSummary
|
|
19
24
|
from phoenix.server.api.types.TokenPrice import TokenKind, TokenPrice
|
|
@@ -25,6 +30,11 @@ class GenerativeModelKind(Enum):
|
|
|
25
30
|
BUILT_IN = "BUILT_IN"
|
|
26
31
|
|
|
27
32
|
|
|
33
|
+
ProjectId: TypeAlias = int
|
|
34
|
+
TimeRangeKey: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
|
|
35
|
+
CachedCostSummaryKey: TypeAlias = tuple[Optional[ProjectId], TimeRangeKey]
|
|
36
|
+
|
|
37
|
+
|
|
28
38
|
@strawberry.type
|
|
29
39
|
class GenerativeModel(Node, ModelInterface):
|
|
30
40
|
id_attr: NodeID[int]
|
|
@@ -37,6 +47,18 @@ class GenerativeModel(Node, ModelInterface):
|
|
|
37
47
|
provider_key: Optional[GenerativeProviderKey]
|
|
38
48
|
costs: strawberry.Private[Optional[list[models.TokenPrice]]] = None
|
|
39
49
|
start_time: Optional[datetime] = None
|
|
50
|
+
cached_cost_summary: strawberry.Private[
|
|
51
|
+
Optional[dict[CachedCostSummaryKey, SpanCostSummary]]
|
|
52
|
+
] = None
|
|
53
|
+
|
|
54
|
+
def add_cached_cost_summary(
|
|
55
|
+
self, project_id: Optional[int], time_range: TimeRange, cost_summary: SpanCostSummary
|
|
56
|
+
) -> None:
|
|
57
|
+
if self.cached_cost_summary is None:
|
|
58
|
+
self.cached_cost_summary = {}
|
|
59
|
+
time_range_key = (time_range.start, time_range.end) if time_range else (None, None)
|
|
60
|
+
cache_key = (project_id, time_range_key)
|
|
61
|
+
self.cached_cost_summary[cache_key] = cost_summary
|
|
40
62
|
|
|
41
63
|
@strawberry.field
|
|
42
64
|
async def token_prices(self) -> list[TokenPrice]:
|
|
@@ -55,7 +77,28 @@ class GenerativeModel(Node, ModelInterface):
|
|
|
55
77
|
return token_prices
|
|
56
78
|
|
|
57
79
|
@strawberry.field
|
|
58
|
-
async def cost_summary(
|
|
80
|
+
async def cost_summary(
|
|
81
|
+
self,
|
|
82
|
+
info: Info[Context, None],
|
|
83
|
+
project_id: Optional[GlobalID] = UNSET,
|
|
84
|
+
time_range: Optional[TimeRange] = UNSET,
|
|
85
|
+
) -> SpanCostSummary:
|
|
86
|
+
if self.cached_cost_summary is not None:
|
|
87
|
+
time_range_key = (time_range.start, time_range.end) if time_range else (None, None)
|
|
88
|
+
project_rowid: Optional[int] = None
|
|
89
|
+
if project_id:
|
|
90
|
+
type_name, project_rowid = from_global_id(project_id)
|
|
91
|
+
if type_name != models.Project.__name__:
|
|
92
|
+
raise BadRequest("Invalid Project ID")
|
|
93
|
+
cache_key = (project_rowid, time_range_key)
|
|
94
|
+
if cache_key in self.cached_cost_summary:
|
|
95
|
+
return self.cached_cost_summary[cache_key]
|
|
96
|
+
|
|
97
|
+
if time_range or project_id:
|
|
98
|
+
raise BadRequest(
|
|
99
|
+
"Cost summaries for specific projects or time ranges are not yet implemented"
|
|
100
|
+
)
|
|
101
|
+
|
|
59
102
|
loader = info.context.data_loaders.span_cost_summary_by_generative_model
|
|
60
103
|
summary = await loader.load(self.id_attr)
|
|
61
104
|
return SpanCostSummary(
|
|
@@ -98,7 +141,9 @@ class GenerativeModel(Node, ModelInterface):
|
|
|
98
141
|
return await info.context.data_loaders.last_used_times_by_generative_model_id.load(model_id)
|
|
99
142
|
|
|
100
143
|
|
|
101
|
-
def to_gql_generative_model(
|
|
144
|
+
def to_gql_generative_model(
|
|
145
|
+
model: models.GenerativeModel,
|
|
146
|
+
) -> GenerativeModel:
|
|
102
147
|
costs_are_loaded = isinstance(inspect(model).attrs.token_prices.loaded_value, list)
|
|
103
148
|
name_pattern = model.name_pattern.pattern
|
|
104
149
|
assert isinstance(name_pattern, str)
|
|
@@ -33,6 +33,7 @@ from phoenix.server.api.types.AnnotationConfig import AnnotationConfig, to_gql_a
|
|
|
33
33
|
from phoenix.server.api.types.AnnotationSummary import AnnotationSummary
|
|
34
34
|
from phoenix.server.api.types.CostBreakdown import CostBreakdown
|
|
35
35
|
from phoenix.server.api.types.DocumentEvaluationSummary import DocumentEvaluationSummary
|
|
36
|
+
from phoenix.server.api.types.GenerativeModel import GenerativeModel, to_gql_generative_model
|
|
36
37
|
from phoenix.server.api.types.pagination import (
|
|
37
38
|
ConnectionArgs,
|
|
38
39
|
Cursor,
|
|
@@ -1326,6 +1327,130 @@ class Project(Node):
|
|
|
1326
1327
|
names=sorted(list(unique_names)),
|
|
1327
1328
|
)
|
|
1328
1329
|
|
|
1330
|
+
@strawberry.field
|
|
1331
|
+
async def top_models_by_cost(
|
|
1332
|
+
self,
|
|
1333
|
+
info: Info[Context, None],
|
|
1334
|
+
time_range: TimeRange,
|
|
1335
|
+
) -> list[GenerativeModel]:
|
|
1336
|
+
if time_range.start is None:
|
|
1337
|
+
raise BadRequest("Start time is required")
|
|
1338
|
+
|
|
1339
|
+
async with info.context.db() as session:
|
|
1340
|
+
stmt = (
|
|
1341
|
+
select(
|
|
1342
|
+
models.GenerativeModel,
|
|
1343
|
+
func.sum(models.SpanCost.total_tokens).label("total_tokens"),
|
|
1344
|
+
func.sum(models.SpanCost.prompt_tokens).label("prompt_tokens"),
|
|
1345
|
+
func.sum(models.SpanCost.completion_tokens).label("completion_tokens"),
|
|
1346
|
+
func.sum(models.SpanCost.total_cost).label("total_cost"),
|
|
1347
|
+
func.sum(models.SpanCost.prompt_cost).label("prompt_cost"),
|
|
1348
|
+
func.sum(models.SpanCost.completion_cost).label("completion_cost"),
|
|
1349
|
+
)
|
|
1350
|
+
.join(
|
|
1351
|
+
models.SpanCost,
|
|
1352
|
+
models.SpanCost.model_id == models.GenerativeModel.id,
|
|
1353
|
+
)
|
|
1354
|
+
.join(
|
|
1355
|
+
models.Trace,
|
|
1356
|
+
models.SpanCost.trace_rowid == models.Trace.id,
|
|
1357
|
+
)
|
|
1358
|
+
.where(models.Trace.project_rowid == self.project_rowid)
|
|
1359
|
+
.where(models.SpanCost.model_id.isnot(None))
|
|
1360
|
+
.where(models.SpanCost.span_start_time >= time_range.start)
|
|
1361
|
+
.group_by(models.SpanCost.model_id)
|
|
1362
|
+
.order_by(func.sum(models.SpanCost.total_cost).desc())
|
|
1363
|
+
)
|
|
1364
|
+
if time_range.end:
|
|
1365
|
+
stmt = stmt.where(models.SpanCost.span_start_time < time_range.end)
|
|
1366
|
+
results: list[GenerativeModel] = []
|
|
1367
|
+
async for (
|
|
1368
|
+
model,
|
|
1369
|
+
total_tokens,
|
|
1370
|
+
prompt_tokens,
|
|
1371
|
+
completion_tokens,
|
|
1372
|
+
total_cost,
|
|
1373
|
+
prompt_cost,
|
|
1374
|
+
completion_cost,
|
|
1375
|
+
) in await session.stream(stmt):
|
|
1376
|
+
cost_summary = SpanCostSummary(
|
|
1377
|
+
prompt=CostBreakdown(tokens=prompt_tokens, cost=prompt_cost),
|
|
1378
|
+
completion=CostBreakdown(tokens=completion_tokens, cost=completion_cost),
|
|
1379
|
+
total=CostBreakdown(tokens=total_tokens, cost=total_cost),
|
|
1380
|
+
)
|
|
1381
|
+
cache_time_range = TimeRange(
|
|
1382
|
+
start=time_range.start,
|
|
1383
|
+
end=time_range.end,
|
|
1384
|
+
)
|
|
1385
|
+
gql_model = to_gql_generative_model(model)
|
|
1386
|
+
gql_model.add_cached_cost_summary(
|
|
1387
|
+
self.project_rowid, cache_time_range, cost_summary
|
|
1388
|
+
)
|
|
1389
|
+
results.append(gql_model)
|
|
1390
|
+
return results
|
|
1391
|
+
|
|
1392
|
+
@strawberry.field
|
|
1393
|
+
async def top_models_by_token_count(
|
|
1394
|
+
self,
|
|
1395
|
+
info: Info[Context, None],
|
|
1396
|
+
time_range: TimeRange,
|
|
1397
|
+
) -> list[GenerativeModel]:
|
|
1398
|
+
if time_range.start is None:
|
|
1399
|
+
raise BadRequest("Start time is required")
|
|
1400
|
+
|
|
1401
|
+
async with info.context.db() as session:
|
|
1402
|
+
stmt = (
|
|
1403
|
+
select(
|
|
1404
|
+
models.GenerativeModel,
|
|
1405
|
+
func.sum(models.SpanCost.total_tokens).label("total_tokens"),
|
|
1406
|
+
func.sum(models.SpanCost.prompt_tokens).label("prompt_tokens"),
|
|
1407
|
+
func.sum(models.SpanCost.completion_tokens).label("completion_tokens"),
|
|
1408
|
+
func.sum(models.SpanCost.total_cost).label("total_cost"),
|
|
1409
|
+
func.sum(models.SpanCost.prompt_cost).label("prompt_cost"),
|
|
1410
|
+
func.sum(models.SpanCost.completion_cost).label("completion_cost"),
|
|
1411
|
+
)
|
|
1412
|
+
.join(
|
|
1413
|
+
models.SpanCost,
|
|
1414
|
+
models.SpanCost.model_id == models.GenerativeModel.id,
|
|
1415
|
+
)
|
|
1416
|
+
.join(
|
|
1417
|
+
models.Trace,
|
|
1418
|
+
models.SpanCost.trace_rowid == models.Trace.id,
|
|
1419
|
+
)
|
|
1420
|
+
.where(models.Trace.project_rowid == self.project_rowid)
|
|
1421
|
+
.where(models.SpanCost.model_id.isnot(None))
|
|
1422
|
+
.where(models.SpanCost.span_start_time >= time_range.start)
|
|
1423
|
+
.group_by(models.SpanCost.model_id)
|
|
1424
|
+
.order_by(func.sum(models.SpanCost.total_tokens).desc())
|
|
1425
|
+
)
|
|
1426
|
+
if time_range.end:
|
|
1427
|
+
stmt = stmt.where(models.SpanCost.span_start_time < time_range.end)
|
|
1428
|
+
results: list[GenerativeModel] = []
|
|
1429
|
+
async for (
|
|
1430
|
+
model,
|
|
1431
|
+
total_tokens,
|
|
1432
|
+
prompt_tokens,
|
|
1433
|
+
completion_tokens,
|
|
1434
|
+
total_cost,
|
|
1435
|
+
prompt_cost,
|
|
1436
|
+
completion_cost,
|
|
1437
|
+
) in await session.stream(stmt):
|
|
1438
|
+
cost_summary = SpanCostSummary(
|
|
1439
|
+
prompt=CostBreakdown(tokens=prompt_tokens, cost=prompt_cost),
|
|
1440
|
+
completion=CostBreakdown(tokens=completion_tokens, cost=completion_cost),
|
|
1441
|
+
total=CostBreakdown(tokens=total_tokens, cost=total_cost),
|
|
1442
|
+
)
|
|
1443
|
+
cache_time_range = TimeRange(
|
|
1444
|
+
start=time_range.start,
|
|
1445
|
+
end=time_range.end,
|
|
1446
|
+
)
|
|
1447
|
+
gql_model = to_gql_generative_model(model)
|
|
1448
|
+
gql_model.add_cached_cost_summary(
|
|
1449
|
+
self.project_rowid, cache_time_range, cost_summary
|
|
1450
|
+
)
|
|
1451
|
+
results.append(gql_model)
|
|
1452
|
+
return results
|
|
1453
|
+
|
|
1329
1454
|
|
|
1330
1455
|
@strawberry.type
|
|
1331
1456
|
class SpanCountTimeSeriesDataPoint:
|
phoenix/server/app.py
CHANGED
|
@@ -56,6 +56,8 @@ from phoenix.config import (
|
|
|
56
56
|
SERVER_DIR,
|
|
57
57
|
OAuth2ClientConfig,
|
|
58
58
|
get_env_csrf_trusted_origins,
|
|
59
|
+
get_env_database_allocated_storage_capacity_gibibytes,
|
|
60
|
+
get_env_database_usage_insertion_blocking_threshold_percentage,
|
|
59
61
|
get_env_fastapi_middleware_paths,
|
|
60
62
|
get_env_gql_extension_paths,
|
|
61
63
|
get_env_grpc_interceptor_paths,
|
|
@@ -239,6 +241,10 @@ class AppConfig(NamedTuple):
|
|
|
239
241
|
""" FullStory organization ID for web analytics tracking """
|
|
240
242
|
management_url: Optional[str] = None
|
|
241
243
|
""" URL for a phoenix management interface, only visible to management users """
|
|
244
|
+
support_email: Optional[str] = None
|
|
245
|
+
""" Support email address for user assistance """
|
|
246
|
+
has_db_threshold: bool = False
|
|
247
|
+
""" Whether the database has a threshold for usage """
|
|
242
248
|
|
|
243
249
|
|
|
244
250
|
class Static(StaticFiles):
|
|
@@ -306,6 +312,8 @@ class Static(StaticFiles):
|
|
|
306
312
|
"auto_login_idp_name": self._app_config.auto_login_idp_name,
|
|
307
313
|
"fullstory_org": self._app_config.fullstory_org,
|
|
308
314
|
"management_url": self._app_config.management_url,
|
|
315
|
+
"support_email": self._app_config.support_email,
|
|
316
|
+
"has_db_threshold": self._app_config.has_db_threshold,
|
|
309
317
|
},
|
|
310
318
|
)
|
|
311
319
|
except Exception as e:
|
|
@@ -1072,6 +1080,11 @@ def create_app(
|
|
|
1072
1080
|
auto_login_idp_name=auto_login_idp_name,
|
|
1073
1081
|
fullstory_org=Settings.fullstory_org,
|
|
1074
1082
|
management_url=management_url,
|
|
1083
|
+
support_email=get_env_support_email(),
|
|
1084
|
+
has_db_threshold=bool(
|
|
1085
|
+
get_env_database_allocated_storage_capacity_gibibytes()
|
|
1086
|
+
and get_env_database_usage_insertion_blocking_threshold_percentage()
|
|
1087
|
+
),
|
|
1075
1088
|
),
|
|
1076
1089
|
),
|
|
1077
1090
|
name="static",
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_components-
|
|
3
|
-
"file": "assets/components-
|
|
2
|
+
"_components-E49JuzFB.js": {
|
|
3
|
+
"file": "assets/components-E49JuzFB.js",
|
|
4
4
|
"name": "components",
|
|
5
5
|
"imports": [
|
|
6
|
-
"_vendor-
|
|
7
|
-
"_pages-
|
|
8
|
-
"_vendor-arizeai-
|
|
9
|
-
"_vendor-codemirror-
|
|
6
|
+
"_vendor-_6rG8OMg.js",
|
|
7
|
+
"_pages-C-8lZ5cv.js",
|
|
8
|
+
"_vendor-arizeai-BznCmJFh.js",
|
|
9
|
+
"_vendor-codemirror-29fWLPAy.js",
|
|
10
10
|
"_vendor-three-C5WAXd5r.js"
|
|
11
11
|
]
|
|
12
12
|
},
|
|
13
|
-
"_pages-
|
|
14
|
-
"file": "assets/pages-
|
|
13
|
+
"_pages-C-8lZ5cv.js": {
|
|
14
|
+
"file": "assets/pages-C-8lZ5cv.js",
|
|
15
15
|
"name": "pages",
|
|
16
16
|
"imports": [
|
|
17
|
-
"_vendor-
|
|
18
|
-
"_vendor-arizeai-
|
|
19
|
-
"_components-
|
|
20
|
-
"_vendor-codemirror-
|
|
21
|
-
"_vendor-recharts-
|
|
17
|
+
"_vendor-_6rG8OMg.js",
|
|
18
|
+
"_vendor-arizeai-BznCmJFh.js",
|
|
19
|
+
"_components-E49JuzFB.js",
|
|
20
|
+
"_vendor-codemirror-29fWLPAy.js",
|
|
21
|
+
"_vendor-recharts-Cu431IpB.js"
|
|
22
22
|
]
|
|
23
23
|
},
|
|
24
24
|
"_vendor-CqDb5u4o.css": {
|
|
25
25
|
"file": "assets/vendor-CqDb5u4o.css",
|
|
26
26
|
"src": "_vendor-CqDb5u4o.css"
|
|
27
27
|
},
|
|
28
|
-
"_vendor-
|
|
29
|
-
"file": "assets/vendor-
|
|
28
|
+
"_vendor-_6rG8OMg.js": {
|
|
29
|
+
"file": "assets/vendor-_6rG8OMg.js",
|
|
30
30
|
"name": "vendor",
|
|
31
31
|
"imports": [
|
|
32
32
|
"_vendor-three-C5WAXd5r.js"
|
|
@@ -35,33 +35,33 @@
|
|
|
35
35
|
"assets/vendor-CqDb5u4o.css"
|
|
36
36
|
]
|
|
37
37
|
},
|
|
38
|
-
"_vendor-arizeai-
|
|
39
|
-
"file": "assets/vendor-arizeai-
|
|
38
|
+
"_vendor-arizeai-BznCmJFh.js": {
|
|
39
|
+
"file": "assets/vendor-arizeai-BznCmJFh.js",
|
|
40
40
|
"name": "vendor-arizeai",
|
|
41
41
|
"imports": [
|
|
42
|
-
"_vendor-
|
|
42
|
+
"_vendor-_6rG8OMg.js"
|
|
43
43
|
]
|
|
44
44
|
},
|
|
45
|
-
"_vendor-codemirror-
|
|
46
|
-
"file": "assets/vendor-codemirror-
|
|
45
|
+
"_vendor-codemirror-29fWLPAy.js": {
|
|
46
|
+
"file": "assets/vendor-codemirror-29fWLPAy.js",
|
|
47
47
|
"name": "vendor-codemirror",
|
|
48
48
|
"imports": [
|
|
49
|
-
"_vendor-
|
|
50
|
-
"_vendor-shiki-
|
|
49
|
+
"_vendor-_6rG8OMg.js",
|
|
50
|
+
"_vendor-shiki-Ce9e01lU.js"
|
|
51
51
|
]
|
|
52
52
|
},
|
|
53
|
-
"_vendor-recharts-
|
|
54
|
-
"file": "assets/vendor-recharts-
|
|
53
|
+
"_vendor-recharts-Cu431IpB.js": {
|
|
54
|
+
"file": "assets/vendor-recharts-Cu431IpB.js",
|
|
55
55
|
"name": "vendor-recharts",
|
|
56
56
|
"imports": [
|
|
57
|
-
"_vendor-
|
|
57
|
+
"_vendor-_6rG8OMg.js"
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
|
-
"_vendor-shiki-
|
|
61
|
-
"file": "assets/vendor-shiki-
|
|
60
|
+
"_vendor-shiki-Ce9e01lU.js": {
|
|
61
|
+
"file": "assets/vendor-shiki-Ce9e01lU.js",
|
|
62
62
|
"name": "vendor-shiki",
|
|
63
63
|
"imports": [
|
|
64
|
-
"_vendor-
|
|
64
|
+
"_vendor-_6rG8OMg.js"
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"_vendor-three-C5WAXd5r.js": {
|
|
@@ -69,19 +69,19 @@
|
|
|
69
69
|
"name": "vendor-three"
|
|
70
70
|
},
|
|
71
71
|
"index.tsx": {
|
|
72
|
-
"file": "assets/index-
|
|
72
|
+
"file": "assets/index-CUhYDnlT.js",
|
|
73
73
|
"name": "index",
|
|
74
74
|
"src": "index.tsx",
|
|
75
75
|
"isEntry": true,
|
|
76
76
|
"imports": [
|
|
77
|
-
"_vendor-
|
|
78
|
-
"_vendor-arizeai-
|
|
79
|
-
"_pages-
|
|
80
|
-
"_components-
|
|
77
|
+
"_vendor-_6rG8OMg.js",
|
|
78
|
+
"_vendor-arizeai-BznCmJFh.js",
|
|
79
|
+
"_pages-C-8lZ5cv.js",
|
|
80
|
+
"_components-E49JuzFB.js",
|
|
81
81
|
"_vendor-three-C5WAXd5r.js",
|
|
82
|
-
"_vendor-codemirror-
|
|
83
|
-
"_vendor-shiki-
|
|
84
|
-
"_vendor-recharts-
|
|
82
|
+
"_vendor-codemirror-29fWLPAy.js",
|
|
83
|
+
"_vendor-shiki-Ce9e01lU.js",
|
|
84
|
+
"_vendor-recharts-Cu431IpB.js"
|
|
85
85
|
]
|
|
86
86
|
}
|
|
87
87
|
}
|