zai_rs/model/text_tokenizer/
data.rs1use super::{
2 request::{TokenizerBody, TokenizerMessage, TokenizerModel},
3 response::TokenizerResponse,
4};
5use crate::client::ZaiClient;
6
7pub struct TokenizerRequest {
13 body: TokenizerBody,
14}
15
16impl TokenizerRequest {
17 pub fn new(model: TokenizerModel, messages: Vec<TokenizerMessage>) -> Self {
19 let body = TokenizerBody::new(model, messages);
20 Self { body }
21 }
22
23 pub fn with_request_id(mut self, v: impl Into<String>) -> Self {
25 self.body = self.body.with_request_id(v);
26 self
27 }
28 pub fn with_user_id(mut self, v: impl Into<String>) -> Self {
30 self.body = self.body.with_user_id(v);
31 self
32 }
33
34 pub fn validate(&self) -> crate::ZaiResult<()> {
36 self.body.validate()
37 }
38
39 pub async fn send_via(&self, client: &ZaiClient) -> crate::ZaiResult<TokenizerResponse> {
42 self.validate()?;
43 let route = crate::client::routes::TOKENIZER_COUNT;
44 let url = client.endpoints().resolve_route(route, &[])?;
45 client
46 .send_json::<_, TokenizerResponse>(route.method(), url, &self.body)
47 .await
48 }
49}