gpt_core/
msg.rs

1use serde::{Deserialize, Serialize};
2use std::fmt::Display;
3
4pub type Messages = Vec<Message>;
5
6#[derive(Debug, Serialize, Deserialize)]
7#[cfg_attr(test, derive(PartialEq))]
8pub struct Message {
9    role: Role,
10    content: String,
11}
12
13impl Display for Message {
14    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
15        write!(f, "{:?}: {}", self.role, self.content)
16    }
17}
18
19impl Message {
20    pub fn new(role: Role, content: String) -> Self {
21        Self { role, content }
22    }
23}
24
25#[derive(Debug, Serialize, Deserialize)]
26#[cfg_attr(test, derive(PartialEq))]
27#[serde(rename_all = "lowercase")]
28pub enum Role {
29    System,
30    User,
31    Assistant,
32}