Message
The MessageType
is the fundamental building block for communication with LLM providers in Adaline. It represents both messages sent to and received from language models, with a rich type system that supports various content modalities.
Overview
A MessageType
consists of three main components:
The role of the message sender.
Constraints: Must be one of the defined roles.
Array of content items.
Constraints: Must contain at least one content item.
Role Types
The role
field uses a union of predefined roles that determine the sender of the message.
RoleEnumType
Messages from the system.
Usage: Used for system prompts and instructions.
Messages from the user.
Usage: User input and queries.
Messages from the assistant.
Usage: LLM responses and outputs.
Messages from a tool.
Usage: Tool execution results.
Content Types
The content
field contains an array of ContentType
items, which is a union based on the modality
field. Each content type supports different data formats and use cases.
ContentType Discriminated Union
The ContentType
is discriminated by the modality
field:
Plain text content.
Image content with various formats.
Function/tool call requests.
Tool execution responses.
LLM reasoning and thinking content.
Text Content
TextContentType
Represents plain text content in messages.
Content type discriminator.
Constraints: Must be "text"
.
The text content.
Constraints: Any valid string.
Image Content
ImageContentType
Represents image content with support for both base64-encoded images and URL references.
Content type discriminator.
Constraints: Must be "image"
.
Processing detail level.
Constraints: Must be "low"
, "medium"
, "high"
, or "auto"
Image data.
Constraints: Must be either Base64 or URL type
ImageContentDetailsLiteralType
Controls how the image should be processed by the LLM:
Low detail processing (faster, less accurate).
Medium detail processing.
High detail processing (slower, more accurate).
Automatic detail selection.
ImageContentValueType Discriminated Union
The value
field in ImageContentType
is itself a discriminated union based on the type
field:
Base64ImageContentValueType
For inline base64-encoded images:
Value type discriminator.
Constraints: Must be "base64"
Base64-encoded image data.
Constraints: Valid base64 string.
Image format.
Constraints: Must be "png"
, "jpeg"
, "webp"
, or "gif"
UrlImageContentValueType
For images referenced by URL:
Value type discriminator.
Constraints: Must be "url"
URL pointing to the image.
Constraints: Valid URL string
Tool Call Content
ToolCallContentType
Represents a function or tool call request from the LLM.
Content type discriminator.
Constraints: Must be "tool-call"
.
Tool call index.
Constraints: Non-negative integer.
Unique identifier for the tool call.
Constraints: Non-empty string.
Name of the tool being called.
Constraints: Non-empty string.
JSON string of tool arguments.
Constraints: Valid string (typically JSON).
Tool Response Content
ToolResponseContentType
Represents the response from a tool execution.
Content type discriminator.
Constraints: Must be "tool-response"
.
Tool response index.
Constraints: Non-negative integer.
Tool call identifier.
Constraints: Non-empty string (matches tool call ID).
Name of the tool that was called.
Constraints: Non-empty string.
Response data from the tool.
Constraints: Any valid string.
Reasoning Content
ReasoningContentType
Represents LLM reasoning and thinking processes, supporting both full reasoning and redacted content.
Content type discriminator.
Constraints: Must be "reasoning"
.
Reasoning data.
Constraints: Must be thinking or redacted type.
ReasoningContentValueUnionType Discriminated Union
The value
field is discriminated by the type
field:
ReasoningContentValueType
For full reasoning content:
Value type discriminator.
Constraints: Must be "thinking"
.
The reasoning/thinking text.
Constraints: Any valid string.
Signature for the reasoning.
Constraints: Any valid string.
RedactedReasoningContentValueType
For redacted reasoning content:
Value type discriminator.
Constraints: Must be "redacted"
.
Redacted data placeholder.
Constraints: Any valid string