use serde::{Deserialize, Serialize};
use std::fmt::Display;
pub type Messages = Vec<Message>;
#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(test, derive(PartialEq))]
pub struct Message {
role: Role,
content: String,
}
impl Display for Message {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}: {}", self.role, self.content)
}
}
impl Message {
pub fn new(role: Role, content: String) -> Self {
Self { role, content }
}
}
#[derive(Debug, Serialize, Deserialize)]
#[cfg_attr(test, derive(PartialEq))]
#[serde(rename_all = "lowercase")]
pub enum Role {
System,
User,
Assistant,
}