Skip to main content

LLM-powered web automation library with autonomous agents

Project description

webtask

PyPI version Tests License: MIT Documentation

Easy to use LLM-powered web automation.

Installation

pip install pywebtask
playwright install chromium

Quick Start

from webtask import Webtask
from webtask.integrations.llm import GeminiComputerUse

wt = Webtask()
agent = await wt.create_agent(llm=GeminiComputerUse(), mode="visual")

await agent.do("Go to practicesoftwaretesting.com and add 2 Flat-Head Wood Screws to the cart")

verdict = await agent.verify("the cart contains 2 items")
if verdict:
    print("Success!")

Features

Simple or complex tasks

await agent.do("Click the login button")                            # Single action
await agent.do("Find the blue shirt, add to cart, and checkout")    # Multi-step task

Stateful agents

# Agent remembers context across tasks
await agent.do("Add 2 wood screws to cart")
await agent.do("Add 5 cross-head screws")
await agent.do("Go to cart and verify")

Three modes

agent = await wt.create_agent(llm=llm, mode="text")     # DOM-based (default)
agent = await wt.create_agent(llm=llm, mode="visual")   # Screenshots
agent = await wt.create_agent(llm=llm, mode="full")     # Both

Verification

verdict = await agent.verify("the cart contains 7 items")
if verdict:
    print("Success!")

Data extraction

class ProductInfo(BaseModel):
    name: str
    price: float

product = await agent.extract("product information", ProductInfo)

Error handling

try:
    await agent.do("Add item to cart")
except TaskAbortedError as e:
    print(f"Task failed: {e}")

Easy integration

agent = await wt.create_agent(llm=llm)                                  # New browser
agent = await wt.create_agent_with_browser(llm=llm, browser=browser)    # Existing browser
agent = wt.create_agent_with_context(llm=llm, context=context)          # Existing context
agent = wt.create_agent_with_page(llm=llm, page=page)                   # Existing page

Supported LLMs

from webtask.integrations.llm import Gemini, GeminiComputerUse, Bedrock

Gemini(model="gemini-2.5-flash")                                # 2.5 Flash
GeminiComputerUse(model="gemini-2.5-computer-use-preview")      # Visual mode
Bedrock(model="anthropic.claude-sonnet-4-20250514-v1:0")        # Claude 4 Sonnet (WIP)

TODO

  • Unlimited context - Compact conversation history for extended sessions
  • Mind2Web benchmark - Evaluation on Mind2Web dataset

Links

License

MIT

Project details


Download files

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

Source Distribution

pywebtask-0.20.0.tar.gz (72.6 kB view details)

Uploaded Source

Built Distribution

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

pywebtask-0.20.0-py3-none-any.whl (108.1 kB view details)

Uploaded Python 3

File details

Details for the file pywebtask-0.20.0.tar.gz.

File metadata

  • Download URL: pywebtask-0.20.0.tar.gz
  • Upload date:
  • Size: 72.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywebtask-0.20.0.tar.gz
Algorithm Hash digest
SHA256 afb7fa218cceb9e2a96bab4263f05a0277ed137088bd4957ac86195d7587f0bb
MD5 5bb86dd3c65db9c9c11458f49722add0
BLAKE2b-256 285aa7913a5a96f8193b7bb1bbb6d1809b54b14b64002941632c7d0d58918c26

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywebtask-0.20.0.tar.gz:

Publisher: publish.yml on steve-z-wang/webtask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pywebtask-0.20.0-py3-none-any.whl.

File metadata

  • Download URL: pywebtask-0.20.0-py3-none-any.whl
  • Upload date:
  • Size: 108.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pywebtask-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29d567ca3a558c73626707c27948a84a92e8c79f0e1aa7d7c88130bb43d97f51
MD5 110dff87dbe2a0ff40b1f96d90ebdb10
BLAKE2b-256 46d76a1eead37123acf36695f53f52da290e0666dc2b922f0b5b89821acfcd60

See more details on using hashes here.

Provenance

The following attestation bundles were made for pywebtask-0.20.0-py3-none-any.whl:

Publisher: publish.yml on steve-z-wang/webtask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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