agentinputlab 0.1.0a1__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.
- agentinputlab/__init__.py +28 -0
- agentinputlab/algorithms/__init__.py +6 -0
- agentinputlab/algorithms/acquire/__init__.py +145 -0
- agentinputlab/algorithms/acquire/adaptive_rag/__init__.py +43 -0
- agentinputlab/algorithms/acquire/adaptive_rag/replay.py +367 -0
- agentinputlab/algorithms/acquire/adaptive_rag/runtime.py +1202 -0
- agentinputlab/algorithms/acquire/adaptive_rag_common_support.py +542 -0
- agentinputlab/algorithms/acquire/hyde.py +296 -0
- agentinputlab/algorithms/acquire/hyde_controlled.py +200 -0
- agentinputlab/algorithms/acquire/hyde_external.py +148 -0
- agentinputlab/algorithms/acquire/ircot.py +28 -0
- agentinputlab/algorithms/acquire/ircot_common_support.py +478 -0
- agentinputlab/algorithms/acquire/ircot_native.py +355 -0
- agentinputlab/algorithms/acquire/ircot_replay.py +327 -0
- agentinputlab/algorithms/acquire/qrag/__init__.py +79 -0
- agentinputlab/algorithms/acquire/qrag/bridge.py +828 -0
- agentinputlab/algorithms/acquire/qrag/common_support.py +891 -0
- agentinputlab/algorithms/acquire/qrag/native_axis.py +71 -0
- agentinputlab/algorithms/acquire/qrag/reader_adapter.py +139 -0
- agentinputlab/algorithms/acquire/r2ag/__init__.py +57 -0
- agentinputlab/algorithms/acquire/r2ag/bridge.py +1312 -0
- agentinputlab/algorithms/acquire/r2ag/common_support.py +1029 -0
- agentinputlab/algorithms/acquire/r2ag/socket_runtime.py +255 -0
- agentinputlab/algorithms/clarify/__init__.py +61 -0
- agentinputlab/algorithms/clarify/_structured.py +64 -0
- agentinputlab/algorithms/clarify/active_task_disambiguation.py +371 -0
- agentinputlab/algorithms/clarify/ask_or_assume/__init__.py +17 -0
- agentinputlab/algorithms/clarify/ask_or_assume/monitor.py +410 -0
- agentinputlab/algorithms/clarify/future_turns.py +379 -0
- agentinputlab/algorithms/clarify/udcs.py +255 -0
- agentinputlab/algorithms/clarify/udcs_deterministic.py +196 -0
- agentinputlab/algorithms/curate/__init__.py +65 -0
- agentinputlab/algorithms/curate/acon/__init__.py +27 -0
- agentinputlab/algorithms/curate/acon/common.py +284 -0
- agentinputlab/algorithms/curate/acon/common_support.py +136 -0
- agentinputlab/algorithms/curate/acon/history_bridge.py +309 -0
- agentinputlab/algorithms/curate/acon/observation_bridge.py +290 -0
- agentinputlab/algorithms/curate/llmlingua/__init__.py +30 -0
- agentinputlab/algorithms/curate/llmlingua/adapters.py +537 -0
- agentinputlab/algorithms/curate/llmlingua/budget.py +48 -0
- agentinputlab/algorithms/curate/llmlingua/controlled.py +175 -0
- agentinputlab/algorithms/curate/llmlingua/multilingual.py +105 -0
- agentinputlab/algorithms/curate/llmlingua/span_map.py +167 -0
- agentinputlab/algorithms/curate/recomp/__init__.py +47 -0
- agentinputlab/algorithms/curate/recomp/external.py +1129 -0
- agentinputlab/algorithms/curate/recomp/selective.py +304 -0
- agentinputlab/algorithms/decompose/__init__.py +107 -0
- agentinputlab/algorithms/decompose/decomp/__init__.py +53 -0
- agentinputlab/algorithms/decompose/decomp/common_support.py +478 -0
- agentinputlab/algorithms/decompose/decomp/planner_component.py +199 -0
- agentinputlab/algorithms/decompose/decomp/worker_bridge.py +416 -0
- agentinputlab/algorithms/decompose/llm_compiler/__init__.py +35 -0
- agentinputlab/algorithms/decompose/llm_compiler/bridge.py +520 -0
- agentinputlab/algorithms/decompose/llm_compiler/common_support.py +504 -0
- agentinputlab/algorithms/decompose/plan_and_budget/__init__.py +43 -0
- agentinputlab/algorithms/decompose/plan_and_budget/cached_soft_budget.py +362 -0
- agentinputlab/algorithms/decompose/plan_and_budget/decomposer_component.py +107 -0
- agentinputlab/algorithms/decompose/plan_and_budget/full.py +205 -0
- agentinputlab/algorithms/decompose/plan_and_budget/hard_cap.py +246 -0
- agentinputlab/algorithms/decompose/plan_and_budget/regenerated_soft_budget.py +448 -0
- agentinputlab/algorithms/decompose/plan_and_solve/__init__.py +33 -0
- agentinputlab/algorithms/decompose/plan_and_solve/plan_component.py +192 -0
- agentinputlab/algorithms/decompose/plan_and_solve/ps_prompt.py +127 -0
- agentinputlab/algorithms/decompose/self_ask/__init__.py +27 -0
- agentinputlab/algorithms/decompose/self_ask/loop.py +362 -0
- agentinputlab/algorithms/decompose/self_ask/planner_component.py +117 -0
- agentinputlab/algorithms/reformulate/__init__.py +85 -0
- agentinputlab/algorithms/reformulate/infocqr/__init__.py +40 -0
- agentinputlab/algorithms/reformulate/infocqr/cache_replay.py +362 -0
- agentinputlab/algorithms/reformulate/infocqr/external.py +675 -0
- agentinputlab/algorithms/reformulate/infocqr/student.py +189 -0
- agentinputlab/algorithms/reformulate/query2doc/__init__.py +42 -0
- agentinputlab/algorithms/reformulate/query2doc/controlled_live.py +190 -0
- agentinputlab/algorithms/reformulate/query2doc/models.py +95 -0
- agentinputlab/algorithms/reformulate/query2doc/official_cached.py +335 -0
- agentinputlab/algorithms/reformulate/query2doc/querygym_bridge.py +223 -0
- agentinputlab/algorithms/reformulate/query2doc/querygym_runtime.py +326 -0
- agentinputlab/algorithms/reformulate/reformer/__init__.py +23 -0
- agentinputlab/algorithms/reformulate/reformer/external.py +417 -0
- agentinputlab/algorithms/reformulate/rrr.py +696 -0
- agentinputlab/annotation/__init__.py +5 -0
- agentinputlab/annotation/independent.py +428 -0
- agentinputlab/annotation/server.py +233 -0
- agentinputlab/annotation/static/app.js +121 -0
- agentinputlab/annotation/static/index.html +60 -0
- agentinputlab/annotation/static/review.css +2 -0
- agentinputlab/annotation/static/review.html +10 -0
- agentinputlab/annotation/static/review.js +11 -0
- agentinputlab/annotation/static/styles.css +55 -0
- agentinputlab/annotation/store.py +444 -0
- agentinputlab/api.py +368 -0
- agentinputlab/artifacts/__init__.py +15 -0
- agentinputlab/artifacts/json_file.py +104 -0
- agentinputlab/artifacts/manifest.py +98 -0
- agentinputlab/artifacts/store.py +157 -0
- agentinputlab/backends/__init__.py +98 -0
- agentinputlab/backends/embedding/__init__.py +25 -0
- agentinputlab/backends/embedding/base.py +145 -0
- agentinputlab/backends/embedding/callable.py +75 -0
- agentinputlab/backends/embedding/replay.py +129 -0
- agentinputlab/backends/llm/__init__.py +31 -0
- agentinputlab/backends/llm/base.py +149 -0
- agentinputlab/backends/llm/callable.py +108 -0
- agentinputlab/backends/llm/decomp_completion.py +88 -0
- agentinputlab/backends/llm/final_content_stop.py +72 -0
- agentinputlab/backends/llm/gpt_oss_final_channel.py +84 -0
- agentinputlab/backends/llm/openai_compatible.py +332 -0
- agentinputlab/backends/llm/transformers.py +171 -0
- agentinputlab/backends/retrieval/__init__.py +35 -0
- agentinputlab/backends/retrieval/base.py +50 -0
- agentinputlab/backends/retrieval/dense.py +777 -0
- agentinputlab/backends/retrieval/memory.py +119 -0
- agentinputlab/backends/retrieval/sqlite_fts.py +155 -0
- agentinputlab/backends/user/__init__.py +15 -0
- agentinputlab/backends/user/base.py +66 -0
- agentinputlab/backends/user/callable.py +54 -0
- agentinputlab/backends/user/replay.py +89 -0
- agentinputlab/backends/vector.py +38 -0
- agentinputlab/benchmarks/__init__.py +246 -0
- agentinputlab/benchmarks/acquisition.py +106 -0
- agentinputlab/benchmarks/ale.py +540 -0
- agentinputlab/benchmarks/appworld_ul.py +669 -0
- agentinputlab/benchmarks/assets.py +226 -0
- agentinputlab/benchmarks/base.py +68 -0
- agentinputlab/benchmarks/beir_archive.py +235 -0
- agentinputlab/benchmarks/beir_sample.py +269 -0
- agentinputlab/benchmarks/bfcl_native.py +245 -0
- agentinputlab/benchmarks/bfcl_v3.py +607 -0
- agentinputlab/benchmarks/cache.py +218 -0
- agentinputlab/benchmarks/clariq.py +203 -0
- agentinputlab/benchmarks/data/registry.json +321 -0
- agentinputlab/benchmarks/data/smoke_assets.json +511 -0
- agentinputlab/benchmarks/data/statebench_v0_8_1_task_ids.json +475 -0
- agentinputlab/benchmarks/data/toolsandbox_165848b_scenario_names.json +1 -0
- agentinputlab/benchmarks/execution.py +1111 -0
- agentinputlab/benchmarks/interactive.py +257 -0
- agentinputlab/benchmarks/ir_query.py +204 -0
- agentinputlab/benchmarks/longbench.py +203 -0
- agentinputlab/benchmarks/paired_replay.py +479 -0
- agentinputlab/benchmarks/preprocess.py +2313 -0
- agentinputlab/benchmarks/production.py +236 -0
- agentinputlab/benchmarks/qa.py +963 -0
- agentinputlab/benchmarks/registry.py +110 -0
- agentinputlab/benchmarks/retrieval.py +459 -0
- agentinputlab/benchmarks/runtime.py +509 -0
- agentinputlab/benchmarks/statebench.py +938 -0
- agentinputlab/benchmarks/tau3.py +725 -0
- agentinputlab/benchmarks/toolsandbox.py +626 -0
- agentinputlab/benchmarks/trec_dl_sample.py +263 -0
- agentinputlab/campaign.py +654 -0
- agentinputlab/campaign_runner.py +953 -0
- agentinputlab/cli/__init__.py +6 -0
- agentinputlab/cli/main.py +933 -0
- agentinputlab/connectors/__init__.py +46 -0
- agentinputlab/connectors/knowledge/__init__.py +4 -0
- agentinputlab/connectors/tools/__init__.py +30 -0
- agentinputlab/connectors/tools/base.py +57 -0
- agentinputlab/connectors/tools/mcp.py +222 -0
- agentinputlab/connectors/tools/memory.py +41 -0
- agentinputlab/connectors/tools/openapi.py +695 -0
- agentinputlab/connectors/tools/schema.py +102 -0
- agentinputlab/contracts/__init__.py +91 -0
- agentinputlab/contracts/availability.py +24 -0
- agentinputlab/contracts/dependency.py +58 -0
- agentinputlab/contracts/enums.py +82 -0
- agentinputlab/contracts/errors.py +63 -0
- agentinputlab/contracts/evidence.py +43 -0
- agentinputlab/contracts/intent.py +110 -0
- agentinputlab/contracts/lifecycle.py +164 -0
- agentinputlab/contracts/patch.py +167 -0
- agentinputlab/contracts/serialization.py +93 -0
- agentinputlab/contracts/state.py +127 -0
- agentinputlab/contracts/trace.py +59 -0
- agentinputlab/contracts/worker.py +42 -0
- agentinputlab/core/__init__.py +7 -0
- agentinputlab/data/__init__.py +32 -0
- agentinputlab/data/checksums.py +9 -0
- agentinputlab/data/downloader.py +235 -0
- agentinputlab/data/http.py +171 -0
- agentinputlab/data/index.py +21 -0
- agentinputlab/data/overlap.py +28 -0
- agentinputlab/data/preprocess.py +32 -0
- agentinputlab/data/storage.py +57 -0
- agentinputlab/data/trec_sample.py +427 -0
- agentinputlab/evaluation/__init__.py +5 -0
- agentinputlab/evaluation/outcomes.py +32 -0
- agentinputlab/experiments/__init__.py +278 -0
- agentinputlab/experiments/analysis.py +981 -0
- agentinputlab/experiments/artifacts.py +687 -0
- agentinputlab/experiments/automatic_measurement.py +678 -0
- agentinputlab/experiments/auxiliary_matrix.py +203 -0
- agentinputlab/experiments/bindings.py +430 -0
- agentinputlab/experiments/blueprints.py +147 -0
- agentinputlab/experiments/builders/__init__.py +45 -0
- agentinputlab/experiments/builders/executable_external_payload.py +423 -0
- agentinputlab/experiments/builders/external_process_arena.py +1018 -0
- agentinputlab/experiments/builders/registry_intervention.py +463 -0
- agentinputlab/experiments/cli.py +158 -0
- agentinputlab/experiments/controls.py +340 -0
- agentinputlab/experiments/driver_guard.py +205 -0
- agentinputlab/experiments/drivers/__init__.py +89 -0
- agentinputlab/experiments/drivers/external_arena.py +2908 -0
- agentinputlab/experiments/drivers/method_process.py +662 -0
- agentinputlab/experiments/drivers/parity_process.py +1484 -0
- agentinputlab/experiments/drivers/static_production.py +1574 -0
- agentinputlab/experiments/executor.py +448 -0
- agentinputlab/experiments/loader.py +605 -0
- agentinputlab/experiments/measurement.py +675 -0
- agentinputlab/experiments/paper_analysis.py +1818 -0
- agentinputlab/experiments/parity_identity.py +605 -0
- agentinputlab/experiments/plan.py +277 -0
- agentinputlab/experiments/production_builders.py +3739 -0
- agentinputlab/experiments/readiness.py +432 -0
- agentinputlab/experiments/schema.py +514 -0
- agentinputlab/experiments/secrets.py +177 -0
- agentinputlab/experiments/stateful_analysis.py +1738 -0
- agentinputlab/experiments/transfer_analysis.py +1316 -0
- agentinputlab/experiments/unseen_analysis.py +1025 -0
- agentinputlab/integrations/__init__.py +1 -0
- agentinputlab/integrations/action_space/__init__.py +1 -0
- agentinputlab/integrations/external_workers/__init__.py +76 -0
- agentinputlab/integrations/external_workers/ace.py +431 -0
- agentinputlab/integrations/external_workers/base.py +181 -0
- agentinputlab/integrations/external_workers/decomp_live.py +249 -0
- agentinputlab/integrations/external_workers/decomp_planner.py +30 -0
- agentinputlab/integrations/external_workers/infocqr_student.py +280 -0
- agentinputlab/integrations/external_workers/ircot.py +576 -0
- agentinputlab/integrations/external_workers/llmcompiler_live.py +360 -0
- agentinputlab/integrations/external_workers/longllmlingua.py +162 -0
- agentinputlab/integrations/external_workers/method.py +314 -0
- agentinputlab/integrations/external_workers/process.py +678 -0
- agentinputlab/integrations/external_workers/supervisor.py +1071 -0
- agentinputlab/integrations/full_architecture/__init__.py +1 -0
- agentinputlab/integrations/full_architecture/hyde.py +212 -0
- agentinputlab/integrations/full_architecture/plan_and_budget.py +188 -0
- agentinputlab/integrations/live_history.py +222 -0
- agentinputlab/integrations/prompt_optimization/__init__.py +1 -0
- agentinputlab/integrations/training/__init__.py +1 -0
- agentinputlab/metrics/__init__.py +50 -0
- agentinputlab/metrics/catalog.py +313 -0
- agentinputlab/metrics/harm.py +95 -0
- agentinputlab/metrics/paired.py +40 -0
- agentinputlab/metrics/qa.py +76 -0
- agentinputlab/metrics/text.py +33 -0
- agentinputlab/metrics/third_party.py +161 -0
- agentinputlab/models/__init__.py +4 -0
- agentinputlab/observability/__init__.py +56 -0
- agentinputlab/observability/budget.py +316 -0
- agentinputlab/observability/instrumentation.py +754 -0
- agentinputlab/observability/models.py +403 -0
- agentinputlab/observability/monitor.py +380 -0
- agentinputlab/optimizers/__init__.py +1 -0
- agentinputlab/optimizers/clarify/__init__.py +12 -0
- agentinputlab/optimizers/context/__init__.py +22 -0
- agentinputlab/optimizers/decompose/__init__.py +64 -0
- agentinputlab/optimizers/evidence/__init__.py +22 -0
- agentinputlab/optimizers/rewrite/__init__.py +30 -0
- agentinputlab/parity/__init__.py +5 -0
- agentinputlab/parity/base.py +206 -0
- agentinputlab/production_campaign.py +763 -0
- agentinputlab/py.typed +1 -0
- agentinputlab/recipes/__init__.py +333 -0
- agentinputlab/recipes/ace.py +418 -0
- agentinputlab/recipes/ace_bfcl.py +273 -0
- agentinputlab/recipes/ace_common_support.py +169 -0
- agentinputlab/recipes/ace_native_plan.py +322 -0
- agentinputlab/recipes/ace_online.py +711 -0
- agentinputlab/recipes/ace_retrieval.py +330 -0
- agentinputlab/recipes/ace_statebench.py +382 -0
- agentinputlab/recipes/ace_tau.py +463 -0
- agentinputlab/recipes/ace_toolsandbox.py +432 -0
- agentinputlab/recipes/acon_guideline.py +22 -0
- agentinputlab/recipes/adaptive_rag.py +822 -0
- agentinputlab/recipes/llmlingua2_inference.py +146 -0
- agentinputlab/recipes/llmlingua2_training.py +796 -0
- agentinputlab/recipes/mce.py +1486 -0
- agentinputlab/recipes/mce_final.py +335 -0
- agentinputlab/recipes/mce_text_fit.py +499 -0
- agentinputlab/recipes/mce_text_only.py +298 -0
- agentinputlab/recipes/qrag.py +729 -0
- agentinputlab/recipes/qrag_inference.py +364 -0
- agentinputlab/recipes/r2ag_features.py +236 -0
- agentinputlab/recipes/r2ag_inference.py +503 -0
- agentinputlab/recipes/r2ag_training.py +948 -0
- agentinputlab/recipes/recomp_abstractive.py +592 -0
- agentinputlab/recipes/recomp_extractive.py +525 -0
- agentinputlab/recipes/reformer.py +17 -0
- agentinputlab/recipes/rqrag.py +1516 -0
- agentinputlab/recipes/rqrag_common_support.py +193 -0
- agentinputlab/recipes/rqrag_completion.py +147 -0
- agentinputlab/recipes/skillopt.py +462 -0
- agentinputlab/recipes/skillopt_common_support.py +154 -0
- agentinputlab/recipes/skillopt_environment.py +165 -0
- agentinputlab/recipes/skillopt_environment_cli.py +5 -0
- agentinputlab/recipes/skillopt_retrieval.py +188 -0
- agentinputlab/recipes/smartsearch.py +897 -0
- agentinputlab/recipes/smartsearch_curriculum.py +283 -0
- agentinputlab/recipes/smartsearch_grpo_contracts.py +58 -0
- agentinputlab/recipes/smartsearch_grpo_data.py +314 -0
- agentinputlab/recipes/smartsearch_grpo_meter.py +324 -0
- agentinputlab/recipes/smartsearch_grpo_prefix.py +144 -0
- agentinputlab/recipes/smartsearch_grpo_rollout.py +119 -0
- agentinputlab/recipes/smartsearch_grpo_tools.py +364 -0
- agentinputlab/recipes/smartsearch_grpo_training.py +305 -0
- agentinputlab/recipes/smartsearch_grpo_transport.py +248 -0
- agentinputlab/recipes/smartsearch_grpo_worker.py +364 -0
- agentinputlab/recipes/smartsearch_inference.py +524 -0
- agentinputlab/recipes/smartsearch_native_data.py +172 -0
- agentinputlab/recipes/smartsearch_policy.py +616 -0
- agentinputlab/recipes/smartsearch_policy_worker.py +9 -0
- agentinputlab/recipes/smartsearch_sampling.py +232 -0
- agentinputlab/recipes/smartsearch_teacher.py +203 -0
- agentinputlab/recipes/smartsearch_training.py +265 -0
- agentinputlab/registry/__init__.py +46 -0
- agentinputlab/registry/beta.py +727 -0
- agentinputlab/registry/data/algorithms.json +1959 -0
- agentinputlab/registry/data/auxiliary_method_profiles.json +34 -0
- agentinputlab/registry/loader.py +100 -0
- agentinputlab/registry/result_manifest.py +184 -0
- agentinputlab/registry/runtime.py +195 -0
- agentinputlab/registry/schema.py +449 -0
- agentinputlab/runner/__init__.py +30 -0
- agentinputlab/runner/balance.py +248 -0
- agentinputlab/runner/cache.py +135 -0
- agentinputlab/runner/composite.py +130 -0
- agentinputlab/runner/engine.py +285 -0
- agentinputlab/runner/runtime_guard.py +268 -0
- agentinputlab/runner/worker.py +80 -0
- agentinputlab/runtime_bootstrap.py +288 -0
- agentinputlab/selectors/__init__.py +196 -0
- agentinputlab/selectors/advanced.py +1514 -0
- agentinputlab/selectors/artifacts.py +1087 -0
- agentinputlab/selectors/base.py +112 -0
- agentinputlab/selectors/campaigns.py +1893 -0
- agentinputlab/selectors/catalog.py +86 -0
- agentinputlab/selectors/discovery.py +1860 -0
- agentinputlab/selectors/evaluation.py +1348 -0
- agentinputlab/selectors/features.py +383 -0
- agentinputlab/selectors/learned.py +502 -0
- agentinputlab/selectors/no_op.py +28 -0
- agentinputlab/selectors/outcome_table.py +475 -0
- agentinputlab/selectors/producer.py +853 -0
- agentinputlab/selectors/rules.py +109 -0
- agentinputlab/selectors/runtime.py +420 -0
- agentinputlab/studies/__init__.py +16 -0
- agentinputlab/studies/design.py +165 -0
- agentinputlab/studies/paired.py +322 -0
- agentinputlab/studio/__init__.py +6 -0
- agentinputlab/studio/campaigns.py +819 -0
- agentinputlab/studio/engine.py +1408 -0
- agentinputlab/studio/model_backends.py +425 -0
- agentinputlab/studio/prepared.py +410 -0
- agentinputlab/studio/server.py +613 -0
- agentinputlab/studio/static/app.js +397 -0
- agentinputlab/studio/static/campaigns.html +175 -0
- agentinputlab/studio/static/campaigns.js +426 -0
- agentinputlab/studio/static/index.html +192 -0
- agentinputlab/studio/static/result.html +103 -0
- agentinputlab/studio/static/result.js +273 -0
- agentinputlab/studio/static/styles.css +467 -0
- agentinputlab-0.1.0a1.data/data/share/agentinputlab/CITATION.cff +22 -0
- agentinputlab-0.1.0a1.dist-info/METADATA +392 -0
- agentinputlab-0.1.0a1.dist-info/RECORD +469 -0
- agentinputlab-0.1.0a1.dist-info/WHEEL +5 -0
- agentinputlab-0.1.0a1.dist-info/entry_points.txt +6 -0
- agentinputlab-0.1.0a1.dist-info/licenses/LICENSE +21 -0
- agentinputlab-0.1.0a1.dist-info/licenses/NOTICE +31 -0
- agentinputlab-0.1.0a1.dist-info/licenses/THIRD_PARTY_NOTICES.md +94 -0
- agentinputlab-0.1.0a1.dist-info/top_level.txt +2 -0
- workers/README.md +94 -0
- workers/ace/README.md +261 -0
- workers/ace/__init__.py +1 -0
- workers/ace/compatibility_manifest.json +39 -0
- workers/ace/driver.py +1682 -0
- workers/acon/README.md +215 -0
- workers/acon/__init__.py +5 -0
- workers/acon/compatibility_manifest.json +93 -0
- workers/acon/driver.py +1859 -0
- workers/acon/fitted.py +395 -0
- workers/acon/guideline.py +470 -0
- workers/acon/guideline_source_manifest.json +20 -0
- workers/adaptive_rag/README.md +96 -0
- workers/adaptive_rag/__init__.py +15 -0
- workers/adaptive_rag/compatibility_manifest.json +61 -0
- workers/adaptive_rag/driver.py +1470 -0
- workers/adaptive_rag/fixture_runtime.py +163 -0
- workers/adaptive_rag/runtime.py +252 -0
- workers/ask_or_assume/README.md +124 -0
- workers/ask_or_assume/__init__.py +1 -0
- workers/ask_or_assume/compatibility_manifest.json +36 -0
- workers/ask_or_assume/driver.py +1227 -0
- workers/decomp/README.md +133 -0
- workers/decomp/UPSTREAM_LICENSE.Apache-2.0.txt +201 -0
- workers/decomp/__init__.py +5 -0
- workers/decomp/compatibility_manifest.json +205 -0
- workers/decomp/driver.py +1015 -0
- workers/decomp/live.py +137 -0
- workers/decomp/runtime.py +231 -0
- workers/infocqr/README.md +106 -0
- workers/infocqr/__init__.py +1 -0
- workers/infocqr/compatibility_manifest.json +84 -0
- workers/infocqr/driver.py +1766 -0
- workers/ircot/README.md +167 -0
- workers/ircot/__init__.py +7 -0
- workers/ircot/compatibility_manifest.json +121 -0
- workers/ircot/controlled.py +457 -0
- workers/ircot/driver.py +1373 -0
- workers/ircot/fixture_bindings.json +39 -0
- workers/ircot/fixture_config.json +48 -0
- workers/ircot/fixture_prompt.txt +2 -0
- workers/ircot/native_qa.py +398 -0
- workers/ircot/qa_compatibility_manifest.json +57 -0
- workers/ircot/runtime.py +97 -0
- workers/llmcompiler/README.md +160 -0
- workers/llmcompiler/__init__.py +1 -0
- workers/llmcompiler/compatibility_manifest.json +45 -0
- workers/llmcompiler/driver.py +1514 -0
- workers/llmcompiler/export_prompts.py +74 -0
- workers/llmcompiler/live.py +174 -0
- workers/llmcompiler/patch_manifest.json +147 -0
- workers/mce/README.md +198 -0
- workers/mce/__init__.py +29 -0
- workers/mce/compatibility_manifest.json +115 -0
- workers/mce/driver.py +2585 -0
- workers/mce/final_eval.py +173 -0
- workers/official_arenas/README.md +25 -0
- workers/official_arenas/__init__.py +1 -0
- workers/official_arenas/capture_records.py +110 -0
- workers/official_arenas/driver.py +619 -0
- workers/official_arenas/protocol.py +334 -0
- workers/official_arenas/providers/__init__.py +1 -0
- workers/official_arenas/providers/_live_history.py +228 -0
- workers/official_arenas/providers/_message_compat.py +77 -0
- workers/official_arenas/providers/appworld_ul.py +196 -0
- workers/official_arenas/providers/fixture.py +112 -0
- workers/official_arenas/providers/statebench.py +960 -0
- workers/official_arenas/providers/tau3.py +1672 -0
- workers/official_arenas/providers/tau_retail.py +586 -0
- workers/official_arenas/providers/toolsandbox.py +1321 -0
- workers/official_arenas/providers/tooltalk.py +699 -0
- workers/official_arenas/retail_capture.py +188 -0
- workers/official_arenas/retail_driver.py +275 -0
- workers/qrag/README.md +172 -0
- workers/qrag/__init__.py +1 -0
- workers/qrag/compatibility_manifest.json +64 -0
- workers/qrag/driver.py +673 -0
- workers/r2ag/README.md +154 -0
- workers/r2ag/__init__.py +5 -0
- workers/r2ag/compatibility_manifest.json +55 -0
- workers/r2ag/driver.py +1287 -0
- workers/r2ag/feature_schema.json +8 -0
- workers/r2ag/runtime.py +589 -0
- workers/recomp/README.md +120 -0
- workers/recomp/__init__.py +1 -0
- workers/recomp/compatibility_manifest.json +43 -0
- workers/recomp/driver.py +1653 -0
- workers/reformer/README.md +125 -0
- workers/reformer/__init__.py +1 -0
- workers/reformer/compatibility_manifest.json +68 -0
- workers/reformer/driver.py +1459 -0
- workers/reformer/induction.py +457 -0
- workers/rrr/README.md +126 -0
- workers/rrr/__init__.py +1 -0
- workers/rrr/compatibility_manifest.json +57 -0
- workers/rrr/driver.py +1133 -0
- workers/smartsearch/README.md +331 -0
- workers/smartsearch/__init__.py +1 -0
- workers/smartsearch/compatibility_manifest.json +41 -0
- workers/smartsearch/driver.py +1643 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# SmartSearch frozen-inference worker
|
|
2
|
+
|
|
3
|
+
This worker is a thin, pinned execution boundary for the released
|
|
4
|
+
`vvv111222/SmartSearch-3B` checkpoint. It runs the byte-verified upstream
|
|
5
|
+
`ReCall.run` loop and official answer parsers. It does **not** implement, load,
|
|
6
|
+
or expose SmartSearch SFT, DPO, GRPO, process-reward, ground-truth, or
|
|
7
|
+
test-time query-refinement paths.
|
|
8
|
+
|
|
9
|
+
This release is deliberately reported as `controlled_adapter`, not
|
|
10
|
+
`official_native`. Upstream did not publish immutable identities for its
|
|
11
|
+
Wikipedia corpus, retriever checkpoint, and index, so paper-level retrieval
|
|
12
|
+
parity cannot currently be established. Every locally selected retriever,
|
|
13
|
+
corpus, and index is nevertheless content-bound so experiments remain
|
|
14
|
+
repeatable and collisions become visible.
|
|
15
|
+
|
|
16
|
+
## Curriculum data preparation (separate from frozen inference)
|
|
17
|
+
|
|
18
|
+
Install `agentinputlab[smartsearch-prepare]` to use
|
|
19
|
+
`SmartSearchCurriculumPreparation`. This API loads the pinned native
|
|
20
|
+
`detect_redundancy`, `transfer_sft`, `transfer_dpo`, and `transfer_regenerate`
|
|
21
|
+
converters from a clean SmartSearch checkout. Source bytes are checked against
|
|
22
|
+
the pinned Git objects and compiled directly, without accepting a cached
|
|
23
|
+
`.pyc` or writing into the checkout. It does not import the full training stack,
|
|
24
|
+
start a service, generate rewards, or perform an optimizer update.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
from agentinputlab.recipes import (
|
|
28
|
+
SmartSearchCurriculumPreparation, SmartSearchTrainingCase,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
prepared = SmartSearchCurriculumPreparation().prepare(
|
|
32
|
+
checkout="/path/to/pinned/SmartSearch", output_root="/path/to/new/curriculum",
|
|
33
|
+
train=train_cases, validation=validation_cases, test=test_cases,
|
|
34
|
+
initial_scored_rollouts=recorded_initial_rollouts,
|
|
35
|
+
regenerated_scored_rollouts=recorded_regenerated_rollouts,
|
|
36
|
+
rollout_provenance=recorded_producer_provenance,
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Cases are typed `SmartSearchTrainingCase(case_id, question, split,
|
|
41
|
+
source_reference=...)`. IDs and normalized-question hashes must be disjoint
|
|
42
|
+
across training, validation and test collections. Every recorded rollout must
|
|
43
|
+
belong to a training question and retain its measured outcome F1 and native
|
|
44
|
+
process-score strings. References, rewards and prepared targets remain
|
|
45
|
+
training-only; this API never sends them to frozen inference.
|
|
46
|
+
|
|
47
|
+
Outputs include the unchanged native redundancy-annotated records, SFT rows,
|
|
48
|
+
DPO pairs, regeneration prefixes, hashes and producer provenance. An empty
|
|
49
|
+
native selection remains empty. It is not a fitted policy or evidence that
|
|
50
|
+
SFT, DPO, or GRPO succeeded. The full `training.smartsearch.sft_dpo_grpo`
|
|
51
|
+
entrypoint is not yet implemented; the preparation API must not be used to
|
|
52
|
+
advertise that profile as complete. The frozen-inference manifest and its
|
|
53
|
+
forbidden training paths are unchanged.
|
|
54
|
+
|
|
55
|
+
`SmartSearchProcessTeacher` separately calls the original training-only
|
|
56
|
+
`SearchEvaluation.evaluate_search` and `Rewrite.rewrite_search` code. A supplied
|
|
57
|
+
completion provider replaces only the HTTP generation method. Native prompts,
|
|
58
|
+
fourth-`<think>` selection, process-score parser, redundancy rules and refinement
|
|
59
|
+
stop behavior remain unchanged. The helper receives **2048 tokens per call and
|
|
60
|
+
temperature 0.6**, with a separately recorded seed adapter. These are training
|
|
61
|
+
helper calls, not 512-token test calls. The default admission budget is
|
|
62
|
+
4096 output tokens / eight calls; a call that cannot admit the original 2048
|
|
63
|
+
cap fails before dispatch rather than shrinking the native cap.
|
|
64
|
+
|
|
65
|
+
The provider returns `SmartSearchTeacherCompletion(text, input_tokens,
|
|
66
|
+
output_tokens, model_fingerprint_sha256)`. Requests, responses, measured costs
|
|
67
|
+
and failures are saved per call under a fresh output root. An exception stops
|
|
68
|
+
the stage without the upstream HTTP empty-string fallback or an automatic
|
|
69
|
+
retry. Usage that could not be measured remains an unknown-usage reservation,
|
|
70
|
+
not an actual zero. Only declared training questions may carry gold answers or
|
|
71
|
+
process rewards; validation and test questions are rejected before dispatch.
|
|
72
|
+
The resulting scored records feed curriculum preparation. They are not a
|
|
73
|
+
fitted policy, and no optimizer stage is claimed by either API.
|
|
74
|
+
|
|
75
|
+
### Native SFT and LoRA-DPO policy stages
|
|
76
|
+
|
|
77
|
+
`SmartSearchNativePolicyTraining.fit(stage="sft" | "dpo", ...)` consumes a
|
|
78
|
+
hash-bound curriculum artifact and a caller-mounted, code-free safetensors
|
|
79
|
+
policy snapshot. It invokes the pinned LLaMA-Factory trainer through a fresh
|
|
80
|
+
`torchrun` process group; the native trainer owns collation, loss, optimizer,
|
|
81
|
+
scheduler, three-epoch schedule, original batch sizes, cutoff and ZeRO-3 config.
|
|
82
|
+
Set `SmartSearchPolicyFitControls(gpu_processes=1..4)` and select physical GPUs
|
|
83
|
+
through the operator's `CUDA_VISIBLE_DEVICES`. The library does not discover,
|
|
84
|
+
reserve or signal other users' GPU workloads. Native training dependencies must
|
|
85
|
+
be installed in that dedicated runtime; the lightweight package does not
|
|
86
|
+
silently replace or upgrade the caller's PyTorch/Transformers stack.
|
|
87
|
+
|
|
88
|
+
Native configuration changes are explicit: local input/output/cache paths,
|
|
89
|
+
seed, disabled remote-code/telemetry/publishing and create-only outputs. No
|
|
90
|
+
lower learning rate, shorter epoch count, replacement objective or quantization
|
|
91
|
+
conversion is applied. Empty native selections, fixture-only rollouts, overlap,
|
|
92
|
+
unbound model/data/source bytes and quantized full-fit/merge bases are rejected.
|
|
93
|
+
These pinned configs use the Qwen template; applying them to another model
|
|
94
|
+
family requires a separately defined variant, not a hidden template switch.
|
|
95
|
+
|
|
96
|
+
Each rank retains a native log and source-bound terminal receipt. Native global
|
|
97
|
+
optimizer steps are checked for agreement, not summed across ranks. Observed
|
|
98
|
+
primary-policy forwards and token positions are recorded separately from
|
|
99
|
+
unmeasured reference-model work. A missing receipt is unknown usage, not zero;
|
|
100
|
+
failure does not automatically retry. The caller's optimizer-step ceiling
|
|
101
|
+
rejects a larger native schedule rather than silently truncating it.
|
|
102
|
+
|
|
103
|
+
`SmartSearchPolicyStageArtifact.load(...)` checks the resulting file closure.
|
|
104
|
+
`materialize_snapshot(...)` explicitly copies final SFT model/tokenizer files
|
|
105
|
+
into a new inference snapshot without importing pickle/optimizer state.
|
|
106
|
+
`SmartSearchNativePolicyTraining.merge(...)` calls the original CPU LoRA merge
|
|
107
|
+
against the exact SFT base used by the DPO artifact; a LoRA adapter alone is
|
|
108
|
+
not a complete policy. Source checkpoints, logs and original model assets stay
|
|
109
|
+
unchanged. A fitted or merged artifact is a candidate for heldout evaluation,
|
|
110
|
+
not evidence that the full SFT/DPO/GRPO curriculum or compatibility matrix passed.
|
|
111
|
+
GRPO and end-to-end policy sampling remain separate implementation gates.
|
|
112
|
+
|
|
113
|
+
## What remains upstream code
|
|
114
|
+
|
|
115
|
+
The driver verifies and source-loads these exact MIT-licensed files from
|
|
116
|
+
`RUC-NLPIR/SmartSearch@5e9e7ec0d6af34f45fad145d4bff442529e7e6ff`:
|
|
117
|
+
|
|
118
|
+
- `src/re_call/inference/re_call.py`: `ReCall`, prompt construction, ten-turn
|
|
119
|
+
loop, `<search>` validation/extraction, response/result concatenation;
|
|
120
|
+
- `src/flashrag/pipeline/active_pipeline.py`:
|
|
121
|
+
`extract_last_assistant_response` (AST-extracted without importing the heavy
|
|
122
|
+
FlashRAG/Transformers module);
|
|
123
|
+
- `src/verl/utils/reward_score/re_call.py`: `last_boxed_only_string` and
|
|
124
|
+
`remove_boxed` (AST-extracted without importing VERL).
|
|
125
|
+
|
|
126
|
+
The worker calls `ReCall.run.__wrapped__`. This disables only the upstream
|
|
127
|
+
five-attempt *whole-trajectory* retry, which could silently replay paid calls.
|
|
128
|
+
The disclosed loop contract remains 10 rounds, `top_n=5`, temperature 0,
|
|
129
|
+
8192 maximum new tokens, and `</search>`/`</answer>` stops. One non-nested
|
|
130
|
+
search tag per turn is enforced to give retrieval a finite budget bound.
|
|
131
|
+
|
|
132
|
+
## Security boundary
|
|
133
|
+
|
|
134
|
+
Do not start `scripts/serving/sandbox.py`. It executes request-provided Python
|
|
135
|
+
with same-process `exec`, has no effective timeout, and listens without
|
|
136
|
+
authentication. This worker never imports it and rejects
|
|
137
|
+
`AGENTINPUTLAB_SMARTSEARCH_SANDBOX_URL` if set. The upstream
|
|
138
|
+
`execute_tool_calls` method is overridden with one fixed operation:
|
|
139
|
+
|
|
140
|
+
```text
|
|
141
|
+
wikipedia_search(query=<model-produced text>, top_n=5)
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
No request may provide an endpoint, command, import, callable, credential,
|
|
145
|
+
environment, or arbitrary tool call. Retrieved documents containing protocol
|
|
146
|
+
tags are rejected before they can escape `<result>`. Source is loaded from
|
|
147
|
+
verified bytes with bytecode writing disabled; the checkout is never added to
|
|
148
|
+
`sys.path`. The pinned upstream file's `import requests` is satisfied by a
|
|
149
|
+
driver-local, fail-closed placeholder while the module loads, then replaced
|
|
150
|
+
only with the controlled model transport immediately before execution. The
|
|
151
|
+
loader neither depends on the third-party `requests` package nor mutates the
|
|
152
|
+
process-global `sys.modules` table.
|
|
153
|
+
|
|
154
|
+
## Required identities
|
|
155
|
+
|
|
156
|
+
The host supplies a `SmartSearchArtifactIdentity`, and the worker requires an
|
|
157
|
+
identical, operator-owned runtime manifest. It binds:
|
|
158
|
+
|
|
159
|
+
- Hugging Face repository and revision
|
|
160
|
+
`vvv111222/SmartSearch-3B@82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8`;
|
|
161
|
+
- a local model snapshot file-manifest hash and tokenizer revision;
|
|
162
|
+
- served model alias and model-deployment fingerprint;
|
|
163
|
+
- retriever implementation/revision and deployment fingerprint;
|
|
164
|
+
- corpus, index, and retrieval-config SHA-256 identities;
|
|
165
|
+
- compatibility manifest, official tool schema, loop contract, and parser
|
|
166
|
+
contract;
|
|
167
|
+
- model transport (`sglang_generate` or `openai_completions`).
|
|
168
|
+
|
|
169
|
+
Generate a model snapshot manifest after downloading the pinned revision. It
|
|
170
|
+
must be JSON and include at least:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"repository": "vvv111222/SmartSearch-3B",
|
|
175
|
+
"revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
|
|
176
|
+
"tokenizer_revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
|
|
177
|
+
"snapshot_tree_sha256": "<canonical hash of the files object below>",
|
|
178
|
+
"files": {
|
|
179
|
+
"model-00001-of-00002.safetensors": {
|
|
180
|
+
"sha256": "<locally verified sha256>",
|
|
181
|
+
"bytes": 123
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Hash the exact JSON bytes as `model_snapshot_manifest_sha256`; the worker also
|
|
188
|
+
hashes the canonical `files` object as `model_snapshot_tree_sha256`. Every
|
|
189
|
+
generation and tokenizer-admission response must echo the exact repository,
|
|
190
|
+
revision, tokenizer, snapshot-tree digest, served alias, and admission
|
|
191
|
+
fingerprint. A mutable alias alone is rejected, so the identity can safely
|
|
192
|
+
participate in run/cache keys. The worker does not load 6.8 GB of weights.
|
|
193
|
+
|
|
194
|
+
## Runtime manifest and environment
|
|
195
|
+
|
|
196
|
+
Set:
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
AGENTINPUTLAB_SMARTSEARCH_CHECKOUT=/absolute/pinned/checkout
|
|
200
|
+
AGENTINPUTLAB_SMARTSEARCH_RUNTIME_MANIFEST=/absolute/runtime-manifest.json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
A real Git checkout must have the pinned clean HEAD and no untracked files.
|
|
204
|
+
Git runs with a minimal environment, global/system config disabled, repository
|
|
205
|
+
fsmonitor disabled, and the resolved top-level checked. An extracted source
|
|
206
|
+
audit snapshot instead requires both:
|
|
207
|
+
|
|
208
|
+
```text
|
|
209
|
+
AGENTINPUTLAB_SMARTSEARCH_SOURCE_ARCHIVE=/absolute/smartsearch.tar.gz
|
|
210
|
+
AGENTINPUTLAB_SMARTSEARCH_SNAPSHOT_COMMIT=5e9e7ec0d6af34f45fad145d4bff442529e7e6ff
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
The archive must match the hash in `compatibility_manifest.json`; a folder
|
|
214
|
+
name alone is never accepted as commit evidence.
|
|
215
|
+
|
|
216
|
+
The runtime manifest contains the exact `artifacts` object, the model snapshot
|
|
217
|
+
manifest path, and operator-controlled service configuration. Endpoints never
|
|
218
|
+
come from benchmark samples or method requests. Example service fields:
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"artifacts": {"...": "the exact SmartSearchArtifactIdentity mapping"},
|
|
223
|
+
"model_snapshot_manifest_path": "/models/SmartSearch-3B.manifest.json",
|
|
224
|
+
"model_transport": "openai_completions",
|
|
225
|
+
"model_base_url": "http://127.0.0.1:8000",
|
|
226
|
+
"tokenizer_base_url": "http://127.0.0.1:8000",
|
|
227
|
+
"served_model_name": "smartsearch-3b-pinned",
|
|
228
|
+
"model_snapshot_tree_sha256": "<canonical snapshot files hash>",
|
|
229
|
+
"context_admission_fingerprint_sha256": "<pinned admission fingerprint>",
|
|
230
|
+
"model_timeout_seconds": 120,
|
|
231
|
+
"retriever_base_url": "http://127.0.0.1:9000",
|
|
232
|
+
"retriever_timeout_seconds": 30,
|
|
233
|
+
"retriever_revision": "<implementation@revision>",
|
|
234
|
+
"corpus_sha256": "<sha256>",
|
|
235
|
+
"index_sha256": "<sha256>",
|
|
236
|
+
"retrieval_config_sha256": "<sha256>"
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
API keys, if needed, are read only from
|
|
241
|
+
`AGENTINPUTLAB_SMARTSEARCH_MODEL_API_KEY` and
|
|
242
|
+
`AGENTINPUTLAB_SMARTSEARCH_RETRIEVER_API_KEY`; keys are refused over plain
|
|
243
|
+
HTTP. Redirects are always refused.
|
|
244
|
+
|
|
245
|
+
### Model serving
|
|
246
|
+
|
|
247
|
+
`sglang_generate` forwards the original raw Qwen prompt and original SGLang
|
|
248
|
+
sampling object to `/generate`. The controlled endpoint must return the full
|
|
249
|
+
immutable identity envelope plus `meta_info.prompt_tokens` and
|
|
250
|
+
`meta_info.completion_tokens`.
|
|
251
|
+
|
|
252
|
+
`openai_completions` sends the same raw prompt to `/v1/completions`, which is
|
|
253
|
+
supported by vLLM's OpenAI-compatible server. Chat Completions is intentionally
|
|
254
|
+
unsupported because applying another chat template changes model treatment.
|
|
255
|
+
The immutable identity envelope and token usage are mandatory. This requires a
|
|
256
|
+
small operator wrapper; a bare endpoint that returns only a mutable alias fails
|
|
257
|
+
closed. When a context-token ceiling is active, the wrapper's `/tokenize`
|
|
258
|
+
endpoint must return an exact preflight count and the same identity. Generation
|
|
259
|
+
is rejected before its side effect when the prompt does not fit, and provider
|
|
260
|
+
usage must equal the admitted count. Without this endpoint, a budgeted run
|
|
261
|
+
fails closed. Admission is a network preflight, not a model call.
|
|
262
|
+
|
|
263
|
+
The retriever endpoint is a small identity-attested wrapper over FlashRAG's
|
|
264
|
+
`/search`: it accepts fixed `query`, `top_n=5`, `return_score=false` and returns
|
|
265
|
+
`{"identity": ..., "documents": [{"id": ..., "contents": ...}]}`. This
|
|
266
|
+
envelope preserves document lineage that the upstream loop normally discards.
|
|
267
|
+
|
|
268
|
+
For an operator-owned local vLLM service, `openai_completions_local_snapshot`
|
|
269
|
+
uses `local_model_root` and verifies both the `/v1/models` root and every file in
|
|
270
|
+
the pinned snapshot manifest. Its `/tokenize` endpoint supplies exact admission
|
|
271
|
+
counts. Weight checks are streamed rather than loading multi-gigabyte shards
|
|
272
|
+
into one Python byte string. Completion `stop_reason` metadata preserves the
|
|
273
|
+
upstream stop contract: ReCall receives exactly one closing stop marker, while
|
|
274
|
+
EOS or token-limit termination never invents one.
|
|
275
|
+
|
|
276
|
+
When using the audited runner, inject the configured worker through the context:
|
|
277
|
+
|
|
278
|
+
```python
|
|
279
|
+
method = SmartSearchCommonSupportQueries(artifacts=artifacts)
|
|
280
|
+
record = InterventionRunner().run(
|
|
281
|
+
method, state, InterventionContext(external_runtime=worker, seed=17)
|
|
282
|
+
)
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Do not hide the worker on `method.client` when calling `InterventionRunner`.
|
|
286
|
+
The frozen helper still ignores the audit seed; downstream target seeding is a
|
|
287
|
+
separate setting. Its fixed 8192-token call cap also requires an explicitly
|
|
288
|
+
adequate execution budget rather than a 512/4096-token compatibility label.
|
|
289
|
+
|
|
290
|
+
## Budget behavior
|
|
291
|
+
|
|
292
|
+
The host reserves one model call before starting the worker. Inside the
|
|
293
|
+
monolithic official loop, the worker checks the remaining model and retrieval
|
|
294
|
+
caps immediately before every corresponding side effect. It also requires
|
|
295
|
+
8192 output tokens to remain before each official model call, admits context
|
|
296
|
+
tokens before generation, and reconciles provider usage afterwards. A
|
|
297
|
+
provider/retriever attempt
|
|
298
|
+
that fails is still reported as consumed; checkout, identity, or schema failure
|
|
299
|
+
before any side effect reports `consumed=false`.
|
|
300
|
+
|
|
301
|
+
SmartSearch's upstream code ignores seed. The seed is retained in the audit
|
|
302
|
+
request but the runtime attestation always records `seed_applied=false`.
|
|
303
|
+
|
|
304
|
+
## Running and testing
|
|
305
|
+
|
|
306
|
+
Use the ordinary bounded `JsonLineSubprocessWorker` with
|
|
307
|
+
`python workers/smartsearch/driver.py`; package credentials and endpoint
|
|
308
|
+
configuration only in that worker's environment.
|
|
309
|
+
|
|
310
|
+
Compatibility, runtime, snapshot, request, and HTTP JSON is parsed strictly:
|
|
311
|
+
duplicate keys and non-finite `NaN`/`Infinity` values are rejected. Before any
|
|
312
|
+
model/retriever call, the runtime tool schema's canonical hash and frozen
|
|
313
|
+
loop/parser hashes must exactly match the artifact identity.
|
|
314
|
+
|
|
315
|
+
The deterministic test calls the real source-loaded `ReCall.run.__wrapped__`
|
|
316
|
+
from a fake pinned checkout and verifies two-turn search, the official parser,
|
|
317
|
+
prompt/result trajectory, lineage, identities, budgets, and security gates:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
PYTHONPATH=src:. python -m pytest -q \
|
|
321
|
+
tests/workers/test_smartsearch_worker_driver.py
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
The real-checkout symbol smoke is opt-in and does not download weights:
|
|
325
|
+
|
|
326
|
+
```text
|
|
327
|
+
AGENTINPUTLAB_SMARTSEARCH_REAL_CHECKOUT=/path/to/checkout
|
|
328
|
+
AGENTINPUTLAB_SMARTSEARCH_REAL_RUNTIME_MANIFEST=/path/to/runtime.json
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
No native-parity claim is made by either test.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Pinned SmartSearch worker package."""
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "agentinputlab.smartsearch.compatibility.v1",
|
|
3
|
+
"upstream": {
|
|
4
|
+
"repository": "https://github.com/RUC-NLPIR/SmartSearch",
|
|
5
|
+
"commit": "5e9e7ec0d6af34f45fad145d4bff442529e7e6ff",
|
|
6
|
+
"archive_sha256": "c7eac6245e7481c50536a9d2e82adfdb86a47d9988004c9e967839dbd737fd33",
|
|
7
|
+
"license_spdx": "MIT",
|
|
8
|
+
"license_sha256": "aded117a2f6fe248e9abb2ab223070e2251f22c3c143318de523ddf1b3168ba9"
|
|
9
|
+
},
|
|
10
|
+
"source_files": {
|
|
11
|
+
"src/re_call/inference/re_call.py": "7d3c680cfa0186397c2970d1073d75ab2e587330ce107fdf632827b7857572ec",
|
|
12
|
+
"src/flashrag/pipeline/active_pipeline.py": "20394e3418b6e30b43057ca96b97a423b4e4d37a3a04901e0a0a0dbc3af221fa",
|
|
13
|
+
"src/verl/utils/reward_score/re_call.py": "2697ffa7479a0c9c4e6baf843164b7055b80350c627e01413584ecf4f76476bc"
|
|
14
|
+
},
|
|
15
|
+
"released_model": {
|
|
16
|
+
"repository": "vvv111222/SmartSearch-3B",
|
|
17
|
+
"revision": "82bfe8a845e3e08f0d9d00d8e1e2cfb6d50b5da8",
|
|
18
|
+
"architecture": "Qwen2ForCausalLM",
|
|
19
|
+
"parameters": 3397103616,
|
|
20
|
+
"license_spdx": "MIT"
|
|
21
|
+
},
|
|
22
|
+
"contracts": {
|
|
23
|
+
"profile_id": "smartsearch.controlled_frozen.v1",
|
|
24
|
+
"tool_schema_sha256": "a1349ee4630e42cff2a0631252bdf931d3621f2f1a5bb005430e1c0494508731",
|
|
25
|
+
"loop_contract_sha256": "8c64cda35d8b08f31c7dd8fba2efbb4e7adf3d57dc3a59a8a8e1c41e64d5e5b2",
|
|
26
|
+
"parser_contract_sha256": "b2104370b1b39a1a34b809c25fd369a5e97426a70bf55300de5f5dec8bf3af6a",
|
|
27
|
+
"max_rounds": 10,
|
|
28
|
+
"top_n": 5,
|
|
29
|
+
"max_new_tokens": 8192,
|
|
30
|
+
"temperature": 0.0,
|
|
31
|
+
"stop": ["</search>", "</answer>"],
|
|
32
|
+
"outer_retry_attempts": 1,
|
|
33
|
+
"search_tags_per_turn": 1
|
|
34
|
+
},
|
|
35
|
+
"forbidden_runtime_paths": [
|
|
36
|
+
"scripts/serving/sandbox.py",
|
|
37
|
+
"src/verl/workers/rollout",
|
|
38
|
+
"src/verl/trainer",
|
|
39
|
+
"src/llamafactory"
|
|
40
|
+
]
|
|
41
|
+
}
|