diff --git a/bindings/typescript/src/converters.ts b/bindings/typescript/src/converters.ts index 8ffccfea..7abfad24 100644 --- a/bindings/typescript/src/converters.ts +++ b/bindings/typescript/src/converters.ts @@ -14,6 +14,13 @@ import type { ChatCompletionRequestMessage } from "./generated/openai/ChatComple import type { InputItem } from "./generated/openai/InputItem"; import type { InputMessage } from "./generated/anthropic/InputMessage"; +type GoogleContent = Record; + +type GoogleWasmExports = { + google_contents_to_lingua: (value: unknown) => unknown; + lingua_to_google_contents: (value: unknown) => unknown; +}; + // ============================================================================ // Error handling // ============================================================================ @@ -262,6 +269,46 @@ export const linguaToAnthropicMessages = createFromLinguaConverter< InputMessage[] >(() => getWasm().lingua_to_anthropic_messages, "Anthropic"); +// ============================================================================ +// Google Conversions +// ============================================================================ + +/** + * Convert array of Google Content items to Lingua Messages + * + * Returns messages in Lingua's universal format. Accepts contents from: + * - Google GenerateContent requests (`contents` array) + * + * @example + * const lingua = googleContentsToLingua(contents) + * + * @throws {ConversionError} If conversion fails + */ +export const googleContentsToLingua = createToLinguaConverter( + () => + (getWasm() as unknown as GoogleWasmExports).google_contents_to_lingua, + "Google" +); + +/** + * Convert array of Lingua Messages to Google Content items + * + * Returns contents in Google GenerateContent format. + * + * @example + * const contents = linguaToGoogleContents(lingua) + * + * @throws {ConversionError} If conversion fails + */ +export const linguaToGoogleContents = createFromLinguaConverter< + Message[], + GoogleContent[] +>( + () => + (getWasm() as unknown as GoogleWasmExports).lingua_to_google_contents, + "Google" +); + // ============================================================================ // Processing functions // ============================================================================ diff --git a/bindings/typescript/src/generated/AssistantContentPart.ts b/bindings/typescript/src/generated/AssistantContentPart.ts index 42630ec3..783a8fa1 100644 --- a/bindings/typescript/src/generated/AssistantContentPart.ts +++ b/bindings/typescript/src/generated/AssistantContentPart.ts @@ -11,4 +11,4 @@ export type AssistantContentPart = { "type": "text" } & TextContentPart | { "typ * Providers will occasionally return encrypted content for reasoning parts which can * be useful when you send a follow up message. */ -encrypted_content?: string, } | { "type": "tool_call", tool_call_id: string, tool_name: string, arguments: ToolCallArguments, provider_options?: ProviderOptions, provider_executed?: boolean, } | { "type": "tool_result", tool_call_id: string, tool_name: string, output: unknown, provider_options?: ProviderOptions, }; +encrypted_content?: string, } | { "type": "tool_call", tool_call_id: string, tool_name: string, arguments: ToolCallArguments, encrypted_content?: string, provider_options?: ProviderOptions, provider_executed?: boolean, } | { "type": "tool_result", tool_call_id: string, tool_name: string, output: unknown, provider_options?: ProviderOptions, }; diff --git a/crates/lingua/build.rs b/crates/lingua/build.rs index 27a91517..4cde84f1 100644 --- a/crates/lingua/build.rs +++ b/crates/lingua/build.rs @@ -33,6 +33,7 @@ fn main() { generate_test_cases(&workspace); generate_chat_completions_test_cases(&workspace); generate_anthropic_test_cases(&workspace); + generate_google_test_cases(&workspace); } fn generate_test_cases(workspace: &Path) { @@ -274,3 +275,83 @@ fn {test_fn_name}() {{ // Write the generated tests fs::write(&dest_path, generated_tests).unwrap(); } + +fn generate_google_test_cases(workspace: &Path) { + let snapshots_dir = workspace.join("payloads/snapshots"); + + // Tell cargo to re-run if the snapshots directory changes + println!("cargo:rerun-if-changed={}", snapshots_dir.display()); + + let out_dir = env::var("OUT_DIR").unwrap(); + let dest_path = Path::new(&out_dir).join("generated_google_tests.rs"); + + if !snapshots_dir.exists() { + // Create empty generated tests file if no snapshots directory + fs::write(&dest_path, "// No test cases found").unwrap(); + return; + } + + let mut generated_tests = String::new(); + + generated_tests + .push_str("// Auto-generated Google test cases from payloads/snapshots directory\n"); + generated_tests.push_str("// DO NOT EDIT - regenerated on each build\n\n"); + + // Scan for test case directories + if let Ok(entries) = fs::read_dir(&snapshots_dir) { + for entry in entries.flatten() { + let path = entry.path(); + + if !path.is_dir() { + continue; + } + + let test_case_name = path.file_name().unwrap().to_str().unwrap(); + + // Skip hidden directories and cache files + if test_case_name.starts_with('.') { + continue; + } + + // Check if this test case has google directory + let google_dir = path.join("google"); + if !google_dir.exists() { + continue; + } + + // Generate tests for both turns if they exist + if google_dir.join("request.json").exists() { + let test_fn_name = format!("test_roundtrip_{}_first_turn", test_case_name); + let full_case_name = format!("{}_google_first_turn", test_case_name); + + generated_tests.push_str(&format!( + r#" +#[test] +fn {test_fn_name}() {{ + super::run_single_test_case("{full_case_name}") + .unwrap_or_else(|e| panic!("Test failed for {full_case_name}: {{}}", e)); +}} +"# + )); + } + + if google_dir.join("followup-request.json").exists() { + let test_fn_name = format!("test_roundtrip_{}_followup_turn", test_case_name); + let full_case_name = format!("{}_google_followup_turn", test_case_name); + + generated_tests.push_str(&format!( + r#" +#[test] +fn {test_fn_name}() {{ + super::run_single_test_case("{full_case_name}") + .unwrap_or_else(|e| panic!("Test failed for {full_case_name}: {{}}", e)); +}} +"# + )); + } + } + } + + // Write the generated tests + fs::write(&dest_path, generated_tests).unwrap(); +} diff --git a/crates/lingua/src/processing/import.rs b/crates/lingua/src/processing/import.rs index 127a9634..ca49256c 100644 --- a/crates/lingua/src/processing/import.rs +++ b/crates/lingua/src/processing/import.rs @@ -256,6 +256,7 @@ fn parse_assistant_content(value: &Value) -> Option { tool_call_id, tool_name, arguments, + encrypted_content: None, provider_options: None, provider_executed: None, }); diff --git a/crates/lingua/src/providers/anthropic/convert.rs b/crates/lingua/src/providers/anthropic/convert.rs index f6050560..d5ee7cf7 100644 --- a/crates/lingua/src/providers/anthropic/convert.rs +++ b/crates/lingua/src/providers/anthropic/convert.rs @@ -281,6 +281,7 @@ impl TryFromLLM for Message { arguments: serde_json::to_string(&input) .unwrap_or_else(|_| "{}".to_string()) .into(), + encrypted_content: None, provider_options: None, provider_executed: None, }); @@ -302,6 +303,7 @@ impl TryFromLLM for Message { arguments: serde_json::to_string(&input) .unwrap_or_else(|_| "{}".to_string()) .into(), + encrypted_content: None, provider_options: None, provider_executed: Some(true), // Mark as server-executed }); @@ -859,6 +861,7 @@ impl TryFromLLM> for Vec { arguments: serde_json::to_string(&input) .unwrap_or_else(|_| "{}".to_string()) .into(), + encrypted_content: None, provider_options: None, provider_executed: None, }); @@ -879,6 +882,7 @@ impl TryFromLLM> for Vec { arguments: serde_json::to_string(&input) .unwrap_or_else(|_| "{}".to_string()) .into(), + encrypted_content: None, provider_options: None, provider_executed: Some(true), // Mark as server-executed }); diff --git a/crates/lingua/src/providers/bedrock/convert.rs b/crates/lingua/src/providers/bedrock/convert.rs index 55aca127..7df50e06 100644 --- a/crates/lingua/src/providers/bedrock/convert.rs +++ b/crates/lingua/src/providers/bedrock/convert.rs @@ -97,6 +97,7 @@ impl TryFromLLM for Message { arguments: ToolCallArguments::from( serde_json::to_string(&tool_use.input).unwrap_or_default(), ), + encrypted_content: None, provider_options: None, provider_executed: None, }); @@ -305,6 +306,7 @@ impl TryFromLLM for Message { arguments: ToolCallArguments::from( serde_json::to_string(&tool_use.input).unwrap_or_default(), ), + encrypted_content: None, provider_options: None, provider_executed: None, }); @@ -507,6 +509,7 @@ mod tests { tool_call_id: "tool_123".to_string(), tool_name: "get_weather".to_string(), arguments: ToolCallArguments::from(r#"{"location":"SF"}"#.to_string()), + encrypted_content: None, provider_options: None, provider_executed: None, }]), @@ -624,6 +627,7 @@ mod tests { tool_call_id: "tool_123".to_string(), tool_name: "get_weather".to_string(), arguments: ToolCallArguments::from(r#"{"location":"SF"}"#.to_string()), + encrypted_content: None, provider_options: None, provider_executed: None, }]), diff --git a/crates/lingua/src/providers/google/convert.rs b/crates/lingua/src/providers/google/convert.rs index 71135d98..39fc2dba 100644 --- a/crates/lingua/src/providers/google/convert.rs +++ b/crates/lingua/src/providers/google/convert.rs @@ -60,106 +60,120 @@ impl TryFromLLM for Message { type Error = ConvertError; fn try_from(content: GoogleContent) -> Result { - let role = if content.role.is_empty() { - "user" - } else { - content.role.as_str() - }; - - // Collect text parts - let mut text = String::new(); - let mut function_calls = Vec::new(); - let mut function_responses = Vec::new(); - - for part in &content.parts { - if let Some(data) = &part.data { - match data { - part::Data::Text(t) => text.push_str(t), - part::Data::FunctionCall(fc) => function_calls.push(fc.clone()), - part::Data::FunctionResponse(fr) => function_responses.push(fr.clone()), - _ => {} + match content.role.as_str() { + "model" => { + // Collect into AssistantContentPart + let mut parts: Vec = Vec::new(); + + for part in &content.parts { + if let Some(data) = &part.data { + match data { + part::Data::Text(t) => { + if !part.thought_signature.is_empty() { + parts.push(AssistantContentPart::Reasoning { + text: t.clone(), + encrypted_content: Some( + STANDARD.encode(&part.thought_signature), + ), + }); + } else { + parts.push(AssistantContentPart::Text(TextContentPart { + text: t.clone(), + provider_options: None, + })); + } + } + part::Data::FunctionCall(fc) => { + let args_value = + fc.args.as_ref().map(struct_to_json).unwrap_or(Value::Null); + let encrypted_content = if !part.thought_signature.is_empty() { + Some(STANDARD.encode(&part.thought_signature)) + } else { + None + }; + parts.push(AssistantContentPart::ToolCall { + tool_call_id: fc.id.clone(), + tool_name: fc.name.clone(), + arguments: ToolCallArguments::from( + serde_json::to_string(&args_value).unwrap_or_default(), + ), + encrypted_content, + provider_options: None, + provider_executed: None, + }); + } + _ => {} + } + } } - } - } - - if !function_calls.is_empty() { - // Model message with function calls - let mut parts = Vec::new(); - if !text.is_empty() { - parts.push(AssistantContentPart::Text(TextContentPart { - text, - provider_options: None, - })); + Ok(Message::Assistant { + content: AssistantContent::Array(parts), + id: None, + }) } - for fc in function_calls { - let args_value = fc.args.as_ref().map(struct_to_json).unwrap_or(Value::Null); - parts.push(AssistantContentPart::ToolCall { - tool_call_id: if fc.id.is_empty() { - fc.name.clone() - } else { - fc.id.clone() - }, - tool_name: fc.name.clone(), - arguments: ToolCallArguments::from( - serde_json::to_string(&args_value).unwrap_or_default(), - ), - provider_options: None, - provider_executed: None, - }); - } + // "user" or unknown roles + _ => { + // Collect into UserContentPart or ToolContentPart + let mut user_parts: Vec = Vec::new(); + let mut tool_parts: Vec = Vec::new(); + + for part in &content.parts { + if let Some(data) = &part.data { + match data { + part::Data::Text(t) => { + user_parts.push(UserContentPart::Text(TextContentPart { + text: t.clone(), + provider_options: None, + })); + } + part::Data::InlineData(blob) => { + user_parts.push(UserContentPart::Image { + image: Value::String(STANDARD.encode(&blob.data)), + media_type: Some(blob.mime_type.clone()), + provider_options: None, + }); + } + part::Data::FunctionResponse(fr) => { + let output = fr + .response + .as_ref() + .map(struct_to_json) + .unwrap_or(Value::Null); + tool_parts.push(ToolContentPart::ToolResult( + ToolResultContentPart { + tool_call_id: fr.id.clone(), + tool_name: fr.name.clone(), + output, + provider_options: None, + }, + )); + } + _ => {} + } + } + } - Ok(Message::Assistant { - content: AssistantContent::Array(parts), - id: None, - }) - } else if !function_responses.is_empty() { - // User message with function responses (tool results) - let tool_parts: Vec = function_responses - .iter() - .map(|fr| { - let output = fr - .response - .as_ref() - .map(struct_to_json) - .unwrap_or(Value::Null); - ToolContentPart::ToolResult(ToolResultContentPart { - tool_call_id: if fr.id.is_empty() { - fr.name.clone() - } else { - fr.id.clone() - }, - tool_name: fr.name.clone(), - output, - provider_options: None, + if !tool_parts.is_empty() { + Ok(Message::Tool { + content: tool_parts, }) - }) - .collect(); - - Ok(Message::Tool { - content: tool_parts, - }) - } else { - // Regular text message - match role { - "user" => Ok(Message::User { - content: UserContent::String(text), - }), - "model" => Ok(Message::Assistant { - content: AssistantContent::Array(vec![AssistantContentPart::Text( - TextContentPart { - text, - provider_options: None, - }, - )]), - id: None, - }), - _ => { - // Treat unknown roles as user + } else if user_parts.len() == 1 + && matches!(&user_parts[0], UserContentPart::Text(_)) + { + // Single text part -> String for simplicity + let text = match user_parts.remove(0) { + UserContentPart::Text(t) => t.text, + _ => unreachable!(), + }; Ok(Message::User { content: UserContent::String(text), }) + } else { + Ok(Message::User { + content: UserContent::Array(user_parts), + }) } } } @@ -253,8 +267,10 @@ impl TryFromLLM for GoogleContent { Some(part_from_data(part::Data::Text(t.text))) } AssistantContentPart::ToolCall { + tool_call_id, tool_name, arguments, + encrypted_content, .. } => { let value = match arguments { @@ -266,13 +282,39 @@ impl TryFromLLM for GoogleContent { _ => None, }); - Some(part_from_data(part::Data::FunctionCall( - GoogleFunctionCall { - id: String::new(), + let thought_signature = encrypted_content + .as_ref() + .and_then(|s| STANDARD.decode(s).ok()) + .unwrap_or_default(); + + Some(GooglePart { + thought: false, + thought_signature, + part_metadata: None, + data: Some(part::Data::FunctionCall(GoogleFunctionCall { + id: tool_call_id, name: tool_name, args, - }, - ))) + })), + metadata: None, + }) + } + AssistantContentPart::Reasoning { + text, + encrypted_content, + } => { + let thought_signature = encrypted_content + .as_ref() + .and_then(|s| STANDARD.decode(s).ok()) + .unwrap_or_default(); + + Some(GooglePart { + thought: false, // Don't set thought flag - signature alone handles context + thought_signature, + part_metadata: None, + data: Some(part::Data::Text(text)), + metadata: None, + }) } _ => None, }) @@ -411,7 +453,7 @@ mod tests { .. } => { assert_eq!(tool_name, "get_weather"); - assert_eq!(tool_call_id, "get_weather"); + assert_eq!(tool_call_id, ""); // id was empty in original } _ => panic!("Expected tool call part"), } @@ -460,6 +502,7 @@ mod tests { tool_call_id: "call_123".to_string(), tool_name: "get_weather".to_string(), arguments: ToolCallArguments::from(r#"{"location":"SF"}"#.to_string()), + encrypted_content: None, provider_options: None, provider_executed: None, }]), diff --git a/crates/lingua/src/providers/google/mod.rs b/crates/lingua/src/providers/google/mod.rs index a2d8add8..48359155 100644 --- a/crates/lingua/src/providers/google/mod.rs +++ b/crates/lingua/src/providers/google/mod.rs @@ -7,6 +7,9 @@ pub mod detect; pub mod generated; pub mod params; +#[cfg(test)] +pub mod test_google; + // Re-export adapter pub use adapter::GoogleAdapter; diff --git a/crates/lingua/src/providers/google/test_google.rs b/crates/lingua/src/providers/google/test_google.rs new file mode 100644 index 00000000..46a15d07 --- /dev/null +++ b/crates/lingua/src/providers/google/test_google.rs @@ -0,0 +1,73 @@ +use crate::providers::google::generated::{ + Content as GoogleContent, GenerateContentRequest, GenerateContentResponse, +}; +use crate::serde_json::Value; +use crate::universal::{convert::TryFromLLM, Message}; +use crate::util::test_runner::run_roundtrip_test; +use crate::util::testutil::{discover_test_cases_typed, Provider, TestCase}; + +pub type GoogleTestCase = TestCase; + +pub fn discover_google_test_cases( + test_name_filter: Option<&str>, +) -> Result, crate::util::testutil::TestDiscoveryError> { + discover_test_cases_typed::( + Provider::Google, + test_name_filter, + ) +} + +#[cfg(test)] +mod tests { + use super::*; + + pub fn run_single_test_case(full_case_name: &str) -> Result<(), String> { + let cases = discover_google_test_cases(None) + .map_err(|e| format!("Failed to discover test cases: {}", e))?; + + let case = cases + .iter() + .find(|c| c.name == full_case_name) + .ok_or_else(|| format!("Test case '{}' not found", full_case_name))?; + + run_roundtrip_test( + case, + // Extract messages from request + |request: &GenerateContentRequest| Ok(&request.contents), + // Convert to universal + |messages: &Vec| { + as TryFromLLM>>::try_from(messages.clone()) + .map_err(|e| format!("Failed to convert to universal format: {}", e)) + }, + // Convert from universal + |messages: Vec| { + as TryFromLLM>>::try_from(messages) + .map_err(|e| format!("Failed roundtrip conversion: {}", e)) + }, + // Extract response content (candidate contents) + |response: &GenerateContentResponse| { + Ok(response + .candidates + .iter() + .filter_map(|candidate| candidate.content.clone()) + .collect()) + }, + // Convert response to universal + |contents: &Vec| { + as TryFromLLM>>::try_from(contents.clone()) + .map_err(|e| format!("Failed to convert response to universal format: {}", e)) + }, + // Convert universal to response content + |messages: Vec| { + as TryFromLLM>>::try_from(messages) + .map_err(|e| format!("Failed to roundtrip response conversion: {}", e)) + }, + ) + } + + // Include auto-generated test cases from build script + #[allow(non_snake_case)] + mod generated { + include!(concat!(env!("OUT_DIR"), "/generated_google_tests.rs")); + } +} diff --git a/crates/lingua/src/providers/openai/convert.rs b/crates/lingua/src/providers/openai/convert.rs index 172be733..32d7a05a 100644 --- a/crates/lingua/src/providers/openai/convert.rs +++ b/crates/lingua/src/providers/openai/convert.rs @@ -88,6 +88,7 @@ impl TryFromLLM> for Vec { "queries": input.queries, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -106,6 +107,7 @@ impl TryFromLLM> for Vec { "outputs": input.outputs, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -123,6 +125,7 @@ impl TryFromLLM> for Vec { "results": input.results, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -139,6 +142,7 @@ impl TryFromLLM> for Vec { "action": input.action, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -155,6 +159,7 @@ impl TryFromLLM> for Vec { "result": input.result, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -171,6 +176,7 @@ impl TryFromLLM> for Vec { "action": input.action, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -187,6 +193,7 @@ impl TryFromLLM> for Vec { "server_label": input.server_label, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -204,6 +211,7 @@ impl TryFromLLM> for Vec { "tools": input.tools, "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -219,6 +227,7 @@ impl TryFromLLM> for Vec { arguments: build_tool_arguments(&serde_json::json!({ "status": input.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }; @@ -283,6 +292,7 @@ impl TryFromLLM> for Vec { tool_call_id, tool_name, arguments: arguments_str.into(), + encrypted_content: None, provider_options: None, provider_executed: None, }; @@ -829,6 +839,7 @@ impl TryFromLLM for openai::InputItem { tool_call_id, tool_name, arguments, + encrypted_content: _, provider_options: _, provider_executed, } => { @@ -1346,6 +1357,7 @@ pub fn universal_to_responses_input( tool_call_id, tool_name, arguments, + encrypted_content: _, provider_options: _, provider_executed, } => { @@ -1754,6 +1766,7 @@ impl TryFromLLM> for Vec { tool_call_id, tool_name, arguments: arguments_str.into(), + encrypted_content: None, provider_options: None, provider_executed: None, }] @@ -1768,6 +1781,7 @@ impl TryFromLLM> for Vec { "outputs": item.outputs, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1781,6 +1795,7 @@ impl TryFromLLM> for Vec { "queries": item.queries, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1794,6 +1809,7 @@ impl TryFromLLM> for Vec { "results": item.results, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1806,6 +1822,7 @@ impl TryFromLLM> for Vec { "action": item.action, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1818,6 +1835,7 @@ impl TryFromLLM> for Vec { "result": item.result, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1830,6 +1848,7 @@ impl TryFromLLM> for Vec { "action": item.action, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1842,6 +1861,7 @@ impl TryFromLLM> for Vec { "server_label": item.server_label, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1855,6 +1875,7 @@ impl TryFromLLM> for Vec { "tools": item.tools, "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -1866,6 +1887,7 @@ impl TryFromLLM> for Vec { arguments: build_tool_arguments(&serde_json::json!({ "status": item.status, })), + encrypted_content: None, provider_options: None, provider_executed: Some(true), }] @@ -2436,6 +2458,7 @@ impl TryFromLLM for Message { tool_call_id: tool_call.id, tool_name: function.name, arguments: function.arguments.into(), + encrypted_content: None, provider_options: None, provider_executed: None, }); @@ -2883,6 +2906,7 @@ impl TryFromLLM for Message { tool_call_id: tool_call.id.clone(), tool_name: function.name.clone(), arguments: function.arguments.clone().into(), + encrypted_content: None, provider_options: None, provider_executed: None, }); diff --git a/crates/lingua/src/python.rs b/crates/lingua/src/python.rs index 9dc05c20..54c49c05 100644 --- a/crates/lingua/src/python.rs +++ b/crates/lingua/src/python.rs @@ -3,6 +3,7 @@ use serde::{Deserialize, Serialize}; // Import our types and conversion traits use crate::providers::anthropic::generated as anthropic; +use crate::providers::google::generated as google; use crate::providers::openai::convert::ChatCompletionRequestMessageExt; use crate::providers::openai::generated as openai; use crate::serde_json; @@ -110,6 +111,18 @@ fn lingua_to_anthropic_messages(py: Python, value: &PyAny) -> PyResult convert_from_lingua::, Vec>(py, value) } +/// Convert array of Google Content items to Lingua Messages +#[pyfunction] +fn google_contents_to_lingua(py: Python, value: &PyAny) -> PyResult { + convert_to_lingua::, Vec>(py, value) +} + +/// Convert array of Lingua Messages to Google Content items +#[pyfunction] +fn lingua_to_google_contents(py: Python, value: &PyAny) -> PyResult { + convert_from_lingua::, Vec>(py, value) +} + // ============================================================================ // Processing functions // ============================================================================ @@ -388,6 +401,8 @@ fn _lingua(_py: Python, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(lingua_to_responses_messages, m)?)?; m.add_function(wrap_pyfunction!(anthropic_messages_to_lingua, m)?)?; m.add_function(wrap_pyfunction!(lingua_to_anthropic_messages, m)?)?; + m.add_function(wrap_pyfunction!(google_contents_to_lingua, m)?)?; + m.add_function(wrap_pyfunction!(lingua_to_google_contents, m)?)?; // Processing functions m.add_function(wrap_pyfunction!(deduplicate_messages, m)?)?; diff --git a/crates/lingua/src/universal/message.rs b/crates/lingua/src/universal/message.rs index a3cd88f8..dbbacd5f 100644 --- a/crates/lingua/src/universal/message.rs +++ b/crates/lingua/src/universal/message.rs @@ -95,6 +95,8 @@ pub enum AssistantContentPart { tool_name: String, arguments: ToolCallArguments, #[ts(optional)] + encrypted_content: Option, + #[ts(optional)] provider_options: Option, #[ts(optional)] provider_executed: Option, diff --git a/crates/lingua/src/util/testutil.rs b/crates/lingua/src/util/testutil.rs index 204af8ba..0b443cf7 100644 --- a/crates/lingua/src/util/testutil.rs +++ b/crates/lingua/src/util/testutil.rs @@ -18,6 +18,7 @@ pub enum Provider { Responses, ChatCompletions, Anthropic, + Google, } impl Provider { @@ -26,6 +27,7 @@ impl Provider { Provider::Responses => "responses", Provider::ChatCompletions => "chat-completions", Provider::Anthropic => "anthropic", + Provider::Google => "google", } } } diff --git a/crates/lingua/src/wasm.rs b/crates/lingua/src/wasm.rs index c4c17a45..fe29f3b6 100644 --- a/crates/lingua/src/wasm.rs +++ b/crates/lingua/src/wasm.rs @@ -4,6 +4,7 @@ use wasm_bindgen::prelude::*; // Import our types and conversion traits use crate::providers::anthropic::generated as anthropic; +use crate::providers::google::generated as google; use crate::providers::openai::generated as openai; use crate::providers::openai::ChatCompletionRequestMessageExt; use crate::universal::{convert::TryFromLLM, Message}; @@ -87,6 +88,18 @@ pub fn lingua_to_anthropic_messages(value: JsValue) -> Result convert_from_lingua::, Vec>(value) } +/// Convert array of Google Content items to Lingua Messages +#[wasm_bindgen] +pub fn google_contents_to_lingua(value: JsValue) -> Result { + convert_to_lingua::, Vec>(value) +} + +/// Convert array of Lingua Messages to Google Content items +#[wasm_bindgen] +pub fn lingua_to_google_contents(value: JsValue) -> Result { + convert_from_lingua::, Vec>(value) +} + // ============================================================================ // Processing exports // ============================================================================ diff --git a/payloads/cases/types.ts b/payloads/cases/types.ts index 4f10cfab..bdbf59fc 100644 --- a/payloads/cases/types.ts +++ b/payloads/cases/types.ts @@ -5,9 +5,11 @@ import type { ConverseCommandInput } from "@aws-sdk/client-bedrock-runtime"; // Google Gemini API request type (matching the js-genai library) export interface GoogleGenerateContentRequest { + model?: string; contents: Content[]; config?: GenerateContentConfig; tools?: Tool[]; + toolConfig?: Record; systemInstruction?: Content; } diff --git a/payloads/scripts/providers/google.ts b/payloads/scripts/providers/google.ts index e176ff33..8b31c0ce 100644 --- a/payloads/scripts/providers/google.ts +++ b/payloads/scripts/providers/google.ts @@ -1,5 +1,3 @@ -import { GoogleGenAI } from "@google/genai"; -import type { GenerateContentResponse, Content } from "@google/genai"; import { CaptureResult, ExecuteOptions, ProviderExecutor } from "../types"; import { allTestCases, @@ -10,6 +8,54 @@ import { GOOGLE_MODEL, } from "../../cases"; +const GOOGLE_API_BASE = "https://generativelanguage.googleapis.com/v1beta"; + +// Response type matching Google's GenerateContent response +// Using a minimal type since we just need to capture the raw response +type GenerateContentResponse = { + candidates?: Array<{ + content?: { + role?: string; + parts?: Array<{ + text?: string; + functionCall?: { name: string; args?: Record }; + [key: string]: unknown; + }>; + }; + [key: string]: unknown; + }>; + [key: string]: unknown; +}; + +// Content type for building follow-up messages +type Content = { + role: string; + parts: Array>; +}; + +// Helper to parse JSON response with proper typing +async function parseJsonResponse( + response: Response +): Promise { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- response.json() returns unknown + return (await response.json()) as GenerateContentResponse; +} + +// Helper to convert content to our local Content type +function toContent(content: { role?: string; parts?: unknown[] }): Content { + const parts: Array> = []; + for (const part of content.parts ?? []) { + if (part && typeof part === "object") { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- validated above + parts.push(part as Record); + } + } + return { + role: content.role ?? "user", + parts, + }; +} + // Google cases - extracted from unified cases // Skips cases with expectations (those are validated, not captured) export const googleCases: Record = {}; @@ -26,6 +72,81 @@ getCaseNames(allTestCases).forEach((caseName) => { } }); +/** + * Make a request to the Google Gemini API + */ +async function googleRequest( + model: string, + payload: GoogleGenerateContentRequest, + apiKey: string, + stream: boolean +): Promise { + const endpoint = stream + ? `${GOOGLE_API_BASE}/models/${model}:streamGenerateContent?alt=sse` + : `${GOOGLE_API_BASE}/models/${model}:generateContent`; + + // Build the request body matching the raw Google API structure + // The SDK uses "config" but raw API expects "generationConfig" + const body: Record = { + contents: payload.contents, + }; + + // Map SDK "config" to raw API "generationConfig" + if (payload.config) { + body.generationConfig = payload.config; + } + + if (payload.tools) { + body.tools = payload.tools; + } + + if (payload.toolConfig) { + body.toolConfig = payload.toolConfig; + } + + if (payload.systemInstruction) { + body.systemInstruction = payload.systemInstruction; + } + + const response = await fetch(endpoint, { + method: "POST", + headers: { + "Content-Type": "application/json", + "x-goog-api-key": apiKey, + }, + body: JSON.stringify(body), + }); + + return response; +} + +/** + * Parse SSE stream into array of response chunks + */ +async function parseSSEStream( + response: Response +): Promise { + const chunks: GenerateContentResponse[] = []; + const text = await response.text(); + + // SSE format: "data: {...}\n\n" + const lines = text.split("\n"); + for (const line of lines) { + if (line.startsWith("data: ")) { + const jsonStr = line.slice(6); // Remove "data: " prefix + if (jsonStr.trim()) { + try { + chunks.push(JSON.parse(jsonStr)); + } catch { + // Skip malformed JSON + } + } + } + } + + return chunks; +} + type ParallelGoogleResult = | { type: "response"; @@ -47,11 +168,14 @@ export async function executeGoogle( GenerateContentResponse > > { - const { stream, apiKey } = options ?? {}; - // Note: Google SDK doesn't support baseURL override, so we ignore it here - const client = new GoogleGenAI({ - apiKey: apiKey ?? process.env.GOOGLE_API_KEY, - }); + const { stream, apiKey: optApiKey } = options ?? {}; + const apiKey = optApiKey ?? process.env.GOOGLE_API_KEY; + + if (!apiKey) { + throw new Error("GOOGLE_API_KEY is required"); + } + + const model = payload.model ?? GOOGLE_MODEL; const result: CaptureResult< GoogleGenerateContentRequest, GenerateContentResponse, @@ -62,23 +186,18 @@ export async function executeGoogle( // Create promises for parallel execution const promises: Promise[] = []; - // Build config with tools and other settings - const config = { - ...payload.config, - tools: payload.tools, - systemInstruction: payload.systemInstruction, - }; - // Add non-streaming call if requested if (stream !== true) { promises.push( - client.models - .generateContent({ - model: GOOGLE_MODEL, - contents: payload.contents, - config, - }) - .then((response) => ({ type: "response", data: response })) + (async () => { + const response = await googleRequest(model, payload, apiKey, false); + if (!response.ok) { + const text = await response.text(); + throw new Error(`ApiError: ${text}`); + } + const data = await parseJsonResponse(response); + return { type: "response" as const, data }; + })() ); } @@ -86,17 +205,13 @@ export async function executeGoogle( if (stream !== false) { promises.push( (async () => { - const streamChunks: Array = []; - const streamResponse = await client.models.generateContentStream({ - model: GOOGLE_MODEL, - contents: payload.contents, - config, - }); - - for await (const chunk of streamResponse) { - streamChunks.push(chunk); + const response = await googleRequest(model, payload, apiKey, true); + if (!response.ok) { + const text = await response.text(); + throw new Error(`ApiError: ${text}`); } - return { type: "streamingResponse", data: streamChunks }; + const chunks = await parseSSEStream(response); + return { type: "streamingResponse" as const, data: chunks }; })() ); } @@ -120,8 +235,8 @@ export async function executeGoogle( if (assistantContent) { // Build follow-up messages const followUpContents: Content[] = [ - ...payload.contents, - assistantContent, + ...payload.contents.map(toContent), + toContent(assistantContent), ]; // Check if the assistant message contains function calls @@ -174,45 +289,42 @@ export async function executeGoogle( const followupPromises: Promise[] = []; - // Build followup config with tools and other settings - const followupConfig = { - ...followUpPayload.config, - tools: followUpPayload.tools, - systemInstruction: followUpPayload.systemInstruction, - }; - if (stream !== true) { followupPromises.push( - client.models - .generateContent({ - model: GOOGLE_MODEL, - contents: followUpPayload.contents, - config: followupConfig, - }) - .then((response) => ({ - type: "followupResponse", - data: response, - })) + (async () => { + const response = await googleRequest( + model, + followUpPayload, + apiKey, + false + ); + if (!response.ok) { + const text = await response.text(); + throw new Error(`ApiError: ${text}`); + } + const data = await parseJsonResponse(response); + return { type: "followupResponse" as const, data }; + })() ); } if (stream !== false) { followupPromises.push( (async () => { - const followupStreamChunks: Array = []; - const followupStreamResponse = - await client.models.generateContentStream({ - model: GOOGLE_MODEL, - contents: followUpPayload.contents, - config: followupConfig, - }); - - for await (const chunk of followupStreamResponse) { - followupStreamChunks.push(chunk); + const response = await googleRequest( + model, + followUpPayload, + apiKey, + true + ); + if (!response.ok) { + const text = await response.text(); + throw new Error(`ApiError: ${text}`); } + const chunks = await parseSSEStream(response); return { - type: "followupStreamingResponse", - data: followupStreamChunks, + type: "followupStreamingResponse" as const, + data: chunks, }; })() ); diff --git a/payloads/snapshots/complexReasoningRequest/google/followup-request.json b/payloads/snapshots/complexReasoningRequest/google/followup-request.json index f69b64b5..f3c3f616 100644 --- a/payloads/snapshots/complexReasoningRequest/google/followup-request.json +++ b/payloads/snapshots/complexReasoningRequest/google/followup-request.json @@ -11,7 +11,7 @@ { "parts": [ { - "text": "Let's break this down step by step:\n\n1. **Total Number of Times:**\n * Hours go from 00 to 23 (24 distinct hours).\n * Minutes go from 00 to 59 (60 distinct minutes).\n * Total number of times displayed = 24 hours * 60 minutes = 1440 times.\n\n2. **Total Number of Digits Displayed:**\n * Each time (e.g., 00:00) consists of 4 digits.\n * Total digits displayed across all times = 1440 times * 4 digits/time = 5760 digits.\n * This will be the denominator for our percentages.\n\n3. **Counting Occurrences for Each Digit (0-9):**\n\n Let's consider each digit position:\n * `H1 H2 : M1 M2`\n\n **A. Occurrences in the Minutes (M1, M2):**\n There are 24 hours in a day. For each hour, the minutes go from 00 to 59.\n\n * **M2 (Minutes Units Place, 0-59):**\n In the range 00-59, each digit (0-9) appears exactly 6 times (e.g., 00, 10, 20, 30, 40, 50 for digit 0; 01, 11, 21, 31, 41, 51 for digit 1, etc.).\n So, for each hour, each digit 0-9 appears 6 times in the M2 position.\n Over 24 hours: 6 occurrences/hour * 24 hours = **144** times for each digit (0-9) in M2.\n\n * **M1 (Minutes Tens Place, 0-59):**\n In the range 00-59:\n * Digit 0 appears 10 times (00-09)\n * Digit 1 appears 10 times (10-19)\n * Digit 2 appears 10 times (20-29)\n * Digit 3 appears 10 times (30-39)\n * Digit 4 appears 10 times (40-49)\n * Digit 5 appears 10 times (50-59)\n * Digits 6, 7, 8, 9 appear 0 times.\n Over 24 hours:\n * Digits 0-5: 10 occurrences/hour * 24 hours = **240** times each.\n * Digits 6-9: **0** times each.\n\n **B. Occurrences in the Hours (H1, H2):**\n There are 60 minutes in an hour. For each minute, the hours go from 00 to 23.\n\n * **H2 (Hours Units Place, 0-23):**\n In the range 00-23:\n * Digits 0, 1, 2, 3 each appear 3 times (e.g., 00, 10, 20 for digit 0; 01, 11, 21 for digit 1; etc. and 03, 13, 23 for digit 3).\n * Digits 4, 5, 6, 7, 8, 9 each appear 2 times (e.g., 04, 14 for digit 4; 09, 19 for digit 9).\n Over 60 minutes:\n * Digits 0, 1, 2, 3: 3 occurrences/minute * 60 minutes = **180** times each.\n * Digits 4, 5, 6, 7, 8, 9: 2 occurrences/minute * 60 minutes = **120** times each.\n\n * **H1 (Hours Tens Place, 0-23):**\n In the range 00-23:\n * Digit 0 appears 10 times (00-09).\n * Digit 1 appears 10 times (10-19).\n * Digit 2 appears 4 times (20-23).\n * Digits 3, 4, 5, 6, 7, 8, 9 appear 0 times.\n Over 60 minutes:\n * Digits 0, 1: 10 occurrences/minute * 60 minutes = **600** times each.\n * Digit 2: 4 occurrences/minute * 60 minutes = **240** times.\n * Digits 3-9: **0** times each.\n\n4. **Total Occurrences for Each Digit:**\n\n * **Digit 0:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 600 = **1164**\n * **Digit 1:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 600 = **1164**\n * **Digit 2:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 240 = **804**\n * **Digit 3:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 0 = **564**\n * **Digit 4:** (M2) 144 + (M1) 240 + (H2) 120 + (H1) 0 = **504**\n * **Digit 5:** (M2) 144 + (M1) 240 + (H2) 120 + (H1) 0 = **504**\n * **Digit 6:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 7:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 8:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 9:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n\n *Self-check: Sum of all occurrences = 1164 + 1164 + 804 + 564 + 504 + 504 + 264 + 264 + 264 + 264 = 5760. This matches our total digits!*\n\n5. **Most Common and Rarest Digits:**\n\n * **Most Common Digit(s):** Digits **0** and **1** (1164 occurrences each).\n * **Rarest Digit(s):** Digits **6**, **7**, **8**, and **9** (264 occurrences each).\n\n6. **Calculate Percentages:**\n\n * **Percentage for Most Common (Digits 0 and 1):**\n (1164 / 5760) * 100% $\\approx$ **20.21%**\n\n * **Percentage for Rarest (Digits 6, 7, 8, and 9):**\n (264 / 5760) * 100% $\\approx$ **4.58%**\n\n---\n\n**Summary:**\n\n* **Most Common Digit(s):** **0** and **1**\n * Each appears 1164 times.\n * Percentage: **20.21%** each.\n\n* **Rarest Digit(s):** **6**, **7**, **8**, and **9**\n * Each appears 264 times.\n * Percentage: **4.58%** each." + "text": "Let's break this down step by step!\n\nFirst, we need to understand the total number of digits displayed and the range of times.\n\n1. **Total Number of Times:**\n * Hours: 00 to 23 (24 unique hours)\n * Minutes: 00 to 59 (60 unique minutes)\n * Total unique times = 24 hours * 60 minutes = 1440 times.\n\n2. **Total Number of Digits Displayed:**\n * Each time (e.g., 00:00, 12:34) consists of 4 digits.\n * Total digits displayed = 1440 times * 4 digits/time = 5760 digits.\n * This will be our denominator for percentage calculations.\n\nNow, let's count the occurrences of each digit (0-9) by considering the hours and minutes separately.\n\n---\n\n### Counting Digits in Hours (HH)\n\nWe need to count how many times each digit appears in the \"HH\" part across all 24 hours (00 to 23).\nLet's consider the tens digit (H1) and the units digit (H2) for each hour.\n\n* **H1 (Tens Digit of Hour):**\n * '0' appears 10 times (in 00, 01, ..., 09)\n * '1' appears 10 times (in 10, 11, ..., 19)\n * '2' appears 4 times (in 20, 21, 22, 23)\n * (Other digits: 0 times)\n\n* **H2 (Units Digit of Hour):**\n * From 00-09: Each digit (0-9) appears once.\n * From 10-19: Each digit (0-9) appears once.\n * From 20-23: Digits (0, 1, 2, 3) appear once.\n * So, total H2 counts:\n * '0': 1 (from 00-09) + 1 (from 10-19) + 1 (from 20-23) = 3 times\n * '1': 1 + 1 + 1 = 3 times\n * '2': 1 + 1 + 1 = 3 times\n * '3': 1 + 1 + 1 = 3 times\n * '4': 1 + 1 = 2 times\n * '5': 1 + 1 = 2 times\n * '6': 1 + 1 = 2 times\n * '7': 1 + 1 = 2 times\n * '8': 1 + 1 = 2 times\n * '9': 1 + 1 = 2 times\n\n* **Total Occurrences for each digit in the HH part across 24 hours:**\n * Digit 0: 10 (H1) + 3 (H2) = 13 times\n * Digit 1: 10 (H1) + 3 (H2) = 13 times\n * Digit 2: 4 (H1) + 3 (H2) = 7 times\n * Digit 3: 0 (H1) + 3 (H2) = 3 times\n * Digit 4: 0 (H1) + 2 (H2) = 2 times\n * Digit 5: 0 (H1) + 2 (H2) = 2 times\n * Digit 6: 0 (H1) + 2 (H2) = 2 times\n * Digit 7: 0 (H1) + 2 (H2) = 2 times\n * Digit 8: 0 (H1) + 2 (H2) = 2 times\n * Digit 9: 0 (H1) + 2 (H2) = 2 times\n\n---\n\n### Counting Digits in Minutes (MM)\n\nNow, we need to count how many times each digit appears in the \"MM\" part across all 60 minutes (00 to 59). This is simpler because it covers a full range of 0-59.\nLet's consider the tens digit (M1) and the units digit (M2) for each minute.\n\n* **M1 (Tens Digit of Minute):**\n * '0' appears 10 times (in 00, 01, ..., 09)\n * '1' appears 10 times (in 10, 11, ..., 19)\n * '2' appears 10 times (in 20, 21, ..., 29)\n * '3' appears 10 times (in 30, 31, ..., 39)\n * '4' appears 10 times (in 40, 41, ..., 49)\n * '5' appears 10 times (in 50, 51, ..., 59)\n * (Other digits: 0 times)\n\n* **M2 (Units Digit of Minute):**\n * In each decade (00-09, 10-19, ..., 50-59), each digit (0-9) appears once.\n * Since there are 6 such decades (00s, 10s, 20s, 30s, 40s, 50s), each units digit appears 6 times.\n * So, '0' appears 6 times, '1' appears 6 times, ..., '9' appears 6 times.\n\n* **Total Occurrences for each digit in the MM part across 60 minutes:**\n * Digit 0: 10 (M1) + 6 (M2) = 16 times\n * Digit 1: 10 (M1) + 6 (M2) = 16 times\n * Digit 2: 10 (M1) + 6 (M2) = 16 times\n * Digit 3: 10 (M1) + 6 (M2) = 16 times\n * Digit 4: 10 (M1) + 6 (M2) = 16 times\n * Digit 5: 10 (M1) + 6 (M2) = 16 times\n * Digit 6: 0 (M1) + 6 (M2) = 6 times\n * Digit 7: 0 (M1) + 6 (M2) = 6 times\n * Digit 8: 0 (M1) + 6 (M2) = 6 times\n * Digit 9: 0 (M1) + 6 (M2) = 6 times\n\n---\n\n### Total Counts for Each Digit\n\nNow, we combine the two sets of counts. For each of the 24 hours, the minute digits (MM) go through all 60 variations. For each of the 60 minutes, the hour digits (HH) go through all 24 variations.\n\nTotal Count for Digit D = (Count of D in HH) * 60 (minutes) + (Count of D in MM) * 24 (hours)\n\n* **Digit 0:** (13 * 60) + (16 * 24) = 780 + 384 = **1164**\n* **Digit 1:** (13 * 60) + (16 * 24) = 780 + 384 = **1164**\n* **Digit 2:** (7 * 60) + (16 * 24) = 420 + 384 = **804**\n* **Digit 3:** (3 * 60) + (16 * 24) = 180 + 384 = **564**\n* **Digit 4:** (2 * 60) + (16 * 24) = 120 + 384 = **504**\n* **Digit 5:** (2 * 60) + (16 * 24) = 120 + 384 = **504**\n* **Digit 6:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 7:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 8:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 9:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n\nLet's quickly sum these up to verify: 1164 + 1164 + 804 + 564 + 504 + 504 + 264 + 264 + 264 + 264 = 5760. This matches our total number of digits displayed!\n\n---\n\n### Most Common and Rarest Digits\n\nBased on the total counts:\n\n* **Most Common Digit(s):** Digits **0** and **1** (appearing 1164 times each).\n* **Rarest Digit(s):** Digits **6**, **7**, **8**, and **9** (appearing 264 times each).\n\n---\n\n### Percentage Calculation\n\nTotal digits = 5760.\n\n* **Percentage of Most Common Digits (0 and 1):**\n * (1164 / 5760) * 100% = **20.21%** (rounded to two decimal places)\n\n* **Percentage of Rarest Digits (6, 7, 8, and 9):**\n * (264 / 5760) * 100% = **4.58%** (rounded to two decimal places)\n\n---\n\n### Summary\n\n* The **most common digits** are **0** and **1**, each appearing 1164 times, which is **20.21%** of all digits displayed.\n* The **rarest digits** are **6, 7, 8,** and **9**, each appearing 264 times, which is **4.58%** of all digits displayed." } ], "role": "model" @@ -25,7 +25,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 20000 } } \ No newline at end of file diff --git a/payloads/snapshots/complexReasoningRequest/google/followup-response-streaming.json b/payloads/snapshots/complexReasoningRequest/google/followup-response-streaming.json index c9bfb99f..feb48cbc 100644 --- a/payloads/snapshots/complexReasoningRequest/google/followup-response-streaming.json +++ b/payloads/snapshots/complexReasoningRequest/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "That's a great question! Now that you have the detailed solution, here are several things you could do next, depending on your interest:\n\n1. **Verify or Double-Check:**\n * **Write a small" + "text": "Excellent work! You've meticulously broken down the problem and arrived at the correct solution. That's" } ], "role": "model" @@ -13,35 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 48, - "totalTokenCount": 2962, + "promptTokenCount": 2612, + "candidatesTokenCount": 21, + "totalTokenCount": 3616, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -49,7 +34,7 @@ "content": { "parts": [ { - "text": " program:** If you know a programming language (like Python), you could write a script to iterate through all 1440 times, count the occurrences of each digit, and compare the results with my calculations. This is an excellent way to independently" + "text": " a great example of systematic problem-solving.\n\nWhat you should do next depends on what you're interested in:\n\n**1. Verify Your Solution (and Practice Programming!):**\n * **Write a short program:** If you have" } ], "role": "model" @@ -57,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 98, - "totalTokenCount": 3012, + "promptTokenCount": 2612, + "candidatesTokenCount": 72, + "totalTokenCount": 3667, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -93,7 +63,7 @@ "content": { "parts": [ { - "text": " verify the answer and practice your coding skills.\n * **Manually sample:** Pick a smaller range (e.g., just the hours from 00:00 to 01:59) and manually count digits" + "text": " any programming experience (Python, JavaScript, etc.), this is an excellent exercise to write a script that iterates through all times from 00:00 to 23:59, extracts each digit, and counts their occurrences. This will" } ], "role": "model" @@ -101,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 147, - "totalTokenCount": 3061, + "promptTokenCount": 2612, + "candidatesTokenCount": 122, + "totalTokenCount": 3717, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -137,7 +92,7 @@ "content": { "parts": [ { - "text": " to ensure you understand the logic for each position.\n\n2. **Explore Variations / Generalize the Problem:**\n * **12-hour clock:** How would the results change if it were a 12-hour clock (" + "text": " verify your manual calculations and is a very practical skill.\n\n**2. Explore Variations of the Problem:**\n * **12-Hour Clock:** What if the clock displayed times in a 12-hour format (0" } ], "role": "model" @@ -145,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 197, - "totalTokenCount": 3111, + "promptTokenCount": 2612, + "candidatesTokenCount": 170, + "totalTokenCount": 3765, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -181,7 +121,7 @@ "content": { "parts": [ { - "text": "01:00 to 12:59, then repeating, perhaps with AM/PM)? Or 00:00 to 11:59? (This would significantly change the hour digits).\n *" + "text": "1:00 AM to 12:59 PM, and 01:00 PM to 12:59 AM)? (Remember to handle the AM/PM distinction or just consider the numerical values). This" } ], "role": "model" @@ -189,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 246, - "totalTokenCount": 3160, + "promptTokenCount": 2612, + "candidatesTokenCount": 218, + "totalTokenCount": 3813, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -225,7 +150,7 @@ "content": { "parts": [ { - "text": " **Different clock format:** What if the clock displayed seconds too (00:00:00 to 23:59:59)? Which digits would be most/least common then?\n * **" + "text": " changes the range of the hours significantly (1-12 instead of 0-23, and potentially a '0' in 0X:XX AM/PM if you format it that way).\n * **Clock" } ], "role": "model" @@ -233,35 +158,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 293, - "totalTokenCount": 3207, + "promptTokenCount": 2612, + "candidatesTokenCount": 266, + "totalTokenCount": 3861, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -269,7 +179,7 @@ "content": { "parts": [ { - "text": "Different base system:** (More advanced) What if the clock worked in a base-8 system (octal) or base-16 system (hexadecimal)? How would you even represent time then? (This would be a much harder problem" + "text": " with Seconds:** What if the clock also showed seconds (00:00:00 to 23:59:59)? How would the commonality and rarity change then?\n * **Specific Time Ranges:** What if" } ], "role": "model" @@ -277,35 +187,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 342, - "totalTokenCount": 3256, + "promptTokenCount": 2612, + "candidatesTokenCount": 317, + "totalTokenCount": 3912, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -313,7 +208,7 @@ "content": { "parts": [ { - "text": ", involving redefining time units).\n * **Specific digit analysis:** Pick one of the \"rare\" digits (e.g., 9). Can you specifically pinpoint *why* it appears so infrequently by looking at the ranges for" + "text": " the clock only operated during business hours, say from 08:00 to 17:00? Which digits would be most/least common then?\n * **Non-Standard Clock:** Imagine a clock where" } ], "role": "model" @@ -321,35 +216,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 390, - "totalTokenCount": 3304, + "promptTokenCount": 2612, + "candidatesTokenCount": 365, + "totalTokenCount": 3960, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -357,7 +237,7 @@ "content": { "parts": [ { - "text": " H1, H2, M1, M2?\n\n3. **Visualize the Data:**\n * Create a bar chart showing the frequency of each digit (0-9). This can make the differences between the most common" + "text": " minutes only go up to 39 (e.g., a \"decimal time\" system where a day is 10 \"decimal hours\" of 100 \"decimal minutes\" each, so 00:00 to " } ], "role": "model" @@ -365,35 +245,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 439, - "totalTokenCount": 3353, + "promptTokenCount": 2612, + "candidatesTokenCount": 414, + "totalTokenCount": 4009, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -401,7 +266,7 @@ "content": { "parts": [ { - "text": " and rarest digits very clear visually.\n\n4. **Think about related problems:**\n * **Palindromic times:** How many times in a day are palindromes (e.g., 01:10," + "text": "09:99). Which digits would be most/least common there?\n * **\"Broken\" Digits:** What if one of the segments on the clock display was broken, making certain numbers look like others (e." } ], "role": "model" @@ -409,35 +274,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 488, - "totalTokenCount": 3402, + "promptTokenCount": 2612, + "candidatesTokenCount": 463, + "totalTokenCount": 4058, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -445,7 +295,7 @@ "content": { "parts": [ { - "text": " 02:20, 12:21)?\n * **Times with repeating digits:** How many times have all four digits the same (e.g., 11:11)? Or two pairs" + "text": "g., a '3' might look like a '9' or '7')? This is a bit more complex.\n\n**3. Explore Related Concepts:**\n * **Palindromic Times:** How many times a" } ], "role": "model" @@ -453,35 +303,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 535, - "totalTokenCount": 3449, + "promptTokenCount": 2612, + "candidatesTokenCount": 511, + "totalTokenCount": 4106, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -489,7 +324,7 @@ "content": { "parts": [ { - "text": " of the same digits (e.g., 22:33)?\n * **Times with sequential digits:** How many times show digits in sequence (e.g., 01:23, 12:34" + "text": " day is the display a palindrome (e.g., 01:10, 02:20, 12:21)?\n * **Numbers with Repeating Digits:** How many times have all" } ], "role": "model" @@ -497,35 +332,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 586, - "totalTokenCount": 3500, + "promptTokenCount": 2612, + "candidatesTokenCount": 559, + "totalTokenCount": 4154, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -533,7 +353,7 @@ "content": { "parts": [ { - "text": ")?\n\n5. **Move on to a completely different type of puzzle/problem:**\n * If you're tired of clocks, we can explore logic puzzles, probability, geometry, or other mathematical challenges.\n\nWhat sounds" + "text": " four digits the same (e.g., 11:11, 22:22)? Or two pairs (e.g., 11:22, 12:12)?\n * **Digit" } ], "role": "model" @@ -541,35 +361,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 2612, + "candidatesTokenCount": 610, + "totalTokenCount": 4205, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 2612 + } + ], + "thoughtsTokenCount": 983 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " Sums:** What's the most common sum of the four digits displayed at any given time (e.g., for 12:34, the sum is 1+2+3+4=10)?\n\n" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 634, - "totalTokenCount": 3548, + "promptTokenCount": 2612, + "candidatesTokenCount": 656, + "totalTokenCount": 4251, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "**4. Challenge Yourself with a Different Problem:**\n * If you enjoyed this type of analytical puzzle, you could look for other combinatorics, probability, or logic puzzles. Websites like Project Euler, Brilliant.org, or even" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 2612, + "candidatesTokenCount": 704, + "totalTokenCount": 4299, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 2612 + } + ], + "thoughtsTokenCount": 983 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" }, { "candidates": [ @@ -577,7 +440,7 @@ "content": { "parts": [ { - "text": " most interesting to you? Or do you have another problem in mind?" + "text": " daily brain teasers often have similar problems.\n\nWhat sounds most interesting to you? Or do you have another idea in mind?" } ], "role": "model" @@ -586,34 +449,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "NfJHaY3mK8rSjrEPlYyAmQk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 648, - "totalTokenCount": 3562, + "promptTokenCount": 2612, + "candidatesTokenCount": 730, + "totalTokenCount": 4325, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 833 + "thoughtsTokenCount": 983 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:26 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5085", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "nr58aYSXDeTQjMcPuc_c2AI" } ] \ No newline at end of file diff --git a/payloads/snapshots/complexReasoningRequest/google/followup-response.json b/payloads/snapshots/complexReasoningRequest/google/followup-response.json index c68f1de8..dae6f24e 100644 --- a/payloads/snapshots/complexReasoningRequest/google/followup-response.json +++ b/payloads/snapshots/complexReasoningRequest/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:29 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=7745", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "That's a great question! Since you've successfully solved the original problem, here are a few ideas for what you could do next, ranging from refining your understanding to exploring related challenges:\n\n**1. Review and Consolidate Your Understanding of THIS Problem:**\n\n* **Double-Check Your Work:** Go through the calculations again, perhaps focusing on one specific digit, to ensure you completely agree with every step.\n* **Explain it to Someone Else:** Try to explain the solution process to a friend, family member, or even just articulate it out loud to yourself. This is a fantastic way to solidify your understanding and identify any areas where your logic might be fuzzy.\n* **Visualize the Data:** If you have spreadsheet software, try inputting the digit counts and creating a bar graph. Seeing the distribution visually can often provide new insights.\n\n**2. Explore Variations and Extensions of the Problem:**\n\n* **12-Hour Clock:** What if it's a 12-hour clock (e.g., 1:00 AM to 12:59 PM, then 1:00 PM to 12:59 AM)? How would the frequencies change? (Remember to consider leading zeros for single-digit hours, or lack thereof, which changes the problem slightly. Assume 01:00-12:59, twice).\n* **Add Seconds:** What if the clock displayed 00:00:00 to 23:59:59? How would the frequencies and percentages change?\n* **Different Display Technology:** Imagine a 7-segment display. Instead of counting digit occurrences, which *segment* (top, top-left, top-right, middle, bottom-left, bottom-right, bottom) is lit up the most often across all times? Which is the rarest? (This is a much harder problem!)\n* **Palindromic Times:** How many times in a day are palindromes (e.g., 01:10, 02:20, 12:21, 23:32)?\n* **Sum of Digits:** Which sum of the four digits is the most common? (e.g., for 12:34, the sum is 1+2+3+4=10).\n* **Specific Digit Pairs:** Which two-digit combination (e.g., \"00\", \"11\", \"12\", \"23\") is most common in the hour or minute parts?\n\n**3. General Problem-Solving Skill Development:**\n\n* **Practice Similar Counting Problems:** Look for other combinatorial or counting problems that require careful enumeration of possibilities.\n* **Automate It:** If you have programming skills, write a script (in Python, JavaScript, etc.) to iterate through all times and count the digits. This can confirm your manual calculations and is a great exercise in itself.\n\nWhich of these sounds most interesting to you? Or do you have another idea in mind?" + "text": "That was a fantastic analysis! You've thoroughly solved the problem and provided clear explanations.\n\nIf you're looking for what to do next, here are a few ideas, ranging from extensions of this problem to new challenges:\n\n**1. Extend the Current Problem (Variations on the Clock):**\n\n* **12-Hour Clock:** What if it were a 12-hour clock (e.g., 1:00 AM to 12:59 PM, then 1:00 PM to 12:59 AM)? Does the \"AM/PM\" part matter, or just the numerical values (01:00 to 12:59, twice a day)? How would this change the counts, especially for 0s and 1s?\n* **Add Seconds:** What if the clock displayed seconds (00:00:00 to 23:59:59)? How many total digits would there be, and what would the frequencies be then? This would add two more digit places (M1, M2, S1, S2).\n* **Different Display:** Imagine the digits are displayed on a **7-segment LED display**. Which *segments* are lit the most often? (e.g., '8' uses all 7 segments, '1' uses 2, '0' uses 6). This changes the nature of \"most common\" to a visual rather than numerical count.\n* **Specific Patterns:** How many times do \"palindromic\" times appear (e.g., 01:10, 02:20, 12:21)? How many times do all four digits appear in ascending order (e.g., 01:23)?\n\n**2. Explore Related Math/Logic Problems:**\n\n* **Digit Frequencies in Other Systems:** How about counting digits in all numbers from 1 to 1000? Or in a different base system (like base 8 or base 16)?\n* **Combinatorics Puzzles:** Look for other problems involving permutations, combinations, or counting specific arrangements.\n\n**3. Program It!**\n\n* If you're into coding, write a script (in Python, JavaScript, etc.) to iterate through all the times and count the digits. This would be a great way to verify your manual calculations and easily test the variations above. It's a fun and practical application of your logic.\n\n**4. Challenge a Friend:**\n\n* Pose this problem (or one of its variations) to a friend or colleague and see if they can solve it!\n\nChoose whatever sparks your interest the most! You've got a strong foundation from solving this one." } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "PPJHadvsO8n4jrEP-P_FwAk", "usageMetadata": { - "promptTokenCount": 2081, - "candidatesTokenCount": 647, - "totalTokenCount": 3630, + "promptTokenCount": 2612, + "candidatesTokenCount": 586, + "totalTokenCount": 4757, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 2081 + "tokenCount": 2612 } ], - "thoughtsTokenCount": 902 - } + "thoughtsTokenCount": 1559 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "qL58abmFEsiljMcPtN3Y4A4" } \ No newline at end of file diff --git a/payloads/snapshots/complexReasoningRequest/google/request.json b/payloads/snapshots/complexReasoningRequest/google/request.json index 9d3c6372..a9878f4c 100644 --- a/payloads/snapshots/complexReasoningRequest/google/request.json +++ b/payloads/snapshots/complexReasoningRequest/google/request.json @@ -9,7 +9,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 20000 } } \ No newline at end of file diff --git a/payloads/snapshots/complexReasoningRequest/google/response-streaming.json b/payloads/snapshots/complexReasoningRequest/google/response-streaming.json index a2fa8999..edd83adc 100644 --- a/payloads/snapshots/complexReasoningRequest/google/response-streaming.json +++ b/payloads/snapshots/complexReasoningRequest/google/response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "Let's break down the problem by counting the occurrences of each digit (0-9) across all possible times from 00:00 to 23:59.\n\nFirst, let's determine the total number" + "text": "Let" } ], "role": "model" @@ -13,35 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 48, - "totalTokenCount": 5060, + "candidatesTokenCount": 1, + "totalTokenCount": 2921, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -49,7 +34,7 @@ "content": { "parts": [ { - "text": " of digits displayed in a full cycle:\n* There are 24 hours (00 to 23).\n* There are 60 minutes (00 to 59).\n* Total number of unique time" + "text": "'s break this down systematically.\n\nFirst, we need to determine the total number of times displayed and the total number of digits involved.\n\n1. **Total Number of Times:**\n * Hours go from 00" } ], "role": "model" @@ -57,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 98, - "totalTokenCount": 5110, + "candidatesTokenCount": 49, + "totalTokenCount": 2969, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -93,7 +63,7 @@ "content": { "parts": [ { - "text": " displays = 24 hours * 60 minutes = 1440 times.\n* Each time display has 4 digits (e.g., 12:34 has 1, 2, 3, " + "text": " to 23, which is 24 distinct hours.\n * Minutes go from 00 to 59, which is 60 distinct minutes.\n * Total number of unique times = 24 hours *" } ], "role": "model" @@ -101,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 148, - "totalTokenCount": 5160, + "candidatesTokenCount": 100, + "totalTokenCount": 3020, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -137,7 +92,7 @@ "content": { "parts": [ { - "text": "4).\n* Total number of digits displayed = 1440 times * 4 digits/time = 5760 digits.\n\nNow, let's count the occurrences of each digit for the \"hours\" part (" + "text": " 60 minutes = **1440 times**.\n\n2. **Total Number of Digits:**\n * Each time (e.g., 00:00) consists of 4 digits.\n * " } ], "role": "model" @@ -145,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 198, - "totalTokenCount": 5210, + "candidatesTokenCount": 149, + "totalTokenCount": 3069, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -181,7 +121,7 @@ "content": { "parts": [ { - "text": "HH) and the \"minutes\" part (MM) separately, and then combine them.\n\n---\n\n**1. Counting Digits in the \"Hours\" part (HH):**\nThis ranges from 00 to 23" + "text": "Total number of digits across all times = 1440 times * 4 digits/time = **5760 digits**.\n\nNow, let's count the occurrences of each digit (0-9) in all these " } ], "role": "model" @@ -189,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 246, - "totalTokenCount": 5258, + "candidatesTokenCount": 197, + "totalTokenCount": 3117, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -225,7 +150,7 @@ "content": { "parts": [ { - "text": ". For each hour, the digits are shown 60 times (for each minute).\n\n* **Tens digit of hours (H1):**\n * '0' appears 10 times (00, 01" + "text": "5760 positions. We can do this by considering each position:\n\n* **HH:M1M2**\n * H1: Tens digit of hours\n * H2: Units digit of hours\n *" } ], "role": "model" @@ -233,35 +158,49 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 248, + "totalTokenCount": 3168, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " M1: Tens digit of minutes\n * M2: Units digit of minutes\n\nLet's count for each digit:\n\n---\n\n### Occurrences of each digit (0-9):\n\n**1. M2 (" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, "candidatesTokenCount": 296, - "totalTokenCount": 5308, + "totalTokenCount": 3216, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -269,7 +208,7 @@ "content": { "parts": [ { - "text": ", ..., 09).\n * '1' appears 10 times (10, 11, ..., 19).\n * '2' appears 4 times (20, 21," + "text": "Units digit of minutes, e.g., 00:0X):**\n* Minutes cycle from 00 to 59.\n* The units digit (0-9) appears 6 times in each" } ], "role": "model" @@ -277,35 +216,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 346, - "totalTokenCount": 5358, + "candidatesTokenCount": 344, + "totalTokenCount": 3264, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -313,7 +237,7 @@ "content": { "parts": [ { - "text": " 22, 23).\n * Digits '3' through '9' appear 0 times.\n * Total H1 count for each hour over 60 minutes:\n * 0: " + "text": " cycle of 00-59 (0, 1, ..., 9, then 10, 11, ..., 19, ..., 50, 51, ..., 59).\n " } ], "role": "model" @@ -321,35 +245,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 393, - "totalTokenCount": 5405, + "candidatesTokenCount": 390, + "totalTokenCount": 3310, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -357,7 +266,7 @@ "content": { "parts": [ { - "text": "10 * 60 = 600\n * 1: 10 * 60 = 600\n * 2: 4 * 60 = 240\n " + "text": "* Example: 00, 01, 02, ..., 09 (one of each digit)\n * Example: 10, 11, 12, ..., 19 (one" } ], "role": "model" @@ -365,35 +274,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 439, - "totalTokenCount": 5451, + "candidatesTokenCount": 440, + "totalTokenCount": 3360, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -401,7 +295,7 @@ "content": { "parts": [ { - "text": "* 3-9: 0\n\n* **Units digit of hours (H2):**\n * '0' appears 3 times (00, 10, 20).\n * '" + "text": " of each digit)\n * This repeats for the tens digits 0, 1, 2, 3, 4, 5. So, each digit 0-9 appears 6 times for the minute units digit (" } ], "role": "model" @@ -409,35 +303,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 488, - "totalTokenCount": 5500, + "candidatesTokenCount": 490, + "totalTokenCount": 3410, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -445,7 +324,7 @@ "content": { "parts": [ { - "text": "1' appears 3 times (01, 11, 21).\n * '2' appears 3 times (02, 12, 22).\n * '3'" + "text": "per hour).\n* Since there are 24 hours, the count for each digit (0-9) is: 6 occurrences/hour * 24 hours = **144 times** for each digit.\n" } ], "role": "model" @@ -453,35 +332,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 536, - "totalTokenCount": 5548, + "candidatesTokenCount": 537, + "totalTokenCount": 3457, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -489,7 +353,7 @@ "content": { "parts": [ { - "text": " appears 3 times (03, 13, 23).\n * '4' through '9' each appear 2 times (e.g., '4' in 04, 14)." + "text": " * `digit_counts[0]` += 144\n * `digit_counts[1]` += 144\n * ...\n * `digit_counts[9]` +=" } ], "role": "model" @@ -497,35 +361,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 585, - "totalTokenCount": 5597, + "candidatesTokenCount": 584, + "totalTokenCount": 3504, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -533,7 +382,7 @@ "content": { "parts": [ { - "text": "\n * Total H2 count for each hour over 60 minutes:\n * 0, 1, 2, 3: 3 * 60 = 180 each\n * " + "text": " 144\n\n**2. M1 (Tens digit of minutes, e.g., 00:X0):**\n* Minutes cycle from 00 to 59.\n* The tens digit" } ], "role": "model" @@ -541,35 +390,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 630, - "totalTokenCount": 5642, + "candidatesTokenCount": 631, + "totalTokenCount": 3551, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -577,7 +411,7 @@ "content": { "parts": [ { - "text": "4, 5, 6, 7, 8, 9: 2 * 60 = 120 each\n\n---\n\n**2. Counting Digits in the \"Minutes\" part (MM):**" + "text": " can be 0, 1, 2, 3, 4, 5.\n * 0 appears for 00-09 (10 times)\n * 1 appears for 10-1" } ], "role": "model" @@ -585,35 +419,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 678, - "totalTokenCount": 5690, + "candidatesTokenCount": 681, + "totalTokenCount": 3601, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -621,7 +440,7 @@ "content": { "parts": [ { - "text": "\nThis ranges from 00 to 59. For each minute, the digits are shown 24 times (for each hour).\n\n* **Tens digit of minutes (M1):**\n * '0" + "text": "9 (10 times)\n * ...\n * 5 appears for 50-59 (10 times)\n* Digits 6, 7, 8, 9 never appear in this" } ], "role": "model" @@ -629,35 +448,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 725, - "totalTokenCount": 5737, + "candidatesTokenCount": 729, + "totalTokenCount": 3649, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -665,7 +469,7 @@ "content": { "parts": [ { - "text": "' appears 10 times (00, 01, ..., 09).\n * '1' appears 10 times (10, 11, ..., 19).\n * " + "text": " position.\n* Since there are 24 hours, the count for each of these digits (0-5) is: 10 occurrences/hour * 24 hours = **240 times**.\n *" } ], "role": "model" @@ -673,35 +477,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 772, - "totalTokenCount": 5784, + "candidatesTokenCount": 777, + "totalTokenCount": 3697, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -709,7 +498,7 @@ "content": { "parts": [ { - "text": "'2' appears 10 times (20, 21, ..., 29).\n * '3' appears 10 times (30, 31, ..., 39).\n " + "text": " `digit_counts[0]` += 240\n * `digit_counts[1]` += 240\n * `digit_counts[2]` += 240\n *" } ], "role": "model" @@ -717,35 +506,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 818, - "totalTokenCount": 5830, + "candidatesTokenCount": 824, + "totalTokenCount": 3744, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -753,7 +527,7 @@ "content": { "parts": [ { - "text": "* '4' appears 10 times (40, 41, ..., 49).\n * '5' appears 10 times (50, 51, ..., 59)." + "text": " `digit_counts[3]` += 240\n * `digit_counts[4]` += 240\n * `digit_counts[5]` += 240\n\n**3. H" } ], "role": "model" @@ -761,35 +535,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 866, - "totalTokenCount": 5878, + "candidatesTokenCount": 873, + "totalTokenCount": 3793, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -797,7 +556,7 @@ "content": { "parts": [ { - "text": "\n * Digits '6' through '9' appear 0 times.\n * Total M1 count for each minute over 24 hours:\n * 0, 1, 2, 3" + "text": "2 (Units digit of hours, e.g., 0X:00):**\n* Hours cycle from 00 to 23.\n* For each hour, it appears for all 60 minutes.\n" } ], "role": "model" @@ -805,35 +564,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 912, - "totalTokenCount": 5924, + "candidatesTokenCount": 922, + "totalTokenCount": 3842, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -841,7 +585,7 @@ "content": { "parts": [ { - "text": ", 4, 5: 10 * 24 = 240 each\n * 6-9: 0\n\n* **Units digit of minutes (M2):**\n * Each digit '" + "text": " * 0 appears in 00, 10, 20 (3 times) -> 3 * 60 = 180 times\n * 1 appears in 01, 11, " } ], "role": "model" @@ -849,35 +593,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 962, - "totalTokenCount": 5974, + "candidatesTokenCount": 970, + "totalTokenCount": 3890, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -885,7 +614,7 @@ "content": { "parts": [ { - "text": "0' through '9' appears 6 times (e.g., '0' in 00, 10, 20, 30, 40, 50).\n * Total" + "text": "21 (3 times) -> 3 * 60 = 180 times\n * 2 appears in 02, 12, 22 (3 times) -> 3 * 60" } ], "role": "model" @@ -893,35 +622,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1010, - "totalTokenCount": 6022, + "candidatesTokenCount": 1018, + "totalTokenCount": 3938, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -929,7 +643,7 @@ "content": { "parts": [ { - "text": " M2 count for each minute over 24 hours:\n * 0, 1, 2, 3, 4, 5, 6, 7, 8, 9: 6 *" + "text": " = 180 times\n * 3 appears in 03, 13, 23 (3 times) -> 3 * 60 = 180 times\n * 4 appears in" } ], "role": "model" @@ -937,35 +651,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1058, - "totalTokenCount": 6070, + "candidatesTokenCount": 1066, + "totalTokenCount": 3986, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -973,7 +672,7 @@ "content": { "parts": [ { - "text": " 24 = 144 each\n\n---\n\n**3. Total Occurrences for Each Digit (Summing all positions):**\n\n* **Digit 0:** (H1: 600) + (H" + "text": " 04, 14 (2 times) -> 2 * 60 = 120 times\n * 5 appears in 05, 15 (2 times) -> 2 * 6" } ], "role": "model" @@ -981,35 +680,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1105, - "totalTokenCount": 6117, + "candidatesTokenCount": 1113, + "totalTokenCount": 4033, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1017,7 +701,7 @@ "content": { "parts": [ { - "text": "2: 180) + (M1: 240) + (M2: 144) = **1164**\n* **Digit 1:** (H1: 6" + "text": "0 = 120 times\n * 6 appears in 06, 16 (2 times) -> 2 * 60 = 120 times\n * 7 appears in 07" } ], "role": "model" @@ -1025,35 +709,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1153, - "totalTokenCount": 6165, + "candidatesTokenCount": 1161, + "totalTokenCount": 4081, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1061,7 +730,7 @@ "content": { "parts": [ { - "text": "00) + (H2: 180) + (M1: 240) + (M2: 144) = **1164**\n* **Digit 2:**" + "text": ", 17 (2 times) -> 2 * 60 = 120 times\n * 8 appears in 08, 18 (2 times) -> 2 * 60 = " } ], "role": "model" @@ -1069,35 +738,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1201, - "totalTokenCount": 6213, + "candidatesTokenCount": 1208, + "totalTokenCount": 4128, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1105,7 +759,7 @@ "content": { "parts": [ { - "text": " (H1: 240) + (H2: 180) + (M1: 240) + (M2: 144) = **804**\n* " + "text": "120 times\n * 9 appears in 09, 19 (2 times) -> 2 * 60 = 120 times\n * `digit_counts[0]` += " } ], "role": "model" @@ -1113,35 +767,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1248, - "totalTokenCount": 6260, + "candidatesTokenCount": 1255, + "totalTokenCount": 4175, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1149,7 +788,7 @@ "content": { "parts": [ { - "text": "**Digit 3:** (H1: 0) + (H2: 180) + (M1: 240) + (M2: 144) = **564**" + "text": "180\n * `digit_counts[1]` += 180\n * `digit_counts[2]` += 180\n * `digit_counts[3]` += " } ], "role": "model" @@ -1157,35 +796,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1296, - "totalTokenCount": 6308, + "candidatesTokenCount": 1302, + "totalTokenCount": 4222, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1193,7 +817,7 @@ "content": { "parts": [ { - "text": "\n* **Digit 4:** (H1: 0) + (H2: 120) + (M1: 240) + (M2: 144) = **5" + "text": "180\n * `digit_counts[4]` += 120\n * `digit_counts[5]` += 120\n * `digit_counts[6]` += " } ], "role": "model" @@ -1201,35 +825,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1343, - "totalTokenCount": 6355, + "candidatesTokenCount": 1349, + "totalTokenCount": 4269, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1237,7 +846,7 @@ "content": { "parts": [ { - "text": "04**\n* **Digit 5:** (H1: 0) + (H2: 120) + (M1: 240) + (M2: 144)" + "text": "120\n * `digit_counts[7]` += 120\n * `digit_counts[8]` += 120\n * `digit_counts[9]` += " } ], "role": "model" @@ -1245,35 +854,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1391, - "totalTokenCount": 6403, + "candidatesTokenCount": 1396, + "totalTokenCount": 4316, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1281,7 +875,7 @@ "content": { "parts": [ { - "text": " = **504**\n* **Digit 6:** (H1: 0) + (H2: 120) + (M1: 0) + (M2: 144" + "text": "120\n\n**4. H1 (Tens digit of hours, e.g., X0:00):**\n* Hours cycle from 00 to 23.\n* For each hour, it" } ], "role": "model" @@ -1289,35 +883,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1439, - "totalTokenCount": 6451, + "candidatesTokenCount": 1444, + "totalTokenCount": 4364, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1325,7 +904,7 @@ "content": { "parts": [ { - "text": ") = **264**\n* **Digit 7:** (H1: 0) + (H2: 120) + (M1: 0) + (M2: 14" + "text": " appears for all 60 minutes.\n * 0 appears for 00-09 (10 times) -> 10 * 60 = 600 times\n * 1 appears for 10-" } ], "role": "model" @@ -1333,35 +912,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1487, - "totalTokenCount": 6499, + "candidatesTokenCount": 1495, + "totalTokenCount": 4415, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1369,7 +933,7 @@ "content": { "parts": [ { - "text": "4) = **264**\n* **Digit 8:** (H1: 0) + (H2: 120) + (M1: 0) + (M2: 1" + "text": "19 (10 times) -> 10 * 60 = 600 times\n * 2 appears for 20-23 (4 times) -> 4 * 60 = 2" } ], "role": "model" @@ -1377,35 +941,49 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1535, - "totalTokenCount": 6547, + "candidatesTokenCount": 1543, + "totalTokenCount": 4463, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "40 times\n* Digits 3, 4, 5, 6, 7, 8, 9 never appear in this position.\n * `digit_counts[0]` += 600\n" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1592, + "totalTokenCount": 4512, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1413,7 +991,7 @@ "content": { "parts": [ { - "text": "44) = **264**\n* **Digit 9:** (H1: 0) + (H2: 120) + (M1: 0) + (M2: " + "text": " * `digit_counts[1]` += 600\n * `digit_counts[2]` += 240\n\n---\n\n### Aggregating the Counts:\n\nLet's sum them up for each digit" } ], "role": "model" @@ -1421,35 +999,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1642, + "totalTokenCount": 4562, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": ":\n\n* **Digit 0:** 144 (M2) + 240 (M1) + 180 (H2) + 600 (H1) = **11" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1582, - "totalTokenCount": 6594, + "candidatesTokenCount": 1690, + "totalTokenCount": 4610, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "64**\n* **Digit 1:** 144 (M2) + 240 (M1) + 180 (H2) + 600 (H1) = **" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1738, + "totalTokenCount": 4658, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1457,7 +1078,7 @@ "content": { "parts": [ { - "text": "144) = **264**\n\n*Self-check: Sum of all occurrences = 1164*2 + 804 + 564 + 504*2 + 264*" + "text": "1164**\n* **Digit 2:** 144 (M2) + 240 (M1) + 180 (H2) + 240 (H1)" } ], "role": "model" @@ -1465,35 +1086,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1786, + "totalTokenCount": 4706, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " = **804**\n* **Digit 3:** 144 (M2) + 240 (M1) + 180 (H2) + 0 (H1) =" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1633, - "totalTokenCount": 6645, + "candidatesTokenCount": 1834, + "totalTokenCount": 4754, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " **564**\n* **Digit 4:** 144 (M2) + 240 (M1) + 120 (H2) + 0 (H1) = **" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1882, + "totalTokenCount": 4802, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1501,7 +1165,7 @@ "content": { "parts": [ { - "text": "4 = 2328 + 804 + 564 + 1008 + 1056 = 5760. This matches the total number of digits we calculated earlier.*\n\n---\n\n" + "text": "504**\n* **Digit 5:** 144 (M2) + 240 (M1) + 120 (H2) + 0 (H1) = **5" } ], "role": "model" @@ -1509,35 +1173,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 1930, + "totalTokenCount": 4850, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "04**\n* **Digit 6:** 144 (M2) + 0 (M1) + 120 (H2) + 0 (H1) = **264**" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1682, - "totalTokenCount": 6694, + "candidatesTokenCount": 1978, + "totalTokenCount": 4898, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "\n* **Digit 7:** 144 (M2) + 0 (M1) + 120 (H2) + 0 (H1) = **264**\n* " + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 2024, + "totalTokenCount": 4944, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1545,7 +1252,7 @@ "content": { "parts": [ { - "text": "**Most Common Digit(s):**\nDigits **0** and **1** are the most common, each appearing **1164** times.\nPercentage: (1164 / 5760) * " + "text": "**Digit 8:** 144 (M2) + 0 (M1) + 120 (H2) + 0 (H1) = **264**\n* **Digit " } ], "role": "model" @@ -1553,35 +1260,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 2071, + "totalTokenCount": 4991, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "9:** 144 (M2) + 0 (M1) + 120 (H2) + 0 (H1) = **264**\n\n**Total Digits Check:** 1" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1730, - "totalTokenCount": 6742, + "candidatesTokenCount": 2119, + "totalTokenCount": 5039, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "164+1164+804+564+504+504+264+264+264+264 = 5760. This" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 2167, + "totalTokenCount": 5087, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1589,7 +1339,7 @@ "content": { "parts": [ { - "text": "100% = **20.21%**\n\n**Rarest Digit(s):**\nDigits **6, 7, 8,** and **9** are the rarest, each appearing **264** times" + "text": " matches our calculated total number of digits, so the counts are correct.\n\n---\n\n### Conclusion:\n\n* **Most Common Digit(s):**\n The digits **0** and **1** are the most common, appearing **11" } ], "role": "model" @@ -1597,35 +1347,78 @@ "index": 0 } ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 2218, + "totalTokenCount": 5138, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "64 times** each.\n * Percentage: (1164 / 5760) * 100% = **20.21%** (approximately)\n\n* **Rarest Digit" + } + ], + "role": "model" + }, + "index": 0 + } + ], "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1780, - "totalTokenCount": 6792, + "candidatesTokenCount": 2267, + "totalTokenCount": 5187, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": "(s):**\n The digits **6, 7, 8,** and **9** are the rarest, appearing **264 times** each.\n * Percentage: (264 / 576" + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 75, + "candidatesTokenCount": 2317, + "totalTokenCount": 5237, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 75 + } + ], + "thoughtsTokenCount": 2845 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" }, { "candidates": [ @@ -1633,7 +1426,7 @@ "content": { "parts": [ { - "text": ".\nPercentage: (264 / 5760) * 100% = **4.58%**" + "text": "0) * 100% = **4.58%** (approximately)" } ], "role": "model" @@ -1642,34 +1435,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZ6oHaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1809, - "totalTokenCount": 6821, + "candidatesTokenCount": 2336, + "totalTokenCount": 5256, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 4937 + "thoughtsTokenCount": 2845 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=17950", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758adrvHdyNjMcPqP7EoAI" } ] \ No newline at end of file diff --git a/payloads/snapshots/complexReasoningRequest/google/response.json b/payloads/snapshots/complexReasoningRequest/google/response.json index 1cbc1e7d..4c960bdb 100644 --- a/payloads/snapshots/complexReasoningRequest/google/response.json +++ b/payloads/snapshots/complexReasoningRequest/google/response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:15 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=18450", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "Let's break this down step by step:\n\n1. **Total Number of Times:**\n * Hours go from 00 to 23 (24 distinct hours).\n * Minutes go from 00 to 59 (60 distinct minutes).\n * Total number of times displayed = 24 hours * 60 minutes = 1440 times.\n\n2. **Total Number of Digits Displayed:**\n * Each time (e.g., 00:00) consists of 4 digits.\n * Total digits displayed across all times = 1440 times * 4 digits/time = 5760 digits.\n * This will be the denominator for our percentages.\n\n3. **Counting Occurrences for Each Digit (0-9):**\n\n Let's consider each digit position:\n * `H1 H2 : M1 M2`\n\n **A. Occurrences in the Minutes (M1, M2):**\n There are 24 hours in a day. For each hour, the minutes go from 00 to 59.\n\n * **M2 (Minutes Units Place, 0-59):**\n In the range 00-59, each digit (0-9) appears exactly 6 times (e.g., 00, 10, 20, 30, 40, 50 for digit 0; 01, 11, 21, 31, 41, 51 for digit 1, etc.).\n So, for each hour, each digit 0-9 appears 6 times in the M2 position.\n Over 24 hours: 6 occurrences/hour * 24 hours = **144** times for each digit (0-9) in M2.\n\n * **M1 (Minutes Tens Place, 0-59):**\n In the range 00-59:\n * Digit 0 appears 10 times (00-09)\n * Digit 1 appears 10 times (10-19)\n * Digit 2 appears 10 times (20-29)\n * Digit 3 appears 10 times (30-39)\n * Digit 4 appears 10 times (40-49)\n * Digit 5 appears 10 times (50-59)\n * Digits 6, 7, 8, 9 appear 0 times.\n Over 24 hours:\n * Digits 0-5: 10 occurrences/hour * 24 hours = **240** times each.\n * Digits 6-9: **0** times each.\n\n **B. Occurrences in the Hours (H1, H2):**\n There are 60 minutes in an hour. For each minute, the hours go from 00 to 23.\n\n * **H2 (Hours Units Place, 0-23):**\n In the range 00-23:\n * Digits 0, 1, 2, 3 each appear 3 times (e.g., 00, 10, 20 for digit 0; 01, 11, 21 for digit 1; etc. and 03, 13, 23 for digit 3).\n * Digits 4, 5, 6, 7, 8, 9 each appear 2 times (e.g., 04, 14 for digit 4; 09, 19 for digit 9).\n Over 60 minutes:\n * Digits 0, 1, 2, 3: 3 occurrences/minute * 60 minutes = **180** times each.\n * Digits 4, 5, 6, 7, 8, 9: 2 occurrences/minute * 60 minutes = **120** times each.\n\n * **H1 (Hours Tens Place, 0-23):**\n In the range 00-23:\n * Digit 0 appears 10 times (00-09).\n * Digit 1 appears 10 times (10-19).\n * Digit 2 appears 4 times (20-23).\n * Digits 3, 4, 5, 6, 7, 8, 9 appear 0 times.\n Over 60 minutes:\n * Digits 0, 1: 10 occurrences/minute * 60 minutes = **600** times each.\n * Digit 2: 4 occurrences/minute * 60 minutes = **240** times.\n * Digits 3-9: **0** times each.\n\n4. **Total Occurrences for Each Digit:**\n\n * **Digit 0:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 600 = **1164**\n * **Digit 1:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 600 = **1164**\n * **Digit 2:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 240 = **804**\n * **Digit 3:** (M2) 144 + (M1) 240 + (H2) 180 + (H1) 0 = **564**\n * **Digit 4:** (M2) 144 + (M1) 240 + (H2) 120 + (H1) 0 = **504**\n * **Digit 5:** (M2) 144 + (M1) 240 + (H2) 120 + (H1) 0 = **504**\n * **Digit 6:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 7:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 8:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n * **Digit 9:** (M2) 144 + (M1) 0 + (H2) 120 + (H1) 0 = **264**\n\n *Self-check: Sum of all occurrences = 1164 + 1164 + 804 + 564 + 504 + 504 + 264 + 264 + 264 + 264 = 5760. This matches our total digits!*\n\n5. **Most Common and Rarest Digits:**\n\n * **Most Common Digit(s):** Digits **0** and **1** (1164 occurrences each).\n * **Rarest Digit(s):** Digits **6**, **7**, **8**, and **9** (264 occurrences each).\n\n6. **Calculate Percentages:**\n\n * **Percentage for Most Common (Digits 0 and 1):**\n (1164 / 5760) * 100% $\\approx$ **20.21%**\n\n * **Percentage for Rarest (Digits 6, 7, 8, and 9):**\n (264 / 5760) * 100% $\\approx$ **4.58%**\n\n---\n\n**Summary:**\n\n* **Most Common Digit(s):** **0** and **1**\n * Each appears 1164 times.\n * Percentage: **20.21%** each.\n\n* **Rarest Digit(s):** **6**, **7**, **8**, and **9**\n * Each appears 264 times.\n * Percentage: **4.58%** each." + "text": "Let's break this down step by step!\n\nFirst, we need to understand the total number of digits displayed and the range of times.\n\n1. **Total Number of Times:**\n * Hours: 00 to 23 (24 unique hours)\n * Minutes: 00 to 59 (60 unique minutes)\n * Total unique times = 24 hours * 60 minutes = 1440 times.\n\n2. **Total Number of Digits Displayed:**\n * Each time (e.g., 00:00, 12:34) consists of 4 digits.\n * Total digits displayed = 1440 times * 4 digits/time = 5760 digits.\n * This will be our denominator for percentage calculations.\n\nNow, let's count the occurrences of each digit (0-9) by considering the hours and minutes separately.\n\n---\n\n### Counting Digits in Hours (HH)\n\nWe need to count how many times each digit appears in the \"HH\" part across all 24 hours (00 to 23).\nLet's consider the tens digit (H1) and the units digit (H2) for each hour.\n\n* **H1 (Tens Digit of Hour):**\n * '0' appears 10 times (in 00, 01, ..., 09)\n * '1' appears 10 times (in 10, 11, ..., 19)\n * '2' appears 4 times (in 20, 21, 22, 23)\n * (Other digits: 0 times)\n\n* **H2 (Units Digit of Hour):**\n * From 00-09: Each digit (0-9) appears once.\n * From 10-19: Each digit (0-9) appears once.\n * From 20-23: Digits (0, 1, 2, 3) appear once.\n * So, total H2 counts:\n * '0': 1 (from 00-09) + 1 (from 10-19) + 1 (from 20-23) = 3 times\n * '1': 1 + 1 + 1 = 3 times\n * '2': 1 + 1 + 1 = 3 times\n * '3': 1 + 1 + 1 = 3 times\n * '4': 1 + 1 = 2 times\n * '5': 1 + 1 = 2 times\n * '6': 1 + 1 = 2 times\n * '7': 1 + 1 = 2 times\n * '8': 1 + 1 = 2 times\n * '9': 1 + 1 = 2 times\n\n* **Total Occurrences for each digit in the HH part across 24 hours:**\n * Digit 0: 10 (H1) + 3 (H2) = 13 times\n * Digit 1: 10 (H1) + 3 (H2) = 13 times\n * Digit 2: 4 (H1) + 3 (H2) = 7 times\n * Digit 3: 0 (H1) + 3 (H2) = 3 times\n * Digit 4: 0 (H1) + 2 (H2) = 2 times\n * Digit 5: 0 (H1) + 2 (H2) = 2 times\n * Digit 6: 0 (H1) + 2 (H2) = 2 times\n * Digit 7: 0 (H1) + 2 (H2) = 2 times\n * Digit 8: 0 (H1) + 2 (H2) = 2 times\n * Digit 9: 0 (H1) + 2 (H2) = 2 times\n\n---\n\n### Counting Digits in Minutes (MM)\n\nNow, we need to count how many times each digit appears in the \"MM\" part across all 60 minutes (00 to 59). This is simpler because it covers a full range of 0-59.\nLet's consider the tens digit (M1) and the units digit (M2) for each minute.\n\n* **M1 (Tens Digit of Minute):**\n * '0' appears 10 times (in 00, 01, ..., 09)\n * '1' appears 10 times (in 10, 11, ..., 19)\n * '2' appears 10 times (in 20, 21, ..., 29)\n * '3' appears 10 times (in 30, 31, ..., 39)\n * '4' appears 10 times (in 40, 41, ..., 49)\n * '5' appears 10 times (in 50, 51, ..., 59)\n * (Other digits: 0 times)\n\n* **M2 (Units Digit of Minute):**\n * In each decade (00-09, 10-19, ..., 50-59), each digit (0-9) appears once.\n * Since there are 6 such decades (00s, 10s, 20s, 30s, 40s, 50s), each units digit appears 6 times.\n * So, '0' appears 6 times, '1' appears 6 times, ..., '9' appears 6 times.\n\n* **Total Occurrences for each digit in the MM part across 60 minutes:**\n * Digit 0: 10 (M1) + 6 (M2) = 16 times\n * Digit 1: 10 (M1) + 6 (M2) = 16 times\n * Digit 2: 10 (M1) + 6 (M2) = 16 times\n * Digit 3: 10 (M1) + 6 (M2) = 16 times\n * Digit 4: 10 (M1) + 6 (M2) = 16 times\n * Digit 5: 10 (M1) + 6 (M2) = 16 times\n * Digit 6: 0 (M1) + 6 (M2) = 6 times\n * Digit 7: 0 (M1) + 6 (M2) = 6 times\n * Digit 8: 0 (M1) + 6 (M2) = 6 times\n * Digit 9: 0 (M1) + 6 (M2) = 6 times\n\n---\n\n### Total Counts for Each Digit\n\nNow, we combine the two sets of counts. For each of the 24 hours, the minute digits (MM) go through all 60 variations. For each of the 60 minutes, the hour digits (HH) go through all 24 variations.\n\nTotal Count for Digit D = (Count of D in HH) * 60 (minutes) + (Count of D in MM) * 24 (hours)\n\n* **Digit 0:** (13 * 60) + (16 * 24) = 780 + 384 = **1164**\n* **Digit 1:** (13 * 60) + (16 * 24) = 780 + 384 = **1164**\n* **Digit 2:** (7 * 60) + (16 * 24) = 420 + 384 = **804**\n* **Digit 3:** (3 * 60) + (16 * 24) = 180 + 384 = **564**\n* **Digit 4:** (2 * 60) + (16 * 24) = 120 + 384 = **504**\n* **Digit 5:** (2 * 60) + (16 * 24) = 120 + 384 = **504**\n* **Digit 6:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 7:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 8:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n* **Digit 9:** (2 * 60) + (6 * 24) = 120 + 144 = **264**\n\nLet's quickly sum these up to verify: 1164 + 1164 + 804 + 564 + 504 + 504 + 264 + 264 + 264 + 264 = 5760. This matches our total number of digits displayed!\n\n---\n\n### Most Common and Rarest Digits\n\nBased on the total counts:\n\n* **Most Common Digit(s):** Digits **0** and **1** (appearing 1164 times each).\n* **Rarest Digit(s):** Digits **6**, **7**, **8**, and **9** (appearing 264 times each).\n\n---\n\n### Percentage Calculation\n\nTotal digits = 5760.\n\n* **Percentage of Most Common Digits (0 and 1):**\n * (1164 / 5760) * 100% = **20.21%** (rounded to two decimal places)\n\n* **Percentage of Rarest Digits (6, 7, 8, and 9):**\n * (264 / 5760) * 100% = **4.58%** (rounded to two decimal places)\n\n---\n\n### Summary\n\n* The **most common digits** are **0** and **1**, each appearing 1164 times, which is **20.21%** of all digits displayed.\n* The **rarest digits** are **6, 7, 8,** and **9**, each appearing 264 times, which is **4.58%** of all digits displayed." } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "L_JHaYq4HK_3jrEPyq3x6Ao", "usageMetadata": { "promptTokenCount": 75, - "candidatesTokenCount": 1998, - "totalTokenCount": 5026, + "candidatesTokenCount": 2529, + "totalTokenCount": 5672, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 75 } ], - "thoughtsTokenCount": 2953 - } + "thoughtsTokenCount": 3068 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "nb58aY2tNcHdjMcP9celgA4" } \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/followup-request.json b/payloads/snapshots/multimodalRequest/google/followup-request.json index f54df299..619ef0d8 100644 --- a/payloads/snapshots/multimodalRequest/google/followup-request.json +++ b/payloads/snapshots/multimodalRequest/google/followup-request.json @@ -17,7 +17,7 @@ { "parts": [ { - "text": "The image is completely black. There are no discernible objects" + "text": "The image is **completely black**.\n\nThere are no discernible" } ], "role": "model" @@ -31,7 +31,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 300 } } \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/followup-response-streaming.json b/payloads/snapshots/multimodalRequest/google/followup-response-streaming.json index 9b1efa0a..7e36f69d 100644 --- a/payloads/snapshots/multimodalRequest/google/followup-response-streaming.json +++ b/payloads/snapshots/multimodalRequest/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "Since the image you provided was completely black," + "text": "Since the image you provided was completely black, there wasn'" } ], "role": "model" @@ -14,38 +14,23 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "4gVUacW-LcrXjMcP8OuC2AY", "usageMetadata": { - "promptTokenCount": 286, - "candidatesTokenCount": 9, - "totalTokenCount": 582, + "promptTokenCount": 287, + "candidatesTokenCount": 12, + "totalTokenCount": 583, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 28 + "tokenCount": 29 }, { "modality": "IMAGE", "tokenCount": 258 } ], - "thoughtsTokenCount": 287 + "thoughtsTokenCount": 284 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Tue, 30 Dec 2025 17:03:32 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2081", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "ir58abXTAa6PjMcPkpfamQQ" } ] \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/followup-response.json b/payloads/snapshots/multimodalRequest/google/followup-response.json index 9002bb38..ff4a6dae 100644 --- a/payloads/snapshots/multimodalRequest/google/followup-response.json +++ b/payloads/snapshots/multimodalRequest/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Tue, 30 Dec 2025 17:03:32 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2011", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "To give you the best advice, I need a little more" + "text": "Since the image was completely black, there are a few possibilities" } ], "role": "model" @@ -28,16 +13,14 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "5AVUaefUCoPSjMcPhN2qiAc", "usageMetadata": { - "promptTokenCount": 286, + "promptTokenCount": 287, "candidatesTokenCount": 12, - "totalTokenCount": 582, + "totalTokenCount": 583, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 28 + "tokenCount": 29 }, { "modality": "IMAGE", @@ -45,5 +28,7 @@ } ], "thoughtsTokenCount": 284 - } + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "i758aeu_GcrOjMcPnc39kA4" } \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/request.json b/payloads/snapshots/multimodalRequest/google/request.json index 9e3cdf29..77d3d294 100644 --- a/payloads/snapshots/multimodalRequest/google/request.json +++ b/payloads/snapshots/multimodalRequest/google/request.json @@ -15,7 +15,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 300 } } \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/response-streaming.json b/payloads/snapshots/multimodalRequest/google/response-streaming.json index a32bc850..bc3ebd91 100644 --- a/payloads/snapshots/multimodalRequest/google/response-streaming.json +++ b/payloads/snapshots/multimodalRequest/google/response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "I see a completely black image. There are" + "text": "The image you sent is completely black. There are no discernible" } ], "role": "model" @@ -14,11 +14,9 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "4AVUaan_IpOHjMcPjNeCiQU", "usageMetadata": { "promptTokenCount": 267, - "candidatesTokenCount": 9, + "candidatesTokenCount": 12, "totalTokenCount": 563, "promptTokensDetails": [ { @@ -30,22 +28,9 @@ "tokenCount": 258 } ], - "thoughtsTokenCount": 287 + "thoughtsTokenCount": 284 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Tue, 30 Dec 2025 17:03:30 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2286", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758acm2M9_RjMcPqaaymQU" } ] \ No newline at end of file diff --git a/payloads/snapshots/multimodalRequest/google/response.json b/payloads/snapshots/multimodalRequest/google/response.json index c4e2ad10..7b6778be 100644 --- a/payloads/snapshots/multimodalRequest/google/response.json +++ b/payloads/snapshots/multimodalRequest/google/response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Tue, 30 Dec 2025 17:03:30 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2242", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "The image is completely black. There are no discernible objects" + "text": "The image is **completely black**.\n\nThere are no discernible" } ], "role": "model" @@ -28,11 +13,9 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "4gVUaZ7_BaCkjMcP6Pm50QM", "usageMetadata": { "promptTokenCount": 267, - "candidatesTokenCount": 11, + "candidatesTokenCount": 12, "totalTokenCount": 563, "promptTokensDetails": [ { @@ -44,6 +27,8 @@ "tokenCount": 258 } ], - "thoughtsTokenCount": 285 - } + "thoughtsTokenCount": 284 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "ib58aYqFGt7TjMcP0b7jyA0" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequest/google/followup-request.json b/payloads/snapshots/reasoningRequest/google/followup-request.json index 6949bf1d..9015ef63 100644 --- a/payloads/snapshots/reasoningRequest/google/followup-request.json +++ b/payloads/snapshots/reasoningRequest/google/followup-request.json @@ -11,7 +11,7 @@ { "parts": [ { - "text": "To find the average speed, we need to calculate the total distance traveled and the total time taken. The formula for average speed is:\n\n**Average Speed = Total Distance / Total Time**\n\nLet's break down the train's journey into two parts:\n\n**Part 1: First Leg of the Journey**\n1. **Speed:** 60 mph\n2. **Time:** 2 hours\n3. **Calculate Distance for Part 1:**\n * Distance = Speed × Time\n * Distance_1 = 60 mph × 2 hours = 120 miles\n\n**Part 2: Second Leg of the Journey**\n1. **Speed:** 80 mph\n2. **Time:** 1 hour\n3. **Calculate Distance for Part 2:**\n * Distance = Speed × Time\n * Distance_2 = 80 mph × 1 hour = 80 miles\n\n**Now, let's calculate the Total Distance and Total Time:**\n\n4. **Calculate Total Distance:**\n * Total Distance = Distance_1 + Distance_2\n * Total Distance = 120 miles + 80 miles = 200 miles\n\n5. **Calculate Total Time:**\n * Total Time = Time_1 + Time_2\n * Total Time = 2 hours + 1 hour = 3 hours\n\n**Finally, calculate the Average Speed:**\n\n6. **Average Speed = Total Distance / Total Time**\n * Average Speed = 200 miles / 3 hours\n * Average Speed ≈ 66.67 mph\n\nThe average speed of the train is **66 2/3 mph** or approximately **66.67 mph**." + "text": "To calculate the average speed, we need to find the total distance traveled and the total time taken. The formula for average speed is:\n\n**Average Speed = Total Distance / Total Time**\n\nLet's break down the problem:\n\n**Step 1: Calculate the distance for the first part of the journey.**\n* Speed = 60 mph\n* Time = 2 hours\n* Distance = Speed × Time\n* Distance₁ = 60 mph × 2 hours = 120 miles\n\n**Step 2: Calculate the distance for the second part of the journey.**\n* Speed = 80 mph\n* Time = 1 hour\n* Distance = Speed × Time\n* Distance₂ = 80 mph × 1 hour = 80 miles\n\n**Step 3: Calculate the total distance traveled.**\n* Total Distance = Distance₁ + Distance₂\n* Total Distance = 120 miles + 80 miles = 200 miles\n\n**Step 4: Calculate the total time taken.**\n* Total Time = Time₁ + Time₂\n* Total Time = 2 hours + 1 hour = 3 hours\n\n**Step 5: Calculate the average speed.**\n* Average Speed = Total Distance / Total Time\n* Average Speed = 200 miles / 3 hours\n* Average Speed = 66.666... mph\n\n**Answer:**\nThe average speed of the train is **66 and 2/3 mph** (or approximately 66.67 mph)." } ], "role": "model" diff --git a/payloads/snapshots/reasoningRequest/google/followup-response-streaming.json b/payloads/snapshots/reasoningRequest/google/followup-response-streaming.json index 46e0eed6..36e5061e 100644 --- a/payloads/snapshots/reasoningRequest/google/followup-response-streaming.json +++ b/payloads/snapshots/reasoningRequest/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "That depends on what you're interested in! Since we just solved a math problem, here are a few ideas related to that, or you can tell me if you'd like to do something else entirely:\n\n**Related to the Math" + "text": "Great! Now that we've solved that" } ], "role": "model" @@ -13,35 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 49, - "totalTokenCount": 1237, + "promptTokenCount": 385, + "candidatesTokenCount": 9, + "totalTokenCount": 1192, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" }, { "candidates": [ @@ -49,7 +34,7 @@ "content": { "parts": [ { - "text": " Problem:**\n\n1. **Try another similar word problem:** We can practice another average speed problem, perhaps with slightly different numbers or more segments to the journey.\n2. **Explore a different type of average problem:** We could look" + "text": " one, here are a few options for what you could do next, depending on what you're trying to achieve:\n\n1. **Try another practice problem:** I can give you a similar average speed problem (maybe a bit trick" } ], "role": "model" @@ -57,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 98, - "totalTokenCount": 1286, + "promptTokenCount": 385, + "candidatesTokenCount": 57, + "totalTokenCount": 1240, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" }, { "candidates": [ @@ -93,7 +63,7 @@ "content": { "parts": [ { - "text": " at average temperature, average scores, or weighted averages.\n3. **Dive deeper into the concept:** Do you want to understand *why* we calculate average speed this way (and why it's not just the average of the speeds)?\n" + "text": "ier) to reinforce your understanding.\n2. **Ask a question about this problem or concept:** Is there anything that was unclear, or anything you'd like to explore further about average speed?\n3. **Explore a related concept" } ], "role": "model" @@ -101,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 148, - "totalTokenCount": 1336, + "promptTokenCount": 385, + "candidatesTokenCount": 107, + "totalTokenCount": 1290, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" }, { "candidates": [ @@ -137,7 +92,7 @@ "content": { "parts": [ { - "text": "4. **Create your own word problem:** You could try to make up a similar problem and then solve it.\n5. **Review the steps:** Are there any parts of the solution that were unclear, or that you'd" + "text": ":** We could look at problems involving relative speed, distance-time graphs, or how to handle situations where units need to be converted (e.g., minutes to hours).\n4. **Create your own problem:** You could try" } ], "role": "model" @@ -145,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 197, - "totalTokenCount": 1385, + "promptTokenCount": 385, + "candidatesTokenCount": 155, + "totalTokenCount": 1338, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" }, { "candidates": [ @@ -181,7 +121,7 @@ "content": { "parts": [ { - "text": " like to go over again?\n\n**Other Options:**\n\n6. **Switch to a different math topic:** Are you working on algebra, geometry, percentages, fractions, or something else?\n7. **Ask a general question:** About" + "text": " to make up an average speed problem for me to solve (or for you to solve!).\n5. **Move on to a different topic:** If you feel confident with this, we can shift to something else entirely.\n\nJust let" } ], "role": "model" @@ -189,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 247, - "totalTokenCount": 1435, + "promptTokenCount": 385, + "candidatesTokenCount": 203, + "totalTokenCount": 1386, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" }, { "candidates": [ @@ -225,7 +150,7 @@ "content": { "parts": [ { - "text": " anything you're curious about!\n8. **Tell me a story or ask for a fun fact.**\n\nJust let me know what sounds good to you!" + "text": " me know what sounds best to you!" } ], "role": "model" @@ -234,34 +159,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IvJHaZ-rMtLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 281, - "totalTokenCount": 1469, + "promptTokenCount": 385, + "candidatesTokenCount": 211, + "totalTokenCount": 1394, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 757 + "thoughtsTokenCount": 798 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:06 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4820", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58aZbbBdfQjMcPsbKvkA0" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequest/google/followup-response.json b/payloads/snapshots/reasoningRequest/google/followup-response.json index 4f2e1416..749155f2 100644 --- a/payloads/snapshots/reasoningRequest/google/followup-response.json +++ b/payloads/snapshots/reasoningRequest/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:07 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=6226", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "Great question! What you should do next depends on what you'd like to achieve. Here are a few options:\n\n1. **Practice another similar problem:** I can generate a new average speed problem for you, perhaps with slightly different numbers or a variation in the scenario. This helps solidify your understanding.\n * *You could say:* \"Give me another average speed problem.\" or \"What if the train traveled for different times?\"\n\n2. **Explore the concept of average speed more deeply:** We can discuss *why* the average speed isn't simply the average of the two speeds (60 mph and 80 mph). It's a common misconception!\n * *You could say:* \"Why isn't the average speed just (60 + 80) / 2?\" or \"Explain the concept of weighted average in relation to this problem.\"\n\n3. **Try a different type of distance, rate, time problem:** There are many variations, like finding the time given distance and speed, or finding the speed given distance and time, or even more complex scenarios with two objects moving towards or away from each other.\n * *You could say:* \"Give me a problem where I need to find the time.\" or \"Can we do a problem with two trains?\"\n\n4. **Move on to a different math topic:** If you're confident with average speed, you can ask me for help with any other math concept or problem you're working on.\n * *You could say:* \"Let's do a problem about fractions.\" or \"Can you help me with algebra?\"\n\nJust let me know what you'd prefer!" + "text": "That depends on what you'd like to do next! We've successfully solved the average speed problem.\n\nHere are a few options, depending on your goal:\n\n1. **Review the Solution:** Do you want me to explain any step again, or clarify why we did something in the problem?\n2. **Try Another Problem:** Would you like to practice with a similar average speed problem, or perhaps a different type of math problem?\n3. **Learn More:** Are you interested in understanding more about average speed, like common pitfalls or variations of these problems?\n4. **Move on:** If you're ready, you can simply ask me another question or give me a new task.\n\nJust let me know what you have in mind!" } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "J_JHaeCdM6WujrEP_5OJuQk", "usageMetadata": { - "promptTokenCount": 431, - "candidatesTokenCount": 354, - "totalTokenCount": 1703, + "promptTokenCount": 385, + "candidatesTokenCount": 159, + "totalTokenCount": 1214, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 431 + "tokenCount": 385 } ], - "thoughtsTokenCount": 918 - } + "thoughtsTokenCount": 670 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "j758aa6mL4PRjMcPpvWUmAw" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequest/google/response-streaming.json b/payloads/snapshots/reasoningRequest/google/response-streaming.json index 084f009c..3915badf 100644 --- a/payloads/snapshots/reasoningRequest/google/response-streaming.json +++ b/payloads/snapshots/reasoningRequest/google/response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "To find the average speed, we need to calculate the **total distance traveled** and divide it by the **total time taken**.\n\nHere's how to solve it step-by-step:\n\n**Step 1: Calculate the" + "text": "To" } ], "role": "model" @@ -13,35 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 48, - "totalTokenCount": 829, + "candidatesTokenCount": 1, + "totalTokenCount": 644, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -49,7 +34,7 @@ "content": { "parts": [ { - "text": " distance traveled in the first part of the journey.**\n* Speed = 60 mph\n* Time = 2 hours\n* Distance = Speed × Time\n* Distance 1 = 60 mph × " + "text": " find the average speed, we need to calculate the total distance traveled and the total time taken. The formula for average speed is:\n\nAverage Speed = Total Distance / Total Time\n\nLet's break down the problem:\n\n**Step 1: Calculate" } ], "role": "model" @@ -57,35 +42,49 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 95, - "totalTokenCount": 876, + "candidatesTokenCount": 52, + "totalTokenCount": 695, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " the distance traveled in the first part of the journey.**\n* Speed = 60 mph\n* Time = 2 hours\n* Distance = Speed × Time\n* Distance 1 = 60 mph × " + } + ], + "role": "model" + }, + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 37, + "candidatesTokenCount": 100, + "totalTokenCount": 743, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 37 + } + ], + "thoughtsTokenCount": 606 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -101,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 143, - "totalTokenCount": 924, + "candidatesTokenCount": 148, + "totalTokenCount": 791, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -145,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 191, - "totalTokenCount": 972, + "candidatesTokenCount": 196, + "totalTokenCount": 839, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -189,35 +158,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 237, - "totalTokenCount": 1018, + "candidatesTokenCount": 242, + "totalTokenCount": 885, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -233,35 +187,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 285, - "totalTokenCount": 1066, + "candidatesTokenCount": 290, + "totalTokenCount": 933, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" }, { "candidates": [ @@ -269,7 +208,7 @@ "content": { "parts": [ { - "text": " miles / 3 hours\n* Average Speed $\\approx$ 66.67 mph\n\nThe average speed of the train is approximately **66.67 mph**." + "text": " miles / 3 hours\n* Average Speed ≈ 66.67 mph\n\nThe average speed of the train is **66.67 mph** (approximately)." } ], "role": "model" @@ -278,34 +217,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZiyFaLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 322, - "totalTokenCount": 1103, + "candidatesTokenCount": 327, + "totalTokenCount": 970, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 744 + "thoughtsTokenCount": 606 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3687", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aZXdI_zSjMcPrcSwgAQ" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequest/google/response.json b/payloads/snapshots/reasoningRequest/google/response.json index 39e6a983..19206adf 100644 --- a/payloads/snapshots/reasoningRequest/google/response.json +++ b/payloads/snapshots/reasoningRequest/google/response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:00 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=3777", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "To find the average speed, we need to calculate the total distance traveled and the total time taken. The formula for average speed is:\n\n**Average Speed = Total Distance / Total Time**\n\nLet's break down the train's journey into two parts:\n\n**Part 1: First Leg of the Journey**\n1. **Speed:** 60 mph\n2. **Time:** 2 hours\n3. **Calculate Distance for Part 1:**\n * Distance = Speed × Time\n * Distance_1 = 60 mph × 2 hours = 120 miles\n\n**Part 2: Second Leg of the Journey**\n1. **Speed:** 80 mph\n2. **Time:** 1 hour\n3. **Calculate Distance for Part 2:**\n * Distance = Speed × Time\n * Distance_2 = 80 mph × 1 hour = 80 miles\n\n**Now, let's calculate the Total Distance and Total Time:**\n\n4. **Calculate Total Distance:**\n * Total Distance = Distance_1 + Distance_2\n * Total Distance = 120 miles + 80 miles = 200 miles\n\n5. **Calculate Total Time:**\n * Total Time = Time_1 + Time_2\n * Total Time = 2 hours + 1 hour = 3 hours\n\n**Finally, calculate the Average Speed:**\n\n6. **Average Speed = Total Distance / Total Time**\n * Average Speed = 200 miles / 3 hours\n * Average Speed ≈ 66.67 mph\n\nThe average speed of the train is **66 2/3 mph** or approximately **66.67 mph**." + "text": "To calculate the average speed, we need to find the total distance traveled and the total time taken. The formula for average speed is:\n\n**Average Speed = Total Distance / Total Time**\n\nLet's break down the problem:\n\n**Step 1: Calculate the distance for the first part of the journey.**\n* Speed = 60 mph\n* Time = 2 hours\n* Distance = Speed × Time\n* Distance₁ = 60 mph × 2 hours = 120 miles\n\n**Step 2: Calculate the distance for the second part of the journey.**\n* Speed = 80 mph\n* Time = 1 hour\n* Distance = Speed × Time\n* Distance₂ = 80 mph × 1 hour = 80 miles\n\n**Step 3: Calculate the total distance traveled.**\n* Total Distance = Distance₁ + Distance₂\n* Total Distance = 120 miles + 80 miles = 200 miles\n\n**Step 4: Calculate the total time taken.**\n* Total Time = Time₁ + Time₂\n* Total Time = 2 hours + 1 hour = 3 hours\n\n**Step 5: Calculate the average speed.**\n* Average Speed = Total Distance / Total Time\n* Average Speed = 200 miles / 3 hours\n* Average Speed = 66.666... mph\n\n**Answer:**\nThe average speed of the train is **66 and 2/3 mph** (or approximately 66.67 mph)." } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IPJHafrELvDujrEP3K3RuAs", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 386, - "totalTokenCount": 946, + "candidatesTokenCount": 340, + "totalTokenCount": 961, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 37 } ], - "thoughtsTokenCount": 523 - } + "thoughtsTokenCount": 584 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "i758ae26J4u-jMcPvN7c-QE" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/followup-request.json b/payloads/snapshots/reasoningRequestTruncated/google/followup-request.json index 7ca4c3fa..9e6aaca7 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/followup-request.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/followup-request.json @@ -11,7 +11,7 @@ { "parts": [ { - "text": "Let'" + "text": "Here's" } ], "role": "model" @@ -25,7 +25,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 100 } } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/followup-response-streaming.json b/payloads/snapshots/reasoningRequestTruncated/google/followup-response-streaming.json index 83e05ea1..11667ec2 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/followup-response-streaming.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "Okay" + "text": "Okay," } ], "role": "model" @@ -14,34 +14,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HvJHafriCdmG-8YPxcjikAQ", "usageMetadata": { - "promptTokenCount": 47, - "candidatesTokenCount": 1, - "totalTokenCount": 143, + "promptTokenCount": 48, + "candidatesTokenCount": 2, + "totalTokenCount": 144, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 47 + "tokenCount": 48 } ], - "thoughtsTokenCount": 95 + "thoughtsTokenCount": 94 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:58 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=725", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58acboG-KVjMcP1MG6kA8" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/followup-response.json b/payloads/snapshots/reasoningRequestTruncated/google/followup-response.json index 7f763ca9..d46568d3 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/followup-response.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:11:58 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=817", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "Okay, great!" + "text": "Okay," } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HvJHae-WLJ2s-8YP2MqhiQY", "usageMetadata": { - "promptTokenCount": 47, - "candidatesTokenCount": 4, - "totalTokenCount": 143, + "promptTokenCount": 48, + "candidatesTokenCount": 2, + "totalTokenCount": 144, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 47 + "tokenCount": 48 } ], - "thoughtsTokenCount": 92 - } + "thoughtsTokenCount": 94 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58adLsMr_yjMcPg_a4gA0" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/request.json b/payloads/snapshots/reasoningRequestTruncated/google/request.json index 5b886476..f1abcc1b 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/request.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/request.json @@ -9,7 +9,7 @@ ] } ], - "config": { + "generationConfig": { "maxOutputTokens": 100 } } \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/response-streaming.json b/payloads/snapshots/reasoningRequestTruncated/google/response-streaming.json index 53715911..13a4f774 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/response-streaming.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "Let's" + "text": "Let" } ], "role": "model" @@ -14,11 +14,9 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaYbyGoOkjrEPhfG76Ac", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 3, + "candidatesTokenCount": 1, "totalTokenCount": 133, "promptTokensDetails": [ { @@ -26,22 +24,9 @@ "tokenCount": 37 } ], - "thoughtsTokenCount": 93 + "thoughtsTokenCount": 95 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=849", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaa3J_WSjMcPprGIqAo" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningRequestTruncated/google/response.json b/payloads/snapshots/reasoningRequestTruncated/google/response.json index 891dfa3c..cf331ec1 100644 --- a/payloads/snapshots/reasoningRequestTruncated/google/response.json +++ b/payloads/snapshots/reasoningRequestTruncated/google/response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=765", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "Let'" + "text": "Here's" } ], "role": "model" @@ -28,11 +13,9 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaZzTLLyH-8YP4Y-WkQk", "usageMetadata": { "promptTokenCount": 37, - "candidatesTokenCount": 2, + "candidatesTokenCount": 3, "totalTokenCount": 133, "promptTokensDetails": [ { @@ -40,6 +23,8 @@ "tokenCount": 37 } ], - "thoughtsTokenCount": 94 - } + "thoughtsTokenCount": 93 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58af2TBvDWjMcPzOq6-Qc" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningWithOutput/google/followup-request.json b/payloads/snapshots/reasoningWithOutput/google/followup-request.json index d20c236a..ff4b1cf5 100644 --- a/payloads/snapshots/reasoningWithOutput/google/followup-request.json +++ b/payloads/snapshots/reasoningWithOutput/google/followup-request.json @@ -11,7 +11,7 @@ { "parts": [ { - "text": "The sky is most commonly **blue** during the day.\n\nThis is due to a phenomenon called **Rayleigh scattering**. Sunlight contains all the colors of the rainbow. When sunlight enters Earth's atmosphere, the shorter wavelengths (like blue and violet) are scattered more efficiently by the tiny nitrogen and oxygen molecules than the longer wavelengths (like red and yellow). Because blue light is scattered in all directions, it makes the sky appear blue to our eyes.\n\nHowever, the sky's color can vary greatly depending on several factors:\n\n* **Sunrise and Sunset:** It often appears **red, orange, pink, or purple**. At these times, the sun's light has to travel through more of the atmosphere, scattering away most of the blue light, leaving the longer red and yellow wavelengths to reach our eyes.\n* **Clouds:** On cloudy or stormy days, the sky can appear **grey** or even **white**.\n* **Night:** At night, without the sun's light, the sky appears **black** (though we can see stars).\n* **Pollution/Haze:** In some conditions, pollution or haze can give the sky a brownish, yellowish, or dull white tint.\n\nSo, while **blue** is the most typical answer, it's definitely not the only color the sky can be!" + "text": "Most commonly, the sky is **blue**.\n\nThis is due to a phenomenon called **Rayleigh scattering**. Sunlight, which is made up of all the colors of the rainbow, enters Earth's atmosphere. The tiny molecules of nitrogen and oxygen in our atmosphere scatter shorter-wavelength colors (like blue and violet) more efficiently than longer-wavelength colors (like red and yellow). Because blue light is scattered in all directions, it's the color we see predominantly when we look at the sky. Our eyes are also more sensitive to blue light than violet.\n\nHowever, the sky's color can vary greatly depending on several factors:\n\n* **Sunrise and Sunset:** At these times, the sun's light has to travel through more of the atmosphere. Most of the blue light is scattered away, allowing the reds, oranges, and pinks to pass through more directly to our eyes.\n* **Overcast/Stormy Weather:** When there are many clouds, especially thick ones, the sky often appears **grey** or even a dark, muted blue.\n* **Pollution/Dust:** High levels of aerosols, dust, or pollution can scatter light differently, sometimes leading to more vibrant reds/oranges, or making the sky appear hazy or yellowish.\n* **Time of Day:** The blue can range from a light, pale blue at midday to a deeper, more saturated blue closer to twilight.\n* **Atmospheric Conditions:** Factors like humidity and the size of water droplets can also influence the specific shade of blue or other colors seen.\n\nSo, while **blue** is the default and most common answer, the sky can be a beautiful spectrum of colors!" } ], "role": "model" diff --git a/payloads/snapshots/reasoningWithOutput/google/followup-response-streaming.json b/payloads/snapshots/reasoningWithOutput/google/followup-response-streaming.json index ecf132aa..6cb2a6c4 100644 --- a/payloads/snapshots/reasoningWithOutput/google/followup-response-streaming.json +++ b/payloads/snapshots/reasoningWithOutput/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "That's a fun, open-ended question! To give you the best suggestion, I need a little more context about what you're looking for. Tell me:\n\n1. **What kind of mood are you in?" + "text": "That depends entirely on what you're looking for! To give you" } ], "role": "model" @@ -13,79 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 48, - "totalTokenCount": 1203, + "promptTokenCount": 360, + "candidatesTokenCount": 14, + "totalTokenCount": 1665, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } - }, - { - "candidates": [ - { - "content": { - "parts": [ - { - "text": "** (e.g., bored, energetic, tired, stressed, creative, social, hungry, curious)\n2. **What's your general goal right now?** (e.g., relax, be productive, learn something" - } - ], - "role": "model" - }, - "index": 0 - } - ], "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", - "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 97, - "totalTokenCount": 1252, - "promptTokensDetails": [ - { - "modality": "TEXT", - "tokenCount": 291 - } - ], - "thoughtsTokenCount": 864 - }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -93,7 +34,7 @@ "content": { "parts": [ { - "text": " new, have fun, connect with someone)\n3. **What resources do you have available?** (e.g., are you at home, outside, with friends, alone, near a computer, have art supplies, etc.)" + "text": " the best suggestions, I need a little more context. Tell me:\n\n* **What were you just doing?** (This helps me understand your starting point.)\n* **What kind of mood are you in?** (" } ], "role": "model" @@ -101,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 146, - "totalTokenCount": 1301, + "promptTokenCount": 360, + "candidatesTokenCount": 62, + "totalTokenCount": 1713, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -137,7 +63,7 @@ "content": { "parts": [ { - "text": "\n4. **How much time do you have?** (e.g., 5 minutes, an hour, all afternoon, the whole evening)\n\nIn the meantime, here are some general categories of things you could do," + "text": "Productive, relaxed, creative, bored, stressed, energetic?)\n* **How much time do you have?** (5 minutes, an hour, the whole day?)\n* **What kind of energy do you have?" } ], "role": "model" @@ -145,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 193, - "totalTokenCount": 1348, + "promptTokenCount": 360, + "candidatesTokenCount": 110, + "totalTokenCount": 1761, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -181,7 +92,7 @@ "content": { "parts": [ { - "text": " pick one that resonates:\n\n**For Relaxation & Self-Care:**\n* Take a few deep breaths or meditate for a few minutes.\n* Listen to some calming music or a podcast.\n* Read a book or" + "text": "** (High, low, mentally drained, physically restless?)\n* **Are you looking for something productive, relaxing, entertaining, active, social, or creative?**\n* **Are you indoors or outdoors?**\n* **" } ], "role": "model" @@ -189,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 241, - "totalTokenCount": 1396, + "promptTokenCount": 360, + "candidatesTokenCount": 160, + "totalTokenCount": 1811, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -225,7 +121,7 @@ "content": { "parts": [ { - "text": " an interesting article.\n* Make a cup of tea or coffee.\n* Take a short nap or rest your eyes.\n* Stretch or do some gentle yoga.\n\n**For Productivity & Organization:**\n* Make" + "text": "Do you have any specific goals you're working towards?**\n\nIn the meantime, here are some general ideas, depending on what you're looking for:\n\n**If you want to be productive:**\n* Tackle a" } ], "role": "model" @@ -233,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 289, - "totalTokenCount": 1444, + "promptTokenCount": 360, + "candidatesTokenCount": 208, + "totalTokenCount": 1859, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -269,7 +150,7 @@ "content": { "parts": [ { - "text": " a to-do list for the rest of your day/week.\n* Tidy up a small area (your desk, a drawer, the kitchen counter).\n* Answer any pending emails or messages.\n* Plan" + "text": " small chore (dishes, laundry, tidy a space).\n* Plan your day, week, or upcoming tasks.\n* Learn something new (read an article, watch an educational video).\n* Respond to emails or messages you" } ], "role": "model" @@ -277,35 +158,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 337, - "totalTokenCount": 1492, + "promptTokenCount": 360, + "candidatesTokenCount": 258, + "totalTokenCount": 1909, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -313,7 +179,7 @@ "content": { "parts": [ { - "text": " your next meal or grocery list.\n* Do a quick chore you've been putting off.\n\n**For Learning & Growth:**\n* Watch a documentary or an educational YouTube video.\n* Learn a few words in a new" + "text": "'ve been putting off.\n* Organize your digital files or desktop.\n\n**If you want to relax/recharge:**\n* Read a book or an interesting article.\n* Listen to music, a podcast," } ], "role": "model" @@ -321,35 +187,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 387, - "totalTokenCount": 1542, + "promptTokenCount": 360, + "candidatesTokenCount": 307, + "totalTokenCount": 1958, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -357,7 +208,7 @@ "content": { "parts": [ { - "text": " language.\n* Read about a topic you're curious about.\n* Try out a new recipe.\n* Practice a skill you're trying to develop.\n\n**For Fun & Creativity:**\n* Listen" + "text": " or an audiobook.\n* Take a short walk, even just around the block.\n* Meditate or do some deep breathing exercises.\n* Watch a short video or episode of a show.\n* Make a warm drink (" } ], "role": "model" @@ -365,35 +216,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 435, - "totalTokenCount": 1590, + "promptTokenCount": 360, + "candidatesTokenCount": 358, + "totalTokenCount": 2009, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -401,7 +237,7 @@ "content": { "parts": [ { - "text": " to your favorite music and dance.\n* Draw, doodle, or write something.\n* Play a game (video game, board game, puzzle).\n* Watch an episode of a show or a movie.\n* " + "text": "tea, coffee, hot chocolate).\n* Take a power nap.\n\n**If you want to be creative:**\n* Journal or free-write.\n* Doodle, sketch, or try a quick art prompt.\n* " } ], "role": "model" @@ -409,35 +245,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 483, - "totalTokenCount": 1638, + "promptTokenCount": 360, + "candidatesTokenCount": 408, + "totalTokenCount": 2059, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -445,7 +266,7 @@ "content": { "parts": [ { - "text": "Do something artistic (paint, knit, play an instrument).\n\n**For Physical Activity & Outdoors:**\n* Go for a short walk outside.\n* Do some quick exercises (jumping jacks, push-ups).\n* Step" + "text": "Listen to music and imagine scenarios or stories.\n* Brainstorm new ideas for a project or hobby.\n* Try a simple craft.\n\n**If you want to be active:**\n* Stretch or do some light exercise" } ], "role": "model" @@ -453,35 +274,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 532, - "totalTokenCount": 1687, + "promptTokenCount": 360, + "candidatesTokenCount": 456, + "totalTokenCount": 2107, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -489,7 +295,7 @@ "content": { "parts": [ { - "text": " outside and get some fresh air.\n* Do some gardening if you have a garden.\n\n**For Social Connection:**\n* Text or call a friend or family member.\n* Plan a future get-together.\n\nOnce you give" + "text": ".\n* Go for a walk, run, or bike ride.\n* Do some quick bodyweight exercises.\n\n**If you want to connect:**\n* Call or text a friend or family member.\n* Engage" } ], "role": "model" @@ -497,35 +303,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 583, - "totalTokenCount": 1738, + "promptTokenCount": 360, + "candidatesTokenCount": 506, + "totalTokenCount": 2157, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" }, { "candidates": [ @@ -533,7 +324,7 @@ "content": { "parts": [ { - "text": " me a bit more info, I can give you a more tailored suggestion!" + "text": " in an online community or forum related to your interests.\n\nLet me know more about what you're looking for, and I can give you more tailored ideas!" } ], "role": "model" @@ -542,34 +333,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IfJHaZfAFuGxjrEP66Ww8Ao", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 598, - "totalTokenCount": 1753, + "promptTokenCount": 360, + "candidatesTokenCount": 539, + "totalTokenCount": 2190, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 864 + "thoughtsTokenCount": 1291 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:05 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4642", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "jL58abarEM7ojMcPsr_bqA4" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningWithOutput/google/followup-response.json b/payloads/snapshots/reasoningWithOutput/google/followup-response.json index b31debdc..257e805b 100644 --- a/payloads/snapshots/reasoningWithOutput/google/followup-response.json +++ b/payloads/snapshots/reasoningWithOutput/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:10 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=9325", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "That's a fantastic, open-ended question! To give you the best advice, I need a little more context. However, I can offer some general frameworks and suggestions.\n\nTo figure out \"what you should do next,\" consider these factors:\n\n**1. Your Current State:**\n* **Energy Level:** Do you feel energized, tired, or somewhere in between?\n* **Mood:** Are you feeling productive, bored, stressed, happy, restless, relaxed?\n* **Time Available:** Do you have 5 minutes, an hour, an afternoon, or the whole day?\n* **Location:** Are you at home, work, outside, with others, alone?\n\n**2. Your Goals & Priorities:**\n* **Obligations:** Is there anything you *have* to do (work, chores, appointments)?\n* **Urgency:** What's the most pressing thing on your plate?\n* **Long-Term Goals:** Is there anything you can do that moves you closer to a personal or professional goal?\n* **What would make you feel accomplished/happy/relaxed?**\n\n---\n\n**Based on those considerations, here are some broad categories of things you could do:**\n\n**A. If you need to be PRODUCTIVE/ACCOMPLISH Something:**\n* **Work/Study:** Tackle a pending task, reply to emails, organize your digital files.\n* **Household Chores:** Do a quick tidy-up, do laundry, plan your meals for the week.\n* **Planning:** Make a to-do list, plan your next day/week, set some goals.\n* **Errands:** Pay a bill, make an appointment, pick up groceries.\n\n**B. If you need to RELAX/RECHARGE:**\n* **Mindfulness/Meditation:** Do a short guided meditation, practice deep breathing.\n* **Physical Relaxation:** Take a warm bath/shower, stretch, lie down for a bit.\n* **Sensory Input:** Listen to calming music, light a candle, enjoy a warm beverage.\n* **Nature:** Look out a window, step outside for a breath of fresh air, water plants.\n\n**C. If you need to be ACTIVE/MOVE:**\n* **Exercise:** Go for a walk, do some quick stretches, dance to music, do a short workout.\n* **Active Chores:** Garden, clean a room thoroughly, rearrange furniture.\n* **Outdoor Activity:** Go for a bike ride, play a sport (if you have the means).\n\n**D. If you need to LEARN/GROW:**\n* **Read:** Pick up a book, read an article, browse a topic of interest online.\n* **Skill Development:** Practice a hobby, learn a new word, watch a tutorial video.\n* **Listen:** Listen to a podcast, an audiobook, or a TED Talk.\n\n**E. If you need to be CREATIVE/ENTERTAINED:**\n* **Hobbies:** Engage in a craft, draw, write, play a musical instrument.\n* **Entertainment:** Watch a short video, listen to music, play a game, watch an episode of a show.\n* **Cook/Bake:** Try a new recipe or make a favorite comfort food.\n\n**F. If you need to CONNECT/SOCIALIZE:**\n* **Reach Out:** Text a friend, call a family member, send an email.\n* **Help Others:** Do something kind for someone, offer assistance.\n\n---\n\n**My Best Recommendation Without Context:**\nIf you're truly stumped, try doing **one small, easy thing** that you've been putting off. Even a 5-minute task can create momentum and a sense of accomplishment.\n\nSo, tell me more, or pick one of the categories above that resonates with you right now!" + "text": "That's a very open-ended question! To give you the best suggestion, I need a little more context. Tell me:\n\n* **What were you just doing?** (e.g., working, relaxing, thinking, looking at the sky!)\n* **How are you feeling?** (e.g., bored, energetic, tired, stressed, curious)\n* **What kind of environment are you in?** (e.g., at home, at work, outside, on public transport)\n* **How much time do you have?** (e.g., 5 minutes, an hour, the rest of the day)\n* **What are your general interests?** (e.g., reading, gaming, creating, learning, physical activity)\n* **Are you trying to be productive, relax, or have fun?**\n\nIn the meantime, here are some general suggestions based on different possibilities:\n\n**If you want to be productive:**\n1. **Tackle a small chore:** Do dishes, fold laundry, clear your desk.\n2. **Organize something:** A drawer, your digital files, your to-do list.\n3. **Plan your next steps:** For a project, your day, or even your next meal.\n4. **Learn something new:** Read an article, watch an educational video, practice a new skill.\n5. **Respond to messages:** Emails, texts, social media.\n\n**If you want to relax or unwind:**\n1. **Take a short break:** Step away from your screen, stretch, look out a window.\n2. **Listen to music or a podcast:** Put on something you enjoy.\n3. **Read a book or article:** Escape into a story or learn something interesting.\n4. **Meditate or practice mindfulness:** Even 5 minutes can help clear your head.\n5. **Have a comforting drink:** Tea, coffee, or water.\n\n**If you want to be active or get fresh air:**\n1. **Go for a walk:** Even a short stroll can boost your mood.\n2. **Do some stretches or light exercise:** Get your blood flowing.\n3. **Step outside:** Get some natural light or fresh air.\n\n**If you're feeling creative or curious:**\n1. **Doodle or sketch:** Let your mind wander.\n2. **Write down ideas:** For a story, a project, or just a list of thoughts.\n3. **Explore a new topic online:** Dive into a Wikipedia rabbit hole.\n4. **Ask me another question!**\n\n**If you want to connect with others:**\n1. **Text or call a friend or family member:** Just to say hello.\n2. **Check in on someone:** See how they're doing.\n\nTell me more, and I can give you a more tailored suggestion!" } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "KvJHaaOzGKua-8YPlJ7rsAM", "usageMetadata": { - "promptTokenCount": 291, - "candidatesTokenCount": 822, - "totalTokenCount": 2255, + "promptTokenCount": 360, + "candidatesTokenCount": 626, + "totalTokenCount": 2039, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 291 + "tokenCount": 360 } ], - "thoughtsTokenCount": 1142 - } + "thoughtsTokenCount": 1053 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "lL58af-FFIuXjMcPgL62kA4" } \ No newline at end of file diff --git a/payloads/snapshots/reasoningWithOutput/google/response-streaming.json b/payloads/snapshots/reasoningWithOutput/google/response-streaming.json index 159f56c6..7327b982 100644 --- a/payloads/snapshots/reasoningWithOutput/google/response-streaming.json +++ b/payloads/snapshots/reasoningWithOutput/google/response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "The sky is most commonly **blue**.\n\nHowever, its color can change dramatically depending on the time of day, weather, and atmospheric conditions:\n\n* **Blue:** This is due to Rayleigh scattering. Sunlight contains all colors, but when it" + "text": "The sky is most commonly **blue** during the day, especially on" } ], "role": "model" @@ -13,79 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 50, - "totalTokenCount": 566, + "candidatesTokenCount": 14, + "totalTokenCount": 362, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } - }, - { - "candidates": [ - { - "content": { - "parts": [ - { - "text": " enters Earth's atmosphere, blue light (which has shorter wavelengths) is scattered more efficiently by the tiny nitrogen and oxygen molecules. This scattered blue light reaches our eyes from all directions, making the sky appear blue.\n* **Red," - } - ], - "role": "model" - }, - "index": 0 - } - ], "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", - "usageMetadata": { - "promptTokenCount": 7, - "candidatesTokenCount": 99, - "totalTokenCount": 615, - "promptTokensDetails": [ - { - "modality": "TEXT", - "tokenCount": 7 - } - ], - "thoughtsTokenCount": 509 - }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "responseId": "h758aaqdJb-NjMcP-f7CwAY" }, { "candidates": [ @@ -93,7 +34,7 @@ "content": { "parts": [ { - "text": " Orange, Pink, Purple:** At **sunrise and sunset**, the sun's light has to travel through more of the atmosphere to reach our eyes. Most of the blue and green light gets scattered away, leaving the longer-wavelength red," + "text": " a clear day.\n\nHowever, the color of the sky can vary significantly depending on several factors:\n\n* **Time of day:** At **sunrise and sunset**, the sky often appears in shades of **red, orange, pink, and purple**." } ], "role": "model" @@ -101,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 147, - "totalTokenCount": 663, + "candidatesTokenCount": 65, + "totalTokenCount": 413, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaqdJb-NjMcP-f7CwAY" }, { "candidates": [ @@ -137,7 +63,7 @@ "content": { "parts": [ { - "text": " orange, and yellow light to be seen. Clouds can also reflect these colors, creating stunning pinks and purples.\n* **Grey/Dark Blue:** When it's **cloudy or stormy**, clouds block and reflect sunlight, making" + "text": " This is because the sun's light has to travel through more of Earth's atmosphere, scattering away most of the blue light and allowing the longer-wavelength colors (reds, oranges) to reach our eyes.\n* **Weather" } ], "role": "model" @@ -145,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 197, - "totalTokenCount": 713, + "candidatesTokenCount": 114, + "totalTokenCount": 462, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaqdJb-NjMcP-f7CwAY" }, { "candidates": [ @@ -181,7 +92,7 @@ "content": { "parts": [ { - "text": " the sky appear grey or a very dark, ominous blue.\n* **Black:** At **night**, without the sun's light interacting with the atmosphere, the sky appears black, allowing us to see stars.\n* **Hazy/" + "text": " conditions:**\n * On **overcast or cloudy days**, the sky can look **white or gray** as the clouds block and reflect sunlight.\n * During **storms**, it can appear a very dark **gray or even a" } ], "role": "model" @@ -189,35 +100,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 248, - "totalTokenCount": 764, + "candidatesTokenCount": 164, + "totalTokenCount": 512, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaqdJb-NjMcP-f7CwAY" }, { "candidates": [ @@ -225,7 +121,7 @@ "content": { "parts": [ { - "text": "Yellowish/Reddish:** Sometimes, due to **pollution, dust, or smoke** (e.g., from wildfires), the sky can take on a hazy, yellowish, or reddish tint, as these particles scatter light differently.\n\nSo" + "text": " greenish-gray**.\n* **Atmospheric conditions:**\n * **Pollution or dust** can give the sky a hazy, yellowish, or brownish tint.\n * At **night**, without direct sunlight, the sky" } ], "role": "model" @@ -233,35 +129,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 297, - "totalTokenCount": 813, + "candidatesTokenCount": 214, + "totalTokenCount": 562, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaqdJb-NjMcP-f7CwAY" }, { "candidates": [ @@ -269,7 +150,7 @@ "content": { "parts": [ { - "text": ", while blue is its most iconic color, the sky is a dynamic canvas of many hues!" + "text": " appears **black** (interspersed with stars).\n\nSo, while \"blue\" is the most common answer, the sky is actually a canvas of many colors!" } ], "role": "model" @@ -278,34 +159,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaauWF-bRjrEP4LfaKQ", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 316, - "totalTokenCount": 832, + "candidatesTokenCount": 247, + "totalTokenCount": 595, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 509 + "thoughtsTokenCount": 341 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=2857", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aaqdJb-NjMcP-f7CwAY" } ] \ No newline at end of file diff --git a/payloads/snapshots/reasoningWithOutput/google/response.json b/payloads/snapshots/reasoningWithOutput/google/response.json index 2c25bf9c..a553b4af 100644 --- a/payloads/snapshots/reasoningWithOutput/google/response.json +++ b/payloads/snapshots/reasoningWithOutput/google/response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:01 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=4010", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "The sky is most commonly **blue** during the day.\n\nThis is due to a phenomenon called **Rayleigh scattering**. Sunlight contains all the colors of the rainbow. When sunlight enters Earth's atmosphere, the shorter wavelengths (like blue and violet) are scattered more efficiently by the tiny nitrogen and oxygen molecules than the longer wavelengths (like red and yellow). Because blue light is scattered in all directions, it makes the sky appear blue to our eyes.\n\nHowever, the sky's color can vary greatly depending on several factors:\n\n* **Sunrise and Sunset:** It often appears **red, orange, pink, or purple**. At these times, the sun's light has to travel through more of the atmosphere, scattering away most of the blue light, leaving the longer red and yellow wavelengths to reach our eyes.\n* **Clouds:** On cloudy or stormy days, the sky can appear **grey** or even **white**.\n* **Night:** At night, without the sun's light, the sky appears **black** (though we can see stars).\n* **Pollution/Haze:** In some conditions, pollution or haze can give the sky a brownish, yellowish, or dull white tint.\n\nSo, while **blue** is the most typical answer, it's definitely not the only color the sky can be!" + "text": "Most commonly, the sky is **blue**.\n\nThis is due to a phenomenon called **Rayleigh scattering**. Sunlight, which is made up of all the colors of the rainbow, enters Earth's atmosphere. The tiny molecules of nitrogen and oxygen in our atmosphere scatter shorter-wavelength colors (like blue and violet) more efficiently than longer-wavelength colors (like red and yellow). Because blue light is scattered in all directions, it's the color we see predominantly when we look at the sky. Our eyes are also more sensitive to blue light than violet.\n\nHowever, the sky's color can vary greatly depending on several factors:\n\n* **Sunrise and Sunset:** At these times, the sun's light has to travel through more of the atmosphere. Most of the blue light is scattered away, allowing the reds, oranges, and pinks to pass through more directly to our eyes.\n* **Overcast/Stormy Weather:** When there are many clouds, especially thick ones, the sky often appears **grey** or even a dark, muted blue.\n* **Pollution/Dust:** High levels of aerosols, dust, or pollution can scatter light differently, sometimes leading to more vibrant reds/oranges, or making the sky appear hazy or yellowish.\n* **Time of Day:** The blue can range from a light, pale blue at midday to a deeper, more saturated blue closer to twilight.\n* **Atmospheric Conditions:** Factors like humidity and the size of water droplets can also influence the specific shade of blue or other colors seen.\n\nSo, while **blue** is the default and most common answer, the sky can be a beautiful spectrum of colors!" } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "IPJHaZGAPZ_I-8YP_oCuoAs", "usageMetadata": { "promptTokenCount": 7, - "candidatesTokenCount": 276, - "totalTokenCount": 715, + "candidatesTokenCount": 345, + "totalTokenCount": 841, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 7 } ], - "thoughtsTokenCount": 432 - } + "thoughtsTokenCount": 489 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "i758ad6uNPbAjMcP6bWPwA8" } \ No newline at end of file diff --git a/payloads/snapshots/simpleRequest/google/followup-response-streaming.json b/payloads/snapshots/simpleRequest/google/followup-response-streaming.json index 6a43a4f4..0810b180 100644 --- a/payloads/snapshots/simpleRequest/google/followup-response-streaming.json +++ b/payloads/snapshots/simpleRequest/google/followup-response-streaming.json @@ -5,7 +5,7 @@ "content": { "parts": [ { - "text": "That's a very open-ended question! To give you the best suggestion, could you tell me a little more about what kind of \"next\" you're thinking of?\n\nFor example, are you wondering:\n\n* " + "text": "That's a great open-ended" } ], "role": "model" @@ -13,35 +13,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHabLsOKLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 24, - "candidatesTokenCount": 47, - "totalTokenCount": 1124, + "candidatesTokenCount": 8, + "totalTokenCount": 1083, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 24 } ], - "thoughtsTokenCount": 1053 + "thoughtsTokenCount": 1051 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:02 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5193", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58ac-8EdSpjMcP5r_l4Qs" }, { "candidates": [ @@ -49,7 +34,7 @@ "content": { "parts": [ { - "text": "**What to ask me next?** (e.g., about another country, a different topic entirely, a creative writing prompt, a game, a joke?)\n* **What to do related to France/Paris?** (" + "text": " question! What you do next depends entirely on what you're interested in or what your goal is.\n\nDo any of these sound like what you're looking for?\n\n* **Learn more about Paris?** (e." } ], "role": "model" @@ -57,35 +42,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHabLsOKLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 24, - "candidatesTokenCount": 95, - "totalTokenCount": 1172, + "candidatesTokenCount": 56, + "totalTokenCount": 1131, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 24 } ], - "thoughtsTokenCount": 1053 + "thoughtsTokenCount": 1051 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:02 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5193", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58ac-8EdSpjMcP5r_l4Qs" }, { "candidates": [ @@ -93,7 +63,7 @@ "content": { "parts": [ { - "text": "e.g., learn more about its history, famous landmarks, culture, food, or plan a hypothetical trip?)\n* **What to do in general?** (e.g., suggestions for a hobby, a task, something" + "text": "g., its famous landmarks, history, culture, food, best time to visit)\n* **Learn about other places?** (e.g., the capital of another country, other cities in France)\n* **Plan something?**" } ], "role": "model" @@ -101,35 +71,20 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHabLsOKLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 24, - "candidatesTokenCount": 143, - "totalTokenCount": 1220, + "candidatesTokenCount": 107, + "totalTokenCount": 1182, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 24 } ], - "thoughtsTokenCount": 1053 + "thoughtsTokenCount": 1051 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:02 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5193", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58ac-8EdSpjMcP5r_l4Qs" }, { "candidates": [ @@ -137,7 +92,7 @@ "content": { "parts": [ { - "text": " fun to do on your computer, a relaxation idea?)\n\nOnce I know what you're looking for, I can give you a more specific idea!" + "text": " (e.g., a hypothetical trip to Paris, a research project)\n* **Just chat about something else entirely?**\n\nJust let me know what you have in mind!" } ], "role": "model" @@ -146,34 +101,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHabLsOKLujrEP29jTwAk", "usageMetadata": { "promptTokenCount": 24, - "candidatesTokenCount": 174, - "totalTokenCount": 1251, + "candidatesTokenCount": 145, + "totalTokenCount": 1220, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 24 } ], - "thoughtsTokenCount": 1053 + "thoughtsTokenCount": 1051 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:12:02 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=5193", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58ac-8EdSpjMcP5r_l4Qs" } ] \ No newline at end of file diff --git a/payloads/snapshots/simpleRequest/google/followup-response.json b/payloads/snapshots/simpleRequest/google/followup-response.json index 00777ffa..72147c0e 100644 --- a/payloads/snapshots/simpleRequest/google/followup-response.json +++ b/payloads/snapshots/simpleRequest/google/followup-response.json @@ -1,25 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:12:03 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=6063", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "That's a great question! It really depends on what you're curious about or what you're trying to achieve.\n\nHere are a few ideas for what you could do next:\n\n1. **Ask me another question:** You could ask me about anything at all – history, science, technology, current events, culture, or even just random facts.\n2. **Dive deeper into France/Paris:** We could explore more about France, Paris, its history, famous landmarks, cuisine, or culture.\n3. **Start a new topic entirely:** Tell me a topic you're interested in, and we can discuss it. For example, \"Tell me about the Amazon rainforest\" or \"Explain quantum physics in simple terms.\"\n4. **Get help with a task:** I can help you brainstorm ideas, write a short paragraph, summarize information, or even help you outline a plan.\n5. **Just for fun:** Ask me to tell you a joke, a fun fact, or suggest a creative writing prompt.\n\nWhat sounds most appealing to you, or do you have something else in mind?" + "text": "That's a great open-ended question! Since we just talked about France, here are a few ideas, depending on what you're interested in:\n\n1. **Learn more about France:**\n * \"What are some famous landmarks in Paris?\"\n * \"Tell me about French cuisine.\"\n * \"What are some other major cities in France?\"\n * \"What's the history of France?\"\n\n2. **Ask another general knowledge question:**\n * \"What's the capital of Japan?\"\n * \"How do airplanes fly?\"\n * \"What's the biggest animal on Earth?\"\n\n3. **Get help with a task:**\n * \"Can you help me brainstorm ideas for a story?\"\n * \"Write a short poem about spring.\"\n * \"Summarize the plot of 'Romeo and Juliet'.\"\n\n4. **Just chat:**\n * \"What's your favorite color?\" (As an AI, I don't have one, but it's a fun question!)\n * \"Tell me a joke.\"\n\n**Or, just tell me what's on your mind! What are you curious about or what do you need help with?**" } ], "role": "model" @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "I_JHacr4J7-4jrEPg5fzqQo", "usageMetadata": { "promptTokenCount": 24, - "candidatesTokenCount": 233, - "totalTokenCount": 1334, + "candidatesTokenCount": 272, + "totalTokenCount": 1027, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 24 } ], - "thoughtsTokenCount": 1077 - } + "thoughtsTokenCount": 731 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "jb58aaC0Gd6J-sAPufSBoAY" } \ No newline at end of file diff --git a/payloads/snapshots/simpleRequest/google/response-streaming.json b/payloads/snapshots/simpleRequest/google/response-streaming.json index b01f437e..9b0b1a61 100644 --- a/payloads/snapshots/simpleRequest/google/response-streaming.json +++ b/payloads/snapshots/simpleRequest/google/response-streaming.json @@ -14,34 +14,19 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHabbDFbHvjrEPmILAgAY", "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 8, - "totalTokenCount": 44, + "totalTokenCount": 37, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], - "thoughtsTokenCount": 28 + "thoughtsTokenCount": 21 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=496", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758ad_NIvDWjMcPzOq6-Qc" } ] \ No newline at end of file diff --git a/payloads/snapshots/simpleRequest/google/response.json b/payloads/snapshots/simpleRequest/google/response.json index effe0a72..d3f1271d 100644 --- a/payloads/snapshots/simpleRequest/google/response.json +++ b/payloads/snapshots/simpleRequest/google/response.json @@ -1,19 +1,4 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=598", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { @@ -28,18 +13,18 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHafWMIvW2jrEPlpKP6A0", "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 8, - "totalTokenCount": 46, + "totalTokenCount": 33, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], - "thoughtsTokenCount": 30 - } + "thoughtsTokenCount": 17 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aba5MZPXjMcPiKn5uAo" } \ No newline at end of file diff --git a/payloads/snapshots/toolCallRequest/google/followup-request.json b/payloads/snapshots/toolCallRequest/google/followup-request.json index 5a8b8ed2..d6b18fae 100644 --- a/payloads/snapshots/toolCallRequest/google/followup-request.json +++ b/payloads/snapshots/toolCallRequest/google/followup-request.json @@ -11,8 +11,13 @@ { "parts": [ { - "text": "I need to know which state San Francisco is in.", - "thoughtSignature": "CpQDAXLI2nycZHzmwtbR1O0II6PzWoBs+ZkmPt7RS4c2JQ/GFJ8cz3U103KezG75qcvOf+Gny2dpm2aHuL9c35lpiiNZahNH42sZTxD4ntsuOrzOI+cg/GoTyypYBLvAss222NvlErwnAKh11nS/y4MKDbyRuD9QQKxKl20D4MjiXreI9RLFv9F4zRU8egMUwGxuGavgv50J47XVJniB/00pCeQzAJP9YRawHd9bN0NWomkgdwg5X3Ra6WnG22sJuf35GVIgFkfzXnT9YCSAtJx2hrmn0wLi0olVjexhJnNquxdqvo4rFxCXQgFi1Jrqp3n5C6nZ/8v57AZM9o5B3UKheUeLLBFcVorB4ZdJ7U0ZioPr6QJlex+g6NN84+2GpcXMUb/5LV48sAjQZGoI8xjmNXInm3wHKZfsqD+vXYXiKmA8ue6joVqh6fZ5aa5p36DplLwXfkFcsPSzaZP0D+yfyLY6kEBhTowoqlK1AU7wEngyE/Cfbb4YBvv1F+tkWje65SfOvd28MngWMMe52LhSjVk7jBM=" + "functionCall": { + "name": "get_weather", + "args": { + "location": "San Francisco, CA" + } + }, + "thoughtSignature": "CsgCAXLI2nz8KtX33gpRpvyRJfKg9u/MlcWHXCZdDF4cJ5ljkxCbdbmvnH29RKD4jf5VIaQeEk4aLbRxxw4WD0U6UhXDdrN8XvD8vnqvbD6eQ08G8sxymgLI8N9G+KXvGMAlSFZM5MW98h+LVEBijUnqbZdlVa1rFNlJFxaiVeW/rY+Gw+InDfNw4eKS/jj9kH7e+qpFDTRYQltuNAdI96QWRuIjhz3qd2lo9VIByGf6cCel5IP1dlyJqdSykoOnXjfLTRrvcmqfFIabf/vHq/++NExNl4F2adRwruE9kuaKofuRonqMBf0nMlhF/ZRAlrBnOcybp8SJPxUZaDO5rud2uy98RVVZTQP83OpIsyeVzew/ZoP3QscvakDs/kiQ7PplBsRM5nfvGEWVgo5OChkhu5JYPyWReYCa7EanKH3PAQms8p7UUuqx5w==" } ], "role": "model" @@ -21,7 +26,12 @@ "role": "user", "parts": [ { - "text": "What should I do next?" + "functionResponse": { + "name": "get_weather", + "response": { + "temperature": "71 degrees" + } + } } ] } diff --git a/payloads/snapshots/toolCallRequest/google/followup-response-streaming.json b/payloads/snapshots/toolCallRequest/google/followup-response-streaming.json index 49877c11..17f56af6 100644 --- a/payloads/snapshots/toolCallRequest/google/followup-response-streaming.json +++ b/payloads/snapshots/toolCallRequest/google/followup-response-streaming.json @@ -5,44 +5,55 @@ "content": { "parts": [ { - "text": "Please tell me which state San Francisco is in, and I can tell you the weather there.", - "thoughtSignature": "CiIBcsjafKFermw4cNm2Votcf/U/iYte2JTSGwqL6BP8snQ3CmABcsjafLx6aHHqXsuhQf7EGNcIfIzgQwZ5Rk7JMiW0WeFF4U8Do0jNH92PJXK1RtA7xFk7XP+jq6DnT/mG8Uz7WTPZNVCESLY82Lda86nrwsIkndMrRcFS/Agh9QkJPv4K4AEBcsjafExgJYYvYpLqhn0ie0I+L9ZlP0ymIcrfQOWNZKPmeOqKDe/hzBsTEKP6HjFgEp9BP68pjZkslqqKibWFb5fgObAuW4dkDy9hKVDsKiODI8AqR/wIvKKaXNXE/XB8/rgjO24AmFbr6soJfZbkkMWOCxpW8cs5kMdUUAv9rrDYRn8JVtlMNUz7QBlDCfIr+6mFtQMu23YCYmJ1+BsmMUvFWj1EFTWEkREptNY+gdh1YfHbaWDVlOieC9B+xf/ocZkC/jP+6t5j/DcnKvc3Kipr6vy+/gHBMBqSNbY8IArqAQFyyNp8v4rV4ccOQSdzOJJAkP2exdjglb1ztlX4IDvd58MCi0uhhHi/23hoEsVTm5dQ19c8a+g2bvNonBcTcjkUl4rVBeBTfp7Bwwto9hCUej1SeuwJAilnyYAloSG0YkXQRwfCwHhSN+0yzMf92YrUy8g1o38gv8lu8jEpWrD664gR3bzBrdHeO9nWRjO0LDAy99LzXddR4UBwx5Z89QLaMqHJeZDREfwsdDG7ZZX96kwIlbGs6mf9FsZDOSWUVtfcCNY4+Rz2ffs419pbHbgmy8wJWn8QNPTLXt282l3x8eCp57cP1FKy6grxAQFyyNp87UtTUbAEm3degu4eQyng/e72PRDtFXZwgKwbQoLD1Jl4JCO8kvwmWSZrxV7C23n7vgehx3cZBEMUFftO72AUn4+vf8DGy47zwe+1Ukq6ud794d/4PCgge3rj8tdjmPt1AUB4rUKvFwweKvHB3R+xU4Guo23c7UfsdvsfiGOQVGf+whmZWNFM896rhEeAJ9g2v/J4dVHquRiqFYN34CatRjz4sJQ9nn4ew8ftc4R/jBkTNbBPm5wZg1efbeb1cfV8u/I4qwcuTXGwqtDHY73TziRQ0ptPbq4AeXfBjGrH/ApyBGiMOjZ3Chcqyw0K+QEBcsjafJGzafzu0QWoTqBwOYV1H69rQ50FNesCVexj7kOF/PmD7QZQj6r19ne8f93jKVrXOWD1P8ngyhns898YlD1OC2Ke+JB6CJ4BK1XkwwlhF1XYBrkWMs7k9qLUPiM1VbHoM0gc3yjfmTdQ/9tAvwN4nPsDDlKZ7GVrZOJeqLdzlJq7cNcFpHIob7HUZ7TOPjvuKfWdcSbbekNs0ahb1rJrRvC2NpEEEqj3Jv96CxWcHFOGzObnGyMrlQPww9OM25e9njofZGSdI0YcE4RpLsghVkf2oMAooulPpA+gIDLVQYPo0kKj2vsNBPuyTlgBRqnaEOjlykMKpAIBcsjafJlyeIDye3yo3WADPnib+u39TClGNsxKNHjnzN2RpQVallhsqBIgmJkCZYvuX6djyflVTXY2fQiKunm4Rl1Cpmleeni2q1y7OOGePkaedWvgyylvgcn7IDtWodumRUNgm9+ptoCNt4K5HvITvfkfoX3/UOUr+2mLWQV+vFPE3J/L0KQsMay89VvY1moGAdaQKeuE/AL1/PDbiFBlwO+RU0NK7Nppi5dewU9JQ3BDXGhn4g3lc5J6zZWTvS8rsLZNjeX3UsvyonBUfz8QfNkQ3QnkAprE32ZAudrTSQr/TvsUE2PXoCu8jX4fu0pm2LWtXeIygX9do9ukUCg091hVUbjQHspWTxcff1IWG8e6PKQePShiJGmnxdFmh7MTx0iyCuIBAXLI2nzlkgZAfqIEU2JsAXsw1AaDdicB/su7WbA/ehhv3spqtdNcpEb1tNqxbBKsSoQNvnzKqlT6G5zy+TiWPivKouq3IZAt4xj8oGD6thpHyF+/03WpnPy5VU6n2XIpClt+DMlVWQLu5u2tVFSOhQklqUzAs/ssvK2HNFRsA4bV2uN5is7m7srmIplbnm/yfWYYWuC4ykaay16QVGldQZL9xoiskjwmCgppKvCR6cPV6x8naT9iKDRAu5n+TzgtndKq3mvYbARrDK3OFggERsh+9OEWXK5+4PM28huJmxvSKgpdAXLI2nzAJHbPdnan+4WoZuognNz9jIA0ZvmHIBXipJYybGGqLB9BLVbpbenTW48vpSWBBZDVwJVxx1ESIRZLP06e7hWR/gBcKlikZY+mHOPZMrlOXMud/HafA7As" + "text": "The weather in San" } ], "role": "model" }, - "finishReason": "STOP", "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HvJHafXUCsjvjrEPws-ymAY", "usageMetadata": { - "promptTokenCount": 81, - "candidatesTokenCount": 19, - "totalTokenCount": 422, + "promptTokenCount": 168, + "candidatesTokenCount": 4, + "totalTokenCount": 172, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 81 + "tokenCount": 168 } - ], - "thoughtsTokenCount": 322 + ] }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:59 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=1864", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58af_WIrfSjMcP7fna8Q0" + }, + { + "candidates": [ + { + "content": { + "parts": [ + { + "text": " Francisco, CA is 71 degrees." + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 } - } + ], + "usageMetadata": { + "promptTokenCount": 168, + "candidatesTokenCount": 13, + "totalTokenCount": 181, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 168 + } + ] + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58af_WIrfSjMcP7fna8Q0" } ] \ No newline at end of file diff --git a/payloads/snapshots/toolCallRequest/google/followup-response.json b/payloads/snapshots/toolCallRequest/google/followup-response.json index 0cd04200..5f2b1205 100644 --- a/payloads/snapshots/toolCallRequest/google/followup-response.json +++ b/payloads/snapshots/toolCallRequest/google/followup-response.json @@ -1,26 +1,10 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:11:58 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=794", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "Please tell me what you would like to do next, and I will try to help! I can tell you the weather in a particular location if you provide the city and state.", - "thoughtSignature": "CuoBAXLI2nxWvixXM2LAU9HXkrQbE+RuNUbY73/MnDG3Dtz/ac3XvvKexPoRXTrPXKMfXtezaw+aGS+E0V5Gb9zV1B4CR1ytCARaKDJVhCmvF6sNmznDdEZpcvIKbSlucK6MN5amICVD8FQkk7m9PY6kTz2Fj9ZNmLaZ3iN5Wl6T2v14+9ZmIDjHypwAVdCJpxJAQo2SNyjgMrvynoiwtFAL4inYFjjOf6vDINnvL03suw27beivkSsPSAlTw0DFj3DfXh1Opr6XIOMJFmfXXjfvYAO2OXe2CdOqB6cSJ9COf7MnPtfkbrzksoH6" + "text": "The weather in San Francisco, CA is 71 degrees." } ], "role": "model" @@ -29,18 +13,17 @@ "index": 0 } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaarwONLfjrEP2LjLyA4", "usageMetadata": { - "promptTokenCount": 81, - "candidatesTokenCount": 36, - "totalTokenCount": 158, + "promptTokenCount": 97, + "candidatesTokenCount": 13, + "totalTokenCount": 110, "promptTokensDetails": [ { "modality": "TEXT", - "tokenCount": 81 + "tokenCount": 97 } - ], - "thoughtsTokenCount": 41 - } + ] + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58acneJLHTjMcP0Pbw6Qo" } \ No newline at end of file diff --git a/payloads/snapshots/toolCallRequest/google/response-streaming.json b/payloads/snapshots/toolCallRequest/google/response-streaming.json index b1ff4c8f..46ee23fc 100644 --- a/payloads/snapshots/toolCallRequest/google/response-streaming.json +++ b/payloads/snapshots/toolCallRequest/google/response-streaming.json @@ -11,43 +11,29 @@ "location": "San Francisco, CA" } }, - "thoughtSignature": "CiQBcsjafLpjXzdrfX6/TW5aZ93PbKQUx6Yr3C5ovooPZQXF5kEKawFyyNp808QOQLd3k8RgqUO3LLqceJwIUjxdjBKMz6yt9flS/+Zo6+XsPXNm+96jeg6TOZ6WnTS1uZrkJftiTLZdhVxS5fkvbXZ082kFUtC7GARgHR1GwOq+2BV8LjLcKSjpubG0VgyAVG2aCpACAXLI2nyOiofAE8ACDYCqlLlNeRrmSIkrZPS6qpYTOgEW/NqN2k5CPfnn5XW+ubVQUiqCAOaqLwd6/F3Im2uJqarf/Vc5N0dcwz7PQPhDvKmhwjKUiJog4czvVz7VLV4FXrZZ539Iq2Bv/rreHXDSERIw5TCvM58TQXcTo8xcD4v13lH5kz4zm3FdYRCDvN7gxf7UW20DGU4TeIwHQ7ELDyBoES25KtJfAfS2/TN1f7qzDWvdT7YD/yJ+qcaVtaQgMfJXr2ZZ0gjWQpBR8nQJVHm3okIbYCLEapgsE1idgjhmGXlFuE/WbCJKSU6GAV0h06mWUNgMcIp9sv1pgR2kd2OktST09q2bZU6t9YKamIsKIwFyyNp8JdTRCA9Vh/DwwhHbO79fOJZnZT/eNUzYD4fAVxyg" + "thoughtSignature": "CiQBcsjafGBqrMvxPlwvHUx4EId8rlsRN+r1LURcTbrP5k0pjAIKYwFyyNp8/E+ZOcMOniubKo0TJ1WigsMnkVvm+fGh3W/Gksx88UvHkqJCUNTBl5iuzwNX3CZlYhKUPazo5WDFYOFDoV0ZjTQpVZy8MxSPDhZSuIG5fIiBDUGxsG/lxUQxjh9WswqFAQFyyNp82cubNLGaSfbMD4OzIhIYfOufWTFPZ7IJd+cqG6UFUHFkxO6lQ/jclgzTL3Ag4bJHLINWTx0b2WfYYFbgjAI2ZCoXC7dPfIBJOQFMPvajEtf50113N7a59iP8KJafh7jhDPcUzV9rPMhy9NPrStKD+UMXPLRDZm5YiPGeKbYISrM=" } ], "role": "model" }, "finishReason": "STOP", - "index": 0 + "index": 0, + "finishMessage": "Model generated function call(s)." } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHadHaFuOzjrEPsYao4Ac", "usageMetadata": { "promptTokenCount": 62, "candidatesTokenCount": 18, - "totalTokenCount": 150, + "totalTokenCount": 116, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 62 } ], - "thoughtsTokenCount": 70 + "thoughtsTokenCount": 36 }, - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-disposition": "attachment", - "content-type": "text/event-stream", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=743", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - } + "modelVersion": "gemini-2.5-flash", + "responseId": "h758aeKGJMHQjMcP3Ky-oQ0" } ] \ No newline at end of file diff --git a/payloads/snapshots/toolCallRequest/google/response.json b/payloads/snapshots/toolCallRequest/google/response.json index 8ba66fa4..612dd9ea 100644 --- a/payloads/snapshots/toolCallRequest/google/response.json +++ b/payloads/snapshots/toolCallRequest/google/response.json @@ -1,46 +1,37 @@ { - "sdkHttpResponse": { - "headers": { - "alt-svc": "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", - "content-encoding": "gzip", - "content-type": "application/json; charset=UTF-8", - "date": "Sun, 21 Dec 2025 13:11:57 GMT", - "server": "scaffolding on HTTPServer2", - "server-timing": "gfet4t7; dur=720", - "transfer-encoding": "chunked", - "vary": "Origin, X-Origin, Referer", - "x-content-type-options": "nosniff", - "x-frame-options": "SAMEORIGIN", - "x-xss-protection": "0" - } - }, "candidates": [ { "content": { "parts": [ { - "text": "I need to know which state San Francisco is in.", - "thoughtSignature": "CpQDAXLI2nycZHzmwtbR1O0II6PzWoBs+ZkmPt7RS4c2JQ/GFJ8cz3U103KezG75qcvOf+Gny2dpm2aHuL9c35lpiiNZahNH42sZTxD4ntsuOrzOI+cg/GoTyypYBLvAss222NvlErwnAKh11nS/y4MKDbyRuD9QQKxKl20D4MjiXreI9RLFv9F4zRU8egMUwGxuGavgv50J47XVJniB/00pCeQzAJP9YRawHd9bN0NWomkgdwg5X3Ra6WnG22sJuf35GVIgFkfzXnT9YCSAtJx2hrmn0wLi0olVjexhJnNquxdqvo4rFxCXQgFi1Jrqp3n5C6nZ/8v57AZM9o5B3UKheUeLLBFcVorB4ZdJ7U0ZioPr6QJlex+g6NN84+2GpcXMUb/5LV48sAjQZGoI8xjmNXInm3wHKZfsqD+vXYXiKmA8ue6joVqh6fZ5aa5p36DplLwXfkFcsPSzaZP0D+yfyLY6kEBhTowoqlK1AU7wEngyE/Cfbb4YBvv1F+tkWje65SfOvd28MngWMMe52LhSjVk7jBM=" + "functionCall": { + "name": "get_weather", + "args": { + "location": "San Francisco, CA" + } + }, + "thoughtSignature": "CsgCAXLI2nz8KtX33gpRpvyRJfKg9u/MlcWHXCZdDF4cJ5ljkxCbdbmvnH29RKD4jf5VIaQeEk4aLbRxxw4WD0U6UhXDdrN8XvD8vnqvbD6eQ08G8sxymgLI8N9G+KXvGMAlSFZM5MW98h+LVEBijUnqbZdlVa1rFNlJFxaiVeW/rY+Gw+InDfNw4eKS/jj9kH7e+qpFDTRYQltuNAdI96QWRuIjhz3qd2lo9VIByGf6cCel5IP1dlyJqdSykoOnXjfLTRrvcmqfFIabf/vHq/++NExNl4F2adRwruE9kuaKofuRonqMBf0nMlhF/ZRAlrBnOcybp8SJPxUZaDO5rud2uy98RVVZTQP83OpIsyeVzew/ZoP3QscvakDs/kiQ7PplBsRM5nfvGEWVgo5OChkhu5JYPyWReYCa7EanKH3PAQms8p7UUuqx5w==" } ], "role": "model" }, "finishReason": "STOP", - "index": 0 + "index": 0, + "finishMessage": "Model generated function call(s)." } ], - "modelVersion": "gemini-2.5-flash", - "responseId": "HfJHaeSNLZjO-8YPg-iv0Ak", "usageMetadata": { "promptTokenCount": 62, - "candidatesTokenCount": 11, - "totalTokenCount": 162, + "candidatesTokenCount": 18, + "totalTokenCount": 151, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 62 } ], - "thoughtsTokenCount": 89 - } + "thoughtsTokenCount": 71 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "iL58aezMBcHQjMcP3Ky-oQ0" } \ No newline at end of file