ExLLM.Capabilities (ex_llm v0.5.0)

View Source

Unified capability querying with automatic normalization.

This is the main interface for checking capabilities across providers and models. It handles normalization of different capability names used by various providers.

Examples

# Check if a provider supports a capability
ExLLM.Capabilities.supports?(:openai, :function_calling)
# => true

# Works with provider-specific names too
ExLLM.Capabilities.supports?(:anthropic, :tool_use)  # normalized to :function_calling
# => true

# Check if a specific model supports a capability
ExLLM.Capabilities.model_supports?(:openai, "gpt-4o", :vision)
# => true

# Find all providers that support a capability
ExLLM.Capabilities.find_providers(:image_generation)
# => [:openai]

Summary

Functions

Get human-readable name for a capability.

Find all models that support a capability (normalized).

Find all providers that support a capability (normalized).

Get detailed capability information for a provider.

List all normalized capability names.

Check if any model from a provider supports a capability.

Check if a specific model supports a capability (normalized).

Get normalized capability name.

Check if a provider supports a capability (normalized).

Functions

display_name(capability)

@spec display_name(atom()) :: String.t()

Get human-readable name for a capability.

find_models(feature)

@spec find_models(atom() | String.t()) :: [{atom(), String.t()}]

Find all models that support a capability (normalized).

find_providers(feature)

@spec find_providers(atom() | String.t()) :: [atom()]

Find all providers that support a capability (normalized).

get_provider_capability_summary(provider)

@spec get_provider_capability_summary(atom()) :: map()

Get detailed capability information for a provider.

Returns both provider-level and model-level capabilities with normalization applied.

list_capabilities()

@spec list_capabilities() :: [atom()]

List all normalized capability names.

model_supports?(provider, feature)

@spec model_supports?(atom(), atom() | String.t()) :: boolean()

Check if any model from a provider supports a capability.

model_supports?(provider, model_id, feature)

@spec model_supports?(atom(), String.t(), atom() | String.t()) :: boolean()

Check if a specific model supports a capability (normalized).

normalize_capability(feature)

@spec normalize_capability(atom() | String.t()) :: atom()

Get normalized capability name.

supports?(provider, feature)

@spec supports?(atom(), atom() | String.t()) :: boolean()

Check if a provider supports a capability (normalized).

This checks both provider-level capabilities and model-level capabilities.