LLMUtils.Provider behaviour (llm_utils v0.1.3)

Copy Markdown View Source

Behaviour for LLM provider implementations.

Provider modules define config, API key resolution, headers, response handling, and capabilities.

Summary

Functions

Build auth headers based on auth type.

Returns the environment variable name for a provider's API key.

Resolve API key from environment for a provider. Falls back to LLM_API_KEY if provider-specific env var not set.

Types

config()

@type config() :: %{
  id: String.t(),
  name: String.t(),
  base_url: String.t(),
  default_model: String.t(),
  auth_type: :bearer | :subscription_key | :none,
  api_key_env: String.t(),
  supports_json_mode: boolean(),
  supports_system_role: boolean(),
  rate_limit: non_neg_integer() | nil,
  rate_window_ms: pos_integer(),
  models: [String.t()],
  suppress_thinking: boolean()
}

Callbacks

api_key()

@callback api_key() :: String.t() | nil

config()

@callback config() :: config()

handle_response(map)

@callback handle_response(map()) :: {:ok, map()} | {:error, atom()}

headers(t)

@callback headers(String.t()) :: [{String.t(), String.t()}]

supports_system_role?()

@callback supports_system_role?() :: boolean()

Functions

auth_headers(arg1, key)

Build auth headers based on auth type.

env_key(provider_id)

Returns the environment variable name for a provider's API key.

get_api_key(provider_id)

Resolve API key from environment for a provider. Falls back to LLM_API_KEY if provider-specific env var not set.