This release is a pre-release and may not be stable for production use.
Arthur Observability SDK
Python SDK for sending traces and managing prompts with the Arthur GenAI Engine.
Installation
pip install arthur-observability-sdk
To instrument a specific framework, install its extra:
pip install "arthur-observability-sdk[openai]"
pip install "arthur-observability-sdk[langchain]"
pip install "arthur-observability-sdk[anthropic]"
How-to guides
Full guides are in docs/:
- Getting started — initialisation, session/user context, framework instrumentation, shutdown
- Prompt management — fetching and rendering versioned prompts, PROMPT span attributes
Quick start
from arthur_observability_sdk import Arthur
arthur = Arthur(
api_key="your-api-key", # or set ARTHUR_API_KEY env var
task_id="<your-task-uuid>",
service_name="my-app",
)
arthur.instrument_openai()
# Tag all spans in this block with session and user
with arthur.attributes(session_id="sess-1", user_id="user-42"):
response = openai_client.chat.completions.create(...)
arthur.shutdown()
Prompt management
# Fetch a saved prompt by name (defaults to "latest" version)
prompt = arthur.get_prompt("system-instructions")
# Render with variable substitution
rendered = arthur.render_prompt(
"rag-answer",
variables={"context": "...", "question": "..."},
)
messages = rendered["messages"]
Supported instrumentors
Pass --extras to install any of these alongside the SDK.
| Extra | Framework | Method |
|---|---|---|
ag2 |
AG2 | instrument_ag2() |
agentminds |
AgentMinds | instrument_agentminds() |
agentspec |
AgentSpec | instrument_agentspec() |
agno |
Agno | instrument_agno() |
anthropic |
Anthropic | instrument_anthropic() |
autogen |
AutoGen | instrument_autogen() |
autogen-agentchat |
AutoGen AgentChat | instrument_autogen_agentchat() |
baml |
BAML | instrument_baml() |
bedrock |
AWS Bedrock | instrument_bedrock() |
beeai |
BeeAI | instrument_beeai() |
cohere |
Cohere | instrument_cohere() |
crewai |
CrewAI | instrument_crewai() |
dspy |
DSPy | instrument_dspy() |
google-adk |
Google ADK | instrument_google_adk() |
google-genai |
Google GenAI | instrument_google_genai() |
groq |
Groq | instrument_groq() |
guardrails |
Guardrails AI | instrument_guardrails() |
haystack |
Haystack | instrument_haystack() |
instructor |
Instructor | instrument_instructor() |
langchain |
LangChain | instrument_langchain() |
litellm |
LiteLLM | instrument_litellm() |
llama-index |
LlamaIndex | instrument_llama_index() |
mcp |
MCP | instrument_mcp() |
mistralai |
Mistral AI | instrument_mistralai() |
ollama |
Ollama | instrument_ollama() |
openai |
OpenAI | instrument_openai() |
openai-agents |
OpenAI Agents | instrument_openai_agents() |
pipecat |
Pipecat | instrument_pipecat() |
portkey |
Portkey | instrument_portkey() |
smolagents |
SmolAgents | instrument_smolagents() |
together |
Together AI | instrument_together() |
vertexai |
Vertex AI | instrument_vertexai() |
claude-agent-sdk |
Claude Agent SDK | instrument_claude_agent_sdk() |
Install all at once: pip install "arthur-observability-sdk[all]"
Developer guide
Setup
cd arthur-observability-sdk
# 1. Generate the API client (requires Node.js and Java)
./scripts/generate_openapi_client.sh generate python
# 2. Install dependencies (also registers the generated client in the venv)
./scripts/generate_openapi_client.sh install python
Note:
python/src/arthur_genai_client/is auto-generated and gitignored. You must run./scripts/generate_openapi_client.sh generate pythonafter cloning, and again whenever the GenAI Engine API changes. See Regenerating the API client.
Running tests
# Run from arthur-observability-sdk/python/
cd python
# Unit tests only (fast, no network)
uv run pytest tests -m "unit_tests" -v
# Integration/smoke tests (builds wheel, installs into a fresh venv)
uv run pytest tests -m "integration_tests" -v
# All tests
uv run pytest tests -v
Linting
# Run from arthur-observability-sdk/
./scripts/lint.sh
Or individually (from arthur-observability-sdk/python/):
cd python
uv run black src tests
uv run isort src tests --profile black
uv run autoflake --remove-all-unused-imports --in-place --recursive src tests
uv run mypy src/arthur_observability_sdk
Regenerating the API client
python/src/arthur_genai_client/ is auto-generated from the GenAI Engine OpenAPI spec
and is not committed to the repository. Regenerate it after cloning or whenever
the API changes:
./scripts/generate_openapi_client.sh generate python
Requires Node.js (any recent LTS) and Java 11+.
Building the wheel
uv build --wheel
Release files for arthur-observability-sdk 2.1.889.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arthur_observability_sdk-2.1.889.dev0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / arthur_observability_sdk-2.1.889.dev0-py3-none-any.whl
| Download URL | arthur_observability_sdk-2.1.889.dev0-py3-none-any.whl |
|---|---|
| Size | 845.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e69eb98f6df2f2455d944be68383c9327efeba5438a566bed933c74ee634746
|
|
BLAKE2b-256 checksum How to use checksums |
d6c888dc460c9f567568462a68df9064ee688851e7afb5e0116659c069ff405c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.
Transparency log