ds_api/raw/request/
message.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize, Default, Clone)]
7pub struct Message {
8 pub role: Role,
10
11 #[serde(skip_serializing_if = "Option::is_none")]
13 pub content: Option<String>,
14
15 #[serde(skip_serializing_if = "Option::is_none")]
17 pub name: Option<String>,
18
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub tool_call_id: Option<String>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub tool_calls: Option<Vec<ToolCall>>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub reasoning_content: Option<String>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub prefix: Option<bool>,
34}
35
36impl Message {
37 pub fn new(role: Role, message: &str) -> Self {
38 Self {
39 role,
40 content: Some(message.to_string()),
41 name: None,
42 tool_call_id: None,
43 tool_calls: None,
44 reasoning_content: None,
45 prefix: None,
46 }
47 }
48}
49
50#[derive(Debug, Serialize, Deserialize, Clone, Default)]
52#[serde(rename_all = "lowercase")]
53pub enum Role {
54 System,
55 #[default]
56 User,
57 Assistant,
58 Tool,
59}
60
61#[derive(Debug, Serialize, Deserialize, Clone)]
63pub struct ToolCall {
64 pub id: String,
65 pub r#type: ToolType,
66 pub function: FunctionCall,
67}
68
69#[derive(Debug, Serialize, Deserialize, Clone)]
70#[serde(rename_all = "lowercase")]
71pub enum ToolType {
72 Function,
73}
74
75#[derive(Debug, Serialize, Deserialize, Clone)]
76pub struct FunctionCall {
77 pub name: String,
78 pub arguments: String, }