CrucibleIR.Backend.Capabilities (CrucibleIR v0.3.0)

View Source

Declares backend capabilities and limits.

This struct is used for capability discovery, routing, and cost visibility.

Fields

  • :backend_id - Backend identifier
  • :provider - Provider name
  • :models - Supported models
  • :default_model - Default model
  • :supports_streaming - Streaming support
  • :supports_tools - Tool calling support
  • :supports_vision - Vision support
  • :supports_audio - Audio support
  • :supports_json_mode - JSON mode support
  • :supports_extended_thinking - Extended thinking support
  • :supports_caching - Caching support
  • :max_tokens - Maximum completion tokens
  • :max_context_length - Maximum context length
  • :max_images_per_request - Maximum images per request
  • :requests_per_minute - RPM limit
  • :tokens_per_minute - TPM limit
  • :cost_per_million_input - Input token cost (per 1M)
  • :cost_per_million_output - Output token cost (per 1M)
  • :metadata - Additional metadata

Summary

Types

t()

@type t() :: %CrucibleIR.Backend.Capabilities{
  backend_id: atom(),
  cost_per_million_input: float() | nil,
  cost_per_million_output: float() | nil,
  default_model: String.t() | nil,
  max_context_length: non_neg_integer() | nil,
  max_images_per_request: non_neg_integer() | nil,
  max_tokens: non_neg_integer() | nil,
  metadata: map(),
  models: [String.t()],
  provider: String.t(),
  requests_per_minute: non_neg_integer() | nil,
  supports_audio: boolean(),
  supports_caching: boolean(),
  supports_extended_thinking: boolean(),
  supports_json_mode: boolean(),
  supports_streaming: boolean(),
  supports_tools: boolean(),
  supports_vision: boolean(),
  tokens_per_minute: non_neg_integer() | nil
}