View Source LlmComposer.Provider behaviour (llm_composer v0.19.2)
Behaviour for provider modules used by LlmComposer.
A provider is responsible for:
- receiving normalized
LlmComposer.Messageinputs, - calling an upstream API,
- returning a normalized
LlmComposer.LlmResponse.
Required callbacks
name/0: returns the provider atom (for example,:open_ai,:google).run/3: executes one completion request.
run/3 receives:
messages: user/assistant/tool messages,system_message: system prompt message (ornil),opts: provider options (model, credentials, request params, stream flag, etc.).
It must return:
{:ok, %LlmComposer.LlmResponse{}}on success,{:error, reason}on failure.
Minimal implementation shape
defmodule LlmComposer.Providers.MyProvider do
@behaviour LlmComposer.Provider
@impl LlmComposer.Provider
def name, do: :my_provider
@impl LlmComposer.Provider
def run(messages, system_message, opts) do
# 1) validate required opts (for example, :model / auth)
# 2) build provider request from messages + system_message
# 3) call API and map result into {:ok, %{response: body}} | {:error, reason}
# 4) normalize through your ProviderResponse adapter
end
endFor consistency with built-in providers, implement a LlmComposer.ProviderResponse.*
adapter so provider-specific payloads are parsed into LlmComposer.LlmResponse.
If streaming is supported, also add a LlmComposer.ProviderStreamChunk.* adapter.
Summary
Callbacks
@callback name() :: atom()
@callback run([LlmComposer.Message.t()], LlmComposer.Message.t() | nil, keyword()) :: {:ok, LlmComposer.LlmResponse.t()} | {:error, term()}