Skip to main content

Observability SDK for LLM applications

Project description

R4U Python SDK

An observability SDK that automatically traces HTTP requests from your applications, with special support for LLM API calls.

Installation

pip install r4u

Quick Start

Automatic HTTP Tracing

The easiest way to get started is with automatic HTTP tracing. This will trace all HTTP requests made by any supported HTTP library:

from r4u.tracing import trace_all

# Enable automatic tracing for all HTTP libraries
trace_all()

# Now any HTTP requests will be automatically traced
import httpx
import requests
import aiohttp

# All of these will be automatically traced
httpx_client = httpx.Client()
requests_session = requests.Session()
aiohttp_session = aiohttp.ClientSession()

OpenAI Integration

Since OpenAI uses httpx internally, you can trace OpenAI API calls by enabling HTTP tracing:

from r4u.tracing import trace_all

# Enable tracing BEFORE importing OpenAI
trace_all()

# Now import and use OpenAI normally
from openai import OpenAI

client = OpenAI(api_key="your-api-key")
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello, world!"}]
)

Features

  • Automatic HTTP Tracing: Automatically trace all HTTP requests from supported libraries (httpx, requests, aiohttp)
  • Multiple HTTP Library Support: Works with httpx, requests, and aiohttp
  • OpenAI Integration: Automatically trace OpenAI API calls since they use httpx internally
  • Streaming Support: Full support for streaming HTTP requests and responses
  • Async Support: Full async/await support for both sync and async HTTP clients
  • Background Processing: Traces are sent asynchronously in batches to minimize performance impact
  • Error Tracking: Automatic error capture and reporting
  • Minimal Overhead: Lightweight wrapper with minimal performance impact
  • Custom Tracers: Support for custom tracer implementations

HTTP Trace Data

Each HTTP request generates a comprehensive trace with:

Request Details:

  • HTTP method (GET, POST, etc.)
  • Full URL
  • Request headers (including Authorization)
  • Request body (raw bytes)

Response Details:

  • HTTP status code
  • Response headers
  • Response body (raw bytes, including streaming responses)

Timing Information:

  • Request start time
  • Request completion time
  • Total duration

Error Information (if applicable):

  • Error messages
  • Exception details

Custom Metadata:

  • Additional context you can provide
  • Extracted fields for convenience

Streaming Example

from r4u.tracing import trace_all

# Enable tracing BEFORE importing OpenAI
trace_all()

from openai import OpenAI

client = OpenAI(api_key="your-api-key")

# Streaming requests are automatically traced
stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

Custom Tracer Example

from r4u.client import AbstractTracer, HTTPTrace
from r4u.tracing import trace_all

class ConsoleTracer(AbstractTracer):
    def log(self, trace: HTTPTrace):
        print(f"HTTP {trace.method} {trace.url} -> {trace.status_code}")

# Use custom tracer
tracer = ConsoleTracer()
trace_all(tracer)

# All HTTP requests will now be printed to console

For more comprehensive examples, see the examples/ directory.

Configuration

Environment Variables

  • R4U_API_URL: Base URL for the R4U server (default: http://localhost:8000)
  • R4U_TIMEOUT: HTTP request timeout in seconds (default: 30.0)
  • R4U_TOKEN: R4U Cloud server authorization token (optional, not needed for local Open R4U Server)

Development

See the examples/ directory for comprehensive usage examples and the tests/ directory for test cases.

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

r4u-0.1.1.tar.gz (132.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

r4u-0.1.1-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file r4u-0.1.1.tar.gz.

File metadata

  • Download URL: r4u-0.1.1.tar.gz
  • Upload date:
  • Size: 132.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.19

File hashes

Hashes for r4u-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b1f07f512e9a3d2e98e656fb510a347311df02c588d4e4f54d660135307a3cd4
MD5 d65f47f784efdda1da595d08f2cd8362
BLAKE2b-256 4086401cbfaa88273a6ba6dc854739077facad16b346c18cd7c722173d44a4b1

See more details on using hashes here.

File details

Details for the file r4u-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: r4u-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.19

File hashes

Hashes for r4u-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d584a229710252269615e6841e5d22506b7ec9a55e62b1b328ad22a8c8a49b62
MD5 ef37cdb46717ae30831e3f3250d8afbb
BLAKE2b-256 a7e68994182784db9c21a17fda8232fc8af0bcbfcb731008128d44df03eeaef3

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