openai_api_wrapper/
embeddings.rs

1use crate::client::OpenAIRequest;
2use reqwest::Method;
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, Debug)]
6pub struct Usage {
7    pub prompt_tokens: i64,
8    pub total_tokens: i64,
9}
10
11#[derive(Serialize, Deserialize, Debug)]
12pub struct Embedding {
13    pub object: String,
14    pub embedding: Vec<f64>,
15    pub index: i64,
16}
17
18#[derive(Serialize, Deserialize, Debug)]
19pub struct Embeddings {
20    pub object: String,
21    pub data: Vec<Embedding>,
22    pub model: String,
23    pub usage: Usage,
24}
25
26#[derive(Serialize, derive_builder::Builder)]
27#[builder(setter(into))]
28pub struct EmbeddingRequest {
29    model: String,
30    input: Vec<String>,
31}
32
33impl OpenAIRequest for EmbeddingRequest {
34    type Response = Embeddings;
35
36    fn method() -> Method {
37        Method::POST
38    }
39
40    fn url() -> &'static str {
41        "https://api.openai.com/v1/embeddings"
42    }
43}