Skip to main content

gproxy_protocol/transform/claude/generate_content/
utils.rs

1use crate::claude::create_message::types::JsonObject;
2use crate::claude::create_message::types::{
3    BetaCacheCreation, BetaServerToolUsage, BetaServiceTier, BetaSpeed, BetaUsage,
4};
5pub use crate::transform::claude::utils::{
6    beta_message_content_to_text, beta_system_prompt_to_text, claude_model_to_string,
7};
8
9pub fn beta_usage_from_counts(
10    input_tokens: u64,
11    cached_input_tokens: u64,
12    output_tokens: u64,
13    service_tier: BetaServiceTier,
14) -> BetaUsage {
15    BetaUsage {
16        cache_creation: BetaCacheCreation {
17            ephemeral_1h_input_tokens: 0,
18            ephemeral_5m_input_tokens: 0,
19        },
20        cache_creation_input_tokens: 0,
21        cache_read_input_tokens: cached_input_tokens,
22        inference_geo: String::new(),
23        input_tokens,
24        iterations: Vec::new(),
25        output_tokens,
26        server_tool_use: BetaServerToolUsage {
27            web_fetch_requests: 0,
28            web_search_requests: 0,
29        },
30        service_tier,
31        speed: Some(BetaSpeed::Standard),
32    }
33}
34
35pub fn parse_json_object_or_empty(input: &str) -> JsonObject {
36    serde_json::from_str::<JsonObject>(input).unwrap_or_default()
37}