Represents a message in an LLM conversation.
Messages can have different roles (system, user, assistant, tool) and can contain text content, tool calls, and image references.
Examples
iex> Message.user("Hello, world!")
%Message{role: :user, content: "Hello, world!"}
iex> Message.system("You are a helpful assistant.")
%Message{role: :system, content: "You are a helpful assistant."}
Summary
Functions
Creates an assistant message.
Creates a system message.
Creates a user message.
Adds image paths to a message.
Types
@type role() :: :system | :user | :assistant | :tool
@type t() :: %Mojentic.LLM.Message{ content: String.t() | nil, image_paths: [String.t()] | nil, role: role(), tool_calls: [Mojentic.LLM.ToolCall.t()] | nil }
Functions
Creates an assistant message.
Examples
iex> Message.assistant("I understand.")
%Message{role: :assistant, content: "I understand."}
Creates a system message.
Examples
iex> Message.system("You are helpful.")
%Message{role: :system, content: "You are helpful."}
Creates a user message.
Examples
iex> Message.user("Hello!")
%Message{role: :user, content: "Hello!"}
Adds image paths to a message.
Examples
iex> Message.user("Describe this image") |> Message.with_images(["/path/to/image.jpg"])
%Message{role: :user, content: "Describe this image", image_paths: ["/path/to/image.jpg"]}