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

# InternChatMessage

One OpenAI-compatible chat message, discriminated by `role`.

## Supported Types

### InternChatAssistantMessage

```go theme={null}
internChatMessage := components.CreateInternChatMessageAssistant(components.InternChatAssistantMessage{/* values here */})
```

### InternChatDeveloperMessage

```go theme={null}
internChatMessage := components.CreateInternChatMessageDeveloper(components.InternChatDeveloperMessage{/* values here */})
```

### InternChatSystemMessage

```go theme={null}
internChatMessage := components.CreateInternChatMessageSystem(components.InternChatSystemMessage{/* values here */})
```

### InternChatToolMessage

```go theme={null}
internChatMessage := components.CreateInternChatMessageTool(components.InternChatToolMessage{/* values here */})
```

### InternChatUserMessage

```go theme={null}
internChatMessage := components.CreateInternChatMessageUser(components.InternChatUserMessage{/* values here */})
```

## Union Discrimination

Use the `Type` field to determine which variant is active, then access the corresponding field:

```go theme={null}
switch internChatMessage.Type {
	case components.InternChatMessageTypeAssistant:
		// internChatMessage.InternChatAssistantMessage is populated
	case components.InternChatMessageTypeDeveloper:
		// internChatMessage.InternChatDeveloperMessage is populated
	case components.InternChatMessageTypeSystem:
		// internChatMessage.InternChatSystemMessage is populated
	case components.InternChatMessageTypeTool:
		// internChatMessage.InternChatToolMessage is populated
	case components.InternChatMessageTypeUser:
		// internChatMessage.InternChatUserMessage is populated
}
```
