use serde::{Deserialize, Serialize};
use crate::client::Client;
use crate::error::Result;
#[derive(Debug, Clone, Serialize, Default)]
pub struct EmbedRequest {
pub model: String,
pub input: Vec<String>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct EmbedResponse {
pub embeddings: Vec<Vec<f64>>,
pub model: String,
#[serde(default)]
pub cost_ticks: i64,
#[serde(default)]
pub request_id: String,
}
impl Client {
pub async fn embed(&self, req: &EmbedRequest) -> Result<EmbedResponse> {
let (mut resp, meta) = self
.post_json::<EmbedRequest, EmbedResponse>("/qai/v1/embeddings", req)
.await?;
if resp.cost_ticks == 0 {
resp.cost_ticks = meta.cost_ticks;
}
if resp.request_id.is_empty() {
resp.request_id = meta.request_id;
}
Ok(resp)
}
}