synth-ai 0.2.10__py3-none-any.whl → 0.2.12__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 synth-ai might be problematic. Click here for more details.
- examples/multi_step/task_app_config_notes.md +488 -0
- examples/warming_up_to_rl/configs/eval_stepwise_complex.toml +33 -0
- examples/warming_up_to_rl/configs/eval_stepwise_consistent.toml +26 -0
- examples/warming_up_to_rl/configs/eval_stepwise_per_achievement.toml +36 -0
- examples/warming_up_to_rl/configs/eval_stepwise_simple.toml +30 -0
- examples/warming_up_to_rl/run_eval.py +142 -25
- examples/warming_up_to_rl/task_app/synth_envs_hosted/rollout.py +146 -2
- synth_ai/api/train/builders.py +25 -14
- synth_ai/api/train/cli.py +29 -6
- synth_ai/api/train/env_resolver.py +18 -19
- synth_ai/api/train/supported_algos.py +8 -5
- synth_ai/api/train/utils.py +6 -1
- synth_ai/cli/__init__.py +4 -2
- synth_ai/cli/_storage.py +19 -0
- synth_ai/cli/balance.py +14 -2
- synth_ai/cli/calc.py +37 -22
- synth_ai/cli/legacy_root_backup.py +12 -14
- synth_ai/cli/recent.py +12 -7
- synth_ai/cli/status.py +4 -3
- synth_ai/cli/task_apps.py +143 -137
- synth_ai/cli/traces.py +4 -3
- synth_ai/cli/watch.py +3 -2
- synth_ai/jobs/client.py +15 -3
- synth_ai/task/server.py +14 -7
- synth_ai/tracing_v3/decorators.py +51 -26
- synth_ai/tracing_v3/examples/basic_usage.py +12 -7
- synth_ai/tracing_v3/llm_call_record_helpers.py +107 -53
- synth_ai/tracing_v3/replica_sync.py +8 -4
- synth_ai/tracing_v3/storage/utils.py +11 -9
- synth_ai/tracing_v3/turso/__init__.py +12 -0
- synth_ai/tracing_v3/turso/daemon.py +2 -1
- synth_ai/tracing_v3/turso/native_manager.py +28 -15
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/METADATA +4 -2
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/RECORD +38 -31
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/WHEEL +0 -0
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/entry_points.txt +0 -0
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/licenses/LICENSE +0 -0
- {synth_ai-0.2.10.dist-info → synth_ai-0.2.12.dist-info}/top_level.txt +0 -0
|
@@ -11,18 +11,14 @@ import asyncio
|
|
|
11
11
|
import json
|
|
12
12
|
import logging
|
|
13
13
|
import re
|
|
14
|
+
from collections.abc import Callable
|
|
14
15
|
from dataclasses import asdict, dataclass
|
|
15
16
|
from datetime import UTC, datetime
|
|
16
|
-
from typing import Any
|
|
17
|
+
from typing import TYPE_CHECKING, Any, cast
|
|
17
18
|
|
|
18
19
|
import libsql
|
|
19
20
|
from sqlalchemy.engine import make_url
|
|
20
21
|
|
|
21
|
-
try: # pragma: no cover - exercised only when pandas present
|
|
22
|
-
import pandas as pd # type: ignore
|
|
23
|
-
except Exception: # pragma: no cover
|
|
24
|
-
pd = None # type: ignore[assignment]
|
|
25
|
-
|
|
26
22
|
from ..abstractions import (
|
|
27
23
|
EnvironmentEvent,
|
|
28
24
|
LMCAISEvent,
|
|
@@ -34,6 +30,24 @@ from ..config import CONFIG
|
|
|
34
30
|
from ..storage.base import TraceStorage
|
|
35
31
|
from .models import analytics_views
|
|
36
32
|
|
|
33
|
+
if TYPE_CHECKING:
|
|
34
|
+
from sqlite3 import Connection as LibsqlConnection
|
|
35
|
+
else: # pragma: no cover - runtime fallback for typing only
|
|
36
|
+
LibsqlConnection = Any # type: ignore[assignment]
|
|
37
|
+
|
|
38
|
+
_LIBSQL_CONNECT_ATTR = getattr(libsql, "connect", None)
|
|
39
|
+
if _LIBSQL_CONNECT_ATTR is None: # pragma: no cover - defensive guard
|
|
40
|
+
raise RuntimeError("libsql.connect is required for NativeLibsqlTraceManager")
|
|
41
|
+
_libsql_connect: Callable[..., LibsqlConnection] = cast(
|
|
42
|
+
Callable[..., LibsqlConnection],
|
|
43
|
+
_LIBSQL_CONNECT_ATTR,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
try: # pragma: no cover - exercised only when pandas present
|
|
47
|
+
import pandas as pd # type: ignore
|
|
48
|
+
except Exception: # pragma: no cover
|
|
49
|
+
pd = None # type: ignore[assignment]
|
|
50
|
+
|
|
37
51
|
logger = logging.getLogger(__name__)
|
|
38
52
|
|
|
39
53
|
|
|
@@ -66,9 +80,8 @@ def _resolve_connection_target(db_url: str | None, auth_token: str | None) -> _C
|
|
|
66
80
|
# Fallback to SQLAlchemy URL parsing for anything else we missed.
|
|
67
81
|
try:
|
|
68
82
|
parsed = make_url(url)
|
|
69
|
-
if parsed.drivername.startswith("sqlite"):
|
|
70
|
-
|
|
71
|
-
return _ConnectionTarget(database=parsed.database, auth_token=auth_token)
|
|
83
|
+
if parsed.drivername.startswith("sqlite") and parsed.database:
|
|
84
|
+
return _ConnectionTarget(database=parsed.database, auth_token=auth_token)
|
|
72
85
|
if parsed.drivername.startswith("libsql"):
|
|
73
86
|
database = parsed.render_as_string(hide_password=False)
|
|
74
87
|
return _ConnectionTarget(database=database, sync_url=database, auth_token=auth_token)
|
|
@@ -314,12 +327,12 @@ class NativeLibsqlTraceManager(TraceStorage):
|
|
|
314
327
|
):
|
|
315
328
|
self._config_auth_token = auth_token
|
|
316
329
|
self._target = _resolve_connection_target(db_url, auth_token)
|
|
317
|
-
self._conn:
|
|
330
|
+
self._conn: LibsqlConnection | None = None
|
|
318
331
|
self._conn_lock = asyncio.Lock()
|
|
319
332
|
self._op_lock = asyncio.Lock()
|
|
320
333
|
self._initialized = False
|
|
321
334
|
|
|
322
|
-
def _open_connection(self) ->
|
|
335
|
+
def _open_connection(self) -> LibsqlConnection:
|
|
323
336
|
"""Open a libsql connection for the resolved target."""
|
|
324
337
|
kwargs: dict[str, Any] = {}
|
|
325
338
|
if self._target.sync_url and self._target.sync_url.startswith("libsql://"):
|
|
@@ -329,7 +342,7 @@ class NativeLibsqlTraceManager(TraceStorage):
|
|
|
329
342
|
# Disable automatic background sync; ReplicaSync drives this explicitly.
|
|
330
343
|
kwargs.setdefault("sync_interval", 0)
|
|
331
344
|
logger.debug("Opening libsql connection to %s", self._target.database)
|
|
332
|
-
return
|
|
345
|
+
return _libsql_connect(self._target.database, **kwargs)
|
|
333
346
|
|
|
334
347
|
async def initialize(self):
|
|
335
348
|
"""Initialise the backend."""
|
|
@@ -493,7 +506,7 @@ class NativeLibsqlTraceManager(TraceStorage):
|
|
|
493
506
|
return None
|
|
494
507
|
|
|
495
508
|
session_columns = ["session_id", "created_at", "num_timesteps", "num_events", "num_messages", "metadata"]
|
|
496
|
-
session_data = dict(zip(session_columns, session_row))
|
|
509
|
+
session_data = dict(zip(session_columns, session_row, strict=True))
|
|
497
510
|
|
|
498
511
|
timestep_cursor = conn.execute(
|
|
499
512
|
"""
|
|
@@ -608,10 +621,10 @@ class NativeLibsqlTraceManager(TraceStorage):
|
|
|
608
621
|
|
|
609
622
|
if not rows:
|
|
610
623
|
if pd is not None:
|
|
611
|
-
return pd.DataFrame(columns=
|
|
624
|
+
return pd.DataFrame(columns=list(columns))
|
|
612
625
|
return []
|
|
613
626
|
|
|
614
|
-
records = [dict(zip(columns, row)) for row in rows]
|
|
627
|
+
records = [dict(zip(columns, row, strict=True)) for row in rows]
|
|
615
628
|
if pd is not None:
|
|
616
629
|
return pd.DataFrame(records)
|
|
617
630
|
return records
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: synth-ai
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
4
4
|
Summary: RL as a service SDK - Core AI functionality and tracing
|
|
5
5
|
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -79,7 +79,7 @@ Dynamic: license-file
|
|
|
79
79
|
|
|
80
80
|
[](https://www.python.org/)
|
|
81
81
|
[](LICENSE)
|
|
82
|
-
[](https://pypi.org/project/synth-ai/)
|
|
83
83
|

|
|
84
84
|

|
|
85
85
|

|
|
@@ -88,6 +88,8 @@ Docs: [Synth‑AI Documentation](https://docs.usesynth.ai/welcome/introduction)
|
|
|
88
88
|
|
|
89
89
|
Fast and effective reinforcement learning for agents, via an API
|
|
90
90
|
|
|
91
|
+
> Latest: 0.2.10 published to PyPI (uv publish)
|
|
92
|
+
|
|
91
93
|
## Highlights
|
|
92
94
|
|
|
93
95
|
- Easily scale gpu topologies - train on 3 a10gs or 8 H100s (multi-node available upon request)
|
|
@@ -4,6 +4,7 @@ examples/crafter_debug_render.py,sha256=McPkX8z6ffANOfoR0Xw26h81HNHtT0F5y4bzUhwY
|
|
|
4
4
|
examples/run_crafter_demo.sh,sha256=7FNvooSgq-ezccGy5j_h_uRXObiQtcnybPcTwaVGDpo,392
|
|
5
5
|
examples/dev/qwen3_32b_qlora_4xh100.toml,sha256=YXLo1I_eHamUHMjIvsD9Tx3_HXcLfjlasd6X2BF7i5g,766
|
|
6
6
|
examples/multi_step/crafter_rl_lora.md,sha256=yv7C7lyBELT8OWufi8PtG-Z7Hqxr5KxVTmK8XUxOAIw,1033
|
|
7
|
+
examples/multi_step/task_app_config_notes.md,sha256=nCyJYZwPI_5ifmuNw_cJATeRaO0aikk67tbG_J4WQns,21841
|
|
7
8
|
examples/qwen_coder/README.md,sha256=xhoGKdIlRt8fO3F6HTpq6rzw3bs4ezDsGcRBNCz90Fs,3145
|
|
8
9
|
examples/qwen_coder/_shared.py,sha256=oGUmx7gKkgkmToXHXAPocG72YKO9WGRjguVhmX3XE7s,3557
|
|
9
10
|
examples/qwen_coder/generate_dataset.py,sha256=bfa1LMvV7jd2GmNkFE5rn2K1SETNEzMjv7SXD0C24K0,4484
|
|
@@ -84,7 +85,7 @@ examples/warming_up_to_rl/export_trace_sft.py,sha256=qcVOgZduYYImDv2xs-h_CoyMpX_
|
|
|
84
85
|
examples/warming_up_to_rl/groq_test.py,sha256=vffVVTwQNypkqppxMLy17ySafoD2WKIK-Qf9w13lbyE,3138
|
|
85
86
|
examples/warming_up_to_rl/manage_secrets.py,sha256=qLe_zglOLCd0dxPPCyQQ9CnhGkvtLOkBrZ0Xd4mmnIw,4372
|
|
86
87
|
examples/warming_up_to_rl/readme.md,sha256=u2KX7grlDnOMRRrC3vzTej1K0OOmTdx5LHs2opTfLt4,6431
|
|
87
|
-
examples/warming_up_to_rl/run_eval.py,sha256
|
|
88
|
+
examples/warming_up_to_rl/run_eval.py,sha256=-jd7_TtAyNKiHyH92slvDF-JzfCDH23M8q5CK-_usCo,26212
|
|
88
89
|
examples/warming_up_to_rl/run_fft_and_save.py,sha256=RVbMuHUB0F7h_CO26hvAhEx5W3fqxVvokb4VlOiR6RQ,15095
|
|
89
90
|
examples/warming_up_to_rl/run_local_rollout.py,sha256=uRfCR1E066fF6cQTajllb0Dzv0sU4iT6QOitZ_jRVHw,8783
|
|
90
91
|
examples/warming_up_to_rl/run_local_rollout_modal.py,sha256=oGHqSCNUSAluJFlVkOKItONWh0wUu4UxRXmqnkD37E8,8948
|
|
@@ -97,6 +98,10 @@ examples/warming_up_to_rl/configs/crafter_fft_4b.toml,sha256=q_cnU3P-eGG_VFOepw9
|
|
|
97
98
|
examples/warming_up_to_rl/configs/eval_fft_qwen4b.toml,sha256=YP4HLWDh6iIvw6McPXw5kK1RUFQF4dvKP4yH5bHT5nI,678
|
|
98
99
|
examples/warming_up_to_rl/configs/eval_groq_qwen32b.toml,sha256=zQi31JYa83kW-ceEqDZi-7oajsCmEPrlJR57zN5ygO8,340
|
|
99
100
|
examples/warming_up_to_rl/configs/eval_modal_qwen4b.toml,sha256=6eeU1GVvK1cYSEuGXk-AhOwJLgRcf74CTOI5XlqNYBc,817
|
|
101
|
+
examples/warming_up_to_rl/configs/eval_stepwise_complex.toml,sha256=sTfzF4z9IXFmReftdgHMw5k3aH78bdpSlF_ANyovsdo,941
|
|
102
|
+
examples/warming_up_to_rl/configs/eval_stepwise_consistent.toml,sha256=N5xt_9_AaVvJX6up90bSuXpF8Yt-cGJfmTA-Au3NY_4,591
|
|
103
|
+
examples/warming_up_to_rl/configs/eval_stepwise_per_achievement.toml,sha256=ly42h8kIeSX8Y9mygC8mx7G_0KypUcPB9vqx8P-6QmQ,825
|
|
104
|
+
examples/warming_up_to_rl/configs/eval_stepwise_simple.toml,sha256=ZNCryLgVCEkv8anP1pKkfNZ_X2kiloW4lmTqeJXtbxs,783
|
|
100
105
|
examples/warming_up_to_rl/configs/rl_from_base_qwen4b.toml,sha256=MrcjPlR-5s7XayBXl087QcGuR6484HcdSgS9yYUE5uo,1868
|
|
101
106
|
examples/warming_up_to_rl/configs/rl_from_ft.toml,sha256=d1cIoLeC80NgOjn0Wohk0a5IXE_ImHVgMsxWPkyAFKQ,1381
|
|
102
107
|
examples/warming_up_to_rl/old/event_rewards.md,sha256=gHJd3ZeYOnj4xPXt-7sSJamgOaJQ-BpfdaF-CKJK3-0,13450
|
|
@@ -112,7 +117,7 @@ examples/warming_up_to_rl/task_app/synth_envs_hosted/hosted_app.py,sha256=hr1jbl
|
|
|
112
117
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/main.py,sha256=-GL__EH3Xr47vp3aD30XNXNrFPOj1bRLpOYQ-yvfwIU,2481
|
|
113
118
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/policy_routes.py,sha256=6Wq62ni5qnW2fXuEuoGD0cMKAxjtNve_oG378Aqz1as,48568
|
|
114
119
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/registry.py,sha256=5dN2Z-qVU4T_UUflHC9XGiIdDqFUl03G7uejcrYRbTE,5480
|
|
115
|
-
examples/warming_up_to_rl/task_app/synth_envs_hosted/rollout.py,sha256=
|
|
120
|
+
examples/warming_up_to_rl/task_app/synth_envs_hosted/rollout.py,sha256=8pzUbpdIYTmrfLPGxzwr0tgn7ng75ijEMY4_XONBMC4,84720
|
|
116
121
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/test_agents.py,sha256=-TDfCs-LSlRgyWHGvO_6YAmjauwi1x4618D8CA9d8aA,5600
|
|
117
122
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/test_service.py,sha256=jFEtE3UqVCq552MSPliS2eO0pDbAS3tSDRJL0A-edTA,5111
|
|
118
123
|
examples/warming_up_to_rl/task_app/synth_envs_hosted/utils.py,sha256=8Rnp0NTKTD_kPXg8zfpIy_we2hfk2agKPUVH_aqMsE0,1994
|
|
@@ -136,30 +141,31 @@ synth_ai/http.py,sha256=ACzDOkwa7kIniZVOZngPc6Zfp05h6rQE1oNqsWG_FKo,1038
|
|
|
136
141
|
synth_ai/http_client.py,sha256=5AkwvGf7HpvYUpxr_IIM1xdsDjLYois7xTht5ueHYkk,5058
|
|
137
142
|
synth_ai/api/models/supported.py,sha256=vQu6Ahw1jn1X3-nL190pH_Z45tkQj8hdDyTTda8t5LQ,12671
|
|
138
143
|
synth_ai/api/train/__init__.py,sha256=aBwlmrj1HWVwDcvUrX4TqpS0BgvkE7Pv7npoIZmtTFU,118
|
|
139
|
-
synth_ai/api/train/builders.py,sha256=
|
|
140
|
-
synth_ai/api/train/cli.py,sha256=
|
|
144
|
+
synth_ai/api/train/builders.py,sha256=k8EQSX2jYFbiePn2p-2sdG5rAbfxeeIOxrYI4UE6288,11026
|
|
145
|
+
synth_ai/api/train/cli.py,sha256=YZc_Scx-ClE6aJjVMEIzfsiBOlX7caSdg4mPGC-xPm0,23167
|
|
141
146
|
synth_ai/api/train/config_finder.py,sha256=4touziSykzQ9YCYL2CjXUfojDcJdKO3vFnoWXQ1fOx8,7178
|
|
142
|
-
synth_ai/api/train/env_resolver.py,sha256=
|
|
147
|
+
synth_ai/api/train/env_resolver.py,sha256=X6ILO46UebkFJo0CDhzfVCb9y3HC-pOPIwkNhbGgvOo,11854
|
|
143
148
|
synth_ai/api/train/pollers.py,sha256=-rcVrGMN7Rj2HrzJ1IAgphwcrsCzpwwTy0KDk76Sx2A,2341
|
|
144
|
-
synth_ai/api/train/supported_algos.py,sha256=
|
|
149
|
+
synth_ai/api/train/supported_algos.py,sha256=AqCtrfiJkocULlDtTPppKWuvOOzQ4tBbh-k3e9MEDZk,5156
|
|
145
150
|
synth_ai/api/train/task_app.py,sha256=MiJ0DLFjqdFNmgk-YHaHVQt31Kxl91Exh9IFfk7GSxM,6439
|
|
146
|
-
synth_ai/api/train/utils.py,sha256=
|
|
147
|
-
synth_ai/cli/__init__.py,sha256=
|
|
151
|
+
synth_ai/api/train/utils.py,sha256=_8C1uoXyXXuEmthquHH5XtowVQkf84Kde4jCdmfKnCk,6165
|
|
152
|
+
synth_ai/cli/__init__.py,sha256=WhaUb9_UNcQBM1c7W3VzeUKUaBBSV31C0cwvHI-9UFM,2423
|
|
148
153
|
synth_ai/cli/_modal_wrapper.py,sha256=DHVP-wQi_gdxWyeEiA_DO0nRiMv7XpaOJ3T3-R2pVoI,599
|
|
154
|
+
synth_ai/cli/_storage.py,sha256=ABfpzyVnCNWFdAgzxvG0_6CGvEEl91BYNTcrTw_V3dY,680
|
|
149
155
|
synth_ai/cli/_typer_patch.py,sha256=xBTshJadUQjtOr-PyGZUytpxyV28UvfU5DPWBCa_mTo,1562
|
|
150
|
-
synth_ai/cli/balance.py,sha256=
|
|
151
|
-
synth_ai/cli/calc.py,sha256=
|
|
156
|
+
synth_ai/cli/balance.py,sha256=VTeJJ98JTA6Z7FujwNzRZAlTzO2BNcFueSnXJYV5f50,8432
|
|
157
|
+
synth_ai/cli/calc.py,sha256=cAED6qRzc9g_eKjk7o_ZQsGKw6TA4Dib7NNze8e8L2s,2740
|
|
152
158
|
synth_ai/cli/demo.py,sha256=FCsohnKHzNmqT1wZ4PzJ2kLXOF7Mr0jS_ZZrEM_nFpM,5610
|
|
153
|
-
synth_ai/cli/legacy_root_backup.py,sha256=
|
|
159
|
+
synth_ai/cli/legacy_root_backup.py,sha256=Ab3cVlOu3k3kLlrTc2SOtSTJTRxlwJ4JvZg9Ol2BbXg,15961
|
|
154
160
|
synth_ai/cli/man.py,sha256=JQDon73ZkuKP9xr1_vRh5fjV9_b5xiUb7zNjny7ArB8,3765
|
|
155
|
-
synth_ai/cli/recent.py,sha256=
|
|
161
|
+
synth_ai/cli/recent.py,sha256=iY7vwVH8T6YwEOEC0QLenZSZXpyedrYc_epbP8WORzE,4415
|
|
156
162
|
synth_ai/cli/rl_demo.py,sha256=SBH5t5EnRgpq0nZm9LXlAunC8CprXwZkkTzjhWDrXaQ,9257
|
|
157
163
|
synth_ai/cli/root.py,sha256=78oCkjtMaLSHEpHRbiaX-FEsdB3gieI7OrZcUMpqrSU,13740
|
|
158
|
-
synth_ai/cli/status.py,sha256=
|
|
159
|
-
synth_ai/cli/task_apps.py,sha256=
|
|
160
|
-
synth_ai/cli/traces.py,sha256=
|
|
164
|
+
synth_ai/cli/status.py,sha256=vjr4ifL48pitKojBhuJdY4oIB8NnJ0RZF44fOzKS4SI,4635
|
|
165
|
+
synth_ai/cli/task_apps.py,sha256=d49vSAOqk-aKhQH1dWXwOhcEu3my-tRsjbdOBRQ3Mp8,105691
|
|
166
|
+
synth_ai/cli/traces.py,sha256=tyt2OUcREK82an9hc2Uq3H-xn0vWuTf_Pirt0CWkodg,6617
|
|
161
167
|
synth_ai/cli/turso.py,sha256=y9aHehGA1VvaWkoZyBhu5fLulWUT65powrpvvVp7gpA,2301
|
|
162
|
-
synth_ai/cli/watch.py,sha256=
|
|
168
|
+
synth_ai/cli/watch.py,sha256=Wi5H2YdV3gsEVMd5YIte2LHMweWqLkGpsK3aopdjCQE,17481
|
|
163
169
|
synth_ai/compound/cais.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
170
|
synth_ai/config/base_url.py,sha256=c85LaABBrvsl8Fp8KH0LNtJJrpnUwlzA5Ywbuth8fHE,3454
|
|
165
171
|
synth_ai/core/experiment.py,sha256=5ErxMLOMDHgBjWJjId-uViCyxwfx3Ns5NVrgMkPEpZk,234
|
|
@@ -404,7 +410,7 @@ synth_ai/environments/v0_observability/log.py,sha256=B4LvbPh0a1_E5dki2PlKAVHESB8
|
|
|
404
410
|
synth_ai/evals/base.py,sha256=Pu_h3oJAAEqJxgj5eigqbVhrNjAGJnBtlxpacSbGXCI,353
|
|
405
411
|
synth_ai/inference/__init__.py,sha256=5xwgFMKRfbLC7TX3lwMqGOZ8HHOEnXwlDqV_FLjsd5A,74
|
|
406
412
|
synth_ai/inference/client.py,sha256=FA1h4rcMu7M0qCCCJ4yQTqC9dM1weVhDWylry8znnCc,1262
|
|
407
|
-
synth_ai/jobs/client.py,sha256=
|
|
413
|
+
synth_ai/jobs/client.py,sha256=_NtmBlm7LLZX22W6arfaa0DAq-0vsV-h_Ep2yHAiwnE,10125
|
|
408
414
|
synth_ai/learning/__init__.py,sha256=Vk-5n8qAmGnNAIH-4LSU3vMD9CuX8_4ZFqwUJC9GDp4,1584
|
|
409
415
|
synth_ai/learning/algorithms.py,sha256=N2sXJ-U5QfvmSCtB2KUkTMyg46_pibYXHdIrYSKGyxA,342
|
|
410
416
|
synth_ai/learning/client.py,sha256=DdjCZZLch4SG9as019XZoq12OVC9ZSKJQk6D5WCjfIw,9526
|
|
@@ -439,7 +445,7 @@ synth_ai/task/health.py,sha256=wfNNLYlWLmwoPpHA8ahDdqb0YAZ8JTyHzs8bdIX-pOI,1139
|
|
|
439
445
|
synth_ai/task/json.py,sha256=SB9XdHFloJha9WeClq4mvaL8B21-fRl9kb1d1JlNfIc,3612
|
|
440
446
|
synth_ai/task/proxy.py,sha256=bUKPqc8IS94ToHzo7xZe2wzIODv3XW6dUIus3_OEpgE,9029
|
|
441
447
|
synth_ai/task/rubrics.py,sha256=_qqAvl1NFGW6nJlzmI3UwjxuvWbOQeLcMwrZpmpMQGk,7180
|
|
442
|
-
synth_ai/task/server.py,sha256=
|
|
448
|
+
synth_ai/task/server.py,sha256=lgDnFSxjMGdEWspibtoEeYAeQ3di1c3Bfvp7w7egdmU,16028
|
|
443
449
|
synth_ai/task/tracing_utils.py,sha256=wk6Gl8JApZePLm_EBQc3EHNEvOdjQSa5mPa02IWQy5E,2505
|
|
444
450
|
synth_ai/task/validators.py,sha256=OGPwdzoyoS8lMgq3nmzdUDEFwCDo2OC7ETQLWiE5Yao,360
|
|
445
451
|
synth_ai/task/vendors.py,sha256=a5t_1HGwPnPUoPMbzNB87jOTCyA4S7W7eIgJ-E4Gfew,1626
|
|
@@ -448,25 +454,26 @@ synth_ai/tracing_v3/__init__.py,sha256=DRhOO-AFtCYSrQ_S-2gLTDCBZUVwy-NKgdAr9uh2K
|
|
|
448
454
|
synth_ai/tracing_v3/abstractions.py,sha256=uja-8UMh-RWfpVBjsZwNw1UhNMpgsy4Zmd_pEq_qXjI,12865
|
|
449
455
|
synth_ai/tracing_v3/config.py,sha256=mPX2P4ILv1ktoI8oGKO_LyLc0O6Lnr2jbHA3QE-y6N0,3241
|
|
450
456
|
synth_ai/tracing_v3/db_config.py,sha256=t9yalucYHdna7kcIQB3aEM9MDThl2hvwbbJhqL_iIQs,6773
|
|
451
|
-
synth_ai/tracing_v3/decorators.py,sha256=
|
|
457
|
+
synth_ai/tracing_v3/decorators.py,sha256=SPWBR2_FMFnlSQCDpIK8IF6h-27DMkqLEe-w8fnMQyw,14748
|
|
452
458
|
synth_ai/tracing_v3/hooks.py,sha256=QUfVvE6H2HIkP-dED1ctBpxzJXpaM_7UU-XaU6043W4,7997
|
|
453
|
-
synth_ai/tracing_v3/llm_call_record_helpers.py,sha256=
|
|
459
|
+
synth_ai/tracing_v3/llm_call_record_helpers.py,sha256=zZ0i6SB7l6WYud9mRLBTyZ4BJCgMmSDyhAZOg81T3k4,13633
|
|
454
460
|
synth_ai/tracing_v3/lm_call_record_abstractions.py,sha256=j2RGuXVaV_EXmIosuXRDjptJSlrDXwb8x06k2fF6lqo,9195
|
|
455
461
|
synth_ai/tracing_v3/migration_helper.py,sha256=izm7SNHtG3VDv_5ZmMk_mmwKitmShxUK3joNFOArZIY,4177
|
|
456
|
-
synth_ai/tracing_v3/replica_sync.py,sha256=
|
|
462
|
+
synth_ai/tracing_v3/replica_sync.py,sha256=H3ReiULH3McnGxdrH9BWkSeIOFfUQ6enHk5SWeuRV6k,8843
|
|
457
463
|
synth_ai/tracing_v3/session_tracer.py,sha256=z9-gt7SK68X_q0aOHwWOtGOaGClpoWkUkAxAOwTKpI8,18996
|
|
458
464
|
synth_ai/tracing_v3/utils.py,sha256=t-ZEyP03j8k7jNxtLsOSvzQnq8SXBaRPdK7jCgPdVdI,3450
|
|
459
|
-
synth_ai/tracing_v3/examples/basic_usage.py,sha256=
|
|
465
|
+
synth_ai/tracing_v3/examples/basic_usage.py,sha256=gSIWxeCYNe5WL38FjCaOCv0RvmxZ8SDiPWhA1-8XAeg,7342
|
|
460
466
|
synth_ai/tracing_v3/storage/__init__.py,sha256=VPjBh180bcSPz1HsbqaqfnvguwqwomaEYKxkrhfGABY,332
|
|
461
467
|
synth_ai/tracing_v3/storage/base.py,sha256=Ou-J_IINQqG2GgQfYcF3FIaAteoEfZZzmnTsDisa_II,5995
|
|
462
468
|
synth_ai/tracing_v3/storage/config.py,sha256=l8XRSP8-WAUSLyGqkGVKsdmruDzPxn4JcdsoAM44x38,2572
|
|
463
469
|
synth_ai/tracing_v3/storage/exceptions.py,sha256=zqfsjb4r8qcZGlId0h9-x0RpJq2_DRDfdlzW6_KIRCw,708
|
|
464
470
|
synth_ai/tracing_v3/storage/factory.py,sha256=cgF6WGd6o7JUKhRxNpLC221ludB_YWL-wxwPecidOlQ,1303
|
|
465
471
|
synth_ai/tracing_v3/storage/types.py,sha256=LevN8M12ilZ0EaiQ6Y3yONSMuLGEhSKNt0ir5wbVbek,613
|
|
466
|
-
synth_ai/tracing_v3/storage/utils.py,sha256=
|
|
467
|
-
synth_ai/tracing_v3/turso/
|
|
472
|
+
synth_ai/tracing_v3/storage/utils.py,sha256=yDjy6Uoz9PXYk-bGWVxG31MfGN3ncvea0R591lPxJ70,6461
|
|
473
|
+
synth_ai/tracing_v3/turso/__init__.py,sha256=hcwysYjh1_ckqrn2DW4QSc2l0jdfN-INrfWciOsTqdI,286
|
|
474
|
+
synth_ai/tracing_v3/turso/daemon.py,sha256=X4SF-ih3ETtJFxTXMxeEektQvRkI2Hz3wyMrjEFQKSA,4426
|
|
468
475
|
synth_ai/tracing_v3/turso/models.py,sha256=BZg4bo-V9enr8R5pJ9mOTsfb6QdrULjj_jgMgnwzeqM,16362
|
|
469
|
-
synth_ai/tracing_v3/turso/native_manager.py,sha256=
|
|
476
|
+
synth_ai/tracing_v3/turso/native_manager.py,sha256=LFSghD9oD693U9mkidUgwWZvep-fZWB7R7IlQBBa35k,42091
|
|
470
477
|
synth_ai/v0/api/__init__.py,sha256=wgz7K2rwVmxTRx0vy5abWclC2NTVjsM1buYQxXCnF3k,197
|
|
471
478
|
synth_ai/v0/api/models/__init__.py,sha256=-VNJS0rSmrWaXnb2RkaBoDXc_9roO7ZgWVBe1vGKz-8,167
|
|
472
479
|
synth_ai/v0/api/models/supported.py,sha256=aQCUi9xPn1Nt5Xd7yN42RyZVppsYaUdCADFoew_NhoE,246
|
|
@@ -569,9 +576,9 @@ synth_ai/v0/tracing_v3/abstractions.py,sha256=7IHKkzicFEJ4UXJbodK11Pi8YYq7Vt8Ev_
|
|
|
569
576
|
synth_ai/v0/tracing_v3/decorators.py,sha256=fRyVBKEbxAPZoDsBH7t8OVLVixvgD_Lw_1ONF1TuZxU,108
|
|
570
577
|
synth_ai/v0/tracing_v3/llm_call_record_helpers.py,sha256=JYSpGtW-RC-DnhUIPdVADNF3rK5x8Tl8DOymbmRI99I,121
|
|
571
578
|
synth_ai/v0/tracing_v3/session_tracer.py,sha256=TSUzb_fUUlpwOqFE1X-Fs14nG2CNe7MZLKOvH7cV2kE,112
|
|
572
|
-
synth_ai-0.2.
|
|
573
|
-
synth_ai-0.2.
|
|
574
|
-
synth_ai-0.2.
|
|
575
|
-
synth_ai-0.2.
|
|
576
|
-
synth_ai-0.2.
|
|
577
|
-
synth_ai-0.2.
|
|
579
|
+
synth_ai-0.2.12.dist-info/licenses/LICENSE,sha256=ynhjRQUfqA_RdGRATApfFA_fBAy9cno04sLtLUqxVFM,1069
|
|
580
|
+
synth_ai-0.2.12.dist-info/METADATA,sha256=SOcZAekWv6vMdvP5lLzyVitE1zRdUZHGCN-YEZnsiP4,5424
|
|
581
|
+
synth_ai-0.2.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
582
|
+
synth_ai-0.2.12.dist-info/entry_points.txt,sha256=Neq-3bT7TAijjgOIR77pKL-WYg6TWBDeO8pp_nL4vGY,91
|
|
583
|
+
synth_ai-0.2.12.dist-info/top_level.txt,sha256=1moNHgctEUJ3F3eH3V-7FSMb2iTTze1V13dj1R04oUY,18
|
|
584
|
+
synth_ai-0.2.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|