Skip to main content

split_pinned_system

Function split_pinned_system 

Source
pub fn split_pinned_system(
    messages: Vec<Message>,
) -> (Option<Message>, Vec<Message>)
Expand description

Split a message list into its leading system message, if any, and the conversation turns that follow.

Only a system message at index 0 is treated as pinned; a later system message is an ordinary turn (for example a summarization marker) and stays in the reducible history.

ยงExamples

use universal_agent_runtime::llm::{Message, MessageContent, MessageRole};
use universal_agent_runtime::uar::context::split_pinned_system;

let msgs = vec![
    Message { role: MessageRole::System, content: MessageContent::text("s"), tool_call_id: None, tool_calls: None },
    Message { role: MessageRole::User, content: MessageContent::text("u"), tool_call_id: None, tool_calls: None },
];
let (system, history) = split_pinned_system(msgs);
assert!(system.is_some());
assert_eq!(history.len(), 1);