> ## Documentation Index
> Fetch the complete documentation index at: https://www.adaline.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MessageRole

# MessageRole

Enum for chat message roles in LLM conversations.

## Overview

`MessageRole` is a `str` enum that defines the four possible sender roles for a [PromptMessage](/docs/reference/sdk/v2/python/types/PromptMessage). Because it extends `str`, enum members compare equal to their string values.

```python theme={null}
from adaline_api.models.message_role import MessageRole
```

***

## Values

| Value         | Enum Member             | Description                                                          |
| ------------- | ----------------------- | -------------------------------------------------------------------- |
| `"system"`    | `MessageRole.SYSTEM`    | System instructions that guide the model's behavior and set context. |
| `"user"`      | `MessageRole.USER`      | User-provided messages and input.                                    |
| `"assistant"` | `MessageRole.ASSISTANT` | AI assistant responses, including tool-call requests.                |
| `"tool"`      | `MessageRole.TOOL`      | Tool/function execution results returned to the model.               |

***

## Examples

### Basic Usage

```python theme={null}
from adaline_api.models.message_role import MessageRole

role = MessageRole.SYSTEM       # 'system'
role = MessageRole.USER         # 'user'
role = MessageRole.ASSISTANT    # 'assistant'
role = MessageRole.TOOL         # 'tool'

# String comparison works because MessageRole extends str
assert MessageRole.USER == "user"
assert MessageRole.SYSTEM == "system"
```

### With PromptMessage

```python theme={null}
from adaline_api.models.message_role import MessageRole
from adaline_api.models.prompt_message import PromptMessage
from adaline_api.models.message_content import MessageContent
from adaline_api.models.text_content import TextContent

system_msg = PromptMessage(
    role=MessageRole.SYSTEM,
    content=[MessageContent(actual_instance=TextContent(
        modality="text",
        value="You are a helpful assistant."
    ))]
)

user_msg = PromptMessage(
    role=MessageRole.USER,
    content=[MessageContent(actual_instance=TextContent(
        modality="text",
        value="Hello!"
    ))]
)
```

### Filtering Messages by Role

```python theme={null}
from adaline_api.models.message_role import MessageRole
from adaline_api.models.prompt_message import PromptMessage

def filter_by_role(
    messages: list[PromptMessage], role: MessageRole
) -> list[PromptMessage]:
    return [m for m in messages if m.role == role]

deployment = await adaline.get_latest_deployment(
    prompt_id="prompt_abc123",
    deployment_environment_id="environment_abc123"
)

messages = deployment.prompt.messages
system_messages = filter_by_role(messages, MessageRole.SYSTEM)
user_messages = filter_by_role(messages, MessageRole.USER)
```

### Iterating Over All Roles

```python theme={null}
from adaline_api.models.message_role import MessageRole

for role in MessageRole:
    print(role.name, role.value)
# SYSTEM system
# USER user
# ASSISTANT assistant
# TOOL tool
```

***

## Serialization

```python theme={null}
from adaline_api.models.message_role import MessageRole

role = MessageRole.USER
j = role.value              # 'user'
restored = MessageRole(j)   # MessageRole.USER

# From JSON string
restored = MessageRole.from_json('"user"')
```
