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 transformcapabilities- The model’s capability flags
§Returns
Transformed messages suitable for the model’s constraints