Aludel.Interfaces.LLM.Behaviour behaviour (aludel v0.2.0)

Copy Markdown View Source

Behaviour for LLM provider implementations.

Each provider must implement generate/4 to handle text generation with provider-specific logic (authentication, configuration, etc.).

Summary

Callbacks

Generates text using the LLM provider.

Types

error_reason()

@type error_reason() ::
  :missing_api_key
  | {:auth_error, String.t()}
  | {:rate_limit, non_neg_integer() | nil}
  | {:invalid_request, String.t()}
  | {:api_error, non_neg_integer(), String.t()}
  | {:network_error, term()}

response()

@type response() :: %{
  content: String.t(),
  input_tokens: non_neg_integer(),
  output_tokens: non_neg_integer()
}

Callbacks

generate(model, prompt, config, opts)

@callback generate(
  model :: String.t(),
  prompt :: String.t(),
  config :: map(),
  opts :: keyword()
) :: {:ok, response()} | {:error, error_reason()}

Generates text using the LLM provider.

Parameters

  • model: Model identifier (e.g., "gpt-4o", "claude-3-5-sonnet")
  • prompt: Text prompt to send to the model
  • config: Provider configuration (API keys, temperature, etc.)
  • opts: Additional options (e.g., documents for vision models)

Returns

  • {:ok, response} with content and token usage
  • {:error, reason} if generation fails