Skip to main content

sweep-agent

Offline-LLM natural-language control for the sweep stack.

Goal: say "here is vp_init.npy and obs.segy, run an FWI starting at 10 Hz" and have a local LLM turn that into a validated sweep task and run it — no cloud, no API keys.

How it works

user (natural language + files)
        │
        ▼
┌──────────────────────────┐     tool_call
│  Agent loop (agent.py)   │ ───────────────►  local LLM (OpenAI-compatible: vLLM / Ollama)
│                          │ ◄───────────────  tool result (observation)
└───────────┬──────────────┘
            │  dispatches to one of ~30 registered tools
            ▼
   tools/  ── inspect_file · list_equations · check_parameters · make_synthetic_model
            · build_forward_spec · build_fwi_spec · run_task · plot_* · run_fwi · ...
            │
            ├─ discovery / modelling  ──►  sweep            (core wave-equation solver)
            └─ build + execute + viz  ──►  sweep_tasks.TaskRunner   (production runner)

Tools import the geophysics stack lazily: if a layer is missing, the tool returns a clear {"error": "... not importable"} instead of crashing, so the agent always starts and the tools that don't need that layer always work.

Install

pip install sweep-agent          # the agent + the sweep solver

or get it as part of the whole sweep umbrella:

pip install sweepx               # sweep-solver + sweep-agent (+ future companions)

Either path installs the sweep-agent CLI, the ~30-tool registry, and the core solver (sweep-solver, imports as sweep) — so natural-language forward modelling, wavefields and shot gathers work out of the box. Python 3.9+.

To chat you also need a local LLM — any OpenAI-compatible endpoint:

  • Ollama (Mac / CPU): ollama serve then ollama pull qwen2.5:7bsweep-agent chat auto-detects it.
  • vLLM (GPU node): pip install "sweep-agent[vllm]" then sweep-agent serve-llm --model qwen2.5-14b-instruct.

Full FWI / LSRTM additionally needs sweep-tasks (the production runner: spec schemas, losses, optimizers, multi-GPU, IO). It is not on PyPI yet — install it from source for now. Forward modelling and the inspection tools don't need it; an FWI tool called without it just returns a clean {"error": "sweep_tasks is not importable"}.

Extras: pip install "sweep-agent[ui]" (Gradio web UI), [vllm], [animate] (GIF export).

macOS (Apple Silicon)

Runs end-to-end on M-series with MPS acceleration (CPU 26.7 s → MPS 5.5 s on a 256×384 / 8-shot / 1500-step demo). Use Ollama for the LLM. Two traps: say "on the mps device" — not "GPU", which makes the LLM fill device="cuda" and silently fall back to CPU; and do not set SWEEP_BUILD_CUDA (that's the Linux + NVIDIA compiled-binding path). macOS uses sweep's eager torch.

Usage

sweep-agent chat        # interactive; auto-detects Ollama/vLLM, tells you if none is running
sweep-agent ui          # same agent in a browser (needs [ui] + a running LLM), then open :7860
sweep-agent tools       # list the ~30 tools — no LLM/GPU needed; --json emits OpenAI tool specs
$ sweep-agent chat
>>> here is vp_init.npy — run a 2-D acoustic forward and show me the shot gather
>>> :reset              # clear conversation history

chat / ui are zero-config by default — they auto-detect a running Ollama (:11434) or vLLM (:8000/:8001), pick a 7B model, and pull it on first run. To switch to any other OpenAI-compatible backend (a remote vLLM, a hosted endpoint, llama.cpp, LM Studio, …) pass --url / --model / --api-key, or set SWEEP_AGENT_LLM_URL / SWEEP_AGENT_LLM_MODEL / SWEEP_AGENT_LLM_API_KEY. For a fully custom backend, subclass BaseLLM from sweep_agent.llm.

Every tool is also a plain function (.fn, with a pydantic params model) — handy for scripts and tests:

from sweep_agent.tools.inspect import inspect_file, InspectFileParams
print(inspect_file.fn(InspectFileParams(path="vp_init.npy")))

What works at each layer

tools pip install sweep-agent + sweep-tasks
(from source)
sweep-agent tools, inspect_file, check_parameters, make_synthetic_model
plot_wavelet, plot_velocity_slice, compare_shot_gathers, list_equations
run_forward_sweep — forward modelling / wavefields / shot gathers
build_*_spec, run_task, other plot_*, run_fwi, run_multiscale_fwi, … error dict

A tool whose layer is missing returns {"error": "… is not importable"} — the agent stays up. The last column (sweep-tasks) is our production FWI/LSRTM tier, not on PyPI yet.

Tests

pip install "sweep-agent[test]"
pytest                  # tests that need sweep / sweep_tasks auto-skip when the stack is absent

License

MIT © Shaowen Wang.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sweep_agent-0.0.2.tar.gz (107.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sweep_agent-0.0.2-py3-none-any.whl (94.8 kB view details)

Uploaded Python 3

File details

Details for the file sweep_agent-0.0.2.tar.gz.

File metadata

  • Download URL: sweep_agent-0.0.2.tar.gz
  • Upload date:
  • Size: 107.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.5

File hashes

Hashes for sweep_agent-0.0.2.tar.gz
Algorithm Hash digest
SHA256 2a9018188603b003dd94674bf97a4c23758b9d7899b0716fbbd9405a4ad7eda0
MD5 4119dddcefcd83ca38dbab2cbd45facc
BLAKE2b-256 f8d793fc4e71affa33b6e886da3f90ca4e21467cb400b077c40d2c4cab87d08a

See more details on using hashes here.

File details

Details for the file sweep_agent-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: sweep_agent-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 94.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.5

File hashes

Hashes for sweep_agent-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fe79c9b8ffe97cd51a7d633f38db88ea7cbd83076929a3fab0923cbed9b61312
MD5 64cf4435bcb838b97cb11f96e1f6c8fa
BLAKE2b-256 ce62e41ba527191c576f799c3c8fc752c96b9bb638564117a36e351991197952

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page