gproxy_protocol/protocol/openai/
embeddings.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::common::*;
6
7pub type EmbeddingWireModel = OpenAiWireModel<EmbeddingRequest, EmbeddingResponse>;
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
10#[non_exhaustive]
11pub struct EmbeddingRequest {
12 pub input: EmbeddingInput,
13 pub model: OpenAiModelId,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub dimensions: Option<u32>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub encoding_format: Option<EmbeddingEncodingFormat>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub user: Option<String>,
20 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
21 pub extra: Extra,
22}
23
24#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
25#[serde(untagged)]
26#[non_exhaustive]
27pub enum EmbeddingInput {
28 Text(String),
29 TextList(Vec<String>),
30 TokenList(Vec<i64>),
31 TokenLists(Vec<Vec<i64>>),
32}
33
34#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
35#[non_exhaustive]
36pub struct EmbeddingResponse {
37 pub data: Vec<Embedding>,
38 pub model: OpenAiModelId,
39 pub object: ListObjectType,
40 pub usage: EmbeddingUsage,
41 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
42 pub extra: Extra,
43}
44
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
46#[non_exhaustive]
47pub struct Embedding {
48 pub embedding: Vec<f64>,
49 pub index: u32,
50 pub object: EmbeddingObjectType,
51 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
52 pub extra: Extra,
53}
54
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, gproxy_protocol_macros::WireBuilder)]
56#[non_exhaustive]
57pub struct EmbeddingUsage {
58 pub prompt_tokens: u32,
59 pub total_tokens: u32,
60 #[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
61 pub extra: Extra,
62}