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}