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

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 5.3.0
3
+ Version: 5.4.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
@@ -58,6 +58,7 @@ Requires-Dist: wrapt
58
58
  Provides-Extra: container
59
59
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
60
60
  Requires-Dist: numba>=0.60.0; extra == 'container'
61
+ Requires-Dist: openai>=1.0.0; extra == 'container'
61
62
  Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
62
63
  Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'container'
63
64
  Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
@@ -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=aTxhcOA1pZHB6U-B3TEcp6fqDF5oT0xCUvEUNMZVTUQ,5175
8
8
  phoenix/settings.py,sha256=ht-0oN-sMV6SPXrk7Tu1EZlngpAYkGNLYPhO8DyrdQI,661
9
- phoenix/version.py,sha256=6-6zx35M00wOupvevZ13oAoDaUlHqsp_N-Ei-zUAwTI,22
9
+ phoenix/version.py,sha256=xjYaBGUFGg0kGZj_WhuoFyPD8NILPsr79SaMwmYQGSg,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=km_a--PBHOuA337ClRw9xqhOHhrUT6Rl9pz_zV0JYkQ,4843
@@ -94,7 +94,7 @@ phoenix/server/api/exceptions.py,sha256=TA0JuY2YRnj35qGuMSQ8d0ToHum9gWm9W--3fSKH
94
94
  phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
95
95
  phoenix/server/api/queries.py,sha256=sE_w4X9sz0QJBGNQbOMgiZiKpR24jvxCpv6AQeGeE9Y,27153
96
96
  phoenix/server/api/schema.py,sha256=JKxcZd0UBX6VnVic9tnKAzehJ2fGYNWAu6Gr1tR1PMI,637
97
- phoenix/server/api/subscriptions.py,sha256=Ck2IrFcHaqipeHY68up4fXMHcfgjh6J5s9XbDVQxJBA,15934
97
+ phoenix/server/api/subscriptions.py,sha256=MOxA0iTAIPTI_yKUOitRXiNP4A2cuEEytT9ql9uqUdM,17258
98
98
  phoenix/server/api/utils.py,sha256=Kl47G-1A7QKTDrc75BU2QK6HupsG6MWuXxy351FOfKQ,858
99
99
  phoenix/server/api/dataloaders/__init__.py,sha256=jNYvfXjnZzgA2HWTG7AZdqWGla3ZysBUDUei8Zkz6N8,3290
100
100
  phoenix/server/api/dataloaders/annotation_summaries.py,sha256=Wv8AORZoGd5TJ4Y-em8iqJu87AMpZP7lWOTr-SML-x8,5560
@@ -264,15 +264,15 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
264
264
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
265
265
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
266
266
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
267
- phoenix/server/static/.vite/manifest.json,sha256=U6-H3n01tSVeVy-l94OEK3EruoVfOa9qX_vwKmkgetU,1929
268
- phoenix/server/static/assets/components-DwERj42u.js,sha256=_UuYjCrj_FQcxrE9bS2L5OdRWjHRYSpaeqlyKz1uGEI,272882
269
- phoenix/server/static/assets/index-CyOjvLOr.js,sha256=F-_8kYJi1I6xjcpaGnZnv9GBXlbmcd9BbyKRNe8TOzI,7162
270
- phoenix/server/static/assets/pages-BNYMd7SU.js,sha256=dT3K-yhvV7kZtBmut5iiNTCbO_LvaMDKD27XCJm95oc,585995
271
- phoenix/server/static/assets/vendor-D-NIjePD.js,sha256=tba6ip4z7SOnhlPkBkyt9CUJiDDzZwi6IRKCnbwHvuA,10898294
267
+ phoenix/server/static/.vite/manifest.json,sha256=_n7ZFPqjikT-PaJRCfuQH6uAKVJ75DDy-yVhvoHT4HQ,1929
268
+ phoenix/server/static/assets/components-8zh9kCOG.js,sha256=Dw2GUia4f0fu5DFbXLKi7bqmuTfSG3_XFdWEiIdPCmU,272304
269
+ phoenix/server/static/assets/index-Ci93KI-L.js,sha256=_Pccmiyc3Ak2moJ_drkresjx0iwZHa1qrfUoZ1NoYUM,7162
270
+ phoenix/server/static/assets/pages-CFNU-U_5.js,sha256=JPZJBIh3FxrJIsSOEr2eIXY1dBRwymnAXI-LMUkVzuI,590345
271
+ phoenix/server/static/assets/vendor-6IcPAw_j.js,sha256=kA0afCcdEfjdTlLbngra3925MiR8wVgYF5d7XBBViXQ,10898278
272
272
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
273
- phoenix/server/static/assets/vendor-arizeai-DoY5jUTO.js,sha256=RkuJgULcP6CtTAhyLSzI9bNRiJnq84MwkYCF6MQ2sCw,306507
274
- phoenix/server/static/assets/vendor-codemirror-CIhY_nEU.js,sha256=6g23qgUXzCj6VuoJC9Uhq7Y9qb3_WN3u767NLDhfGkM,392703
275
- phoenix/server/static/assets/vendor-recharts-Dgcm35Jq.js,sha256=9ifuAYGnEKtBtbTV9sFe95rP4e1NR9j8DOVEb-hRKzM,282859
273
+ phoenix/server/static/assets/vendor-arizeai-uC2sozJ6.js,sha256=o5Su5D9_jBumfVpDXwuQC7Hzpkze4LlvVA9t0Pvh1pk,306512
274
+ phoenix/server/static/assets/vendor-codemirror-DVE2_WBr.js,sha256=AxNgfQZIek1HfON1zHobnrzHzgBeLHWu6GCltpvct9U,392705
275
+ phoenix/server/static/assets/vendor-recharts-DwrexFA4.js,sha256=QSkNeG0tfn_fdrjYf-dRBXVygFjusBsyxzQ-lepdH8w,282859
276
276
  phoenix/server/static/assets/vendor-three-DwGkEfCM.js,sha256=0D12ZgKzfKCTSdSTKJBFR2RZO_xxeMXrqDp0AszZqHY,620972
277
277
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
278
  phoenix/server/templates/index.html,sha256=ULNlp0-agU8pH4wCIapE1goqnwkbctAoQRgrfwH_irg,4379
@@ -286,7 +286,7 @@ phoenix/trace/attributes.py,sha256=B_OrzVaxZwFkrAFXZyicYoIti1UdUysURsvUS2GyW1U,1
286
286
  phoenix/trace/errors.py,sha256=wB1z8qdPckngdfU-TORToekvg3344oNFAA83_hC2yFY,180
287
287
  phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKyttYdw-ddvPOk,1048
288
288
  phoenix/trace/exporter.py,sha256=bUXh8fjJIbHurrnt4bAm-cCWqUN5FqNsIc8DZzzklkQ,4695
289
- phoenix/trace/fixtures.py,sha256=qKYXz33MD7FYkSni7ccyFjXMV5iub7serp1zMGqh1P8,18982
289
+ phoenix/trace/fixtures.py,sha256=fa2yMcjX4sshT88Ec4ce0EpSngfZQ9vXVcssNbcyYAU,19202
290
290
  phoenix/trace/otel.py,sha256=c3Iy9sUTYBliwYfChZIQ9_6xTti1BijY7t_4s2tqbyw,10028
291
291
  phoenix/trace/projects.py,sha256=2BwlNjFE-uwpqYtCu5YyBiYZk9wRPpM13vh3-Cv7GkA,2157
292
292
  phoenix/trace/schemas.py,sha256=HpWSyzec0yDHEQXEDuwyLbhpvKrqkGps8BJqGiIFj8Y,5978
@@ -313,9 +313,9 @@ phoenix/utilities/project.py,sha256=8IJuMM4yUMoooPi37sictGj8Etu9rGmq6RFtc9848cQ,
313
313
  phoenix/utilities/re.py,sha256=nr_B0txj_7CXc45953X6vr2KCRSWMuaXJSEkL8s8Sjc,2036
314
314
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
315
  phoenix/utilities/template_formatters.py,sha256=zWY6gjAMmspYqlmn-ZjKeY5SExylwePk7a1BUdDxVGI,2236
316
- arize_phoenix-5.3.0.dist-info/METADATA,sha256=dUAQVYFPQEpsSlvr7nWc3ggbxJ8D9M4DQCEdAI7Y3Wo,12001
317
- arize_phoenix-5.3.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
318
- arize_phoenix-5.3.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
319
- arize_phoenix-5.3.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
320
- arize_phoenix-5.3.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
321
- arize_phoenix-5.3.0.dist-info/RECORD,,
316
+ arize_phoenix-5.4.0.dist-info/METADATA,sha256=bwyk52R9lADobAHiz327hsDxKfDqIdHsTcp87xFCK_Y,12052
317
+ arize_phoenix-5.4.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
318
+ arize_phoenix-5.4.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
319
+ arize_phoenix-5.4.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
320
+ arize_phoenix-5.4.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
321
+ arize_phoenix-5.4.0.dist-info/RECORD,,
@@ -45,6 +45,7 @@ from phoenix.server.api.input_types.ChatCompletionMessageInput import ChatComple
45
45
  from phoenix.server.api.input_types.InvocationParameters import InvocationParameters
46
46
  from phoenix.server.api.types.ChatCompletionMessageRole import ChatCompletionMessageRole
47
47
  from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
48
+ from phoenix.server.api.types.Span import Span, to_gql_span
48
49
  from phoenix.server.dml_event import SpanInsertEvent
49
50
  from phoenix.trace.attributes import unflatten
50
51
  from phoenix.utilities.json import jsonify
@@ -55,6 +56,7 @@ from phoenix.utilities.template_formatters import (
55
56
  )
56
57
 
57
58
  if TYPE_CHECKING:
59
+ from openai.types import CompletionUsage
58
60
  from openai.types.chat import (
59
61
  ChatCompletionMessageParam,
60
62
  )
@@ -93,8 +95,14 @@ class ToolCallChunk:
93
95
  function: FunctionCallChunk
94
96
 
95
97
 
96
- ChatCompletionChunk: TypeAlias = Annotated[
97
- Union[TextChunk, ToolCallChunk], strawberry.union("ChatCompletionChunk")
98
+ @strawberry.type
99
+ class FinishedChatCompletion:
100
+ span: Span
101
+
102
+
103
+ ChatCompletionSubscriptionPayload: TypeAlias = Annotated[
104
+ Union[TextChunk, ToolCallChunk, FinishedChatCompletion],
105
+ strawberry.union("ChatCompletionSubscriptionPayload"),
98
106
  ]
99
107
 
100
108
 
@@ -159,8 +167,9 @@ class Subscription:
159
167
  @strawberry.subscription
160
168
  async def chat_completion(
161
169
  self, info: Info[Context, None], input: ChatCompletionInput
162
- ) -> AsyncIterator[ChatCompletionChunk]:
170
+ ) -> AsyncIterator[ChatCompletionSubscriptionPayload]:
163
171
  from openai import NOT_GIVEN, AsyncAzureOpenAI, AsyncOpenAI
172
+ from openai.types.chat import ChatCompletionStreamOptionsParam
164
173
 
165
174
  client: Union[AsyncAzureOpenAI, AsyncOpenAI]
166
175
 
@@ -208,14 +217,19 @@ class Subscription:
208
217
  text_chunks: List[TextChunk] = []
209
218
  tool_call_chunks: DefaultDict[ToolCallIndex, List[ToolCallChunk]] = defaultdict(list)
210
219
  role: Optional[str] = None
220
+ token_usage: Optional[CompletionUsage] = None
211
221
  async for chunk in await client.chat.completions.create(
212
222
  messages=openai_messages,
213
223
  model=input.model.name,
214
224
  stream=True,
215
225
  tools=input.tools or NOT_GIVEN,
226
+ stream_options=ChatCompletionStreamOptionsParam(include_usage=True),
216
227
  **invocation_parameters,
217
228
  ):
218
229
  response_chunks.append(chunk)
230
+ if (usage := chunk.usage) is not None:
231
+ token_usage = usage
232
+ continue
219
233
  choice = chunk.choices[0]
220
234
  delta = choice.delta
221
235
  if role is None:
@@ -246,6 +260,7 @@ class Subscription:
246
260
  dict(
247
261
  chain(
248
262
  _output_value_and_mime_type(response_chunks),
263
+ _llm_token_counts(token_usage) if token_usage is not None else [],
249
264
  _llm_output_messages(text_chunks, tool_call_chunks),
250
265
  )
251
266
  )
@@ -257,6 +272,8 @@ class Subscription:
257
272
  assert (attributes := finished_span.attributes) is not None
258
273
  start_time = _datetime(epoch_nanoseconds=finished_span.start_time)
259
274
  end_time = _datetime(epoch_nanoseconds=finished_span.end_time)
275
+ prompt_tokens = token_usage.prompt_tokens if token_usage is not None else 0
276
+ completion_tokens = token_usage.completion_tokens if token_usage is not None else 0
260
277
  trace_id = _hex(finished_span.context.trace_id)
261
278
  span_id = _hex(finished_span.context.span_id)
262
279
  status = finished_span.status
@@ -274,36 +291,35 @@ class Subscription:
274
291
  description="Traces from prompt playground",
275
292
  )
276
293
  )
277
- trace_rowid = await session.scalar(
278
- insert(models.Trace)
279
- .returning(models.Trace.id)
280
- .values(
281
- project_rowid=playground_project_id,
282
- trace_id=trace_id,
283
- start_time=start_time,
284
- end_time=end_time,
285
- )
294
+ playground_trace = models.Trace(
295
+ project_rowid=playground_project_id,
296
+ trace_id=trace_id,
297
+ start_time=start_time,
298
+ end_time=end_time,
286
299
  )
287
- await session.execute(
288
- insert(models.Span).values(
289
- trace_rowid=trace_rowid,
290
- span_id=span_id,
291
- parent_id=None,
292
- name=span_name,
293
- span_kind=LLM,
294
- start_time=start_time,
295
- end_time=end_time,
296
- attributes=unflatten(attributes.items()),
297
- events=finished_span.events,
298
- status_code=status.status_code.name,
299
- status_message=status.description or "",
300
- cumulative_error_count=int(not status.is_ok),
301
- cumulative_llm_token_count_prompt=0,
302
- cumulative_llm_token_count_completion=0,
303
- llm_token_count_prompt=0,
304
- llm_token_count_completion=0,
305
- )
300
+ playground_span = models.Span(
301
+ trace_rowid=playground_trace.id,
302
+ span_id=span_id,
303
+ parent_id=None,
304
+ name=span_name,
305
+ span_kind=LLM,
306
+ start_time=start_time,
307
+ end_time=end_time,
308
+ attributes=unflatten(attributes.items()),
309
+ events=finished_span.events,
310
+ status_code=status.status_code.name,
311
+ status_message=status.description or "",
312
+ cumulative_error_count=int(not status.is_ok),
313
+ cumulative_llm_token_count_prompt=prompt_tokens,
314
+ cumulative_llm_token_count_completion=completion_tokens,
315
+ llm_token_count_prompt=prompt_tokens,
316
+ llm_token_count_completion=completion_tokens,
317
+ trace=playground_trace,
306
318
  )
319
+ session.add(playground_trace)
320
+ session.add(playground_span)
321
+ await session.flush()
322
+ yield FinishedChatCompletion(span=to_gql_span(playground_span))
307
323
  info.context.event_queue.put(SpanInsertEvent(ids=(playground_project_id,)))
308
324
 
309
325
 
@@ -324,6 +340,12 @@ def _llm_tools(tools: List[JSONScalarType]) -> Iterator[Tuple[str, Any]]:
324
340
  yield f"{LLM_TOOLS}.{tool_index}.{TOOL_JSON_SCHEMA}", json.dumps(tool)
325
341
 
326
342
 
343
+ def _llm_token_counts(usage: "CompletionUsage") -> Iterator[Tuple[str, Any]]:
344
+ yield LLM_TOKEN_COUNT_PROMPT, usage.prompt_tokens
345
+ yield LLM_TOKEN_COUNT_COMPLETION, usage.completion_tokens
346
+ yield LLM_TOKEN_COUNT_TOTAL, usage.total_tokens
347
+
348
+
327
349
  def _input_value_and_mime_type(input: ChatCompletionInput) -> Iterator[Tuple[str, Any]]:
328
350
  assert any(field.name == (api_key := "api_key") for field in fields(ChatCompletionInput))
329
351
  yield INPUT_MIME_TYPE, JSON
@@ -419,6 +441,9 @@ LLM_OUTPUT_MESSAGES = SpanAttributes.LLM_OUTPUT_MESSAGES
419
441
  LLM_MODEL_NAME = SpanAttributes.LLM_MODEL_NAME
420
442
  LLM_INVOCATION_PARAMETERS = SpanAttributes.LLM_INVOCATION_PARAMETERS
421
443
  LLM_TOOLS = SpanAttributes.LLM_TOOLS
444
+ LLM_TOKEN_COUNT_PROMPT = SpanAttributes.LLM_TOKEN_COUNT_PROMPT
445
+ LLM_TOKEN_COUNT_COMPLETION = SpanAttributes.LLM_TOKEN_COUNT_COMPLETION
446
+ LLM_TOKEN_COUNT_TOTAL = SpanAttributes.LLM_TOKEN_COUNT_TOTAL
422
447
 
423
448
  MESSAGE_CONTENT = MessageAttributes.MESSAGE_CONTENT
424
449
  MESSAGE_ROLE = MessageAttributes.MESSAGE_ROLE
@@ -1,32 +1,32 @@
1
1
  {
2
- "_components-DwERj42u.js": {
3
- "file": "assets/components-DwERj42u.js",
2
+ "_components-8zh9kCOG.js": {
3
+ "file": "assets/components-8zh9kCOG.js",
4
4
  "name": "components",
5
5
  "imports": [
6
- "_vendor-D-NIjePD.js",
7
- "_vendor-arizeai-DoY5jUTO.js",
8
- "_pages-BNYMd7SU.js",
6
+ "_vendor-6IcPAw_j.js",
7
+ "_vendor-arizeai-uC2sozJ6.js",
8
+ "_pages-CFNU-U_5.js",
9
9
  "_vendor-three-DwGkEfCM.js",
10
- "_vendor-codemirror-CIhY_nEU.js"
10
+ "_vendor-codemirror-DVE2_WBr.js"
11
11
  ]
12
12
  },
13
- "_pages-BNYMd7SU.js": {
14
- "file": "assets/pages-BNYMd7SU.js",
13
+ "_pages-CFNU-U_5.js": {
14
+ "file": "assets/pages-CFNU-U_5.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
- "_vendor-D-NIjePD.js",
18
- "_vendor-arizeai-DoY5jUTO.js",
19
- "_components-DwERj42u.js",
20
- "_vendor-recharts-Dgcm35Jq.js",
21
- "_vendor-codemirror-CIhY_nEU.js"
17
+ "_vendor-6IcPAw_j.js",
18
+ "_vendor-arizeai-uC2sozJ6.js",
19
+ "_components-8zh9kCOG.js",
20
+ "_vendor-recharts-DwrexFA4.js",
21
+ "_vendor-codemirror-DVE2_WBr.js"
22
22
  ]
23
23
  },
24
24
  "_vendor-!~{003}~.js": {
25
25
  "file": "assets/vendor-DxkFTwjz.css",
26
26
  "src": "_vendor-!~{003}~.js"
27
27
  },
28
- "_vendor-D-NIjePD.js": {
29
- "file": "assets/vendor-D-NIjePD.js",
28
+ "_vendor-6IcPAw_j.js": {
29
+ "file": "assets/vendor-6IcPAw_j.js",
30
30
  "name": "vendor",
31
31
  "imports": [
32
32
  "_vendor-three-DwGkEfCM.js"
@@ -35,25 +35,25 @@
35
35
  "assets/vendor-DxkFTwjz.css"
36
36
  ]
37
37
  },
38
- "_vendor-arizeai-DoY5jUTO.js": {
39
- "file": "assets/vendor-arizeai-DoY5jUTO.js",
38
+ "_vendor-arizeai-uC2sozJ6.js": {
39
+ "file": "assets/vendor-arizeai-uC2sozJ6.js",
40
40
  "name": "vendor-arizeai",
41
41
  "imports": [
42
- "_vendor-D-NIjePD.js"
42
+ "_vendor-6IcPAw_j.js"
43
43
  ]
44
44
  },
45
- "_vendor-codemirror-CIhY_nEU.js": {
46
- "file": "assets/vendor-codemirror-CIhY_nEU.js",
45
+ "_vendor-codemirror-DVE2_WBr.js": {
46
+ "file": "assets/vendor-codemirror-DVE2_WBr.js",
47
47
  "name": "vendor-codemirror",
48
48
  "imports": [
49
- "_vendor-D-NIjePD.js"
49
+ "_vendor-6IcPAw_j.js"
50
50
  ]
51
51
  },
52
- "_vendor-recharts-Dgcm35Jq.js": {
53
- "file": "assets/vendor-recharts-Dgcm35Jq.js",
52
+ "_vendor-recharts-DwrexFA4.js": {
53
+ "file": "assets/vendor-recharts-DwrexFA4.js",
54
54
  "name": "vendor-recharts",
55
55
  "imports": [
56
- "_vendor-D-NIjePD.js"
56
+ "_vendor-6IcPAw_j.js"
57
57
  ]
58
58
  },
59
59
  "_vendor-three-DwGkEfCM.js": {
@@ -61,18 +61,18 @@
61
61
  "name": "vendor-three"
62
62
  },
63
63
  "index.tsx": {
64
- "file": "assets/index-CyOjvLOr.js",
64
+ "file": "assets/index-Ci93KI-L.js",
65
65
  "name": "index",
66
66
  "src": "index.tsx",
67
67
  "isEntry": true,
68
68
  "imports": [
69
- "_vendor-D-NIjePD.js",
70
- "_vendor-arizeai-DoY5jUTO.js",
71
- "_pages-BNYMd7SU.js",
72
- "_components-DwERj42u.js",
69
+ "_vendor-6IcPAw_j.js",
70
+ "_vendor-arizeai-uC2sozJ6.js",
71
+ "_pages-CFNU-U_5.js",
72
+ "_components-8zh9kCOG.js",
73
73
  "_vendor-three-DwGkEfCM.js",
74
- "_vendor-recharts-Dgcm35Jq.js",
75
- "_vendor-codemirror-CIhY_nEU.js"
74
+ "_vendor-recharts-DwrexFA4.js",
75
+ "_vendor-codemirror-DVE2_WBr.js"
76
76
  ]
77
77
  }
78
78
  }