gproxy_transform/transform/images/edit/
openai_to_gemini.rs1use crate::protocol::{gemini, openai};
4use crate::transform::{TransformContext, TransformError};
5
6use super::super::common;
7
8pub fn request(
9 input: openai::ImageEditRequest,
10 _: &TransformContext,
11) -> Result<gemini::GenerateContentRequest, TransformError> {
12 let model = common::openai_model_string(input.model);
13 let size = common::edit_size_to_shape(input.size);
14
15 Ok(crate::protocol::wire!(gemini::GenerateContentRequest {
16 model,
17 contents: vec![common::prompt_content(input.prompt, input.images)],
18 tools: Vec::new(),
19 tool_config: None,
20 safety_settings: Vec::new(),
21 system_instruction: None,
22 generation_config: Some(common::generation_config(
23 input.n,
24 size,
25 input.output_format,
26 None,
27 )),
28 cached_content: None,
29 service_tier: None,
30 store: None,
31 extra: Default::default(),
32 }))
33}
34
35pub fn response(
36 input: openai::ImagesResponse,
37 _: &TransformContext,
38) -> Result<gemini::GenerateContentResponse, TransformError> {
39 Ok(common::openai_images_response_to_gemini(input))
40}
41
42pub fn stream_event(
43 input: openai::ImageEditStreamEvent,
44 _: &TransformContext,
45) -> Result<gemini::GenerateContentResponse, TransformError> {
46 common::openai_edit_stream_to_gemini(input).ok_or_else(|| TransformError::InvalidInput {
47 reason: "unknown OpenAI image edit stream event cannot be converted".to_owned(),
48 })
49}