use serde::{Deserialize, Serialize};
use super::common::Provider;
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct RerankRequest {
pub model: String,
pub query: String,
pub documents: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub top_n: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub provider: Option<Provider>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct RerankResponse {
#[serde(default)]
pub id: String,
#[serde(default)]
pub model: String,
#[serde(default)]
pub provider: String,
#[serde(default)]
pub results: Vec<RerankResult>,
#[serde(default)]
pub usage: Option<RerankUsage>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct RerankResult {
#[serde(default)]
pub index: u32,
#[serde(default)]
pub relevance_score: f64,
#[serde(default)]
pub document: RerankDocument,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct RerankDocument {
#[serde(default)]
pub text: String,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct RerankUsage {
#[serde(default)]
pub total_tokens: u64,
#[serde(default)]
pub search_units: u64,
#[serde(default)]
pub cost: Option<f64>,
}