Skip to main content

gproxy_transform/transform/embeddings/single/
openai_to_gemini.rs

1//! OpenAI -> Gemini single 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::EmbedContentRequest, TransformError> {
12    Ok(common::openai_to_gemini_requests(input)
13        .pop()
14        .unwrap_or_default())
15}
16
17pub fn response(
18    input: openai::EmbeddingResponse,
19    _: &TransformContext,
20) -> Result<gemini::EmbedContentResponse, TransformError> {
21    Ok(crate::protocol::wire!(gemini::EmbedContentResponse {
22        embedding: input
23            .data
24            .into_iter()
25            .map(common::openai_to_gemini_embedding)
26            .next(),
27        usage_metadata: Some(common::openai_to_gemini_usage(input.usage)),
28        extra: Default::default(),
29    }))
30}