Puck.Message (Puck v0.2.11)

Copy Markdown View Source

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

Types

role()

@type role() :: :system | :user | :assistant

t()

@type t() :: %Puck.Message{
  content: [Puck.Content.Part.t()],
  metadata: map(),
  role: role()
}

Functions

new(role, content, metadata \\ %{})

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: %{}}