Skip to main content

toi/
lib.rs

1use bon::Builder;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use utoipa::ToSchema;
5
6#[derive(Clone, Debug, Deserialize, PartialEq, Serialize, ToSchema)]
7#[serde(rename_all = "lowercase")]
8pub enum MessageRole {
9    #[serde(skip_deserializing)]
10    System,
11    Assistant,
12    User,
13}
14
15#[derive(Clone, Debug, Deserialize, Serialize, ToSchema)]
16pub struct Message {
17    pub role: MessageRole,
18    pub content: String,
19}
20
21#[derive(Builder, Debug, Deserialize, Serialize, ToSchema)]
22pub struct GenerationRequest {
23    pub messages: Vec<Message>,
24    #[serde(skip_deserializing)]
25    response_format: Option<Value>,
26}