Metadata-Version: 2.1
Name: blockconvey-monitor
Version: 0.1.3
Summary: Production AI agent observability for regulated industries
Home-page: https://github.com/Block-Convey/blockconvey-monitor
Author: Block Convey
Author-email: Block Convey <arunprasad@blockconvey.com>
License: MIT
Project-URL: Homepage, https://github.com/Block-Convey/blockconvey-monitor
Project-URL: Documentation, https://docs.blockconvey.com
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.24.0
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.1.0; extra == "langchain"
Provides-Extra: openai
Requires-Dist: openai>=1.0.0; extra == "openai"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.20.0; extra == "anthropic"
Provides-Extra: all
Requires-Dist: langchain-core>=0.1.0; extra == "all"
Requires-Dist: openai>=1.0.0; extra == "all"
Requires-Dist: anthropic>=0.20.0; extra == "all"

# blockconvey-monitor

Production AI agent observability for regulated industries.

## Install

```bash
pip install blockconvey-monitor
```

## Quick start

```python
from blockconvey import monitor

prism = monitor(
    api_key="pt_your-key",
    project_id="your-project-id"
)

# Send a trace
prism.trace(
    input_messages=[{"role": "user", "content": user_input}],
    output_message=agent_response,
    model="gpt-4o",
    latency_ms=1200,
    agent_name="Customer Service Agent"
)
```

## With decorator

```python
from blockconvey import monitor, traced

prism = monitor()

@traced(prism, agent_name="LoanAdvisor", model="claude-sonnet-4-6")
def ask_agent(user_message: str) -> str:
    return your_llm_call(user_message)
```

## Async

```python
from blockconvey import async_monitor

prism = async_monitor()

await prism.trace(
    input_messages=[{"role": "user", "content": user_input}],
    output_message=agent_response,
    model="gpt-4o",
)
```

## Environment variables

```bash
BLOCKCONVEY_API_KEY=pt_your-key
BLOCKCONVEY_PROJECT_ID=your-project-id
```

## Integrations

### LangChain / LangGraph

```bash
pip install blockconvey-monitor[langchain]
```

```python
from blockconvey.integrations.langchain import BlockConveyCallbackHandler
from langchain_anthropic import ChatAnthropic

handler = BlockConveyCallbackHandler(
    api_key="pt_your-key",
    project_id="your-project-id",
    agent_name="MyAgent"
)
llm = ChatAnthropic(model="claude-sonnet-4-6", callbacks=[handler])
# All llm.invoke() calls are now automatically traced
```

```python
# LangGraph
from blockconvey.integrations.langgraph import BlockConveyCallbackHandler

handler = BlockConveyCallbackHandler(agent_name="LoanProcessingGraph")
graph.invoke(state, config={"callbacks": [handler]})
```

### OpenAI

```bash
pip install blockconvey-monitor[openai]
```

```python
import openai
from blockconvey import monitor
from blockconvey.integrations.openai import wrap_openai

prism = monitor()
client = wrap_openai(openai.OpenAI(), prism)

# All client.chat.completions.create() calls are now auto-traced
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Explain model risk management."}],
)
```

### Anthropic

```bash
pip install blockconvey-monitor[anthropic]
```

```python
import anthropic
from blockconvey import monitor
from blockconvey.integrations.anthropic import wrap_anthropic

prism = monitor()
client = wrap_anthropic(anthropic.Anthropic(), prism)

# All client.messages.create() calls are now auto-traced
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What is SR 11-7?"}],
)
```

### Install all integrations

```bash
pip install blockconvey-monitor[all]
```

## Docs

https://docs.blockconvey.com
