Arcanum.ModelProfile (arcanum v0.1.9)

Copy Markdown View Source

Declares model capabilities so adapters serialize correctly on the first attempt.

Every model gets a profile. Unknown models get default/0 which assumes the weakest common denominator (no system role, XML text tool calls).

Summary

Functions

Profile for models with full OpenAI-compatible capabilities.

Default profile for unknown models. Assumes weak capabilities.

Types

image_response_mode()

@type image_response_mode() :: :native_b64 | :request_b64

t()

@type t() :: %Arcanum.ModelProfile{
  image_response_mode: image_response_mode(),
  max_context: pos_integer(),
  max_images_per_message: pos_integer(),
  max_outputs_per_request: pos_integer(),
  preserve_reasoning: boolean(),
  provider_routing: map() | nil,
  reasoning_field: atom() | nil,
  supported_formats: [String.t()],
  supported_qualities: [String.t()],
  supported_sizes: [String.t()],
  supports_image_generation: boolean(),
  supports_style: boolean(),
  supports_system_role: boolean(),
  supports_tools: boolean(),
  supports_video_generation: boolean(),
  supports_vision: boolean(),
  temperature_not_supported: boolean(),
  thinking_param: map() | nil,
  tool_call_format: tool_call_format(),
  uses_max_completion_tokens: boolean()
}

tool_call_format()

@type tool_call_format() :: :native | :xml_text

Functions

capable()

@spec capable() :: t()

Profile for models with full OpenAI-compatible capabilities.

default()

@spec default() :: t()

Default profile for unknown models. Assumes weak capabilities.