gproxy_protocol/transform/claude/generate_content/
utils.rs1use 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}