Skip to main content

lmux-openai

OpenAI provider for lmux. Talks to the OpenAI REST API directly over httpx.

Supports chat completions, streaming, embeddings, and the Responses API.

Part of the lmux ecosystem: standardized interface, cost tracking on every response, and registry-based routing across providers.

Auth

Set OPENAI_API_KEY in your environment. The default OpenAIEnvAuthProvider reads it automatically.

from lmux_openai import OpenAIProvider

provider = OpenAIProvider()

Or pass a custom auth provider:

provider = OpenAIProvider(auth=my_auth_provider)

Usage

Chat

from lmux import UserMessage

response = provider.chat("gpt-4o", [UserMessage(content="Hello")])
print(response.content)
print(response.cost)

Streaming

for chunk in provider.chat_stream("gpt-4o", [UserMessage(content="Hello")]):
    if chunk.delta:
        print(chunk.delta, end="")

Embeddings

response = provider.embed("text-embedding-3-small", "Hello")
print(response.embeddings)

Responses API

response = provider.create_response("gpt-4o", "Hello")
print(response.output_text)

Explicit prompt caching

GPT-5.6 and later models accept explicit cache breakpoints in both Chat Completions and Responses. Place CachePointContent after the stable content block you want cached:

from lmux import CachePointContent, ResponseInputMessage, TextContent
from lmux_openai import OpenAIParams

input_items = [
    ResponseInputMessage(
        role="developer",
        content=[TextContent(text=stable_instructions), CachePointContent()],
    ),
    ResponseInputMessage(role="user", content="What changed?"),
]
response = provider.create_response(
    "gpt-5.6-terra",
    input_items,
    provider_params=OpenAIParams(prompt_cache_key="knowledge-base-v1"),
)

When at least one breakpoint is present, lmux sets prompt_cache_options.mode to "explicit", disabling OpenAI's implicit breakpoint so only the marked prefixes are read or written. Cache points are dropped for older models, which continue using automatic prompt caching. CachePointContent.ttl is not mapped because OpenAI's TTL is request-wide and currently fixed at "30m".

Async

All methods have async variants: achat, achat_stream, aembed, acreate_response.

Registry

Use with the lmux registry to route across multiple providers:

from lmux import Registry

registry = Registry()
registry.register("openai", provider)
response = registry.chat("openai/gpt-4o", messages)

Provider Params

Pass OpenAI-specific parameters via provider_params:

from lmux_openai import OpenAIParams

response = provider.chat(
    "o3",
    messages,
    provider_params=OpenAIParams(reasoning_effort="high", service_tier="flex"),
)
Parameter Type Description
service_tier "auto" | "default" | "flex" Service tier selection
reasoning_effort "low" | "medium" | "high" Reasoning effort for o-series models
seed int Deterministic sampling seed
user str End-user identifier
prompt_cache_key str Prompt-cache routing key for better hit rates (chat + responses)
prompt_cache_retention "in_memory" | "24h" Prompt-cache retention; legacy, pre-gpt-5.6 (chat + responses)

Constructor Options

OpenAIProvider(
    auth=...,             # AuthProvider[str], default: OpenAIEnvAuthProvider()
    base_url=...,         # Optional base URL override
    timeout=...,          # Request timeout in seconds
    max_retries=...,      # Max retry attempts
    data_residency=...,   # bool, default: False — apply 10% uplift for regional endpoints
    organization=...,     # Optional org id -> OpenAI-Organization header
    project=...,          # Optional project id -> OpenAI-Project header
    default_headers=...,  # Optional Mapping[str, str] added to every request
    transport=...,        # Optional httpx.BaseTransport for the sync client (proxies, testing)
    async_transport=...,  # Optional httpx.AsyncBaseTransport for the async client
)

lmux does not read OpenAI's OPENAI_BASE_URL / OPENAI_ORG_ID / OPENAI_PROJECT_ID environment variables (only the API key, via OpenAIEnvAuthProvider). Pass base_url, organization, and project explicitly instead.

Custom Headers

default_headers applies to every request — useful for gateways and proxies (e.g. a Helicone-Auth token). lmux-managed headers (Authorization, Content-Type, OpenAI-Organization, OpenAI-Project) take precedence and cannot be overridden by default_headers; use organization / project for those.

provider = OpenAIProvider(
    organization="org-abc",
    project="proj-123",
    default_headers={"Helicone-Auth": "Bearer sk-helicone-..."},
)

Data Residency

OpenAI charges a 10% uplift on the gpt-5.4, gpt-5.5, and gpt-5.6 families when requests go through a regional processing (data residency) endpoint.

Data residency is selected at the transport layer (regional hostname like eu.api.openai.com), not via a per-request parameter. Set data_residency=True on the provider so lmux applies the uplift to the reported cost.

provider = OpenAIProvider(
    base_url="https://eu.api.openai.com/v1",
    data_residency=True,
)

The uplift is only applied to eligible models (checked via regional_uplift_applies); other models (e.g. gpt-4o, embeddings) return their standard cost even when data_residency=True.

Metadata

Release files for lmux-openai 0.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lmux-openai 0.10.2
File Size Uploaded
lmux_openai-0.10.2.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lmux-openai 0.10.2
File Interpreter ABI Platform
lmux_openai-0.10.2-py3-none-any.whl Python 3 none any Details

Total release size: 35.0 kB

Release files / lmux_openai-0.10.2.tar.gz

Download URL lmux_openai-0.10.2.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
941e25af606112766c904115bf2195978bacb334c05d11096eb5c93c1148000d
BLAKE2b-256 checksum
How to use checksums
f95cc9bc5ed6b2e04ee26aa3b7c9533f9ef8cd73b5f27f759160b5004eda866e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 1, 2026.

Transparency log

Release files / lmux_openai-0.10.2-py3-none-any.whl

Download URL lmux_openai-0.10.2-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e2a99d9d5d514e18b4325ff3c8c53f0e0336d4a2836a40b682b955bbe0be834d
BLAKE2b-256 checksum
How to use checksums
2778af6685d5e12fbcdf7939ea3e535cd6d4f0bcaf15b8eac05c065ec12cb809
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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 1, 2026.

Transparency log

Release history Release notifications | RSS feed

0.10.5

2 release files

0.10.4

2 release files

This release

0.10.2 This release

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page