Skip to main content

gproxy_transform/transform/embeddings/batch/
openai_to_gemini.rs

1//! OpenAI -> Gemini batch embedding transforms.
2
3use crate::protocol::{gemini, openai};
4use crate::transform::{TransformContext, TransformError};
5
6use super::super::common;
7
8pub fn request(
9    input: openai::EmbeddingRequest,
10    _: &TransformContext,
11) -> Result<gemini::BatchEmbedContentsRequest, TransformError> {
12    Ok(crate::protocol::wire!(gemini::BatchEmbedContentsRequest {
13        requests: common::openai_to_gemini_requests(input),
14        extra: Default::default(),
15    }))
16}
17
18pub fn response(
19    input: openai::EmbeddingResponse,
20    _: &TransformContext,
21) -> Result<gemini::BatchEmbedContentsResponse, TransformError> {
22    Ok(crate::protocol::wire!(gemini::BatchEmbedContentsResponse {
23        embeddings: input
24            .data
25            .into_iter()
26            .map(common::openai_to_gemini_embedding)
27            .collect(),
28        usage_metadata: Some(common::openai_to_gemini_usage(input.usage)),
29        extra: Default::default(),
30    }))
31}