gproxy-transform 3.0.0-alpha.0

GPROXY v3 pairwise protocol transforms
Documentation
use gproxy_protocol::{claude, openai};

use crate::TransformError;

pub(crate) fn transform(body: bytes::Bytes) -> Result<bytes::Bytes, TransformError> {
    let input: claude::CountTokensResponseBody = serde_json::from_slice(&body)?;
    let output = transform_typed(input);
    Ok(bytes::Bytes::from(serde_json::to_vec(&output)?))
}

pub(crate) fn transform_typed(
    input: claude::CountTokensResponseBody,
) -> openai::ResponseInputTokensResponse {
    crate::wire!(openai::ResponseInputTokensResponse {
        input_tokens: input.input_tokens.min(u64::from(u32::MAX)) as u32,
        object: openai::ResponseInputTokensObjectType::ResponseInputTokens,
        rest: Default::default(),
    })
}