Skip to main content

WizAgent

CI PyPI version

WizAgent is a powerful, intelligent web automation and research framework that combines multi-engine web search, deep research capabilities, browser automation, and structured data extraction with advanced LLM support.

Features

  • 🔍 Multi-Engine Web Search - Simultaneous search across multiple engines (Tavily, DuckDuckGo, Google AI, SearXNG, Brave, Baidu, WeChat)
  • 📚 Deep Research Agent - Autonomous research with iterative query refinement and source aggregation
  • 🌐 Browser Automation - Intelligent browser control with natural language instructions powered by cogents-browser-use
  • 📊 Structured Data Extraction - Extract structured data from websites using Pydantic models
  • 🎯 YAML-Based Schema Parser - Define data models declaratively with the Gem Parser
  • 🤖 Multi-LLM Support - Works with OpenAI (compatible), Ollama, and OpenRouter
  • 🔄 LangGraph Workflows - Advanced agent orchestration with state management

Quick Start

Installation

pip install -U wizagent

Basic Usage

import asyncio
from wizagent import WizAgent

async def main():
    # Initialize the agent
    agent = WizAgent()
    
    # Web search
    search_result = await agent.search(
        query="artificial intelligence trends 2025",
        max_results_per_engine=5
    )
    print(search_result)
    
    # Deep research
    research_output = await agent.research(
        instruction="What are the latest developments in quantum computing?"
    )
    print(research_output.content)
    
    # Browser automation
    result = await agent.use_browser(
        instruction="Go to Wikipedia and find information about Python programming"
    )
    print(result)

asyncio.run(main())

Core Components

1. Search Agent

Intelligent web search with query polishing, content crawling, and result reranking:

from wizagent import SearchAgent

agent = SearchAgent(
    polish_query=True,           # LLM-powered query optimization
    rerank_results=True,          # Relevance-based reranking
    crawl_content=True,           # Crawl page content
    search_engines=["tavily", "duckduckgo"],
    max_results_per_engine=5
)

result = await agent.run("latest AI developments")
print(result)

2. Deep Research Agent

Multi-loop research with autonomous knowledge gap detection:

from wizagent import DeepResearchAgent

researcher = DeepResearchAgent(
    max_research_loops=3,
    number_of_initial_queries=3,
    search_engines=["tavily", "duckduckgo"]
)

result = await researcher.research(
    user_message="Compare renewable energy adoption in US vs Europe"
)

print(result.content)  # Comprehensive research report
print(f"Sources: {len(result.sources)}")

3. Browser Automation & Data Extraction

Navigate websites and extract structured data:

from pydantic import BaseModel, Field
from typing import List

class StockMetric(BaseModel):
    metric_name: str = Field(description="Metric name")
    value: str = Field(description="Metric value")
    
class StockData(BaseModel):
    stock_name: str
    key_metrics: List[StockMetric]

agent = WizAgent()

# Extract structured data
data = await agent.navigate_and_extract(
    url="https://example.com/stocks",
    instruction="Extract key financial metrics",
    schema=StockData,
    use_vision=True
)

print(data.stock_name)
print(data.key_metrics)

4. Gem Parser - YAML Schema Definition

Define complex Pydantic models using YAML for cleaner configuration:

# snowman_balance.yml
task: StructuredExtraction
metadata:
  name: Stock Financial Metrics
data_models:
  - name: StockMetric
    fields:
    - name: metric_name
      type: str
      desc: Metric name
    - name: value
      type: str
      desc: Metric value
  - name: StockData
    fields:
    - name: stock_name
      type: str
      desc: Stock name
    - name: metrics
      type: List[StockMetric]
      desc: Key metrics
output_model: StockData
instruction: Extract financial metrics from the page

Load and use the schema:

from wizagent.gems import parse_yaml_file

# Parse YAML to Pydantic models
result = parse_yaml_file("snowman_balance.yml")
StockData = result.target_model

# Use with WizAgent
agent = WizAgent()
data = await agent.navigate_and_extract(
    url="https://example.com",
    instruction=result.instruction,
    schema=StockData
)

Advanced Examples

See the examples/ directory for more use cases:

  • examples/agent/search_agent_demo.py - Web search with crawling and reranking
  • examples/agent/deep_research_demo.py - Autonomous research workflow
  • examples/agent/snowman_balance.py - Structured data extraction from websites
  • examples/agent/visit_wikipedia.py - Browser navigation and interaction
  • examples/gems/snowman_gem.py - YAML-based schema parsing

Architecture

WizAgent is built on top of:

  • cogents-core - Core LLM abstractions and agent framework
  • cogents-browser-use - Browser automation with intelligent control
  • wizsearch - Multi-engine web search orchestration
  • LangGraph - Workflow orchestration and state management
  • Pydantic - Data validation and structured outputs

Configuration

Set environment variables for LLM configuration. The configuration is provider-specific:

OpenAI-compatible

export COGENTS_LLM_PROVIDER=openai
export OPENAI_API_KEY=your-api-key
export OPENAI_CHAT_MODEL=gpt-4  # optional, default: gpt-3.5-turbo
export OPENAI_BASE_URL=https://api.openai.com/v1  # optional

Other Providers

Ollama (local):

export COGENTS_LLM_PROVIDER=ollama
export OLLAMA_BASE_URL=http://localhost:11434
export OLLAMA_CHAT_MODEL=llama2  # optional

OpenRouter:

export COGENTS_LLM_PROVIDER=openrouter
export OPENROUTER_API_KEY=your-api-key
export OPENROUTER_CHAT_MODEL=anthropic/claude-3-haiku  # optional

Search Engine Configuration

For specific search engines, you may need additional API keys:

# Tavily (recommended)
export TAVILY_API_KEY=your-tavily-key

# Google AI Search
export GOOGLE_API_KEY=your-google-key

# Brave Search
export BRAVE_API_KEY=your-brave-key

See env.example for complete configuration reference.

Development

# Install development dependencies
make install

# Run tests
make test

# Format code
make format

# Run quality checks
make quality

# Full development check
make dev-check

License

MIT License - see LICENSE file for details.

Links

Metadata

Release files for wizagent 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wizagent 0.0.2
File Size Uploaded
wizagent-0.0.2.tar.gz 37.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wizagent 0.0.2
File Interpreter ABI Platform
wizagent-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 66.7 kB

Release files / wizagent-0.0.2.tar.gz

Download URL wizagent-0.0.2.tar.gz
Size 37.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5a31461b934421d4f2358420d120e80bdd184158348372ffd271be8e35b15c5b
BLAKE2b-256 checksum
How to use checksums
25bf48e5cbe6f71f66b81862ce23aa9653555ab023b7c35ae740ebde750520f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.17

Release files / wizagent-0.0.2-py3-none-any.whl

Download URL wizagent-0.0.2-py3-none-any.whl
Size 29.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4618c0b820a1c8e519666edf74e8bfff3e39b4bde2f6a7f979db7b4cdb0759fb
BLAKE2b-256 checksum
How to use checksums
73d75e518386cd6bebe3e8d52421e3907f1146c95a5e6a4d095b48e35ff9d5c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.17

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page