use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedRequest {
pub texts: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EmbedResponse {
pub vectors: Vec<Vec<f32>>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn roundtrip_json() {
let req = EmbedRequest {
texts: vec!["hello world".to_string(), "foo bar".to_string()],
};
let json = serde_json::to_string(&req).expect("serialize");
let decoded: EmbedRequest = serde_json::from_str(&json).expect("deserialize");
assert_eq!(req.texts, decoded.texts);
let resp = EmbedResponse {
vectors: vec![vec![0.1_f32, 0.2, 0.3], vec![0.4, 0.5, 0.6]],
};
let json = serde_json::to_string(&resp).expect("serialize");
let decoded: EmbedResponse = serde_json::from_str(&json).expect("deserialize");
assert_eq!(resp.vectors.len(), decoded.vectors.len());
assert_eq!(resp.vectors[0], decoded.vectors[0]);
}
}