synth-ai 0.2.9.dev7__py3-none-any.whl → 0.2.9.dev8__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.

Files changed (327) hide show
  1. examples/__init__.py +16 -0
  2. examples/crafter_debug_render.py +8 -11
  3. examples/qwen_coder/README.md +102 -0
  4. examples/qwen_coder/_shared.py +113 -0
  5. examples/qwen_coder/configs/coder_lora_30b.toml +61 -0
  6. examples/qwen_coder/configs/coder_lora_4b.toml +57 -0
  7. examples/qwen_coder/configs/coder_lora_small.toml +58 -0
  8. examples/qwen_coder/generate_dataset.py +98 -0
  9. examples/qwen_coder/infer_ft_smoke.py +64 -0
  10. examples/qwen_coder/infer_prod_proxy.py +73 -0
  11. examples/qwen_coder/infer_via_synth.py +87 -0
  12. examples/qwen_coder/scripts/infer_coder.sh +18 -0
  13. examples/qwen_coder/scripts/train_coder_30b.sh +21 -0
  14. examples/qwen_coder/sft_full_17b.py +103 -0
  15. examples/qwen_coder/sft_lora_30b.py +110 -0
  16. examples/qwen_coder/subset_jsonl.py +38 -0
  17. examples/qwen_coder/validate_jsonl.py +59 -0
  18. examples/rl/run_eval.py +36 -37
  19. examples/rl/run_rl_and_save.py +5 -5
  20. examples/rl/task_app/math_single_step.py +65 -43
  21. examples/rl/task_app/math_task_app.py +3 -3
  22. examples/sft/README.md +139 -0
  23. examples/sft/configs/crafter_fft_qwen0p6b.toml +44 -0
  24. examples/sft/configs/crafter_lora_qwen0p6b.toml +45 -0
  25. examples/sft/evaluate.py +117 -0
  26. examples/sft/export_dataset.py +117 -0
  27. examples/sft/generate_traces.py +162 -0
  28. examples/swe/__init__.py +12 -0
  29. examples/swe/task_app/README.md +105 -0
  30. examples/swe/task_app/__init__.py +2 -0
  31. examples/swe/task_app/grpo_swe_mini.py +571 -0
  32. examples/swe/task_app/grpo_swe_mini_task_app.py +136 -0
  33. examples/swe/task_app/hosted/README.md +173 -0
  34. examples/swe/task_app/hosted/__init__.py +5 -0
  35. examples/swe/task_app/hosted/branching.py +143 -0
  36. examples/swe/task_app/hosted/environment_routes.py +1289 -0
  37. examples/swe/task_app/hosted/envs/__init__.py +1 -0
  38. examples/swe/task_app/hosted/envs/crafter/__init__.py +6 -0
  39. examples/swe/task_app/hosted/envs/crafter/app.py +1 -0
  40. examples/swe/task_app/hosted/envs/crafter/environment.py +522 -0
  41. examples/swe/task_app/hosted/envs/crafter/policy.py +478 -0
  42. examples/swe/task_app/hosted/envs/crafter/react_agent.py +108 -0
  43. examples/swe/task_app/hosted/envs/crafter/shared.py +305 -0
  44. examples/swe/task_app/hosted/envs/crafter/tools.py +47 -0
  45. examples/swe/task_app/hosted/envs/mini_swe/__init__.py +8 -0
  46. examples/swe/task_app/hosted/envs/mini_swe/environment.py +1164 -0
  47. examples/swe/task_app/hosted/envs/mini_swe/policy.py +355 -0
  48. examples/swe/task_app/hosted/envs/mini_swe/shared.py +83 -0
  49. examples/swe/task_app/hosted/envs/mini_swe/tools.py +96 -0
  50. examples/swe/task_app/hosted/hosted_app.py +204 -0
  51. examples/swe/task_app/hosted/inference/__init__.py +5 -0
  52. examples/swe/task_app/hosted/inference/openai_client.py +618 -0
  53. examples/swe/task_app/hosted/main.py +100 -0
  54. examples/swe/task_app/hosted/policy_routes.py +1079 -0
  55. examples/swe/task_app/hosted/registry.py +195 -0
  56. examples/swe/task_app/hosted/rollout.py +1869 -0
  57. examples/swe/task_app/hosted/storage/__init__.py +5 -0
  58. examples/swe/task_app/hosted/storage/volume.py +211 -0
  59. examples/swe/task_app/hosted/test_agents.py +161 -0
  60. examples/swe/task_app/hosted/test_service.py +137 -0
  61. examples/swe/task_app/hosted/utils.py +62 -0
  62. examples/vlm/README.md +68 -0
  63. examples/vlm/configs/crafter_vlm_gpt4o.toml +44 -0
  64. examples/vlm/crafter_image_only_agent.py +207 -0
  65. examples/vlm/crafter_openai_vlm_agent.py +277 -0
  66. examples/vlm/filter_image_rows.py +63 -0
  67. examples/vlm/run_crafter_vlm_benchmark.py +316 -0
  68. examples/warming_up_to_rl/analyze_trace_db.py +5 -5
  69. examples/warming_up_to_rl/configs/rl_from_base_qwen4b.toml +11 -1
  70. examples/warming_up_to_rl/export_trace_sft.py +78 -21
  71. examples/warming_up_to_rl/groq_test.py +4 -4
  72. examples/warming_up_to_rl/manage_secrets.py +13 -18
  73. examples/warming_up_to_rl/run_eval.py +42 -44
  74. examples/warming_up_to_rl/run_fft_and_save.py +11 -16
  75. examples/warming_up_to_rl/run_local_rollout.py +1 -3
  76. examples/warming_up_to_rl/run_local_rollout_modal.py +2 -4
  77. examples/warming_up_to_rl/run_local_rollout_parallel.py +1 -4
  78. examples/warming_up_to_rl/run_local_rollout_traced.py +3 -5
  79. examples/warming_up_to_rl/run_rl_and_save.py +5 -6
  80. examples/warming_up_to_rl/run_rollout_remote.py +8 -10
  81. examples/warming_up_to_rl/task_app/README.md +6 -2
  82. examples/warming_up_to_rl/task_app/grpo_crafter.py +234 -35
  83. examples/warming_up_to_rl/task_app/grpo_crafter_task_app.py +2 -3
  84. examples/warming_up_to_rl/task_app/synth_envs_hosted/__init__.py +1 -1
  85. examples/warming_up_to_rl/task_app/synth_envs_hosted/branching.py +9 -11
  86. examples/warming_up_to_rl/task_app/synth_envs_hosted/environment_routes.py +131 -114
  87. examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/environment.py +101 -41
  88. examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/policy.py +73 -51
  89. examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/react_agent.py +14 -6
  90. examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/shared.py +16 -16
  91. examples/warming_up_to_rl/task_app/synth_envs_hosted/hosted_app.py +32 -34
  92. examples/warming_up_to_rl/task_app/synth_envs_hosted/inference/openai_client.py +94 -31
  93. examples/warming_up_to_rl/task_app/synth_envs_hosted/main.py +0 -2
  94. examples/warming_up_to_rl/task_app/synth_envs_hosted/policy_routes.py +303 -203
  95. examples/warming_up_to_rl/task_app/synth_envs_hosted/registry.py +21 -23
  96. examples/warming_up_to_rl/task_app/synth_envs_hosted/rollout.py +328 -225
  97. examples/warming_up_to_rl/task_app/synth_envs_hosted/storage/volume.py +13 -13
  98. examples/warming_up_to_rl/task_app/synth_envs_hosted/test_agents.py +1 -0
  99. examples/warming_up_to_rl/task_app/synth_envs_hosted/test_service.py +1 -0
  100. examples/warming_up_to_rl/task_app/synth_envs_hosted/utils.py +4 -3
  101. synth/__init__.py +14 -0
  102. synth_ai/__init__.py +26 -4
  103. synth_ai/api/models/supported.py +376 -0
  104. synth_ai/api/train/builders.py +128 -21
  105. synth_ai/api/train/cli.py +80 -64
  106. synth_ai/api/train/config_finder.py +7 -2
  107. synth_ai/api/train/env_resolver.py +1 -1
  108. synth_ai/api/train/pollers.py +2 -1
  109. synth_ai/api/train/supported_algos.py +139 -0
  110. synth_ai/api/train/task_app.py +1 -2
  111. synth_ai/api/train/utils.py +13 -44
  112. synth_ai/cli/__init__.py +8 -0
  113. synth_ai/cli/_modal_wrapper.py +28 -0
  114. synth_ai/cli/_typer_patch.py +49 -0
  115. synth_ai/cli/balance.py +1 -2
  116. synth_ai/cli/calc.py +1 -1
  117. synth_ai/cli/demo.py +2 -1
  118. synth_ai/cli/recent.py +2 -2
  119. synth_ai/cli/rl_demo.py +2 -1
  120. synth_ai/cli/root.py +11 -13
  121. synth_ai/cli/status.py +2 -2
  122. synth_ai/cli/task_apps.py +529 -179
  123. synth_ai/cli/traces.py +6 -4
  124. synth_ai/cli/watch.py +12 -18
  125. synth_ai/demo_registry.py +1 -1
  126. synth_ai/demos/core/cli.py +36 -43
  127. synth_ai/demos/demo_task_apps/__init__.py +3 -3
  128. synth_ai/demos/demo_task_apps/core.py +17 -25
  129. synth_ai/demos/demo_task_apps/crafter/grpo_crafter_task_app.py +3 -4
  130. synth_ai/demos/demo_task_apps/math/app.py +2 -1
  131. synth_ai/demos/demo_task_apps/math/deploy_modal.py +3 -4
  132. synth_ai/demos/demo_task_apps/math/modal_task_app.py +16 -18
  133. synth_ai/demos/demo_task_apps/math/task_app_entry.py +0 -1
  134. synth_ai/environments/examples/crafter_classic/environment.py +76 -1
  135. synth_ai/environments/reproducibility/tree.py +2 -5
  136. synth_ai/environments/service/app.py +11 -12
  137. synth_ai/environments/service/core_routes.py +4 -7
  138. synth_ai/environments/stateful/engine.py +1 -1
  139. synth_ai/environments/tasks/core.py +1 -0
  140. synth_ai/environments/tasks/filters.py +5 -6
  141. synth_ai/environments/tasks/utils.py +4 -5
  142. synth_ai/handshake.py +9 -9
  143. synth_ai/http.py +1 -1
  144. synth_ai/http_client.py +18 -10
  145. synth_ai/inference/client.py +15 -5
  146. synth_ai/jobs/client.py +78 -83
  147. synth_ai/learning/__init__.py +41 -6
  148. synth_ai/learning/algorithms.py +14 -0
  149. synth_ai/learning/client.py +91 -24
  150. synth_ai/learning/config.py +2 -38
  151. synth_ai/learning/ft_client.py +4 -59
  152. synth_ai/learning/health.py +5 -6
  153. synth_ai/learning/jobs.py +31 -47
  154. synth_ai/{rl → learning/rl}/__init__.py +14 -4
  155. synth_ai/learning/rl/client.py +267 -0
  156. synth_ai/learning/rl/config.py +31 -0
  157. synth_ai/{rl → learning/rl}/contracts.py +5 -8
  158. synth_ai/{rl → learning/rl}/env_keys.py +39 -15
  159. synth_ai/learning/rl/secrets.py +13 -0
  160. synth_ai/learning/rl_client.py +2 -281
  161. synth_ai/learning/sft/__init__.py +29 -0
  162. synth_ai/learning/sft/client.py +68 -0
  163. synth_ai/learning/sft/config.py +270 -0
  164. synth_ai/learning/sft/data.py +295 -0
  165. synth_ai/learning/sse.py +25 -24
  166. synth_ai/learning/validators.py +25 -28
  167. synth_ai/lm/__init__.py +21 -47
  168. synth_ai/main.py +4 -0
  169. synth_ai/task/__init__.py +25 -27
  170. synth_ai/task/apps/__init__.py +7 -8
  171. synth_ai/task/auth.py +8 -8
  172. synth_ai/task/client.py +14 -14
  173. synth_ai/task/contracts.py +36 -35
  174. synth_ai/task/datasets.py +6 -5
  175. synth_ai/task/errors.py +10 -10
  176. synth_ai/task/health.py +17 -9
  177. synth_ai/task/json.py +58 -23
  178. synth_ai/task/proxy.py +13 -9
  179. synth_ai/task/rubrics.py +16 -15
  180. synth_ai/task/server.py +12 -12
  181. synth_ai/task/tracing_utils.py +4 -4
  182. synth_ai/task/vendors.py +5 -6
  183. synth_ai/tracing_v3/__init__.py +2 -0
  184. synth_ai/tracing_v3/abstractions.py +21 -4
  185. synth_ai/tracing_v3/decorators.py +18 -16
  186. synth_ai/tracing_v3/hooks.py +5 -5
  187. synth_ai/tracing_v3/llm_call_record_helpers.py +6 -6
  188. synth_ai/tracing_v3/session_tracer.py +40 -14
  189. synth_ai/tracing_v3/storage/base.py +85 -0
  190. synth_ai/tracing_v3/storage/config.py +21 -8
  191. synth_ai/tracing_v3/storage/factory.py +10 -7
  192. synth_ai/tracing_v3/storage/utils.py +4 -2
  193. synth_ai/tracing_v3/turso/daemon.py +7 -2
  194. synth_ai/tracing_v3/turso/models.py +2 -2
  195. synth_ai/tracing_v3/turso/native_manager.py +1173 -0
  196. synth_ai/tracing_v3/utils.py +4 -4
  197. synth_ai/v0/api/__init__.py +8 -0
  198. synth_ai/v0/api/models/__init__.py +8 -0
  199. synth_ai/v0/api/models/supported.py +8 -0
  200. synth_ai/v0/config/__init__.py +15 -0
  201. synth_ai/v0/config/base_url.py +12 -0
  202. synth_ai/v0/lm/__init__.py +51 -0
  203. synth_ai/{lm → v0/lm}/caching/ephemeral.py +2 -2
  204. synth_ai/{lm → v0/lm}/caching/handler.py +4 -4
  205. synth_ai/{lm → v0/lm}/caching/initialize.py +1 -1
  206. synth_ai/{lm → v0/lm}/caching/persistent.py +1 -1
  207. synth_ai/{lm → v0/lm}/config.py +6 -1
  208. synth_ai/{lm → v0/lm}/core/all.py +9 -9
  209. synth_ai/{lm → v0/lm}/core/main.py +6 -6
  210. synth_ai/{lm → v0/lm}/core/main_v3.py +10 -10
  211. synth_ai/{lm → v0/lm}/core/synth_models.py +2 -14
  212. synth_ai/{lm → v0/lm}/core/vendor_clients.py +2 -2
  213. synth_ai/{lm → v0/lm}/overrides.py +2 -2
  214. synth_ai/{lm → v0/lm}/provider_support/anthropic.py +4 -4
  215. synth_ai/{lm → v0/lm}/provider_support/openai.py +5 -5
  216. synth_ai/{lm → v0/lm}/structured_outputs/handler.py +5 -5
  217. synth_ai/{lm → v0/lm}/structured_outputs/rehabilitate.py +1 -1
  218. synth_ai/{lm → v0/lm}/vendors/core/anthropic_api.py +9 -9
  219. synth_ai/{lm → v0/lm}/vendors/core/gemini_api.py +5 -5
  220. synth_ai/{lm → v0/lm}/vendors/core/mistral_api.py +5 -5
  221. synth_ai/{lm → v0/lm}/vendors/core/openai_api.py +10 -10
  222. synth_ai/{lm → v0/lm}/vendors/openai_standard.py +8 -8
  223. synth_ai/{lm → v0/lm}/vendors/openai_standard_responses.py +2 -2
  224. synth_ai/{lm → v0/lm}/vendors/supported/custom_endpoint.py +3 -3
  225. synth_ai/{lm → v0/lm}/vendors/supported/deepseek.py +2 -2
  226. synth_ai/{lm → v0/lm}/vendors/supported/grok.py +2 -2
  227. synth_ai/{lm → v0/lm}/vendors/supported/groq.py +1 -1
  228. synth_ai/{lm → v0/lm}/vendors/supported/ollama.py +1 -1
  229. synth_ai/{lm → v0/lm}/vendors/supported/openrouter.py +3 -3
  230. synth_ai/{lm → v0/lm}/vendors/supported/together.py +1 -1
  231. synth_ai/{lm → v0/lm}/vendors/synth_client.py +1 -1
  232. synth_ai/v0/tracing_v3/__init__.py +10 -0
  233. synth_ai/v0/tracing_v3/abstractions.py +3 -0
  234. synth_ai/v0/tracing_v3/decorators.py +3 -0
  235. synth_ai/v0/tracing_v3/llm_call_record_helpers.py +3 -0
  236. synth_ai/v0/tracing_v3/session_tracer.py +3 -0
  237. synth_ai-0.2.9.dev8.dist-info/METADATA +191 -0
  238. {synth_ai-0.2.9.dev7.dist-info → synth_ai-0.2.9.dev8.dist-info}/RECORD +268 -238
  239. {synth_ai-0.2.9.dev7.dist-info → synth_ai-0.2.9.dev8.dist-info}/top_level.txt +1 -0
  240. examples/common_old/backend.py +0 -20
  241. examples/evals_old/README.md +0 -98
  242. examples/evals_old/__init__.py +0 -6
  243. examples/evals_old/compare_models.py +0 -1038
  244. examples/evals_old/example_log.md +0 -145
  245. examples/evals_old/run_demo.sh +0 -126
  246. examples/evals_old/trace_analysis.py +0 -270
  247. examples/finetuning_old/_backup_synth_qwen/config.toml +0 -29
  248. examples/finetuning_old/_backup_synth_qwen/example_log.md +0 -324
  249. examples/finetuning_old/_backup_synth_qwen/filter_traces.py +0 -60
  250. examples/finetuning_old/_backup_synth_qwen/filter_traces_achievements.py +0 -243
  251. examples/finetuning_old/_backup_synth_qwen/purge_v3_traces.py +0 -109
  252. examples/finetuning_old/_backup_synth_qwen/react_agent_lm.py +0 -1924
  253. examples/finetuning_old/_backup_synth_qwen/readme.md +0 -49
  254. examples/finetuning_old/_backup_synth_qwen/run_crafter_qwen4b.py +0 -114
  255. examples/finetuning_old/_backup_synth_qwen/run_demo.sh +0 -195
  256. examples/finetuning_old/_backup_synth_qwen/sft_kickoff.py +0 -119
  257. examples/finetuning_old/synth_qwen_v1/README.md +0 -68
  258. examples/finetuning_old/synth_qwen_v1/filter_traces.py +0 -60
  259. examples/finetuning_old/synth_qwen_v1/filter_traces_achievements.py +0 -243
  260. examples/finetuning_old/synth_qwen_v1/finetune.py +0 -46
  261. examples/finetuning_old/synth_qwen_v1/hello_ft_model.py +0 -71
  262. examples/finetuning_old/synth_qwen_v1/infer.py +0 -36
  263. examples/finetuning_old/synth_qwen_v1/poll.py +0 -46
  264. examples/finetuning_old/synth_qwen_v1/prepare_data.py +0 -35
  265. examples/finetuning_old/synth_qwen_v1/purge_v3_traces.py +0 -109
  266. examples/finetuning_old/synth_qwen_v1/react_agent_lm.py +0 -1933
  267. examples/finetuning_old/synth_qwen_v1/run_crafter_sft_job.py +0 -210
  268. examples/finetuning_old/synth_qwen_v1/run_ft_job.py +0 -237
  269. examples/finetuning_old/synth_qwen_v1/upload_data.py +0 -34
  270. examples/finetuning_old/synth_qwen_v1/util.py +0 -152
  271. examples/rl_old/task_app.py +0 -1131
  272. examples/warming_up_to_rl/old/event_rewards.md +0 -234
  273. examples/warming_up_to_rl/old/notes.md +0 -73
  274. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -738
  275. synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -580
  276. synth_ai/experimental/synth_oss.py +0 -445
  277. synth_ai/learning/filtering.py +0 -0
  278. synth_ai/learning/offline/dpo.py +0 -0
  279. synth_ai/learning/offline/providers.py +0 -7
  280. synth_ai/learning/offline/sft.py +0 -0
  281. synth_ai/learning/offline/shared.py +0 -0
  282. synth_ai/learning/online/grpo.py +0 -0
  283. synth_ai/learning/online/irft.py +0 -0
  284. synth_ai/learning/prompts/banking77_injection_eval.py +0 -168
  285. synth_ai/learning/prompts/gepa.py +0 -0
  286. synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -211
  287. synth_ai/learning/prompts/mipro.py +0 -289
  288. synth_ai/learning/prompts/random_search.py +0 -249
  289. synth_ai/learning/prompts/run_mipro_banking77.py +0 -172
  290. synth_ai/learning/prompts/run_random_search_banking77.py +0 -329
  291. synth_ai/rl/secrets.py +0 -19
  292. synth_ai/scripts/verify_rewards.py +0 -100
  293. synth_ai/tracing/__init__.py +0 -30
  294. synth_ai/tracing_v1/__init__.py +0 -33
  295. synth_ai/tracing_v3/turso/__init__.py +0 -25
  296. synth_ai/tracing_v3/turso/manager.py +0 -838
  297. synth_ai/zyk/__init__.py +0 -30
  298. synth_ai-0.2.9.dev7.dist-info/METADATA +0 -131
  299. /synth_ai/{lm → v0/lm}/caching/__init__.py +0 -0
  300. /synth_ai/{lm → v0/lm}/caching/constants.py +0 -0
  301. /synth_ai/{lm → v0/lm}/caching/dbs.py +0 -0
  302. /synth_ai/{lm → v0/lm}/constants.py +0 -0
  303. /synth_ai/{lm → v0/lm}/core/__init__.py +0 -0
  304. /synth_ai/{lm → v0/lm}/core/exceptions.py +0 -0
  305. /synth_ai/{lm → v0/lm}/cost/__init__.py +0 -0
  306. /synth_ai/{lm → v0/lm}/cost/monitor.py +0 -0
  307. /synth_ai/{lm → v0/lm}/cost/statefulness.py +0 -0
  308. /synth_ai/{lm → v0/lm}/injection.py +0 -0
  309. /synth_ai/{lm → v0/lm}/provider_support/__init__.py +0 -0
  310. /synth_ai/{lm → v0/lm}/provider_support/suppress_logging.py +0 -0
  311. /synth_ai/{lm → v0/lm}/structured_outputs/__init__.py +0 -0
  312. /synth_ai/{lm → v0/lm}/structured_outputs/inject.py +0 -0
  313. /synth_ai/{lm → v0/lm}/tools/__init__.py +0 -0
  314. /synth_ai/{lm → v0/lm}/tools/base.py +0 -0
  315. /synth_ai/{lm → v0/lm}/unified_interface.py +0 -0
  316. /synth_ai/{lm → v0/lm}/vendors/__init__.py +0 -0
  317. /synth_ai/{lm → v0/lm}/vendors/base.py +0 -0
  318. /synth_ai/{lm → v0/lm}/vendors/core/__init__.py +0 -0
  319. /synth_ai/{lm → v0/lm}/vendors/core/synth_dev_api.py +0 -0
  320. /synth_ai/{lm → v0/lm}/vendors/local/__init__.py +0 -0
  321. /synth_ai/{lm → v0/lm}/vendors/local/ollama.py +0 -0
  322. /synth_ai/{lm → v0/lm}/vendors/retries.py +0 -0
  323. /synth_ai/{lm → v0/lm}/vendors/supported/__init__.py +0 -0
  324. /synth_ai/{lm → v0/lm}/warmup.py +0 -0
  325. {synth_ai-0.2.9.dev7.dist-info → synth_ai-0.2.9.dev8.dist-info}/WHEEL +0 -0
  326. {synth_ai-0.2.9.dev7.dist-info → synth_ai-0.2.9.dev8.dist-info}/entry_points.txt +0 -0
  327. {synth_ai-0.2.9.dev7.dist-info → synth_ai-0.2.9.dev8.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  from openai import AsyncOpenAI, OpenAI
2
2
 
3
- from synth_ai.lm.vendors.openai_standard import OpenAIStandard
3
+ from synth_ai.v0.lm.vendors.openai_standard import OpenAIStandard
4
4
 
5
5
 
6
6
  class OllamaAPI(OpenAIStandard):
@@ -3,9 +3,9 @@ from typing import Any
3
3
 
4
4
  from openai import AsyncOpenAI, OpenAI
5
5
 
6
- from synth_ai.lm.tools.base import BaseTool
7
- from synth_ai.lm.vendors.base import BaseLMResponse
8
- from synth_ai.lm.vendors.openai_standard import OpenAIStandard
6
+ from synth_ai.v0.lm.tools.base import BaseTool
7
+ from synth_ai.v0.lm.vendors.base import BaseLMResponse
8
+ from synth_ai.v0.lm.vendors.openai_standard import OpenAIStandard
9
9
 
10
10
 
11
11
  class OpenRouterAPI(OpenAIStandard):
@@ -2,7 +2,7 @@ import os
2
2
 
3
3
  from together import AsyncTogether, Together
4
4
 
5
- from synth_ai.lm.vendors.openai_standard import OpenAIStandard
5
+ from synth_ai.v0.lm.vendors.openai_standard import OpenAIStandard
6
6
 
7
7
 
8
8
  class TogetherAPI(OpenAIStandard):
@@ -700,7 +700,7 @@ class AsyncOpenAI(AsyncSynthClient):
700
700
  Use Synth backend instead of OpenAI while maintaining the same API.
701
701
 
702
702
  Example:
703
- from synth_ai.lm.vendors.synth_client import AsyncOpenAI
703
+ from synth_ai.v0.lm.vendors.synth_client import AsyncOpenAI
704
704
 
705
705
  client = AsyncOpenAI(
706
706
  api_key="sk_live_...",
@@ -0,0 +1,10 @@
1
+ from __future__ import annotations
2
+
3
+ # Backward-compat shim for legacy imports: `synth_ai.v0.tracing_v3.*`
4
+ # Re-export from the canonical `synth_ai.tracing_v3` package.
5
+
6
+ from synth_ai.tracing_v3 import * # type: ignore[F401,F403]
7
+
8
+ __all__ = [] # names are provided by the upstream module
9
+
10
+
@@ -0,0 +1,3 @@
1
+ from __future__ import annotations
2
+
3
+ from synth_ai.tracing_v3.abstractions import * # type: ignore[F401,F403]
@@ -0,0 +1,3 @@
1
+ from __future__ import annotations
2
+
3
+ from synth_ai.tracing_v3.decorators import * # type: ignore[F401,F403]
@@ -0,0 +1,3 @@
1
+ from __future__ import annotations
2
+
3
+ from synth_ai.tracing_v3.llm_call_record_helpers import * # type: ignore[F401,F403]
@@ -0,0 +1,3 @@
1
+ from __future__ import annotations
2
+
3
+ from synth_ai.tracing_v3.session_tracer import * # type: ignore[F401,F403]
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: synth-ai
3
+ Version: 0.2.9.dev8
4
+ Summary: Python SDK and CLI for Synth — RL-as-a-service
5
+ Author-email: Synth AI <josh@usesynth.ai>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://usesynth.ai
8
+ Project-URL: Documentation, https://docs.usesynth.ai/sdk/get-started
9
+ Project-URL: Changelog, https://docs.usesynth.ai/changelog
10
+ Project-URL: Repository, https://github.com/synth-laboratories/synth-ai
11
+ Project-URL: Issues, https://github.com/synth-laboratories/synth-ai/issues
12
+ Requires-Python: >=3.11
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: pydantic>=2.0.0
16
+ Requires-Dist: python-dotenv>=1.0.1
17
+ Requires-Dist: requests>=2.32.3
18
+ Requires-Dist: urllib3>=2.3.0
19
+ Requires-Dist: certifi>=2024.8.30
20
+ Requires-Dist: tqdm>=4.66.4
21
+ Requires-Dist: jsonschema>=4.23.0
22
+ Requires-Dist: backoff>=2.0.0
23
+ Requires-Dist: typing_extensions>=4.0.0
24
+ Requires-Dist: openai>=1.99.0
25
+ Requires-Dist: anthropic>=0.42.0
26
+ Requires-Dist: langfuse<3.0.0,>=2.53.9
27
+ Requires-Dist: opentelemetry-api<1.27.0,>=1.26.0
28
+ Requires-Dist: opentelemetry-sdk<1.27.0,>=1.26.0
29
+ Requires-Dist: diskcache>=5.6.3
30
+ Requires-Dist: groq>=0.30.0
31
+ Requires-Dist: google-genai>=1.26.0
32
+ Requires-Dist: together>=1.5.21
33
+ Requires-Dist: mistralai>=1.9.2
34
+ Requires-Dist: fastapi>=0.115.12
35
+ Requires-Dist: uvicorn>=0.34.2
36
+ Requires-Dist: numpy>=2.2.3
37
+ Requires-Dist: networkx>=3.4.2
38
+ Requires-Dist: redis>=6.2.0
39
+ Requires-Dist: duckdb>=1.0.0
40
+ Requires-Dist: ty>=0.0.1a5
41
+ Requires-Dist: toml>=0.10.2
42
+ Requires-Dist: sqlalchemy>=2.0.42
43
+ Requires-Dist: aiosqlite>=0.21.0
44
+ Requires-Dist: greenlet>=3.2.3
45
+ Requires-Dist: libsql>=0.1.8
46
+ Requires-Dist: pynacl>=1.5.0
47
+ Requires-Dist: google-api-core>=2.25.1
48
+ Requires-Dist: google-generativeai>=0.8.5
49
+ Requires-Dist: crafter>=1.8.3
50
+ Requires-Dist: click<8.2,>=8.1.7
51
+ Requires-Dist: textual>=1.1.0
52
+ Requires-Dist: openai-harmony>=0.0.1
53
+ Requires-Dist: asyncpg>=0.30.0
54
+ Requires-Dist: aiohttp>=3.8.0
55
+ Requires-Dist: datasets>=4.0.0
56
+ Requires-Dist: transformers>=4.56.1
57
+ Requires-Dist: modal==1.1.4
58
+ Provides-Extra: dev
59
+ Requires-Dist: build>=1.2.2.post1; extra == "dev"
60
+ Requires-Dist: twine>=4.0.0; extra == "dev"
61
+ Requires-Dist: keyring>=24.0.0; extra == "dev"
62
+ Requires-Dist: pytest>=8.3.3; extra == "dev"
63
+ Requires-Dist: pytest-xdist>=3.6.1; extra == "dev"
64
+ Requires-Dist: pytest-timeout>=2.3.1; extra == "dev"
65
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
66
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
67
+ Requires-Dist: pyright>=1.1.350; extra == "dev"
68
+ Requires-Dist: coverage[toml]>=7.3.0; extra == "dev"
69
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
70
+ Provides-Extra: research
71
+ Requires-Dist: crafter>=1.8.3; extra == "research"
72
+ Requires-Dist: datasets>=4.0.0; extra == "research"
73
+ Provides-Extra: all
74
+ Requires-Dist: crafter>=1.8.3; extra == "all"
75
+ Requires-Dist: datasets>=4.0.0; extra == "all"
76
+ Provides-Extra: analytics
77
+ Requires-Dist: pandas>=2.2.3; extra == "analytics"
78
+ Dynamic: license-file
79
+
80
+ # Synth-AI SDK
81
+
82
+ [![Python](https://img.shields.io/badge/python-3.11+-blue)](https://www.python.org/)
83
+ [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
84
+ [![PyPI](https://img.shields.io/badge/PyPI-0.2.10-orange)](https://pypi.org/project/synth-ai/)
85
+ ![Coverage](https://img.shields.io/badge/coverage-9.09%25-red)
86
+ ![Tests](https://img.shields.io/badge/tests-37%2F38%20passing-brightgreen)
87
+ ![Blacksmith CI](https://img.shields.io/badge/CI-Blacksmith%20Worker-blue)
88
+
89
+ > **Synth-AI** — Reinforcement Learning-as-a-Service for agents.
90
+ > **Docs:** [Get Started →](https://docs.usesynth.ai/sdk/get-started)
91
+
92
+ ---
93
+
94
+ ## 🚀 Install
95
+
96
+ ```bash
97
+ pip install synth-ai
98
+ # or
99
+ uv add synth-ai
100
+ ```
101
+
102
+ **Import:**
103
+
104
+ ```python
105
+ import synth_ai
106
+ ```
107
+
108
+ **CLI (with uvx):**
109
+
110
+ ```bash
111
+ uvx synth-ai setup
112
+ uvx synth-ai demo
113
+ uvx synth-ai deploy
114
+ uvx synth-ai run
115
+ ```
116
+
117
+ > Full quickstart: [https://docs.usesynth.ai/sdk/get-started](https://docs.usesynth.ai/sdk/get-started)
118
+
119
+ ---
120
+
121
+ ## 🧩 About
122
+
123
+ Fast and effective reinforcement learning for agents, via an API.
124
+ Easily scale GPU topologies, train multi-node, and integrate with existing agent software.
125
+
126
+ ### Highlights
127
+
128
+ - Scale GPU topologies (A10Gs, H100s, multi-node available on request)
129
+ - Thin FastAPI wrapper integration
130
+ - Supports OSS models like **Qwen3** (GPT-OSS GA soon)
131
+ - Own your trained models
132
+
133
+ ---
134
+
135
+ ## ⚙️ Getting Started
136
+
137
+ Synth-AI ships with a built-in RL example: training **Qwen3-0.6B** on math reasoning.
138
+
139
+ 1. Create accounts at [Synth](https://usesynth.ai) and [Modal](https://modal.com)
140
+ 2. Then run:
141
+
142
+ ```bash
143
+ uvx synth-ai demo
144
+ uvx synth-ai setup
145
+ uvx synth-ai deploy
146
+ uvx synth-ai run
147
+ ```
148
+
149
+ 3. To walk through your first RL run, see
150
+ 👉 [Synth-AI SDK Docs](https://docs.usesynth.ai/sdk/get-started)
151
+
152
+ ---
153
+
154
+ ## 🔐 SDK → Dashboard Pairing
155
+
156
+ When you run `uvx synth-ai setup` (or legacy `uvx synth-ai rl_demo setup`):
157
+
158
+ - The SDK opens your browser to the Synth dashboard to pair your SDK with your signed-in session.
159
+ - Automatically detects your **user + organization**
160
+ - Ensures both **API keys** exist
161
+ - Writes them to your project’s `.env` as:
162
+
163
+ ```
164
+ SYNTH_API_KEY=
165
+ ENVIRONMENT_API_KEY=
166
+ ```
167
+
168
+ ✅ No keys printed or requested interactively — all handled via browser pairing.
169
+
170
+ ### Environment overrides
171
+
172
+ - `SYNTH_CANONICAL_ORIGIN` → override dashboard base URL (default: https://www.usesynth.ai/dashboard)
173
+ - `SYNTH_CANONICAL_DEV` → `1|true|on` to use local dashboard (http://localhost:3000)
174
+
175
+ ---
176
+
177
+ ## 📚 Documentation
178
+
179
+ - **SDK Docs:** [https://docs.usesynth.ai/sdk/get-started](https://docs.usesynth.ai/sdk/get-started)
180
+ - **CLI Reference:** [https://docs.usesynth.ai/cli](https://docs.usesynth.ai/cli)
181
+ - **API Reference:** [https://docs.usesynth.ai/api](https://docs.usesynth.ai/api)
182
+ - **Changelog:** [https://docs.usesynth.ai/changelog](https://docs.usesynth.ai/changelog)
183
+
184
+ ---
185
+
186
+ ## 🧠 Meta
187
+
188
+ - Package: [`synth-ai`](https://pypi.org/project/synth-ai)
189
+ - Import: `synth_ai`
190
+ - Source: [github.com/synth-laboratories/synth-ai](https://github.com/synth-laboratories/synth-ai)
191
+ - License: MIT