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
Defines the four message roles used in chat conversations with LLMs.
Import
import type { MessageRole } from '@adaline/api';
Type Definition
enum MessageRole {
System = 'system',
User = 'user',
Assistant = 'assistant',
Tool = 'tool'
}
Values
| Value | Description |
|---|
'system' | System instructions that set the model’s behavior, persona, or constraints. Typically the first message in a conversation. |
'user' | Messages from the end user or application providing input to the model. |
'assistant' | Responses generated by the model, including text replies and tool call requests. |
'tool' | Responses from tool/function executions, returned after the model requests a tool call. |
Examples
Role-specific Messages
import type { PromptMessage, MessageRole } from '@adaline/api';
const systemMessage: PromptMessage = {
role: 'system',
content: [{ modality: 'text', value: 'You are a helpful assistant.' }]
};
const userMessage: PromptMessage = {
role: 'user',
content: [{ modality: 'text', value: 'What is the weather in Paris?' }]
};
const assistantMessage: PromptMessage = {
role: 'assistant',
content: [{
modality: 'tool-call',
index: 0,
id: 'call_123',
name: 'get_weather',
arguments: JSON.stringify({ city: 'Paris' })
}]
};
const toolMessage: PromptMessage = {
role: 'tool',
content: [{
modality: 'tool-response',
index: 0,
id: 'call_123',
name: 'get_weather',
data: JSON.stringify({ temp: 24, conditions: 'sunny' })
}]
};
Filtering Messages by Role
import type { PromptMessage } from '@adaline/api';
const messages: PromptMessage[] = [/* conversation history */];
const systemMessages = messages.filter(m => m.role === 'system');
const userMessages = messages.filter(m => m.role === 'user');
const assistantMessages = messages.filter(m => m.role === 'assistant');
const toolMessages = messages.filter(m => m.role === 'tool');
// Get the system prompt
const systemPrompt = messages.find(m => m.role === 'system');
if (systemPrompt) {
const text = systemPrompt.content
.filter(c => c.modality === 'text')
.map(c => c.value)
.join(' ');
console.log(`System prompt: ${text}`);
}
Counting Messages by Role
function countByRole(messages: PromptMessage[]): Record<string, number> {
return messages.reduce((acc, m) => {
acc[m.role] = (acc[m.role] || 0) + 1;
return acc;
}, {} as Record<string, number>);
}
const counts = countByRole(messages);
// { system: 1, user: 5, assistant: 5, tool: 2 }
Type Guard
function isValidRole(role: string): role is MessageRole {
return ['system', 'user', 'assistant', 'tool'].includes(role);
}