Drop-in agent observability + steering for LangChain, LangGraph, OpenAI Agents SDK, Claude Agent SDK, and the Anthropic Messages API.
Project description
ReasonBlocks SDK
Python SDK that integrates ReasonBlocks into LangChain 1.0 agents as middleware. Scores each agent step, injects steering signals and E-traces, and optionally switches models based on difficulty.
Installation
pip install reasonblocks
Quick Start
from reasonblocks import ReasonBlocks
rb = ReasonBlocks(api_key="rb_live_...")
agent = create_agent(
model="anthropic:claude-sonnet-4-20250514",
tools=[...],
system_prompt="...",
middleware=[rb.middleware()],
)
One import. One init. One middleware addition.
Tagging runs for the dashboard
rb.middleware() accepts identifying metadata that lands on the dashboard runs row:
agent = create_agent(
...,
middleware=[rb.middleware(
org_id="6d3f...", # uuid; "default" if omitted
project_id="a91b...", # uuid; "default" if omitted
run_id="my-run-1", # auto-generated if omitted
agent_name="bugfixer", # free-form filter key
task="fix the TypeError",
model="claude-sonnet-4-20250514",
framework="langchain",
codebase_id="myrepo@sha:abc123",
)],
)
The dashboard's Quickstart page (/platform/dashboard/quickstart) shows the user's actual org_id / project_id next to a copy-pasteable snippet — the easiest way to get the values without hardcoding.
Configuration
rb = ReasonBlocks(
api_key="rb-...",
token_budget=100_000,
monitor_names=["loop", "confidence", "evidence", "budget", "strategy_exhaustion"],
fsm_thresholds={
"fast_threshold": 0.2,
"slow_threshold": 0.6,
"skip_threshold": 0.85,
},
model_routing={
"FAST": "anthropic:claude-haiku-4-5-20251001",
"SLOW": "anthropic:claude-sonnet-4-20250514",
},
e_traces_enabled=True,
)
Architecture
The middleware hooks into two points in the LangChain agent loop:
- before_model -- scores the agent's last reasoning step, updates the FSM state, runs all monitors, retrieves E-traces, and injects steering signals as a system message.
- wrap_model_call -- overrides the model based on FSM state (if routing is configured) and tracks token usage.
Development
pip install -e ".[dev]"
pytest
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reasonblocks-0.1.0.tar.gz.
File metadata
- Download URL: reasonblocks-0.1.0.tar.gz
- Upload date:
- Size: 72.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cb5e2369ef44950dca07edf16355f5b6a7292f8808090c86f45073fbbbcfbcd
|
|
| MD5 |
930bb3b98bd556d9b81621b7bcc800d0
|
|
| BLAKE2b-256 |
b1ce12023c0532d344771c2efb98de0cfe61c17ca091c708f5860c98b4f1fb54
|
File details
Details for the file reasonblocks-0.1.0-py3-none-any.whl.
File metadata
- Download URL: reasonblocks-0.1.0-py3-none-any.whl
- Upload date:
- Size: 89.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9c6b80bbe5c6136fb5a0c0329cacb9ff452f5aa439db24622cf10f127044875
|
|
| MD5 |
28dc4a1a9d49ecf900019a1418211cde
|
|
| BLAKE2b-256 |
b3b820e7522465bba953a8d7f31280fc0ce6360b654924ffecb58d8c3f909719
|