Packages
liter_llm
1.11.4
1.11.4
1.11.3
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/assistant_part.ex
# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:7944d9976ed5e784d58bb60b20a64df43c6faa98460b1282aa94dfadc636b045
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
defmodule LiterLlm.AssistantPart do
@moduledoc """
One part of a structured assistant response.
`#[serde(tag = "type", rename_all = "snake_case")]` matches OpenAI's
parts-spec discriminator (`"type": "text"`, `"type": "output_image"`, …).
"""
@typedoc "One part of a structured assistant response."
@type t :: term()
@typedoc "A text segment of the response."
@type text :: %{type: :text, text: String.t()}
@typedoc "A refusal — the model declined to respond."
@type refusal :: %{type: :refusal, refusal: String.t()}
@typedoc "An image produced by the model (e.g. `gpt-image-1`, Gemini Imagen)."
@type output_image :: %{type: :output_image, image_url: LiterLlm.ImageUrl.t()}
@typedoc "Audio produced by the model (e.g. `gpt-4o-audio-preview`)."
@type output_audio :: %{type: :output_audio, audio: LiterLlm.AudioContent.t()}
def text(text), do: {:text, %{text: text}}
def refusal(refusal), do: {:refusal, %{refusal: refusal}}
def output_image(image_url), do: {:output_image, %{image_url: image_url}}
def output_audio(audio), do: {:output_audio, %{audio: audio}}
end