Skip to main content

AI agent observability and control — AgentWatch SDK

Project description

ai-watcher

Python SDK for AIWatcher — AI agent observability and control.

Install

pip install ai-watcher

Quickstart

export AIWATCHER_API_KEY=aw_live_...

One-liner wrapper (Lambda / serverless)

from aiwatcher import track_llm

result = track_llm(
    'classify-document',
    lambda: openai.chat.completions.create(...),
    {
        'human_id': customer_id,
        'agent_name': 'doc-classifier',
        'model': 'gpt-4o',
        'framework': 'aws-lambda',
        'session_name': 'Classify: invoice',
        'input': {'doc_type': 'invoice', 'pages': 3},
    }
)

Chained model calls (multi-step pipeline)

from aiwatcher import track_chain

results = track_chain(
    steps=[
        {
            'action': 'extract',
            'model': 'gpt-4o',
            'fn': lambda: openai.chat.completions.create(...),
            'input': {'pages': 3},
        },
        {
            'action': 'classify',
            'model': 'claude-sonnet-4-20250514',
            'fn': lambda: anthropic.messages.create(...),
            'input': {'text': '...'},
        },
    ],
    opts={
        'human_id': customer_id,
        'agent_name': 'shipping-pipeline',
        'session_name': 'Process Shipping Document',
    }
)

Both wrappers are zero-dependency and never break your app — if AIWatcher is unreachable, the underlying function still runs.

Session context manager (full control)

from aiwatcher import Session, tool

with Session(human_id="you@example.com") as session:

    @tool(session)
    def search_web(query: str) -> str:
        return "results..."

    result = search_web("AI agent security")

Full Session config

from aiwatcher import Session, tool

with Session(
    api_key="aw_live_...",
    human_id="sarah@acme.com",
    agent_name="billing-agent",
    agent_version="2.0.0",
    model="claude-sonnet-4-20250514",
    system_prompt="You are a billing assistant.",
    tools=["send_invoice", "fetch_invoice"],
    framework="langchain",
) as session:

    @tool(session, action_class="send", data_scope="financial")
    def send_invoice(recipient: str, amount: float) -> dict:
        return {"sent": True}

    send_invoice("client@acme.com", 1200.00)

API reference

track_llm(action, fn, opts)

Field Type Description
action str Name of the operation (e.g. "classify-document")
fn Callable Zero-argument callable that makes the model call
opts dict Session options (see below)

track_chain(steps, opts)

Each step: {'action': str, 'fn': callable, 'model': str, 'input': dict}

Common opts fields

Key Default Description
human_id "anonymous" User or customer identifier
agent_name "agent" Name of the agent/pipeline
model "unknown" Default model (overridden per step in track_chain)
framework "python" Runtime (e.g. "aws-lambda", "langchain")
session_name action name Human-readable session title in the dashboard
input None Input metadata to log with the event

Exceptions

Exception When raised
ExecutionBlockedException Policy blocked the tool call
HitlDeniedException Human reviewer denied the action
AgentwatchAPIError Non-2xx response from the API
AgentwatchConnectionError Network error after retries

Environment variables

Variable Default Description
AIWATCHER_API_KEY Required. Your aw_live_... key.
AIWATCHER_API_URL https://agentwatch-pi.vercel.app Override for self-hosted.

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

ai_watcher-0.2.3.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

ai_watcher-0.2.3-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file ai_watcher-0.2.3.tar.gz.

File metadata

  • Download URL: ai_watcher-0.2.3.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ai_watcher-0.2.3.tar.gz
Algorithm Hash digest
SHA256 8175c70ff131364e532c0aed127561d2ab4929f1afba8b2c41ef1f1107540ae7
MD5 64936d6bb7dcf7b05df7c82e2eef8c26
BLAKE2b-256 f8ca1f4331801cf6d9b290f0de5c55ea630661d181cb4183d294fa64677d0c42

See more details on using hashes here.

File details

Details for the file ai_watcher-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: ai_watcher-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for ai_watcher-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 20fe70dbd0da31ec1a6f7c653826bd39ca02048dd9eef40fb3577820427d9283
MD5 dfe08c086098eb5a0d2d957f4c4f7c18
BLAKE2b-256 6b88b12c13d5446a2ec9a8dcc9a464090b60687493f40363e9e692462637a6a7

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