Skip to main content

Core types, protocols, and utilities for the lmux language model multiplexer

Project description

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)
  • 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
  • per_million_tokens(): converts per-million price to per-token price
  • calculate_cost(): calculates cost from usage and pricing

Tools

  • Tool: function tool definition
  • 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

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-0.5.1.tar.gz (9.3 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.5.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for lmux-0.5.1.tar.gz
Algorithm Hash digest
SHA256 2774b7715f1901afbf3a0ad7433f5e5086480e48d2f06f4e9884bf047766dcdb
MD5 cc93a717d9c98dd3f64cd2d2e95adf69
BLAKE2b-256 ef6d25726cd5b3b4dbe4b9b9e6e605f0f22a9969f03523436823d7ed7c0ac918

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lmux-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 12.7 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.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b01c9e01ea38f8ead76847520d7a9159fe5186c8ef102be8d6b2d736b3dade21
MD5 ec127b0e78f353bc06056340099e471e
BLAKE2b-256 439c38f16d90c3917fa263d67c903ee66c103ea8cf30e4c5fb360b9424398326

See more details on using hashes here.

Provenance

The following attestation bundles were made for lmux-0.5.1-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