Skip to main content

AI agent observability and control — AgentWatch SDK

Project description

ai-watcher

Python SDK for AgentWatch — AI agent observability and control.

Install

pip install ai-watcher

Quickstart

export AGENTWATCH_API_KEY=aw_live_...

One-liner wrapper (Lambda / serverless)

from agentwatch 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 agentwatch 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 AgentWatch is unreachable, the underlying function still runs.

Session context manager (full control)

from agentwatch 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 agentwatch 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
AGENTWATCH_API_KEY Required. Your aw_live_... key.
AGENTWATCH_API_URL https://agentwatch.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.0.tar.gz (7.7 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.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ai_watcher-0.2.0.tar.gz
  • Upload date:
  • Size: 7.7 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.0.tar.gz
Algorithm Hash digest
SHA256 6e6041539699b58adafa2c6ece052863e79b80a99faecc951beeb084317ccf0b
MD5 7c6aeaa41c3953efeda94d0881aeb095
BLAKE2b-256 2f0f5697f11618fa0af5b380e4040ce8ba0ab2924e72ad541f1a5c55816eef60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ai_watcher-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d6abcd3feffb9492e0f98825b309eb9a063637976a268e943a10e0b219eefaa
MD5 8b839009e7a143fb7103874d3a6a083d
BLAKE2b-256 a483161242d9e30fb642e0cbc4c985c79197fb2eca16b39b163c7a18459ac544

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