openrouter/types/
rerank.rs1use serde::{Deserialize, Serialize};
6
7use super::common::Provider;
8
9#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
11pub struct RerankRequest {
12 pub model: String,
14 pub query: String,
16 pub documents: Vec<String>,
18 #[serde(skip_serializing_if = "Option::is_none", default)]
20 pub top_n: Option<u32>,
21 #[serde(skip_serializing_if = "Option::is_none", default)]
23 pub provider: Option<Provider>,
24}
25
26#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
28pub struct RerankResponse {
29 #[serde(default)]
31 pub id: String,
32 #[serde(default)]
34 pub model: String,
35 #[serde(default)]
37 pub provider: String,
38 #[serde(default)]
40 pub results: Vec<RerankResult>,
41 #[serde(default)]
43 pub usage: Option<RerankUsage>,
44}
45
46#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
48pub struct RerankResult {
49 #[serde(default)]
51 pub index: u32,
52 #[serde(default)]
54 pub relevance_score: f64,
55 #[serde(default)]
57 pub document: RerankDocument,
58}
59
60#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
62pub struct RerankDocument {
63 #[serde(default)]
65 pub text: String,
66}
67
68#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
70pub struct RerankUsage {
71 #[serde(default)]
73 pub total_tokens: u64,
74 #[serde(default)]
76 pub search_units: u64,
77 #[serde(default)]
79 pub cost: Option<f64>,
80}