Skip to content

MessageMapper

Category: LLM Providers

Source: message_mapper.dart

Classes

MappedMessages

Result of mapping Glue messages to a provider-specific format.

Constructor

dart
MappedMessages({required this.systemPrompt, required this.messages})

Properties

PropertyTypeDescription
systemPromptStringSystem prompt (Anthropic: separate field; OpenAI: prepended message).
messagesList<Map<String, dynamic>>Provider-formatted message list.

sealed MessageMapper

Maps Glue [Message] objects to provider-specific JSON payloads.

Constructor

dart
const MessageMapper()

Methods

`MappedMessages mapMessages(
List<Message> messages, {
required String systemPrompt,

})`

AnthropicMessageMapper

Anthropic Messages API format.

  • System prompt is a separate top-level field.
  • Tool results are sent as role: "user" with type: "tool_result" blocks.
  • Assistant tool calls are type: "tool_use" content blocks.

Constructor

dart
const AnthropicMessageMapper()

Methods

`MappedMessages mapMessages(
List<Message> messages, {
required String systemPrompt,

})`

GeminiMessageMapper

Gemini Developer API (v1beta/models/{model}:streamGenerateContent) format.

  • System prompt is kept separate; the request builder lifts it into the top-level systemInstruction.parts[].text field.
  • Roles are user and model (no assistant, no system, no tool).
  • Tool calls are {functionCall: {name, args}} parts on model messages.
  • Tool results are {functionResponse: {name, response: {content}}} parts on user messages.
  • Image parts become {inlineData: {mimeType, data}}.
  • Orphaned tool results (no matching prior functionCall) are dropped, and consecutive same-role messages are coalesced — Gemini requires alternating user/model turns.

Constructor

dart
const GeminiMessageMapper()

Methods

`MappedMessages mapMessages(
List<Message> messages, {
required String systemPrompt,

})`

const OpenAiMessageMapper()
`MappedMessages mapMessages(
List<Message> messages, {
required String systemPrompt,

})`

OpenAiMessageMapper

OpenAI Chat Completions format.

  • System prompt is a message with role: "system".
  • Tool results use role: "tool" with tool_call_id.
  • Assistant tool calls are stored in tool_calls array.

Constructor

dart
const OpenAiMessageMapper()

Methods

`MappedMessages mapMessages(
List<Message> messages, {
required String systemPrompt,

})`

Released under the MIT License.