arize-phoenix 8.10.0__py3-none-any.whl → 8.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.

Files changed (21) hide show
  1. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/METADATA +3 -3
  2. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/RECORD +20 -20
  3. phoenix/db/models.py +7 -0
  4. phoenix/server/api/helpers/playground_clients.py +0 -7
  5. phoenix/server/api/helpers/prompts/conversions/anthropic.py +8 -0
  6. phoenix/server/api/routers/v1/experiments.py +47 -21
  7. phoenix/server/static/.vite/manifest.json +40 -40
  8. phoenix/server/static/assets/{components-CVzKofML.js → components-CbkVj1OQ.js} +367 -208
  9. phoenix/server/static/assets/{index-Ctff7oin.js → index-BNK6eNx3.js} +71 -32
  10. phoenix/server/static/assets/{pages-CVFLHgre.js → pages-CyqzCvBY.js} +351 -348
  11. phoenix/server/static/assets/vendor-Byx9ZW8r.js +894 -0
  12. phoenix/server/static/assets/{vendor-arizeai-BiZagY4a.js → vendor-arizeai-0BoxbU9V.js} +26 -26
  13. phoenix/server/static/assets/{vendor-codemirror-0mUqu36F.js → vendor-codemirror-BX78TDyo.js} +12 -12
  14. phoenix/server/static/assets/{vendor-recharts-CfKQSOmq.js → vendor-recharts-BLborQJX.js} +1 -1
  15. phoenix/server/static/assets/{vendor-shiki-BsgMOuir.js → vendor-shiki-DpPpUgzv.js} +1 -1
  16. phoenix/version.py +1 -1
  17. phoenix/server/static/assets/vendor-VJCVsFqd.js +0 -894
  18. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/WHEEL +0 -0
  19. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/entry_points.txt +0 -0
  20. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/licenses/IP_NOTICE +0 -0
  21. {arize_phoenix-8.10.0.dist-info → arize_phoenix-8.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 8.10.0
3
+ Version: 8.12.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
@@ -55,7 +55,7 @@ Requires-Dist: uvicorn
55
55
  Requires-Dist: websockets
56
56
  Requires-Dist: wrapt>=1.17.2
57
57
  Provides-Extra: container
58
- Requires-Dist: anthropic>=0.47.0; extra == 'container'
58
+ Requires-Dist: anthropic>=0.49.0; extra == 'container'
59
59
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
60
60
  Requires-Dist: google-generativeai; extra == 'container'
61
61
  Requires-Dist: numba>=0.60.0; extra == 'container'
@@ -73,7 +73,7 @@ Requires-Dist: strawberry-graphql[opentelemetry]==0.262.0; extra == 'container'
73
73
  Requires-Dist: umap-learn; extra == 'container'
74
74
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
75
75
  Provides-Extra: dev
76
- Requires-Dist: anthropic>=0.47.0; extra == 'dev'
76
+ Requires-Dist: anthropic>=0.49.0; extra == 'dev'
77
77
  Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
78
78
  Requires-Dist: asgi-lifespan; extra == 'dev'
79
79
  Requires-Dist: asyncpg; extra == 'dev'
@@ -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=kpW1WL0kiB8XJsO6XycvZVJ-lBkNoenhQ7atCvBoSe8,5365
8
8
  phoenix/settings.py,sha256=ht-0oN-sMV6SPXrk7Tu1EZlngpAYkGNLYPhO8DyrdQI,661
9
- phoenix/version.py,sha256=wksB2Fuk1WwfEmtdei9zkvR3TbbzOltLZAcITFOP8sY,23
9
+ phoenix/version.py,sha256=hURJbBJpRlARLVE-_bmA1Vwr56PpPmoJTwIlaM1pNE4,23
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
@@ -21,7 +21,7 @@ phoenix/db/enums.py,sha256=tt7iovXLhVTLZ3_LbHNGgcI44SnNjXfkKtLAZG57T54,428
21
21
  phoenix/db/facilitator.py,sha256=sAYqzBXYSVBKPTQVYrd7ZmtqMAr1zP9dVJwjfNGW7hc,4207
22
22
  phoenix/db/helpers.py,sha256=daKbpY2QhTPo9a_T1xNHKI4WzWHkMmmrGIws7Hw-RZ4,4884
23
23
  phoenix/db/migrate.py,sha256=oUrXH8yEbcpL4eh09aSCuUiSrhFli0eT5D_j4ZmYChY,2797
24
- phoenix/db/models.py,sha256=wOqbY-pVKa8dw_TKZ23NZuFQHscv4LSKsel_JlBeU2U,45499
24
+ phoenix/db/models.py,sha256=kTXUlNzWyMxSNZxbTnnfdAfJcDLj8j6Nny2Q6DbqfSQ,45723
25
25
  phoenix/db/insertion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  phoenix/db/insertion/constants.py,sha256=8wifm7X-1XvroZ__R2Gc96NsgLhTDn0zXl4lehlXtcA,70
27
27
  phoenix/db/insertion/dataset.py,sha256=I9OC1ouVx7m6BH_c8hvcxW1dWGRAtpvXee29yBTuFkg,7136
@@ -144,13 +144,13 @@ phoenix/server/api/dataloaders/cache/two_tier_cache.py,sha256=cmo8FUT3E91R139IEz
144
144
  phoenix/server/api/helpers/__init__.py,sha256=m2-xaSPqUiSs91k62JaRDjFNfl-1byxBfY-m_Vxw16U,272
145
145
  phoenix/server/api/helpers/dataset_helpers.py,sha256=DoMBTg-qXTnC_K4Evx1WKpCCYgRbITpVqyY-8efJRf0,8984
146
146
  phoenix/server/api/helpers/experiment_run_filters.py,sha256=DOnVwrmn39eAkk2mwuZP8kIcAnR5jrOgllEwWSjsw94,29893
147
- phoenix/server/api/helpers/playground_clients.py,sha256=lv8xoNNiNgfM58V5W1NrVzHgH2C8RRQWhjmNNud_nlg,41112
147
+ phoenix/server/api/helpers/playground_clients.py,sha256=sHwz4Y-OynNmMWs1D2qfUPW15OsLyDYGwGMTrIK7s1c,40800
148
148
  phoenix/server/api/helpers/playground_registry.py,sha256=CPLMziFB2wmr-dfbx7VbzO2f8YIG_k5RftzvGXYGQ1w,2570
149
149
  phoenix/server/api/helpers/playground_spans.py,sha256=PjGNDc7cpqn5lmRM6TO_J1eVRGlgsNdQ8IT--5JVz0o,16881
150
150
  phoenix/server/api/helpers/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  phoenix/server/api/helpers/prompts/models.py,sha256=zwWBA5GQvEHT4xyZwP-_kr1rJZ7SHnguATsQwsFw5aw,19519
152
152
  phoenix/server/api/helpers/prompts/conversions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- phoenix/server/api/helpers/prompts/conversions/anthropic.py,sha256=uGTPzlw_9RaRPUsAIHyiRgD0NpDoajQzf7Am8nlJ4Cg,3279
153
+ phoenix/server/api/helpers/prompts/conversions/anthropic.py,sha256=ZT--UqBwoGf7QMusajB6aeB7zyWGttaZigb113kgiY8,3571
154
154
  phoenix/server/api/helpers/prompts/conversions/openai.py,sha256=a43WAftFn_me6ePHDufqvlg-4Z2C31owUSsqYC0YUP8,2589
155
155
  phoenix/server/api/input_types/AddExamplesToDatasetInput.py,sha256=mIQz0S_z8YdrktKIY6RCvtNJ2yZF9pYvTGgasUsI-54,430
156
156
  phoenix/server/api/input_types/AddSpansToDatasetInput.py,sha256=-StSstyMAVrba3tG1U30b-srkKCtu_svflQuSM19iJA,362
@@ -215,7 +215,7 @@ phoenix/server/api/routers/v1/datasets.py,sha256=gHlF4x0EmWiJ-8vwJygoh0bO3gvDBmi
215
215
  phoenix/server/api/routers/v1/evaluations.py,sha256=RpOkTylp5Da6BvPZGuN8ksnxz_BVXRIwyOvwX9Iko8U,12647
216
216
  phoenix/server/api/routers/v1/experiment_evaluations.py,sha256=vx4CKlE84sAL1vtPiM_XWnbfrATQujOSzzduJDYgcyM,4829
217
217
  phoenix/server/api/routers/v1/experiment_runs.py,sha256=bInuasRv7ogiYf8fq-LwpJ5tptmMQsBNDlJAqwdymko,6378
218
- phoenix/server/api/routers/v1/experiments.py,sha256=yJh48HSFjBB5PtQld9Kt2CxAYdpekl0jjIyeVHB30oE,15826
218
+ phoenix/server/api/routers/v1/experiments.py,sha256=UZiEf7OnxL3juO119sbE0gV9ScK5XKTfgjl4rj72ESY,16909
219
219
  phoenix/server/api/routers/v1/models.py,sha256=r0nM2kFJ3mxDqgc5vFr1cjNuyOPs3RIKE_DS2VMdF48,1749
220
220
  phoenix/server/api/routers/v1/prompts.py,sha256=ytK8HnOZNxUMDtC7XAFxzaTSM9DMMua13vWsqqd4PAw,14986
221
221
  phoenix/server/api/routers/v1/spans.py,sha256=uoU_bwIgz86fuvPjP5sX8goDyuCcnsTig-x3f17p60U,9625
@@ -314,16 +314,16 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
314
314
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
315
315
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
316
316
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
317
- phoenix/server/static/.vite/manifest.json,sha256=RVqrVl8ER15uOPhyqrvlOhvtDW4I4yqwKgetXJ7Ds9o,2165
318
- phoenix/server/static/assets/components-CVzKofML.js,sha256=ncp4gOOq5QdYz_LBPdLy4zTPGIEEmmnQSfVjb8kd3KI,424183
319
- phoenix/server/static/assets/index-Ctff7oin.js,sha256=msNwFX-LMi191AKNaA_wAUctTK-RewbdMkSsjn2FH-E,59207
320
- phoenix/server/static/assets/pages-CVFLHgre.js,sha256=sJDoDq-r9tNwyH6b4SKJYyeymn29wCQ14hAl5ZPYJ90,840022
317
+ phoenix/server/static/.vite/manifest.json,sha256=Bf5J32vA6mK0TQjtx_F6dK7GeibGq2gQTQDhNSfEJHE,2165
318
+ phoenix/server/static/assets/components-CbkVj1OQ.js,sha256=gW4kLgfLvzuO0KPA-gbisHNqImkZtXEhFg5q2njd-Ek,430635
319
+ phoenix/server/static/assets/index-BNK6eNx3.js,sha256=hWGabY3aNGqt12pOp_v-JEswgRpLB5O2QmDsFXOeKGE,59739
320
+ phoenix/server/static/assets/pages-CyqzCvBY.js,sha256=3ZVi4bXfGDDEj10g3ax0Q4MS7KmgopWL8d5epxZ1FWM,841781
321
+ phoenix/server/static/assets/vendor-Byx9ZW8r.js,sha256=l6S82ZzhNfzfjoYYM9ZrwUCc0TBKvJdWZVF0oBj8wkA,2281565
321
322
  phoenix/server/static/assets/vendor-Cg6lcjUC.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
322
- phoenix/server/static/assets/vendor-VJCVsFqd.js,sha256=d5PqgO3T3CRxy2q7Jk4b-1MVab_E3kKeDg3OtBILa0E,2265494
323
- phoenix/server/static/assets/vendor-arizeai-BiZagY4a.js,sha256=v9L6kaDEhwTmE76ilfx5BJ89lGXjmyWft580Ei3vQ4Q,202788
324
- phoenix/server/static/assets/vendor-codemirror-0mUqu36F.js,sha256=WOPvKseqLr9P1W5beQJSTX3m_6JIkbx7xjWWZK8qHeE,393496
325
- phoenix/server/static/assets/vendor-recharts-CfKQSOmq.js,sha256=TWJ68mOSnbpn8XscPz1N3Zs-EkLLqYDtgQ25vDJCL4I,282095
326
- phoenix/server/static/assets/vendor-shiki-BsgMOuir.js,sha256=cFiYo70OgEzfurmjGOmzkxAWdlOcSEfZBSY6RFqA0mk,8980312
323
+ phoenix/server/static/assets/vendor-arizeai-0BoxbU9V.js,sha256=innWhffEldVIqKcGGH7XAMlE7vvJTGbPzrZxNYvu9fU,200901
324
+ phoenix/server/static/assets/vendor-codemirror-BX78TDyo.js,sha256=Isk5hEoLzUYzDxDPQgGjRzTZOsE91GuJSzVA_zhMpU4,390090
325
+ phoenix/server/static/assets/vendor-recharts-BLborQJX.js,sha256=-s5VSfS1H08wvgAcjvGyoQQz3EG3WQcKOO2X3TwFYPM,282095
326
+ phoenix/server/static/assets/vendor-shiki-DpPpUgzv.js,sha256=_KvBjUsXiXQ-Piup8bgG17MfigFVwN6FPcE2CWxen00,8980312
327
327
  phoenix/server/static/assets/vendor-three-C-AGeJYv.js,sha256=c9nLPH5YDRFCzTNuwWO8_5KqcnunPo53mQsb7y9JFW8,620972
328
328
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
329
  phoenix/server/templates/index.html,sha256=e8_jdi7Eo19SK7DI_gglkTW094D17E0VAegoMmmmvIc,4330
@@ -364,9 +364,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
364
364
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
365
365
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
366
366
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
367
- arize_phoenix-8.10.0.dist-info/METADATA,sha256=WmPj1Vucp2RIf0uaIQHillrSRggnUxrtUJ_xdu8COGs,23739
368
- arize_phoenix-8.10.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
369
- arize_phoenix-8.10.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
370
- arize_phoenix-8.10.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
371
- arize_phoenix-8.10.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
372
- arize_phoenix-8.10.0.dist-info/RECORD,,
367
+ arize_phoenix-8.12.0.dist-info/METADATA,sha256=qM9RkF7DlQKdlLKsF0efcPwOHrhebyRuSLDmqcWBhCI,23739
368
+ arize_phoenix-8.12.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
369
+ arize_phoenix-8.12.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
370
+ arize_phoenix-8.12.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
371
+ arize_phoenix-8.12.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
372
+ arize_phoenix-8.12.0.dist-info/RECORD,,
phoenix/db/models.py CHANGED
@@ -970,6 +970,9 @@ class ExperimentRun(Base):
970
970
  primaryjoin="foreign(ExperimentRun.trace_id) == Trace.trace_id",
971
971
  back_populates="experiment_runs",
972
972
  )
973
+ annotations: Mapped[list["ExperimentRunAnnotation"]] = relationship(
974
+ back_populates="experiment_run"
975
+ )
973
976
 
974
977
  __table_args__ = (
975
978
  UniqueConstraint(
@@ -999,6 +1002,10 @@ class ExperimentRunAnnotation(Base):
999
1002
  start_time: Mapped[datetime] = mapped_column(UtcTimeStamp)
1000
1003
  end_time: Mapped[datetime] = mapped_column(UtcTimeStamp)
1001
1004
 
1005
+ experiment_run: Mapped["ExperimentRun"] = relationship(
1006
+ back_populates="annotations",
1007
+ )
1008
+
1002
1009
  __table_args__ = (
1003
1010
  UniqueConstraint(
1004
1011
  "experiment_run_id",
@@ -761,13 +761,6 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
761
761
  import anthropic.types as anthropic_types
762
762
 
763
763
  anthropic_messages, system_prompt = self._build_anthropic_messages(messages)
764
- if (
765
- "thinking" in invocation_parameters
766
- and isinstance(invocation_parameters, dict)
767
- and "type" in invocation_parameters["thinking"]
768
- and invocation_parameters["thinking"]["type"] == "enabled"
769
- ):
770
- invocation_parameters.pop("top_p", None)
771
764
  anthropic_params = {
772
765
  "messages": anthropic_messages,
773
766
  "model": self.model_name,
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
13
13
  )
14
14
 
15
15
  from phoenix.server.api.helpers.prompts.models import (
16
+ PromptToolChoiceNone,
16
17
  PromptToolChoiceOneOrMore,
17
18
  PromptToolChoiceSpecificFunctionTool,
18
19
  PromptToolChoiceZeroOrMore,
@@ -23,6 +24,7 @@ class AnthropicToolChoiceConversion:
23
24
  @staticmethod
24
25
  def to_anthropic(
25
26
  obj: Union[
27
+ PromptToolChoiceNone,
26
28
  PromptToolChoiceZeroOrMore,
27
29
  PromptToolChoiceOneOrMore,
28
30
  PromptToolChoiceSpecificFunctionTool,
@@ -44,6 +46,8 @@ class AnthropicToolChoiceConversion:
44
46
  if disable_parallel_tool_use is not None:
45
47
  choice_tool["disable_parallel_tool_use"] = disable_parallel_tool_use
46
48
  return choice_tool
49
+ if obj.type == "none":
50
+ return {"type": "none"}
47
51
  assert_never(obj.type)
48
52
 
49
53
  @staticmethod
@@ -51,6 +55,7 @@ class AnthropicToolChoiceConversion:
51
55
  obj: ToolChoiceParam,
52
56
  ) -> tuple[
53
57
  Union[
58
+ PromptToolChoiceNone,
54
59
  PromptToolChoiceZeroOrMore,
55
60
  PromptToolChoiceOneOrMore,
56
61
  PromptToolChoiceSpecificFunctionTool,
@@ -58,6 +63,7 @@ class AnthropicToolChoiceConversion:
58
63
  Optional[bool],
59
64
  ]:
60
65
  from phoenix.server.api.helpers.prompts.models import (
66
+ PromptToolChoiceNone,
61
67
  PromptToolChoiceOneOrMore,
62
68
  PromptToolChoiceSpecificFunctionTool,
63
69
  PromptToolChoiceZeroOrMore,
@@ -84,4 +90,6 @@ class AnthropicToolChoiceConversion:
84
90
  function_name=obj["name"],
85
91
  )
86
92
  return choice_function_tool, disable_parallel_tool_use
93
+ if obj["type"] == "none":
94
+ return PromptToolChoiceNone(type="none"), None
87
95
  assert_never(obj)
@@ -6,6 +6,7 @@ from typing import Any, Optional
6
6
  from fastapi import APIRouter, HTTPException, Path, Response
7
7
  from pydantic import Field
8
8
  from sqlalchemy import and_, func, select
9
+ from sqlalchemy.orm import joinedload
9
10
  from starlette.requests import Request
10
11
  from starlette.responses import PlainTextResponse
11
12
  from starlette.status import HTTP_404_NOT_FOUND
@@ -321,7 +322,7 @@ async def list_experiments(
321
322
  ]
322
323
  ),
323
324
  )
324
- async def get_experiment_jsonl(
325
+ async def get_experiment_json(
325
326
  request: Request,
326
327
  response: Response,
327
328
  experiment_id: str = Path(..., title="Experiment ID"),
@@ -359,27 +360,35 @@ async def get_experiment_jsonl(
359
360
  .scalar_subquery()
360
361
  )
361
362
  runs_and_revisions = (
362
- await session.execute(
363
- select(models.ExperimentRun, models.DatasetExampleRevision)
364
- .join(
365
- models.DatasetExample,
366
- models.DatasetExample.id == models.ExperimentRun.dataset_example_id,
367
- )
368
- .join(
369
- models.DatasetExampleRevision,
370
- and_(
371
- models.DatasetExample.id
372
- == models.DatasetExampleRevision.dataset_example_id,
373
- models.DatasetExampleRevision.id.in_(revision_ids),
374
- models.DatasetExampleRevision.revision_kind != "DELETE",
375
- ),
376
- )
377
- .where(models.ExperimentRun.experiment_id == experiment_rowid)
378
- .order_by(
379
- models.ExperimentRun.dataset_example_id, models.ExperimentRun.repetition_number
363
+ (
364
+ await session.execute(
365
+ select(models.ExperimentRun, models.DatasetExampleRevision)
366
+ .join(
367
+ models.DatasetExample,
368
+ models.DatasetExample.id == models.ExperimentRun.dataset_example_id,
369
+ )
370
+ .join(
371
+ models.DatasetExampleRevision,
372
+ and_(
373
+ models.DatasetExample.id
374
+ == models.DatasetExampleRevision.dataset_example_id,
375
+ models.DatasetExampleRevision.id.in_(revision_ids),
376
+ models.DatasetExampleRevision.revision_kind != "DELETE",
377
+ ),
378
+ )
379
+ .options(
380
+ joinedload(models.ExperimentRun.annotations),
381
+ )
382
+ .where(models.ExperimentRun.experiment_id == experiment_rowid)
383
+ .order_by(
384
+ models.ExperimentRun.dataset_example_id,
385
+ models.ExperimentRun.repetition_number,
386
+ )
380
387
  )
381
388
  )
382
- ).all()
389
+ .unique()
390
+ .all()
391
+ )
383
392
  if not runs_and_revisions:
384
393
  raise HTTPException(
385
394
  detail=f"Experiment with ID {experiment_globalid} has no runs",
@@ -387,6 +396,22 @@ async def get_experiment_jsonl(
387
396
  )
388
397
  records = []
389
398
  for run, revision in runs_and_revisions:
399
+ annotations = []
400
+ for annotation in run.annotations:
401
+ annotations.append(
402
+ {
403
+ "name": annotation.name,
404
+ "annotator_kind": annotation.annotator_kind,
405
+ "label": annotation.label,
406
+ "score": annotation.score,
407
+ "explanation": annotation.explanation,
408
+ "trace_id": annotation.trace_id,
409
+ "error": annotation.error,
410
+ "metadata": annotation.metadata_,
411
+ "start_time": annotation.start_time.isoformat(),
412
+ "end_time": annotation.end_time.isoformat(),
413
+ }
414
+ )
390
415
  record = {
391
416
  "example_id": str(
392
417
  GlobalID(models.DatasetExample.__name__, str(run.dataset_example_id))
@@ -394,7 +419,7 @@ async def get_experiment_jsonl(
394
419
  "repetition_number": run.repetition_number,
395
420
  "input": revision.input,
396
421
  "reference_output": revision.output,
397
- "output": run.output,
422
+ "output": run.output["task_output"],
398
423
  "error": run.error,
399
424
  "latency_ms": run.latency_ms,
400
425
  "start_time": run.start_time.isoformat(),
@@ -402,6 +427,7 @@ async def get_experiment_jsonl(
402
427
  "trace_id": run.trace_id,
403
428
  "prompt_token_count": run.prompt_token_count,
404
429
  "completion_token_count": run.completion_token_count,
430
+ "annotations": annotations,
405
431
  }
406
432
  records.append(record)
407
433
 
@@ -1,32 +1,28 @@
1
1
  {
2
- "_components-CVzKofML.js": {
3
- "file": "assets/components-CVzKofML.js",
2
+ "_components-CbkVj1OQ.js": {
3
+ "file": "assets/components-CbkVj1OQ.js",
4
4
  "name": "components",
5
5
  "imports": [
6
- "_vendor-VJCVsFqd.js",
7
- "_pages-CVFLHgre.js",
8
- "_vendor-arizeai-BiZagY4a.js",
9
- "_vendor-codemirror-0mUqu36F.js",
6
+ "_vendor-Byx9ZW8r.js",
7
+ "_pages-CyqzCvBY.js",
8
+ "_vendor-arizeai-0BoxbU9V.js",
9
+ "_vendor-codemirror-BX78TDyo.js",
10
10
  "_vendor-three-C-AGeJYv.js"
11
11
  ]
12
12
  },
13
- "_pages-CVFLHgre.js": {
14
- "file": "assets/pages-CVFLHgre.js",
13
+ "_pages-CyqzCvBY.js": {
14
+ "file": "assets/pages-CyqzCvBY.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
- "_vendor-VJCVsFqd.js",
18
- "_vendor-arizeai-BiZagY4a.js",
19
- "_components-CVzKofML.js",
20
- "_vendor-codemirror-0mUqu36F.js",
21
- "_vendor-recharts-CfKQSOmq.js"
17
+ "_vendor-Byx9ZW8r.js",
18
+ "_vendor-arizeai-0BoxbU9V.js",
19
+ "_components-CbkVj1OQ.js",
20
+ "_vendor-codemirror-BX78TDyo.js",
21
+ "_vendor-recharts-BLborQJX.js"
22
22
  ]
23
23
  },
24
- "_vendor-Cg6lcjUC.css": {
25
- "file": "assets/vendor-Cg6lcjUC.css",
26
- "src": "_vendor-Cg6lcjUC.css"
27
- },
28
- "_vendor-VJCVsFqd.js": {
29
- "file": "assets/vendor-VJCVsFqd.js",
24
+ "_vendor-Byx9ZW8r.js": {
25
+ "file": "assets/vendor-Byx9ZW8r.js",
30
26
  "name": "vendor",
31
27
  "imports": [
32
28
  "_vendor-three-C-AGeJYv.js"
@@ -35,33 +31,37 @@
35
31
  "assets/vendor-Cg6lcjUC.css"
36
32
  ]
37
33
  },
38
- "_vendor-arizeai-BiZagY4a.js": {
39
- "file": "assets/vendor-arizeai-BiZagY4a.js",
34
+ "_vendor-Cg6lcjUC.css": {
35
+ "file": "assets/vendor-Cg6lcjUC.css",
36
+ "src": "_vendor-Cg6lcjUC.css"
37
+ },
38
+ "_vendor-arizeai-0BoxbU9V.js": {
39
+ "file": "assets/vendor-arizeai-0BoxbU9V.js",
40
40
  "name": "vendor-arizeai",
41
41
  "imports": [
42
- "_vendor-VJCVsFqd.js"
42
+ "_vendor-Byx9ZW8r.js"
43
43
  ]
44
44
  },
45
- "_vendor-codemirror-0mUqu36F.js": {
46
- "file": "assets/vendor-codemirror-0mUqu36F.js",
45
+ "_vendor-codemirror-BX78TDyo.js": {
46
+ "file": "assets/vendor-codemirror-BX78TDyo.js",
47
47
  "name": "vendor-codemirror",
48
48
  "imports": [
49
- "_vendor-VJCVsFqd.js",
50
- "_vendor-shiki-BsgMOuir.js"
49
+ "_vendor-Byx9ZW8r.js",
50
+ "_vendor-shiki-DpPpUgzv.js"
51
51
  ]
52
52
  },
53
- "_vendor-recharts-CfKQSOmq.js": {
54
- "file": "assets/vendor-recharts-CfKQSOmq.js",
53
+ "_vendor-recharts-BLborQJX.js": {
54
+ "file": "assets/vendor-recharts-BLborQJX.js",
55
55
  "name": "vendor-recharts",
56
56
  "imports": [
57
- "_vendor-VJCVsFqd.js"
57
+ "_vendor-Byx9ZW8r.js"
58
58
  ]
59
59
  },
60
- "_vendor-shiki-BsgMOuir.js": {
61
- "file": "assets/vendor-shiki-BsgMOuir.js",
60
+ "_vendor-shiki-DpPpUgzv.js": {
61
+ "file": "assets/vendor-shiki-DpPpUgzv.js",
62
62
  "name": "vendor-shiki",
63
63
  "imports": [
64
- "_vendor-VJCVsFqd.js"
64
+ "_vendor-Byx9ZW8r.js"
65
65
  ]
66
66
  },
67
67
  "_vendor-three-C-AGeJYv.js": {
@@ -69,19 +69,19 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-Ctff7oin.js",
72
+ "file": "assets/index-BNK6eNx3.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
- "_vendor-VJCVsFqd.js",
78
- "_vendor-arizeai-BiZagY4a.js",
79
- "_pages-CVFLHgre.js",
80
- "_components-CVzKofML.js",
77
+ "_vendor-Byx9ZW8r.js",
78
+ "_vendor-arizeai-0BoxbU9V.js",
79
+ "_pages-CyqzCvBY.js",
80
+ "_components-CbkVj1OQ.js",
81
81
  "_vendor-three-C-AGeJYv.js",
82
- "_vendor-codemirror-0mUqu36F.js",
83
- "_vendor-shiki-BsgMOuir.js",
84
- "_vendor-recharts-CfKQSOmq.js"
82
+ "_vendor-codemirror-BX78TDyo.js",
83
+ "_vendor-shiki-DpPpUgzv.js",
84
+ "_vendor-recharts-BLborQJX.js"
85
85
  ]
86
86
  }
87
87
  }