Skip to main content

gproxy_protocol/transform/openai/count_tokens/gemini/
response.rs

1use crate::gemini::count_tokens::response::GeminiCountTokensResponse;
2use crate::openai::count_tokens::response::{
3    OpenAiCountTokensObject, OpenAiCountTokensResponse, ResponseBody,
4};
5use crate::openai::types::OpenAiResponseHeaders;
6use crate::transform::openai::model_list::gemini::utils::openai_error_response_from_gemini;
7use crate::transform::utils::TransformError;
8
9impl TryFrom<GeminiCountTokensResponse> for OpenAiCountTokensResponse {
10    type Error = TransformError;
11
12    fn try_from(value: GeminiCountTokensResponse) -> Result<Self, TransformError> {
13        Ok(match value {
14            GeminiCountTokensResponse::Success {
15                stats_code,
16                headers,
17                body,
18            } => OpenAiCountTokensResponse::Success {
19                stats_code,
20                headers: OpenAiResponseHeaders {
21                    extra: headers.extra,
22                },
23                body: ResponseBody {
24                    input_tokens: body.total_tokens,
25                    object: OpenAiCountTokensObject::ResponseInputTokens,
26                },
27            },
28            GeminiCountTokensResponse::Error {
29                stats_code,
30                headers,
31                body,
32            } => OpenAiCountTokensResponse::Error {
33                stats_code,
34                headers: OpenAiResponseHeaders {
35                    extra: headers.extra,
36                },
37                body: openai_error_response_from_gemini(stats_code, body),
38            },
39        })
40    }
41}