langchain/openai_api/
embeddings.rs

1use super::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)]
27pub struct EmbeddingRequest {
28    model: String,
29    input: Vec<String>,
30}
31
32impl OpenAIRequest for EmbeddingRequest {
33    type Response = Embeddings;
34
35    fn method() -> Method {
36        Method::POST
37    }
38
39    fn url() -> &'static str {
40        "https://api.openai.com/v1/embeddings"
41    }
42}