Packages
liter_llm
1.2.0
1.11.2
1.11.1
1.11.0
1.10.1
1.10.0
1.9.3
1.9.0
1.9.0-rc.2
1.9.0-rc.1
1.8.2
1.8.1
1.8.0
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.6.4
1.6.3
1.6.2
1.5.1
1.5.0
1.4.1
1.4.0-rc.61
1.4.0-rc.60
1.4.0-rc.59
1.4.0-rc.58
1.4.0-rc.57
1.4.0-rc.56
1.4.0-rc.55
1.4.0-rc.53
1.4.0-rc.52
1.4.0-rc.50
1.4.0-rc.48
1.4.0-rc.47
1.4.0-rc.46
1.4.0-rc.45
1.4.0-rc.44
1.4.0-rc.43
1.4.0-rc.39
1.4.0-rc.38
1.4.0-rc.37
1.4.0-rc.36
1.4.0-rc.35
1.4.0-rc.34
1.4.0-rc.33
1.4.0-rc.32
1.4.0-rc.31
1.4.0-rc.30
1.4.0-rc.27
1.4.0-rc.26
1.4.0-rc.25
1.4.0-rc.24
1.4.0-rc.22
1.4.0-rc.21
1.4.0-rc.20
1.4.0-rc.19
1.4.0-rc.18
1.4.0-rc.17
1.4.0-rc.16
1.4.0-rc.14
1.4.0-rc.13
1.4.0-rc.11
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.0
1.0.0-rc.9
1.0.0-rc.8
1.0.0-rc.7
1.0.0-rc.6
1.0.0-rc.5
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
Universal LLM API client with Rust-powered polyglot bindings.
Current section
Files
Jump to
Current section
Files
lib/liter_llm/hook.ex
defmodule LiterLlm.Hook do
@moduledoc """
Behaviour for intercepting LLM client request/response lifecycle events.
Implement this behaviour and register hooks via `LiterLlm.Client.add_hook/2`.
Hooks are invoked in registration order, synchronously.
## Example
defmodule MyApp.LoggingHook do
@behaviour LiterLlm.Hook
@impl true
def on_request(request) do
Logger.debug("LLM request", model: request[:model])
:ok
end
@impl true
def on_response(request, response) do
Logger.info("LLM response", model: request[:model])
:ok
end
@impl true
def on_error(request, error) do
Logger.error("LLM error", model: request[:model], error: inspect(error))
:ok
end
end
client = LiterLlm.Client.new(api_key: "sk-...")
client = LiterLlm.Client.add_hook(client, MyApp.LoggingHook)
"""
@doc """
Called before the HTTP request is sent.
Return `:ok` to proceed, or `{:error, reason}` to reject the request.
A rejected request returns `{:error, %LiterLlm.Error{kind: :hook_rejected}}`.
"""
@callback on_request(request :: map()) :: :ok | {:error, term()}
@doc """
Called after a successful response is received.
"""
@callback on_response(request :: map(), response :: map()) :: :ok
@doc """
Called after a request fails.
"""
@callback on_error(request :: map(), error :: LiterLlm.Error.t()) :: :ok
end