transform_messages_for_capabilities

Function transform_messages_for_capabilities 

Source
pub fn transform_messages_for_capabilities(
    messages: Vec<ChatMessage>,
    capabilities: ModelCapabilities,
) -> Vec<ChatMessage>
Expand description

Transform chat messages based on model capabilities.

This is a pure function that applies capability-aware transformations:

  • Merges consecutive system messages (always, for all models)
  • Converts system messages to user messages when model doesn’t support system role
  • Merges consecutive same-role messages when model requires strict alternation

§Invariant

Consecutive system messages are ALWAYS merged, regardless of capabilities. This prevents Jinja template errors in models with strict role alternation.

When capabilities are unknown (empty), only system message merging is applied. This prevents degrading standard models while ensuring universal compatibility.

§Arguments

  • messages - The input chat messages to transform
  • capabilities - The model’s capability flags

§Returns

Transformed messages suitable for the model’s constraints