use serde::{Deserialize, Serialize};
use super::GenerateModel;
#[derive(Serialize, Default, Debug)]
pub struct SummarizeRequest<'input> {
pub text: &'input str,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<SummarizeFormat>,
#[serde(skip_serializing_if = "Option::is_none")]
pub length: Option<SummarizeLength>,
#[serde(skip_serializing_if = "Option::is_none")]
pub extractiveness: Option<SummarizeExtractiveness>,
#[serde(skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub additional_command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<GenerateModel>,
}
#[derive(strum_macros::Display, Serialize, Debug)]
pub enum SummarizeLength {
#[strum(serialize = "short")]
#[serde(rename = "short")]
Short,
#[strum(serialize = "medium")]
#[serde(rename = "medium")]
Medium,
#[strum(serialize = "long")]
#[serde(rename = "long")]
Long,
#[strum(serialize = "auto")]
#[serde(rename = "auto")]
Auto,
}
#[derive(strum_macros::Display, Serialize, Debug)]
pub enum SummarizeFormat {
#[strum(serialize = "paragraph")]
#[serde(rename = "paragraph")]
Paragraph,
#[strum(serialize = "bullets")]
#[serde(rename = "bullets")]
Bullets,
#[strum(serialize = "auto")]
#[serde(rename = "auto")]
Auto,
}
#[derive(strum_macros::Display, Serialize, Debug)]
pub enum SummarizeExtractiveness {
#[strum(serialize = "low")]
#[serde(rename = "low")]
Low,
#[strum(serialize = "medium")]
#[serde(rename = "medium")]
Medium,
#[strum(serialize = "high")]
#[serde(rename = "high")]
High,
#[strum(serialize = "auto")]
#[serde(rename = "auto")]
Auto,
}
#[derive(Deserialize, Debug)]
pub(crate) struct SummarizeResponse {
pub summary: String,
}