mini_langchain/
message.rs1
2use serde::{Serialize, Deserialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "lowercase")]
6pub enum MessageRole {
7 System, User, Assistant, ToolResponce, Tool, Developer, }
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct Message {
18 pub role: MessageRole,
19 pub content: String,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub name: Option<String>, }
23
24
25impl Message {
26 pub fn system(content: impl Into<String>) -> Self {
27 Self {
28 role: MessageRole::System,
29 content: content.into(),
30 name: None,
31 }
32 }
33
34 pub fn user(content: impl Into<String>) -> Self {
35 Self {
36 role: MessageRole::User,
37 content: content.into(),
38 name: None,
39 }
40 }
41
42 pub fn assistant(content: impl Into<String>) -> Self {
43 Self {
44 role: MessageRole::Assistant,
45 content: content.into(),
46 name: None,
47 }
48 }
49
50 pub fn tool(name: impl Into<String>, content: impl Into<String>) -> Self {
51 Self {
52 role: MessageRole::Tool,
53 content: content.into(),
54 name: Some(name.into()),
55 }
56 }
57 pub fn tool_res(name: impl Into<String>, content: impl Into<String>) -> Self {
58 Self {
59 role: MessageRole::Tool,
60 content: content.into(),
61 name: Some(name.into()),
62 }
63 }
64
65 pub fn developer(content: impl Into<String>) -> Self {
66 Self {
67 role: MessageRole::Developer,
68 content: content.into(),
69 name: None,
70 }
71 }
72}