use serde::{Deserialize, Serialize};
pub const DEFAULT_BATCH_SIZE: usize = 10;
pub const DEFAULT_MAX_CONCURRENCY: usize = 4;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "api", derive(utoipa::ToSchema))]
#[cfg_attr(feature = "alef-meta", alef(since = "1.0.0"))]
pub struct ChunkClassificationDefinition {
pub label: String,
pub description: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
#[cfg_attr(feature = "api", derive(utoipa::ToSchema))]
#[cfg_attr(feature = "alef-meta", alef(since = "1.0.0"))]
pub struct ChunkClassificationConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompt_template: Option<String>,
pub definitions: Vec<ChunkClassificationDefinition>,
pub llm: super::llm::LlmConfig,
#[serde(default = "ChunkClassificationConfig::default_batch_size")]
pub batch_size: usize,
#[serde(default = "ChunkClassificationConfig::default_max_concurrency")]
pub max_concurrency: usize,
}
impl ChunkClassificationConfig {
pub fn default_batch_size() -> usize {
DEFAULT_BATCH_SIZE
}
pub fn default_max_concurrency() -> usize {
DEFAULT_MAX_CONCURRENCY
}
}