# `Mojentic.LLM.Message`
[🔗](https://github.com/svetzal/mojentic-ex/blob/v1.2.0/lib/mojentic/llm/message.ex#L1)

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."}

# `role`

```elixir
@type role() :: :system | :user | :assistant | :tool
```

# `t`

```elixir
@type t() :: %Mojentic.LLM.Message{
  content: String.t() | nil,
  image_paths: [String.t()] | nil,
  role: role(),
  tool_calls: [Mojentic.LLM.ToolCall.t()] | nil
}
```

# `assistant`

Creates an assistant message.

## Examples

    iex> Message.assistant("I understand.")
    %Message{role: :assistant, content: "I understand."}

# `system`

Creates a system message.

## Examples

    iex> Message.system("You are helpful.")
    %Message{role: :system, content: "You are helpful."}

# `user`

Creates a user message.

## Examples

    iex> Message.user("Hello!")
    %Message{role: :user, content: "Hello!"}

# `with_images`

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"]}

---

*Consult [api-reference.md](api-reference.md) for complete listing*
