Feature Extraction
Transformers
Safetensors
English
multilingual
laya_browser
laya
custom_code
system-1
browser-agent
web-navigation
decision-model
mmbert
mind2web
tilelang
Instructions to use cklxx/laya-browser with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use cklxx/laya-browser with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="cklxx/laya-browser", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("cklxx/laya-browser", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Download code/apps/browser_trace.py from cklxx/laya-browser: direct link, hf CLI and curl.
- Browser
- Download file 2.76 kB
-
https://huggingface.co/cklxx/laya-browser/resolve/main/code/apps/browser_trace.py
- Command line
-
hf download hf://cklxx/laya-browser/code/apps/browser_trace.py
-
curl -L -o browser_trace.py https://huggingface.co/cklxx/laya-browser/resolve/main/code/apps/browser_trace.py
2.76 kB
| """Run suite tasks (by name filter) with a per-step trace: operation, target label, typed text, page change, url. | |
| python apps/browser_trace.py [name-filter] [max_steps=12] | |
| """ | |
| import json, os, sys, time | |
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | |
| from browser_suite import TASKS, Agent | |
| flt = sys.argv[1] if len(sys.argv) > 1 else ""; max_steps = int(sys.argv[2]) if len(sys.argv) > 2 else 12 | |
| for name, url, goal, check in TASKS: | |
| if flt and flt not in name.split(",") and flt not in name: continue | |
| t0 = time.time(); page = None; status = "error"; err = "" | |
| print(f"\n### {name}: {goal}", flush=True) | |
| try: | |
| with Agent(url, goal) as agent: | |
| page = agent.state["page"] | |
| print(f" start: {len(page['actions'])} actions, title={page['title'][:50]!r}", flush=True) | |
| for state in agent.run(): | |
| status = state["status"]; page = state["page"] | |
| h = state["history"][-1] if state["history"] else None | |
| d = state["decisions"][-1] if state["decisions"] else None | |
| if state.get("plan") and len(state["plan"]) > 1 and state.get("_shown_plan") is None: | |
| state["_shown_plan"] = 1; print(" plan:", state["plan"], flush=True) | |
| if state.get("subgoals_done") and state.get("_shown_sg") != state["subgoals_done"]: | |
| state["_shown_sg"] = state["subgoals_done"]; print(f" -- sub-goal {state['subgoals_done']} done, now: {state['goal']!r}", flush=True) | |
| if h and d and h["step"] == len(state["history"]): | |
| tp = d.get("target_probabilities") or {} | |
| top = sorted(tp.items(), key=lambda kv: -kv[1])[:3] | |
| print(f" step {h['step']:2d} {d['operation']:10s} p_op={d['operation_probabilities'].get(d['operation'],0):.2f} " | |
| f"target={h['action'][:60]!r} text={h['text']!r} changed={h['page_changed']} -> {page['url'][:80]}", flush=True) | |
| if len(state["history"]) >= max_steps: break | |
| if status in ("done", "blocked"): | |
| d = state["decisions"][-1] if state["decisions"] else None | |
| print(f" final decision: {status} p={d['operation_probabilities'].get(d['operation'],0) if d else 0:.2f}", flush=True) | |
| time.sleep(1.5) | |
| try: page = agent.browser.observe(screenshot=False) | |
| except Exception: pass | |
| except Exception as e: | |
| status = f"error:{type(e).__name__}"; err = str(e)[:200] | |
| ok = bool(page and check(page["url"], page["title"], page.get("text", ""))) | |
| print(f" => {'PASS' if ok else 'FAIL'} status={status} {err} url={(page or {}).get('url','')[:90]} wall={time.time()-t0:.1f}s", flush=True) | |