Skip to main content

lmux

Core types, protocols, and utilities for the lmux ecosystem.

You don't need to install this directly; provider packages (e.g., lmux-openai) include it as a dependency. Install it only if you're building a custom provider.

Types

Messages

  • SystemMessage: system/instruction message
  • DeveloperMessage: developer message (for o-series models)
  • UserMessage: user message, supports text and multimodal content (TextContent, ImageContent, CachePointContent)
  • AssistantMessage: assistant message with optional tool calls
  • ToolMessage: tool result

Responses

  • ChatResponse: chat completion result with content, usage, cost, model, provider, finish_reason
  • ChatChunk: streaming chunk with delta, tool_call_deltas, usage, cost
  • EmbeddingResponse: embedding result with embeddings, usage, cost
  • ResponseResponse: Responses API result with output_text, usage, cost

Cost

  • Usage: token counts (input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens)
  • Cost: cost breakdown (input_cost, output_cost, total_cost, plus cache costs)
  • ModelPricing / PricingTier: tiered pricing configuration
  • PricingSchedule: dated price overrides for models whose rate changes on a known date (e.g. an introductory rate)
  • per_million_tokens(): converts per-million price to per-token price
  • calculate_cost(): calculates cost from usage and pricing; pass as_of=<date> to bill at the rate in effect on that day (defaults to the latest schedule)

Tools

  • Tool: function tool definition
  • ToolChoice / ToolChoiceFunction: control whether and which tool the model calls
  • ToolCall / ToolCallDelta: tool call in responses and streaming
  • FunctionDefinition / FunctionCallResult / FunctionCallDelta

Response Format

  • TextResponseFormat / JsonObjectResponseFormat / JsonSchemaResponseFormat

Protocols

from lmux import CompletionProvider, EmbeddingProvider, ResponsesProvider, PricingProvider, AsyncCloseable
  • CompletionProvider[ParamsT]: chat, achat, chat_stream, achat_stream
  • EmbeddingProvider[ParamsT]: embed, aembed
  • ResponsesProvider[ParamsT]: create_response, acreate_response
  • PricingProvider: register_pricing
  • AuthProvider[AuthT]: get_credentials, aget_credentials
  • AsyncCloseable: aclose

All are @runtime_checkable, so you can use isinstance() to check support.

Registry

Route "prefix/model" strings to provider instances:

from lmux import Registry

registry = Registry()
registry.register("openai", openai_provider)
registry.register("anthropic", anthropic_provider)

response = registry.chat("openai/gpt-4o", messages)
response = registry.chat("anthropic/claude-sonnet-4-20250514", messages)

# Close all providers that implement AsyncCloseable
await registry.aclose()

Exceptions

All exceptions inherit from LmuxError and carry optional provider and status_code fields:

  • AuthenticationError
  • RateLimitError (with retry_after)
  • InvalidRequestError
  • NotFoundError
  • ProviderError
  • TimeoutError
  • UnsupportedFeatureError

MockProvider

Built-in mock for testing. Implements all protocols with configurable responses and call tracking.

from lmux import MockProvider, ChatResponse

mock = MockProvider(chat_responses=[ChatResponse(...)])
response = mock.chat("any-model", messages)
assert len(mock.calls) == 1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lmux-0.8.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

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

lmux-0.8.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file lmux-0.8.0.tar.gz.

File metadata

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

File hashes

Hashes for lmux-0.8.0.tar.gz
Algorithm Hash digest
SHA256 7a5637a248471a0c3da1819c385adb6a61d4ef2af5ba1c3368c8a8875387a1dc
MD5 620785cc6d8510e79a62d414ae07a296
BLAKE2b-256 4d9dd2f4791f23d371a4a7e2cd1a219e8df0553d55f65dddeb48c22cf16305fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for lmux-0.8.0.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-0.8.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for lmux-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4907101e205f02f65246dc29ee5ee298b963c41f21df1f2cd3839a5ff67a56fc
MD5 cd118648e5d1a761368d96c6e5ac96ec
BLAKE2b-256 05b4c5f5914c32ea76e7593a4bb8076ed0c9fd28d32f5c51516a0fb199056a84

See more details on using hashes here.

Provenance

The following attestation bundles were made for lmux-0.8.0-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 Sentry Error logging StatusPage Status page