zai_rs/model/text_tokenizer/
request.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "kebab-case")]
6pub enum TokenizerModel {
7 #[serde(rename = "glm-4-plus")]
8 Glm4Plus,
9 #[serde(rename = "glm-4-0520")]
10 Glm40520,
11 #[serde(rename = "glm-4-long")]
12 Glm4Long,
13 #[serde(rename = "glm-4-air")]
14 Glm4Air,
15 #[serde(rename = "glm-4-flash")]
16 Glm4Flash,
17}
18
19impl Default for TokenizerModel {
20 fn default() -> Self {
21 TokenizerModel::Glm4Plus
22 }
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(tag = "role", rename_all = "lowercase")]
28pub enum TokenizerMessage {
29 User { content: String },
31 System { content: String },
33 Assistant {
35 #[serde(skip_serializing_if = "Option::is_none")]
36 content: Option<String>,
37 },
38 Tool { content: String },
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct TokenizerBody {
45 pub model: TokenizerModel,
47 pub messages: Vec<TokenizerMessage>,
49 #[serde(skip_serializing_if = "Option::is_none")]
51 pub request_id: Option<String>,
52 #[serde(skip_serializing_if = "Option::is_none")]
54 pub user_id: Option<String>,
55}
56
57impl TokenizerBody {
58 pub fn new(model: TokenizerModel, messages: Vec<TokenizerMessage>) -> Self {
59 Self {
60 model,
61 messages,
62 request_id: None,
63 user_id: None,
64 }
65 }
66 pub fn with_request_id(mut self, v: impl Into<String>) -> Self {
67 self.request_id = Some(v.into());
68 self
69 }
70 pub fn with_user_id(mut self, v: impl Into<String>) -> Self {
71 self.user_id = Some(v.into());
72 self
73 }
74}