Python SDK for ReplayAI — instrument agents, record sessions, replay in the dashboard.
Project description
replayai — Python SDK
Instrument Python agents, record every step (LLM calls, tool calls, retrievals, errors), and POST sessions to the ReplayAI dashboard where you can replay them, diff runs, and export tests.
- Stdlib only —
pip install replayai-sdkbrings no dependencies. - Decorator + context manager —
@trace(...)orwith trace(...) as ctx:. - Framework extras —
pip install "replayai-sdk[langchain]"for auto-instrumentation.
Install
pip install replayai-sdk
# or, with the LangChain integration:
pip install "replayai-sdk[langchain]"
30-second usage
from replayai import trace, record_step
@trace("support-agent-v3", project="support-agent", tags=["production"])
def handle_support_ticket(message: str) -> str:
record_step(
type="llm_call", name="classify_intent",
model="gpt-4o-mini", tokens_in=312, tokens_out=24,
input=f"User: {message}", output="intent: billing_dispute",
status="success",
)
record_step(
type="tool_call", name="issue_refund",
input='{"charge_id":"ch_002"}',
output='{"refund_id":"ref_3391"}',
status="success",
)
return "Refund issued (ref_3391)."
handle_support_ticket("I was charged twice, refund me.")
Open the dashboard — your run is there with a full timeline.
Configuration
Environment variables (all optional):
| Variable | Default | Description |
|---|---|---|
REPLAYAI_PROJECT |
— | Default project slug/id |
REPLAYAI_TOKEN |
— | Cloud API token |
REPLAYAI_STORAGE |
cloud |
cloud, local, or both |
REPLAYAI_API_URL |
http://localhost:3000 |
Cloud API base URL |
REPLAYAI_SAMPLE_RATE |
1.0 |
Fraction of sessions to record |
REPLAYAI_STRICT |
false |
Raise on recording failures |
REPLAYAI_REDACT_PATTERNS |
built-in set | Comma-separated regexes |
Programmatic override:
import replayai
replayai.configure(project="support-agent", api_url="http://localhost:3000")
replayai.strict_mode = True # opt into hard failures
Async
import asyncio
from replayai import atrace, arecord_step
@atrace("async-agent")
async def handle(message: str) -> str:
await arecord_step(type="llm_call", name="classify", status="success")
return "ok"
asyncio.run(handle("hello"))
Replay & export
from replayai import ReplaySession
replay = ReplaySession("ses_8fa1")
replay.mock("issue_refund", '{"refund_id":"ref_3391"}')
with replay.trace() as trace_obj:
replay.run(agent="support-agent-v3", framework="LangChain")
print(trace_obj.step_count, trace_obj.status)
print(replay.export(lang="pytest"))
LangChain integration
from replayai.integrations.langchain import trace_agent, ReplayCallbackHandler
@trace_agent("support-agent-v3", project="support-agent", tags=["production"])
def handle(message: str) -> str:
return executor.invoke({"input": message})["output"]
See examples/quickstart.py and examples/langchain_demo.py for runnable demos.
License
MIT.
Project details
Release history Release notifications | RSS feed
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 replayai_sdk-0.4.3.tar.gz.
File metadata
- Download URL: replayai_sdk-0.4.3.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22705e2e6e6eda84d95c139b3d3881fe563587e4131f109e6d0dddc2a780da15
|
|
| MD5 |
0652d430c144cce0aaefae018191276a
|
|
| BLAKE2b-256 |
82f9910875e8720d817fcf0f499fb3476f1e088dd90fb17d557dcd5ce49d6916
|
File details
Details for the file replayai_sdk-0.4.3-py3-none-any.whl.
File metadata
- Download URL: replayai_sdk-0.4.3-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da592473ba8af1f80a9543d8df88ea2b9953753e9c26a7c0f9259d65e0c48ab2
|
|
| MD5 |
875fbff98345b7f0401763a89ae24067
|
|
| BLAKE2b-256 |
a22f35525f90f69d4e60bc1b460e089343a1c13e895f3b65cfb848706232d420
|