A single message in a conversation.
Example
Puck.Message.new(:user, "Hello!")
Puck.Message.new(:user, [Puck.Content.text("Hi"), Puck.Content.image_url("...")])
Summary
Functions
Creates a new message.
Types
@type role() :: :system | :user | :assistant
@type t() :: %Puck.Message{ content: [Puck.Content.Part.t()], metadata: map(), role: role() }
Functions
Creates a new message.
Content can be a string (wrapped to Content.Part), a single Part, or a list of Parts.
Examples
iex> Puck.Message.new(:user, "Hello!")
%Puck.Message{role: :user, content: [%Puck.Content.Part{type: :text, text: "Hello!"}], metadata: %{}}
iex> Puck.Message.new(:user, Puck.Content.text("Hi!"))
%Puck.Message{role: :user, content: [%Puck.Content.Part{type: :text, text: "Hi!"}], metadata: %{}}