synth-ai 0.2.4.dev8__tar.gz → 0.2.4.dev9__tar.gz
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.
- synth_ai-0.2.4.dev9/PKG-INFO +91 -0
- synth_ai-0.2.4.dev9/README.md +18 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/pyproject.toml +10 -2
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/__init__.py +6 -0
- synth_ai-0.2.4.dev9/synth_ai/cli/demo.py +131 -0
- synth_ai-0.2.4.dev9/synth_ai/cli/rl_demo.py +137 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/root.py +65 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/core/__init__.py +1 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/core/cli.py +621 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/__init__.py +1 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/core.py +374 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/math/__init__.py +1 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/math/app.py +37 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/math/config.toml +44 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/math/deploy_modal.py +60 -0
- synth_ai-0.2.4.dev9/synth_ai/demos/demo_task_apps/math/deploy_task_app.sh +22 -0
- synth_ai-0.2.4.dev9/synth_ai/environments/examples/bandit/__init__.py +33 -0
- synth_ai-0.2.4.dev9/synth_ai/environments/examples/bandit/engine.py +294 -0
- synth_ai-0.2.4.dev9/synth_ai/environments/examples/bandit/environment.py +194 -0
- synth_ai-0.2.4.dev9/synth_ai/environments/examples/bandit/taskset.py +200 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/environment.py +41 -2
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/service/app.py +8 -0
- synth_ai-0.2.4.dev9/synth_ai.egg-info/PKG-INFO +91 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai.egg-info/SOURCES.txt +14 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai.egg-info/entry_points.txt +1 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai.egg-info/requires.txt +1 -0
- synth_ai-0.2.4.dev8/PKG-INFO +0 -635
- synth_ai-0.2.4.dev8/README.md +0 -563
- synth_ai-0.2.4.dev8/synth_ai/cli/demo.py +0 -72
- synth_ai-0.2.4.dev8/synth_ai.egg-info/PKG-INFO +0 -635
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/LICENSE +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/MANIFEST.in +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/setup.cfg +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/__main__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/balance.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/calc.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/legacy_root_backup.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/man.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/recent.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/status.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/traces.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/cli/watch.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/compound/cais.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/config/base_url.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/core/experiment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/core/system.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/artifacts/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/artifacts/base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/db/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/db/sqlite.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/registry.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/resources/sqlite.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/results.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/rewards/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/rewards/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/shared_engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/environment/tools/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/analyze_semantic_words_markdown.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_config.toml +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_evaluation_framework.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/crafter_synth_config.toml +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_config_modal.toml +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_action_results.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_agent_actions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_latest_run.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_lm_traces.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_no_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/analyze_trace_issue.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_db_schema.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/check_latest_results.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/debug_agent_responses.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_modal_ft/old/quick_trace_check.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/compare_experiments.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/filter_traces_sft_turso.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/kick_off_ft_oai.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/multi_model_config.toml +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_enhanced_hooks.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_events.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/analyze_hook_results.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_hook_storage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/check_seeds.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/compare_seed_performance.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/custom_eval_pipelines.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/plot_hook_frequency.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/old/seed_analysis_summary.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_openai_ft/run_rollouts_for_models_and_compare_v3.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_react_agent.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/example_v3_usage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/compare_traces.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_comprehensive_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_env_serialization.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_evaluation_browser.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_quick_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/crafter_trace_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/debug_player_loss.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_service.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/diagnose_slowness.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_by_difficulty.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/eval_example.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/explore_saved_states.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/filter_traces_sft_OLD.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_gemini.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_data_modal.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/generate_ft_metadata.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_gemini.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/kick_off_ft_modal.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/prepare_vertex_ft.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/profile_env_slowness.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/replicate_issue.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_and_eval.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_comparison.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/run_qwen_rollouts.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/trace_eval_OLD.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/agent_demos/old/validate_openai_format.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/config_logging.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/debug_translation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/engine_deterministic_patch.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/engine_helpers/action_map.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/engine_helpers/serialization.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/engine_serialization_patch_v3.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/trace_hooks_v3.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_classic/world_config_patch_simple.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/agent_demos/trace_eval.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/constants.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/env.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/objects.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/recorder.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/crafter/worldgen.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/dataset_builder.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_issue.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/analyze_diamond_spawning.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/compare_worlds.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/dataset_stats.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/diamond_spawning_summary.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/old/example_dataset_usage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/crafter_custom/run_dataset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/art_helpers/email_search_tools.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/art_helpers/local_email_db.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/art_helpers/types_enron.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/enron/units/keyword_stats.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_evaluation_framework.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_quick_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_react_agent.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/agent_demos/minigrid_trace_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/environment_mapping.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/puzzle_loader.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/minigrid/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/achievements.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_evaluation_framework.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_quick_evaluation.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/agent_demos/nethack_react_agent.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/action_mapping.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/nle_wrapper.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/observation_utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/recording_wrapper.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/trajectory_recorder.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/visualization/replay_viewer.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/helpers/visualization/visualizer.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/nethack/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/agent_demos/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/config_logging.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/memory_map.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_components.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/adaptive_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/battle_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/composite_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/economy_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/efficiency_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/exploration_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/novelty_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/pallet_town_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/pokemon_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/social_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/reward_library/story_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/screen_analysis.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/engine_helpers/state_extraction.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/red/units/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/agent_demos/sokoban_full_eval.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/room_utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/boxoban_env.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/render_utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/room_utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_fixed_targets.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_pull.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_two_player.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/engine_helpers/vendored/envs/sokoban_env_variations.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/generate_verified_puzzles.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/puzzle_loader.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/sokoban/units/astar_common.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/tictactoe/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/tictactoe/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/tictactoe/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/tictactoe/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/verilog/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/verilog/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/verilog/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/verilog/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/wordle/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/wordle/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/wordle/environment.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/wordle/helpers/generate_instances_wordfreq.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/examples/wordle/taskset.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/reproducibility/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/reproducibility/helpers.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/reproducibility/tree.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/service/core_routes.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/service/external_registry.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/service/registry.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/stateful/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/stateful/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/stateful/engine.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/stateful/state.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/tasks/api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/tasks/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/tasks/filters.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/tasks/utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/v0_observability/history.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/environments/v0_observability/log.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/evals/base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/experimental/synth_oss.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/http.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/inference/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/inference/client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/install_sqld.sh +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/jobs/client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/constants.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/core.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/filtering.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/ft_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/gateway.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/health.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/jobs.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/offline/dpo.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/offline/providers.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/offline/sft.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/offline/shared.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/online/grpo.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/online/irft.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/banking77_injection_eval.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/gepa.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/hello_world_in_context_injection_ex.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/mipro.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/random_search.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/run_mipro_banking77.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/prompts/run_random_search_banking77.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/rl_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/sse.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/learning/validators.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/constants.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/dbs.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/ephemeral.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/handler.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/initialize.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/caching/persistent.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/constants.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/all.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/exceptions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/main.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/main_v3.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/synth_models.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/core/vendor_clients.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/cost/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/cost/monitor.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/cost/statefulness.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/injection.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/overrides.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/provider_support/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/provider_support/anthropic.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/provider_support/openai.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/provider_support/suppress_logging.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/structured_outputs/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/structured_outputs/handler.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/structured_outputs/inject.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/structured_outputs/rehabilitate.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/tools/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/tools/base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/unified_interface.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/anthropic_api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/gemini_api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/mistral_api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/openai_api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/core/synth_dev_api.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/local/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/local/ollama.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/openai_standard.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/openai_standard_responses.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/retries.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/custom_endpoint.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/deepseek.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/grok.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/groq.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/ollama.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/openrouter.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/supported/together.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/vendors/synth_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/lm/warmup.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/rl/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/rl/contracts.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/rl/env_keys.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/rl/secrets.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/scripts/verify_rewards.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/task/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/task/contracts.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/task/health.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/task/validators.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/abstractions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/db_config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/decorators.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/examples/basic_usage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/hooks.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/llm_call_record_helpers.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/lm_call_record_abstractions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/migration_helper.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/replica_sync.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/session_tracer.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/exceptions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/factory.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/types.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/storage/utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/turso/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/turso/daemon.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/turso/manager.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/turso/models.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/tracing_v3/utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/abstractions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/base_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/client_manager.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/context.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/decorators.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/events/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/events/manage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/events/scope.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/events/store.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/immediate_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/local.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/log_client_base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/retry_queue.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/trackers.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/upload.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing/utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/abstractions.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/base_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/client_manager.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/config.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/context.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/decorators.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/events/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/events/manage.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/events/scope.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/events/store.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/immediate_client.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/local.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/log_client_base.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/retry_queue.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/trackers.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/upload.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/v0/tracing_v1/utils.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai/zyk/__init__.py +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai.egg-info/dependency_links.txt +0 -0
- {synth_ai-0.2.4.dev8 → synth_ai-0.2.4.dev9}/synth_ai.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: synth-ai
|
|
3
|
+
Version: 0.2.4.dev9
|
|
4
|
+
Summary: Software for aiding the best and multiplying the will - Core AI functionality and tracing
|
|
5
|
+
Author-email: Synth AI <josh@usesynth.ai>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/synth-laboratories/synth-ai
|
|
8
|
+
Project-URL: Repository, https://github.com/synth-laboratories/synth-ai
|
|
9
|
+
Project-URL: Issues, https://github.com/synth-laboratories/synth-ai/issues
|
|
10
|
+
Requires-Python: >=3.11
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: pydantic>=2.0.0
|
|
14
|
+
Requires-Dist: python-dotenv>=1.0.1
|
|
15
|
+
Requires-Dist: requests>=2.32.3
|
|
16
|
+
Requires-Dist: urllib3>=2.3.0
|
|
17
|
+
Requires-Dist: tqdm>=4.66.4
|
|
18
|
+
Requires-Dist: jsonschema>=4.23.0
|
|
19
|
+
Requires-Dist: backoff>=2.0.0
|
|
20
|
+
Requires-Dist: typing_extensions>=4.0.0
|
|
21
|
+
Requires-Dist: openai>=1.99.0
|
|
22
|
+
Requires-Dist: anthropic>=0.42.0
|
|
23
|
+
Requires-Dist: langfuse<3.0.0,>=2.53.9
|
|
24
|
+
Requires-Dist: opentelemetry-api<1.27.0,>=1.26.0
|
|
25
|
+
Requires-Dist: opentelemetry-sdk<1.27.0,>=1.26.0
|
|
26
|
+
Requires-Dist: diskcache>=5.6.3
|
|
27
|
+
Requires-Dist: groq>=0.30.0
|
|
28
|
+
Requires-Dist: google-genai>=1.26.0
|
|
29
|
+
Requires-Dist: together>=1.5.21
|
|
30
|
+
Requires-Dist: mistralai>=1.9.2
|
|
31
|
+
Requires-Dist: fastapi>=0.115.12
|
|
32
|
+
Requires-Dist: uvicorn>=0.34.2
|
|
33
|
+
Requires-Dist: numpy>=2.2.3
|
|
34
|
+
Requires-Dist: networkx>=3.4.2
|
|
35
|
+
Requires-Dist: redis>=6.2.0
|
|
36
|
+
Requires-Dist: duckdb>=1.0.0
|
|
37
|
+
Requires-Dist: pandas>=2.2.3
|
|
38
|
+
Requires-Dist: ty>=0.0.1a5
|
|
39
|
+
Requires-Dist: toml>=0.10.2
|
|
40
|
+
Requires-Dist: sqlalchemy>=2.0.42
|
|
41
|
+
Requires-Dist: aiosqlite>=0.21.0
|
|
42
|
+
Requires-Dist: greenlet>=3.2.3
|
|
43
|
+
Requires-Dist: libsql>=0.1.8
|
|
44
|
+
Requires-Dist: pynacl>=1.5.0
|
|
45
|
+
Requires-Dist: google-api-core>=2.25.1
|
|
46
|
+
Requires-Dist: google-generativeai>=0.8.5
|
|
47
|
+
Requires-Dist: crafter>=1.8.3
|
|
48
|
+
Requires-Dist: click>=8.1.0
|
|
49
|
+
Requires-Dist: textual>=1.1.0
|
|
50
|
+
Requires-Dist: openai-harmony>=0.0.1
|
|
51
|
+
Requires-Dist: asyncpg>=0.30.0
|
|
52
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
53
|
+
Requires-Dist: datasets>=4.0.0
|
|
54
|
+
Requires-Dist: transformers>=4.56.1
|
|
55
|
+
Requires-Dist: modal>=1.1.4
|
|
56
|
+
Provides-Extra: dev
|
|
57
|
+
Requires-Dist: build>=1.2.2.post1; extra == "dev"
|
|
58
|
+
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
59
|
+
Requires-Dist: keyring>=24.0.0; extra == "dev"
|
|
60
|
+
Requires-Dist: pytest>=8.3.3; extra == "dev"
|
|
61
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
|
62
|
+
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
|
|
63
|
+
Requires-Dist: pyright>=1.1.350; extra == "dev"
|
|
64
|
+
Requires-Dist: coverage[toml]>=7.3.0; extra == "dev"
|
|
65
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
66
|
+
Provides-Extra: research
|
|
67
|
+
Requires-Dist: crafter>=1.8.3; extra == "research"
|
|
68
|
+
Requires-Dist: datasets>=4.0.0; extra == "research"
|
|
69
|
+
Provides-Extra: all
|
|
70
|
+
Requires-Dist: crafter>=1.8.3; extra == "all"
|
|
71
|
+
Requires-Dist: datasets>=4.0.0; extra == "all"
|
|
72
|
+
Dynamic: license-file
|
|
73
|
+
|
|
74
|
+
# Synth-AI
|
|
75
|
+
|
|
76
|
+
[](https://www.python.org/)
|
|
77
|
+
[](LICENSE)
|
|
78
|
+
[](https://pypi.org/project/synth-ai/)
|
|
79
|
+

|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
Docs: [Synth‑AI Documentation](https://docs.usesynth.ai/synth-ai/introduction)
|
|
83
|
+
|
|
84
|
+
Fast and effective reinforcement learning for agents, via an API
|
|
85
|
+
|
|
86
|
+
# Highlights
|
|
87
|
+
|
|
88
|
+
- Easily scale gpu topologies - train on 3 a10gs or 8 H100s (multi-node available upon request)
|
|
89
|
+
- Requires only a thin fastapi wrapper to integrate with existing agent software.
|
|
90
|
+
- Supports the best OSS models like Qwen3. (gpt-oss available upon request, GA soon)
|
|
91
|
+
- Own your trained models
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Synth-AI
|
|
2
|
+
|
|
3
|
+
[](https://www.python.org/)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://pypi.org/project/synth-ai/)
|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
Docs: [Synth‑AI Documentation](https://docs.usesynth.ai/synth-ai/introduction)
|
|
10
|
+
|
|
11
|
+
Fast and effective reinforcement learning for agents, via an API
|
|
12
|
+
|
|
13
|
+
# Highlights
|
|
14
|
+
|
|
15
|
+
- Easily scale gpu topologies - train on 3 a10gs or 8 H100s (multi-node available upon request)
|
|
16
|
+
- Requires only a thin fastapi wrapper to integrate with existing agent software.
|
|
17
|
+
- Supports the best OSS models like Qwen3. (gpt-oss available upon request, GA soon)
|
|
18
|
+
- Own your trained models
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "synth-ai"
|
|
3
|
-
version = "0.2.4.
|
|
3
|
+
version = "0.2.4.dev9"
|
|
4
4
|
description = "Software for aiding the best and multiplying the will - Core AI functionality and tracing"
|
|
5
5
|
authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
|
|
6
6
|
license = "MIT"
|
|
@@ -54,10 +54,12 @@ dependencies = [
|
|
|
54
54
|
"aiohttp>=3.8.0", # For async HTTP requests in Harmony integration
|
|
55
55
|
"datasets>=4.0.0",
|
|
56
56
|
"transformers>=4.56.1",
|
|
57
|
+
"modal>=1.1.4",
|
|
57
58
|
]
|
|
58
59
|
|
|
59
60
|
[project.scripts]
|
|
60
61
|
synth-ai = "synth_ai.cli:cli"
|
|
62
|
+
synth-ai-demo = "synth_ai.demos.core.cli:main"
|
|
61
63
|
|
|
62
64
|
[project.optional-dependencies]
|
|
63
65
|
dev = [
|
|
@@ -107,7 +109,7 @@ exclude = [
|
|
|
107
109
|
]
|
|
108
110
|
|
|
109
111
|
[tool.setuptools]
|
|
110
|
-
include-package-data =
|
|
112
|
+
include-package-data = true
|
|
111
113
|
|
|
112
114
|
[tool.setuptools.exclude-package-data]
|
|
113
115
|
"synth_ai" = [
|
|
@@ -118,6 +120,12 @@ include-package-data = false
|
|
|
118
120
|
"**/units/**",
|
|
119
121
|
]
|
|
120
122
|
|
|
123
|
+
[tool.setuptools.package-data]
|
|
124
|
+
"synth_ai" = [
|
|
125
|
+
"demos/demo_task_apps/math/config.toml",
|
|
126
|
+
"demos/demo_task_apps/math/deploy_task_app.sh",
|
|
127
|
+
]
|
|
128
|
+
|
|
121
129
|
[tool.pytest.ini_options]
|
|
122
130
|
testpaths = ["tests", "private_tests"]
|
|
123
131
|
python_files = "test_*.py"
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
CLI: interactive launcher for example demos and forwarders for new RL demo.
|
|
4
|
+
|
|
5
|
+
- `synth-ai demo` (no subcommand) -> legacy examples/ runner (run_demo.sh picker)
|
|
6
|
+
- `synth-ai demo deploy|configure|run` -> forwards to synth_ai.demos.core.cli
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
import subprocess
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
import click
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _find_demo_scripts(root: Path) -> list[Path]:
|
|
19
|
+
if not root.exists():
|
|
20
|
+
return []
|
|
21
|
+
return sorted([p for p in root.rglob("run_demo.sh") if p.is_file()])
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _forward_to_new(args: list[str]) -> None:
|
|
25
|
+
import sys
|
|
26
|
+
try:
|
|
27
|
+
from synth_ai.demos.core import cli as demo_cli # type: ignore
|
|
28
|
+
except Exception as e: # pragma: no cover
|
|
29
|
+
click.echo(f"Failed to import demo CLI: {e}")
|
|
30
|
+
sys.exit(1)
|
|
31
|
+
rc = int(demo_cli.main(args) or 0)
|
|
32
|
+
if rc != 0:
|
|
33
|
+
sys.exit(rc)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def register(cli):
|
|
37
|
+
@cli.group("demo", invoke_without_command=True)
|
|
38
|
+
@click.option("--list", "list_only", is_flag=True, help="List available legacy demos and exit")
|
|
39
|
+
@click.option("-f", "filter_term", default="", help="Filter legacy demos by substring")
|
|
40
|
+
@click.pass_context
|
|
41
|
+
def demo(ctx: click.Context, list_only: bool, filter_term: str):
|
|
42
|
+
"""Demo helpers.
|
|
43
|
+
|
|
44
|
+
- Legacy mode (no subcommand): find and run examples/*/run_demo.sh
|
|
45
|
+
- New RL demo subcommands: deploy, configure, run
|
|
46
|
+
"""
|
|
47
|
+
if ctx.invoked_subcommand is not None:
|
|
48
|
+
return
|
|
49
|
+
# Legacy behavior: interactive examples runner
|
|
50
|
+
repo_root = Path(os.getcwd())
|
|
51
|
+
examples_dir = repo_root / "examples"
|
|
52
|
+
demos = _find_demo_scripts(examples_dir)
|
|
53
|
+
if filter_term:
|
|
54
|
+
demos = [p for p in demos if filter_term.lower() in str(p).lower()]
|
|
55
|
+
|
|
56
|
+
if not demos:
|
|
57
|
+
click.echo("No run_demo.sh scripts found under examples/.")
|
|
58
|
+
return
|
|
59
|
+
|
|
60
|
+
if list_only:
|
|
61
|
+
click.echo("Available demos:")
|
|
62
|
+
for p in demos:
|
|
63
|
+
click.echo(f" - {p.relative_to(repo_root)}")
|
|
64
|
+
return
|
|
65
|
+
|
|
66
|
+
click.echo("Available demos:")
|
|
67
|
+
for idx, p in enumerate(demos, start=1):
|
|
68
|
+
click.echo(f" {idx}. {p.relative_to(repo_root)}")
|
|
69
|
+
click.echo("")
|
|
70
|
+
|
|
71
|
+
def _validate_choice(val: str) -> int:
|
|
72
|
+
try:
|
|
73
|
+
i = int(val)
|
|
74
|
+
except Exception as err:
|
|
75
|
+
raise click.BadParameter("Enter a number from the list") from err
|
|
76
|
+
if i < 1 or i > len(demos):
|
|
77
|
+
raise click.BadParameter(f"Choose a number between 1 and {len(demos)}")
|
|
78
|
+
return i
|
|
79
|
+
|
|
80
|
+
choice = click.prompt("Select a demo to run", value_proc=_validate_choice)
|
|
81
|
+
script = demos[choice - 1]
|
|
82
|
+
|
|
83
|
+
click.echo("")
|
|
84
|
+
click.echo(f"🚀 Running {script.relative_to(repo_root)}\n")
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
subprocess.run(["bash", str(script)], check=True)
|
|
88
|
+
except subprocess.CalledProcessError as e:
|
|
89
|
+
click.echo(f"❌ Demo exited with non-zero status: {e.returncode}")
|
|
90
|
+
except KeyboardInterrupt:
|
|
91
|
+
click.echo("\n🛑 Demo interrupted by user")
|
|
92
|
+
|
|
93
|
+
# (prepare command removed; configure now prepares baseline TOML)
|
|
94
|
+
|
|
95
|
+
@demo.command("deploy")
|
|
96
|
+
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
97
|
+
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
98
|
+
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
99
|
+
@click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
100
|
+
def demo_deploy(local: bool, app: str | None, name: str, script: str | None):
|
|
101
|
+
args: list[str] = ["rl_demo.deploy"]
|
|
102
|
+
if local:
|
|
103
|
+
args.append("--local")
|
|
104
|
+
if app:
|
|
105
|
+
args.extend(["--app", app])
|
|
106
|
+
if name:
|
|
107
|
+
args.extend(["--name", name])
|
|
108
|
+
if script:
|
|
109
|
+
args.extend(["--script", script])
|
|
110
|
+
_forward_to_new(args)
|
|
111
|
+
|
|
112
|
+
@demo.command("configure")
|
|
113
|
+
def demo_configure():
|
|
114
|
+
_forward_to_new(["rl_demo.configure"])
|
|
115
|
+
|
|
116
|
+
@demo.command("run")
|
|
117
|
+
@click.option("--batch-size", type=int, default=None)
|
|
118
|
+
@click.option("--group-size", type=int, default=None)
|
|
119
|
+
@click.option("--model", type=str, default=None)
|
|
120
|
+
@click.option("--timeout", type=int, default=600)
|
|
121
|
+
def demo_run(batch_size: int | None, group_size: int | None, model: str | None, timeout: int):
|
|
122
|
+
args = ["rl_demo.run"]
|
|
123
|
+
if batch_size is not None:
|
|
124
|
+
args.extend(["--batch-size", str(batch_size)])
|
|
125
|
+
if group_size is not None:
|
|
126
|
+
args.extend(["--group-size", str(group_size)])
|
|
127
|
+
if model:
|
|
128
|
+
args.extend(["--model", model])
|
|
129
|
+
if timeout:
|
|
130
|
+
args.extend(["--timeout", str(timeout)])
|
|
131
|
+
_forward_to_new(args)
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
New RL demo command group kept fully separate from legacy demo.
|
|
4
|
+
|
|
5
|
+
Usage examples:
|
|
6
|
+
uvx synth-ai rl_demo check
|
|
7
|
+
uvx synth-ai rl_demo deploy --app /path/to/math_task_app.py --name synth-math-demo
|
|
8
|
+
uvx synth-ai rl_demo configure
|
|
9
|
+
uvx synth-ai rl_demo run --batch-size 4 --group-size 16 --model Qwen/Qwen3-0.6B
|
|
10
|
+
|
|
11
|
+
For convenience, dotted aliases are also exposed:
|
|
12
|
+
uvx synth-ai rl_demo.check
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import click
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _forward(args: list[str]) -> None:
|
|
21
|
+
import sys
|
|
22
|
+
try:
|
|
23
|
+
from synth_ai.demos.core import cli as demo_cli # type: ignore
|
|
24
|
+
except Exception as e: # pragma: no cover
|
|
25
|
+
click.echo(f"Failed to import RL demo CLI: {e}")
|
|
26
|
+
sys.exit(1)
|
|
27
|
+
rc = int(demo_cli.main(args) or 0)
|
|
28
|
+
if rc != 0:
|
|
29
|
+
sys.exit(rc)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def register(cli):
|
|
33
|
+
@cli.group("rl_demo")
|
|
34
|
+
def rl_demo():
|
|
35
|
+
"""RL Demo commands (separate from legacy demo)."""
|
|
36
|
+
|
|
37
|
+
@rl_demo.command("check")
|
|
38
|
+
def rl_check():
|
|
39
|
+
_forward(["rl_demo.check"]) # reuse same implementation
|
|
40
|
+
|
|
41
|
+
# (prepare command removed; consolidated into configure)
|
|
42
|
+
|
|
43
|
+
@rl_demo.command("deploy")
|
|
44
|
+
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
45
|
+
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
46
|
+
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
47
|
+
@click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
48
|
+
def rl_deploy(local: bool, app: str | None, name: str, script: str | None):
|
|
49
|
+
args: list[str] = ["rl_demo.deploy"]
|
|
50
|
+
if local:
|
|
51
|
+
args.append("--local")
|
|
52
|
+
if app:
|
|
53
|
+
args.extend(["--app", app])
|
|
54
|
+
if name:
|
|
55
|
+
args.extend(["--name", name])
|
|
56
|
+
if script:
|
|
57
|
+
args.extend(["--script", script])
|
|
58
|
+
_forward(args)
|
|
59
|
+
|
|
60
|
+
@rl_demo.command("configure")
|
|
61
|
+
def rl_configure():
|
|
62
|
+
_forward(["rl_demo.configure"])
|
|
63
|
+
|
|
64
|
+
@rl_demo.command("run")
|
|
65
|
+
@click.option("--config", type=click.Path(), default=None, help="Path to TOML config (skip prompt)")
|
|
66
|
+
@click.option("--batch-size", type=int, default=None)
|
|
67
|
+
@click.option("--group-size", type=int, default=None)
|
|
68
|
+
@click.option("--model", type=str, default=None)
|
|
69
|
+
@click.option("--timeout", type=int, default=600)
|
|
70
|
+
@click.option("--dry-run", is_flag=True, help="Print request body and exit")
|
|
71
|
+
def rl_run(config: str | None, batch_size: int | None, group_size: int | None, model: str | None, timeout: int, dry_run: bool):
|
|
72
|
+
args = ["rl_demo.run"]
|
|
73
|
+
if config:
|
|
74
|
+
args.extend(["--config", config])
|
|
75
|
+
if batch_size is not None:
|
|
76
|
+
args.extend(["--batch-size", str(batch_size)])
|
|
77
|
+
if group_size is not None:
|
|
78
|
+
args.extend(["--group-size", str(group_size)])
|
|
79
|
+
if model:
|
|
80
|
+
args.extend(["--model", model])
|
|
81
|
+
if timeout is not None:
|
|
82
|
+
args.extend(["--timeout", str(timeout)])
|
|
83
|
+
if dry_run:
|
|
84
|
+
args.append("--dry-run")
|
|
85
|
+
_forward(args)
|
|
86
|
+
|
|
87
|
+
# Dotted aliases (top-level) for convenience: rl_demo.check etc.
|
|
88
|
+
@cli.command("rl_demo.check")
|
|
89
|
+
def rl_check_alias():
|
|
90
|
+
_forward(["rl_demo.check"])
|
|
91
|
+
|
|
92
|
+
# (prepare alias removed)
|
|
93
|
+
|
|
94
|
+
@cli.command("rl_demo.deploy")
|
|
95
|
+
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
96
|
+
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
97
|
+
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
98
|
+
@click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
99
|
+
def rl_deploy_alias(local: bool, app: str | None, name: str, script: str | None):
|
|
100
|
+
args: list[str] = ["rl_demo.deploy"]
|
|
101
|
+
if local:
|
|
102
|
+
args.append("--local")
|
|
103
|
+
if app:
|
|
104
|
+
args.extend(["--app", app])
|
|
105
|
+
if name:
|
|
106
|
+
args.extend(["--name", name])
|
|
107
|
+
if script:
|
|
108
|
+
args.extend(["--script", script])
|
|
109
|
+
_forward(args)
|
|
110
|
+
|
|
111
|
+
@cli.command("rl_demo.configure")
|
|
112
|
+
def rl_configure_alias():
|
|
113
|
+
_forward(["rl_demo.configure"])
|
|
114
|
+
|
|
115
|
+
@cli.command("rl_demo.run")
|
|
116
|
+
@click.option("--config", type=click.Path(), default=None, help="Path to TOML config (skip prompt)")
|
|
117
|
+
@click.option("--batch-size", type=int, default=None)
|
|
118
|
+
@click.option("--group-size", type=int, default=None)
|
|
119
|
+
@click.option("--model", type=str, default=None)
|
|
120
|
+
@click.option("--timeout", type=int, default=600)
|
|
121
|
+
@click.option("--dry-run", is_flag=True, help="Print request body and exit")
|
|
122
|
+
def rl_run_alias(config: str | None, batch_size: int | None, group_size: int | None, model: str | None, timeout: int, dry_run: bool):
|
|
123
|
+
args = ["rl_demo.run"]
|
|
124
|
+
if config:
|
|
125
|
+
args.extend(["--config", config])
|
|
126
|
+
if batch_size is not None:
|
|
127
|
+
args.extend(["--batch-size", str(batch_size)])
|
|
128
|
+
if group_size is not None:
|
|
129
|
+
args.extend(["--group-size", str(group_size)])
|
|
130
|
+
if model:
|
|
131
|
+
args.extend(["--model", model])
|
|
132
|
+
if timeout is not None:
|
|
133
|
+
args.extend(["--timeout", str(timeout)])
|
|
134
|
+
if dry_run:
|
|
135
|
+
args.append("--dry-run")
|
|
136
|
+
_forward(args)
|
|
137
|
+
|
|
@@ -71,6 +71,71 @@ def cli():
|
|
|
71
71
|
"""Synth AI - Software for aiding the best and multiplying the will."""
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
# === Legacy demo command group (aliases new rl_demo implementation) ===
|
|
75
|
+
@cli.group()
|
|
76
|
+
def demo():
|
|
77
|
+
"""Demo helpers (deploy, configure, run)."""
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _forward_to_demo(args: list[str]) -> None:
|
|
81
|
+
# Lazy import to avoid loading demo deps unless needed
|
|
82
|
+
try:
|
|
83
|
+
from synth_ai.demos.core import cli as demo_cli # type: ignore
|
|
84
|
+
except Exception as e: # pragma: no cover
|
|
85
|
+
click.echo(f"Failed to import demo CLI: {e}")
|
|
86
|
+
sys.exit(1)
|
|
87
|
+
rc = int(demo_cli.main(args) or 0)
|
|
88
|
+
if rc != 0:
|
|
89
|
+
sys.exit(rc)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# (prepare command removed; handled by configure)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
@demo.command()
|
|
96
|
+
@click.option("--local", is_flag=True, help="Run local FastAPI instead of Modal deploy")
|
|
97
|
+
@click.option("--app", type=click.Path(), default=None, help="Path to Modal app.py for uv run modal deploy")
|
|
98
|
+
@click.option("--name", type=str, default="synth-math-demo", help="Modal app name")
|
|
99
|
+
@click.option("--script", type=click.Path(), default=None, help="Path to deploy_task_app.sh (optional legacy)")
|
|
100
|
+
def deploy(local: bool, app: str | None, name: str, script: str | None):
|
|
101
|
+
"""Deploy the Math Task App (Modal by default)."""
|
|
102
|
+
args: list[str] = ["rl_demo.deploy"]
|
|
103
|
+
if local:
|
|
104
|
+
args.append("--local")
|
|
105
|
+
if app:
|
|
106
|
+
args.extend(["--app", app])
|
|
107
|
+
if name:
|
|
108
|
+
args.extend(["--name", name])
|
|
109
|
+
if script:
|
|
110
|
+
args.extend(["--script", script])
|
|
111
|
+
_forward_to_demo(args)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@demo.command()
|
|
115
|
+
def configure():
|
|
116
|
+
"""Print resolved environment and config path."""
|
|
117
|
+
_forward_to_demo(["rl_demo.configure"])
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
@demo.command()
|
|
121
|
+
@click.option("--batch-size", type=int, default=None)
|
|
122
|
+
@click.option("--group-size", type=int, default=None)
|
|
123
|
+
@click.option("--model", type=str, default=None)
|
|
124
|
+
@click.option("--timeout", type=int, default=600)
|
|
125
|
+
def run(batch_size: int | None, group_size: int | None, model: str | None, timeout: int):
|
|
126
|
+
"""Kick off a short RL job using the prepared TOML."""
|
|
127
|
+
args = ["rl_demo.run"]
|
|
128
|
+
if batch_size is not None:
|
|
129
|
+
args.extend(["--batch-size", str(batch_size)])
|
|
130
|
+
if group_size is not None:
|
|
131
|
+
args.extend(["--group-size", str(group_size)])
|
|
132
|
+
if model:
|
|
133
|
+
args.extend(["--model", model])
|
|
134
|
+
if timeout:
|
|
135
|
+
args.extend(["--timeout", str(timeout)])
|
|
136
|
+
_forward_to_demo(args)
|
|
137
|
+
|
|
138
|
+
|
|
74
139
|
@cli.command()
|
|
75
140
|
@click.option("--db-file", default="traces/v3/synth_ai.db", help="Database file path")
|
|
76
141
|
@click.option("--sqld-port", default=8080, type=int, help="Port for sqld HTTP interface")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Core demo CLI and helpers package
|