openai_api_wrapper/
embeddings.rs1use 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}