lm_studio_api/chat/
format.rs

1use crate::prelude::*;
2use super::schema::*;
3
4/// Response format kind
5#[derive(Debug, Display, Clone, Serialize, Deserialize, Eq, PartialEq)]
6pub enum FormatKind {
7    #[serde(rename = "json_schema")]
8    #[display = "json_schema"]
9    Json,
10}
11
12/// Response format
13#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
14pub struct Format {
15    #[serde(rename = "type")]
16    pub kind: FormatKind,
17    #[serde(rename = "json_schema")]
18    pub schema: JsonSchema,
19}
20
21impl Format {
22    pub fn json<S: Into<String>>(name: S, schemes: Vec<Schema>, strict: bool) -> Self {
23        Self {
24            kind: FormatKind::Json,
25            schema: JsonSchema {
26                name: name.into(),
27                schemes: Schemes::OneOf(schemes),
28                strict,
29            }
30        }
31    }
32}