1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
use serde_json::json; pub use crate::api::{API, IndexResults, IndexResultsBatch}; /// Labels definition pub struct Labels { api: API } /// Labels implementation impl Labels { /// Creates a Labels instance. /// /// # Arguments /// * `url` - base url of txtai API pub fn new(url: &str) -> Labels { Labels { api: API::new(url) } } /// Applies a zero shot classifier to text using a list of labels. Returns a list of /// {id: value, score: value} sorted by highest score, where id is the index in labels. /// /// # Arguments /// * `text` - input text /// * `labels` - list of labels pub async fn label(&self, text: &str, labels: &Vec<&str>) -> IndexResults { // Post parameters let params = json!({"text": text, "labels": labels}); // Execute API call Ok(self.api.post("label", ¶ms).await?.json().await?) } /// Applies a zero shot classifier to list of text using a list of labels. Returns a list of /// {id: value, score: value} sorted by highest score, where id is the index in labels per /// text element. /// /// # Arguments /// * `texts` - list of texts /// * `labels` - list of labels pub async fn batchlabel(&self, texts: &Vec<&str>, labels: &Vec<&str>) -> IndexResultsBatch { // Post parameters let params = json!({"texts": texts, "labels": labels}); // Execute API call Ok(self.api.post("batchlabel", ¶ms).await?.json().await?) } }