Packages
llm_composer
0.19.1
0.20.2
0.20.1
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.3
0.12.2
0.12.0
0.11.2
0.11.1
0.11.0
0.10.0
0.8.0
0.7.0
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
LlmComposer is an Elixir library that facilitates chat interactions with language models, providing tools to handle user messages, generate responses, and execute functions automatically based on model outputs.
Current section
Files
Jump to
Current section
Files
lib/llm_composer/provider_response.ex
defprotocol LlmComposer.ProviderResponse do
@moduledoc """
Protocol that turns provider-specific raw responses into `LlmComposer.LlmResponse` structs.
Each provider adapter must wrap its raw HTTP result into a dedicated struct and implement
this protocol. The protocol implementation is responsible for parsing the provider payload,
extracting function calls, tokens, stream handles, etc., and returning the normalized response.
"""
@fallback_to_any true
@spec to_llm_response(t(), keyword()) :: {:ok, LlmComposer.LlmResponse.t()} | {:error, term()}
def to_llm_response(raw_response, opts)
end
defimpl LlmComposer.ProviderResponse, for: Any do
def to_llm_response(raw_response, _opts) do
{:error,
%{
reason: :unsupported_response_struct,
struct: raw_response
}}
end
end