1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use super::messages::Message;

#[derive(Debug, Clone)]
pub struct PromptValue {
    messages: Vec<Message>,
}
impl PromptValue {
    pub fn from_string(text: &str) -> Self {
        let message = Message::new_human_message(text);
        Self {
            messages: vec![message],
        }
    }
    pub fn from_messages(messages: Vec<Message>) -> Self {
        Self { messages }
    }

    pub fn to_string(&self) -> String {
        self.messages
            .iter()
            .map(|m| format!("{}: {}", m.message_type.to_string(), m.content))
            .collect::<Vec<String>>()
            .join("\n")
    }

    pub fn to_chat_messages(&self) -> Vec<Message> {
        self.messages.clone()
    }
}