Skip to main content

OpenAI provider for lmux

Project description

lmux-openai

OpenAI provider for lmux. Wraps the openai SDK.

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)

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

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
)

Data Residency

OpenAI charges a 10% uplift on the gpt-5.4 family (gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.4-pro) 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.

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

lmux_openai-0.5.6.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

lmux_openai-0.5.6-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file lmux_openai-0.5.6.tar.gz.

File metadata

  • Download URL: lmux_openai-0.5.6.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lmux_openai-0.5.6.tar.gz
Algorithm Hash digest
SHA256 03e2e62377b5e4bf5c99b10e8b0e4979e09ff09ddda0c7ac24bf35b6b0295033
MD5 448e50ce5d0cf909e1ce7f080847e0f3
BLAKE2b-256 88a1d6afd83aee1837436c6f8ecd2f5273596eb3c0ab9af893d0bf16563a0f20

See more details on using hashes here.

Provenance

The following attestation bundles were made for lmux_openai-0.5.6.tar.gz:

Publisher: publish.yml on cluebbehusen/lmux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lmux_openai-0.5.6-py3-none-any.whl.

File metadata

  • Download URL: lmux_openai-0.5.6-py3-none-any.whl
  • Upload date:
  • Size: 13.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for lmux_openai-0.5.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b27f64a81474f973533641d6b82ae4ee78f0008aac3dd97b8b13f2d10c1ae4a5
MD5 e15489f6d1fa5b2ed044b01f86b1c8ac
BLAKE2b-256 ca0581b74a024cdddacac7ecf01ddb3850f5627331ee2f7a9157b86d4ce72d8c

See more details on using hashes here.

Provenance

The following attestation bundles were made for lmux_openai-0.5.6-py3-none-any.whl:

Publisher: publish.yml on cluebbehusen/lmux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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