openai_req/embeddings/
mod.rs1
2use crate::{Input, JsonRequest};
3use serde::{Serialize,Deserialize};
4
5#[derive(Serialize, Deserialize, Debug, Clone)]
16pub struct EmbeddingRequest{
17 pub model:String,
18 pub input:Input,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub user: Option<String>
21}
22
23impl JsonRequest<EmbeddingResponse> for EmbeddingRequest{
24 const ENDPOINT: &'static str = "/embeddings";
25}
26
27impl EmbeddingRequest {
28 pub fn new(input: Input) -> Self {
29 EmbeddingRequest {
30 model: "text-embedding-ada-002".to_string(),
31 input,
32 user: None,
33 }
34 }
35
36
37 pub fn with_model(model: String, input: Input) -> Self {
38 EmbeddingRequest {
39 model,
40 input,
41 user: None,
42 }
43 }
44
45 pub fn user(mut self, user: String) -> Self {
46 self.user = Some(user);
47 self
48 }
49}
50
51
52#[derive(Serialize, Deserialize, Debug, Clone)]
53pub struct Usage {
54 pub prompt_tokens: i64,
55 pub total_tokens: i64,
56}
57
58#[derive(Serialize, Deserialize, Debug, Clone)]
59pub struct Struct {
60 pub object: String,
61 pub embedding: Vec<f64>,
62 pub index: i64,
63}
64
65#[derive(Serialize, Deserialize, Debug, Clone)]
66pub struct EmbeddingResponse {
67 pub object: String,
68 pub data: Vec<Struct>,
69 pub model: String,
70 pub usage: Usage,
71}