# `OpenaiEx.ChatMessage`
[🔗](https://github.com/cyberchitta/openai_ex/blob/v0.9.22/lib/openai_ex/chat_message.ex#L1)

This module provides an elixir map wrapper around the OpenAI message JSON
object which is used in the chat completions and assistants APIs.

# `assistant`

Create a `ChatMessage` map with role `assistant`.

Example usage:

    iex> _message = OpenaiEx.ChatMessage.assistant("Hello, world!")
    %{content: "Hello, world!", role: "assistant"}

    iex> _message = OpenaiEx.ChatMessage.assistant("Hello, world!", [%{id: "call_123", function: %{name: "test", arguments: "{}"}}])
    %{content: "Hello, world!", role: "assistant", tool_calls: [%{id: "call_123", function: %{name: "test", arguments: "{}"}}]}

# `developer`

Create a `ChatMessage` map with role `developer`.

Example usage:

    iex> _message = OpenaiEx.ChatMessage.developer("Hello, world!")
    %{content: "Hello, world!", role: "developer"}

# `system`

Create a `ChatMessage` map with role `system`.

Example usage:

    iex> _message = OpenaiEx.ChatMessage.system("Hello, world!")
    %{content: "Hello, world!", role: "system"}

# `tool`

Create a `ChatMessage` map with role `function`.

Example usage:

    iex> _message = OpenaiEx.ChatMessage.tool("call_sjflkje", "greet", "Hello, world!")
    %{content: "Hello, world!", role: "tool", name: "greet", tool_call_id: "call_sjflkje"}

# `user`

Create a `ChatMessage` map with role `user`.

Example usage:

    iex> _message = OpenaiEx.ChatMessage.user("Hello, world!")
    %{content: "Hello, world!", role: "user"}

