Packages
llm_composer
0.19.4
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_stream_chunk/struct.ex
defmodule LlmComposer.ProviderStreamChunk.Struct do
@moduledoc false
defmacro __using__(opts \\ []) do
parser = Keyword.fetch!(opts, :parser)
provider = Keyword.fetch!(opts, :provider)
quote do
@moduledoc false
@type t :: %__MODULE__{
chunk: map(),
opts: keyword()
}
defstruct [:chunk, opts: []]
@spec new(map(), keyword()) :: t()
def new(chunk, opts \\ []) do
%__MODULE__{chunk: chunk, opts: opts}
end
defimpl LlmComposer.ProviderStreamChunk do
@spec to_stream_chunk(struct(), keyword()) ::
{:ok, LlmComposer.StreamChunk.t()} | :skip | {:error, term()}
def to_stream_chunk(%{chunk: chunk, opts: struct_opts}, call_opts) do
merged_opts = Keyword.merge(struct_opts, call_opts)
unquote(parser).parse(chunk, unquote(provider), merged_opts)
end
end
end
end
end