openai/request/
create_embedding.rs1use serde_json::json;
2use crate::model::*;
3use crate::OpenAiClient;
4#[derive(Clone)]
8pub struct CreateEmbeddingRequest<'a> {
9 pub(crate) http_client: &'a OpenAiClient,
10 pub input: serde_json::Value,
11 pub model: String,
12 pub user: Option<String>,
13}
14impl<'a> CreateEmbeddingRequest<'a> {
15 pub async fn send(self) -> ::httpclient::InMemoryResult<CreateEmbeddingResponse> {
16 let mut r = self.http_client.client.post("/embeddings");
17 r = r.json(json!({ "input" : self.input }));
18 r = r.json(json!({ "model" : self.model }));
19 if let Some(ref unwrapped) = self.user {
20 r = r.json(json!({ "user" : unwrapped }));
21 }
22 r = self.http_client.authenticate(r);
23 let res = r.send_awaiting_body().await?;
24 res.json()
25 }
26 pub fn user(mut self, user: &str) -> Self {
27 self.user = Some(user.to_owned());
28 self
29 }
30}
31impl<'a> ::std::future::IntoFuture for CreateEmbeddingRequest<'a> {
32 type Output = httpclient::InMemoryResult<CreateEmbeddingResponse>;
33 type IntoFuture = ::futures::future::BoxFuture<'a, Self::Output>;
34 fn into_future(self) -> Self::IntoFuture {
35 Box::pin(self.send())
36 }
37}