From 092f675d0bb48888fa03ec7b9eae538eca37b031 Mon Sep 17 00:00:00 2001 From: Ken Jiang Date: Wed, 14 Jan 2026 14:36:18 -0500 Subject: [PATCH] add antrhopic test cases --- crates/coverage-report/src/report.rs | 219 +- crates/coverage-report/src/runner.rs | 135 +- crates/coverage-report/src/types.rs | 22 + .../lingua/src/providers/anthropic/convert.rs | 360 ++- payloads/cases/index.ts | 9 +- payloads/cases/models.ts | 4 +- payloads/cases/params.ts | 499 ++- payloads/cases/types.ts | 9 +- payloads/package.json | 2 +- payloads/scripts/providers/anthropic.ts | 53 +- payloads/scripts/validate.ts | 12 +- .../scripts/validation/diff-utils.test.ts | 19 +- payloads/scripts/validation/diff-utils.ts | 63 +- payloads/scripts/validation/index.ts | 53 +- payloads/scripts/validation/reporter.ts | 54 +- .../anthropic/followup-request.json | 33 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 20 + .../anthropic/response-streaming.json | 77 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 33 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 20 + .../anthropic/response-streaming.json | 85 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 43 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 16 + .../anthropic/response-streaming.json | 131 + .../anthropic/response.json | 33 + .../anthropic/followup-request.json | 37 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 24 + .../anthropic/response-streaming.json | 141 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 36 + .../anthropic/followup-response.json | 25 + .../imageContentParam/anthropic/request.json | 23 + .../anthropic/response-streaming.json | 533 ++++ .../imageContentParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../instructionsParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 77 + .../instructionsParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 23 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 10 + .../anthropic/response-streaming.json | 69 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 26 + .../anthropic/followup-response.json | 25 + .../metadataParam/anthropic/request.json | 13 + .../anthropic/response-streaming.json | 61 + .../metadataParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 58 + .../anthropic/followup-response.json | 29 + .../anthropic/request.json | 31 + .../anthropic/response-streaming.json | 123 + .../anthropic/response.json | 33 + .../anthropic/followup-request.json | 32 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 19 + .../anthropic/response-streaming.json | 61 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 32 + .../anthropic/followup-response.json | 30 + .../anthropic/request.json | 14 + .../anthropic/response.json | 30 + .../chat-completions/followup-request.json | 20 + .../chat-completions/followup-response.json | 35 + .../chat-completions/request.json | 10 + .../chat-completions/response.json | 35 + .../responses/followup-request.json | 35 + .../responses/followup-response.json | 77 + .../responses/request.json | 12 + .../responses/response.json | 77 + .../anthropic/followup-request.json | 32 + .../anthropic/followup-response.json | 30 + .../anthropic/request.json | 14 + .../anthropic/response-streaming.json | 170 + .../anthropic/response.json | 30 + .../anthropic/followup-request.json | 26 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 13 + .../anthropic/response-streaming.json | 61 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../serviceTierParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 69 + .../serviceTierParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 27 + .../anthropic/followup-response.json | 25 + .../stopSequencesParam/anthropic/request.json | 14 + .../anthropic/response-streaming.json | 85 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../streamParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 85 + .../streamParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../temperatureParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 85 + .../temperatureParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 29 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 16 + .../anthropic/response-streaming.json | 301 ++ .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 29 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 16 + .../anthropic/response-streaming.json | 309 ++ .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 30 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 17 + .../anthropic/response-streaming.json | 269 ++ .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 42 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 29 + .../anthropic/response.json | 25 + .../chat-completions/followup-request.json | 22 + .../chat-completions/followup-response.json | 36 + .../chat-completions/request.json | 12 + .../chat-completions/response.json | 36 + .../responses/followup-request.json | 37 + .../responses/followup-response.json | 77 + .../responses/request.json | 14 + .../responses/response.json | 77 + .../anthropic/followup-request.json | 26 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 13 + .../anthropic/response-streaming.json | 69 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 53 + .../anthropic/followup-response.json | 29 + .../toolChoiceAnyParam/anthropic/request.json | 30 + .../anthropic/response-streaming.json | 87 + .../anthropic/response.json | 29 + .../anthropic/followup-request.json | 43 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 30 + .../anthropic/response-streaming.json | 181 ++ .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 43 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 30 + .../anthropic/response-streaming.json | 157 + .../anthropic/response.json | 25 + .../anthropic/followup-request.json | 54 + .../anthropic/followup-response.json | 29 + .../anthropic/request.json | 31 + .../anthropic/response-streaming.json | 103 + .../anthropic/response.json | 29 + .../topKParam/anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../topKParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 93 + .../topKParam/anthropic/response.json | 25 + .../topPParam/anthropic/followup-request.json | 24 + .../anthropic/followup-response.json | 25 + .../topPParam/anthropic/request.json | 11 + .../anthropic/response-streaming.json | 77 + .../topPParam/anthropic/response.json | 25 + .../anthropic/followup-request.json | 432 +++ .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 21 + .../anthropic/response.json | 426 +++ .../anthropic/followup-request.json | 277 ++ .../anthropic/followup-response.json | 25 + .../webSearchToolParam/anthropic/request.json | 16 + .../anthropic/response-streaming.json | 2774 +++++++++++++++++ .../anthropic/response.json | 276 ++ .../anthropic/followup-request.json | 36 + .../anthropic/followup-response.json | 25 + .../anthropic/request.json | 23 + .../anthropic/response-streaming.json | 517 +++ .../anthropic/response.json | 25 + pnpm-lock.yaml | 17 +- 184 files changed, 13345 insertions(+), 150 deletions(-) create mode 100644 payloads/snapshots/cacheControl1hParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/cacheControl1hParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/cacheControl1hParam/anthropic/request.json create mode 100644 payloads/snapshots/cacheControl1hParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/cacheControl1hParam/anthropic/response.json create mode 100644 payloads/snapshots/cacheControl5mParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/cacheControl5mParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/cacheControl5mParam/anthropic/request.json create mode 100644 payloads/snapshots/cacheControl5mParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/cacheControl5mParam/anthropic/response.json create mode 100644 payloads/snapshots/codeInterpreterToolParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/codeInterpreterToolParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/codeInterpreterToolParam/anthropic/request.json create mode 100644 payloads/snapshots/codeInterpreterToolParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/codeInterpreterToolParam/anthropic/response.json create mode 100644 payloads/snapshots/documentContentParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/documentContentParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/documentContentParam/anthropic/request.json create mode 100644 payloads/snapshots/documentContentParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/documentContentParam/anthropic/response.json create mode 100644 payloads/snapshots/imageContentParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/imageContentParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/imageContentParam/anthropic/request.json create mode 100644 payloads/snapshots/imageContentParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/imageContentParam/anthropic/response.json create mode 100644 payloads/snapshots/instructionsParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/instructionsParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/instructionsParam/anthropic/request.json create mode 100644 payloads/snapshots/instructionsParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/instructionsParam/anthropic/response.json create mode 100644 payloads/snapshots/maxCompletionTokensParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/maxCompletionTokensParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/maxCompletionTokensParam/anthropic/request.json create mode 100644 payloads/snapshots/maxCompletionTokensParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/maxCompletionTokensParam/anthropic/response.json create mode 100644 payloads/snapshots/metadataParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/metadataParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/metadataParam/anthropic/request.json create mode 100644 payloads/snapshots/metadataParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/metadataParam/anthropic/response.json create mode 100644 payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/parallelToolCallsDisabledParam/anthropic/request.json create mode 100644 payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response.json create mode 100644 payloads/snapshots/promptCacheKeyParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/promptCacheKeyParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/promptCacheKeyParam/anthropic/request.json create mode 100644 payloads/snapshots/promptCacheKeyParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/promptCacheKeyParam/anthropic/response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/anthropic/request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/anthropic/response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/chat-completions/request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/chat-completions/response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/responses/followup-request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/responses/followup-response.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/responses/request.json create mode 100644 payloads/snapshots/reasoningEffortLowParam/responses/response.json create mode 100644 payloads/snapshots/reasoningSummaryParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/reasoningSummaryParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/reasoningSummaryParam/anthropic/request.json create mode 100644 payloads/snapshots/reasoningSummaryParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/reasoningSummaryParam/anthropic/response.json create mode 100644 payloads/snapshots/safetyIdentifierParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/safetyIdentifierParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/safetyIdentifierParam/anthropic/request.json create mode 100644 payloads/snapshots/safetyIdentifierParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/safetyIdentifierParam/anthropic/response.json create mode 100644 payloads/snapshots/serviceTierParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/serviceTierParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/serviceTierParam/anthropic/request.json create mode 100644 payloads/snapshots/serviceTierParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/serviceTierParam/anthropic/response.json create mode 100644 payloads/snapshots/stopSequencesParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/stopSequencesParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/stopSequencesParam/anthropic/request.json create mode 100644 payloads/snapshots/stopSequencesParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/stopSequencesParam/anthropic/response.json create mode 100644 payloads/snapshots/streamParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/streamParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/streamParam/anthropic/request.json create mode 100644 payloads/snapshots/streamParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/streamParam/anthropic/response.json create mode 100644 payloads/snapshots/temperatureParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/temperatureParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/temperatureParam/anthropic/request.json create mode 100644 payloads/snapshots/temperatureParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/temperatureParam/anthropic/response.json create mode 100644 payloads/snapshots/textEditorToolParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/textEditorToolParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/textEditorToolParam/anthropic/request.json create mode 100644 payloads/snapshots/textEditorToolParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/textEditorToolParam/anthropic/response.json create mode 100644 payloads/snapshots/textEditorToolV2Param/anthropic/followup-request.json create mode 100644 payloads/snapshots/textEditorToolV2Param/anthropic/followup-response.json create mode 100644 payloads/snapshots/textEditorToolV2Param/anthropic/request.json create mode 100644 payloads/snapshots/textEditorToolV2Param/anthropic/response-streaming.json create mode 100644 payloads/snapshots/textEditorToolV2Param/anthropic/response.json create mode 100644 payloads/snapshots/textEditorToolV3Param/anthropic/followup-request.json create mode 100644 payloads/snapshots/textEditorToolV3Param/anthropic/followup-response.json create mode 100644 payloads/snapshots/textEditorToolV3Param/anthropic/request.json create mode 100644 payloads/snapshots/textEditorToolV3Param/anthropic/response-streaming.json create mode 100644 payloads/snapshots/textEditorToolV3Param/anthropic/response.json create mode 100644 payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/textFormatJsonSchemaParam/anthropic/request.json create mode 100644 payloads/snapshots/textFormatJsonSchemaParam/anthropic/response.json create mode 100644 payloads/snapshots/textFormatTextParam/chat-completions/followup-request.json create mode 100644 payloads/snapshots/textFormatTextParam/chat-completions/followup-response.json create mode 100644 payloads/snapshots/textFormatTextParam/chat-completions/request.json create mode 100644 payloads/snapshots/textFormatTextParam/chat-completions/response.json create mode 100644 payloads/snapshots/textFormatTextParam/responses/followup-request.json create mode 100644 payloads/snapshots/textFormatTextParam/responses/followup-response.json create mode 100644 payloads/snapshots/textFormatTextParam/responses/request.json create mode 100644 payloads/snapshots/textFormatTextParam/responses/response.json create mode 100644 payloads/snapshots/thinkingDisabledParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/thinkingDisabledParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/thinkingDisabledParam/anthropic/request.json create mode 100644 payloads/snapshots/thinkingDisabledParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/thinkingDisabledParam/anthropic/response.json create mode 100644 payloads/snapshots/toolChoiceAnyParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/toolChoiceAnyParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/toolChoiceAnyParam/anthropic/request.json create mode 100644 payloads/snapshots/toolChoiceAnyParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/toolChoiceAnyParam/anthropic/response.json create mode 100644 payloads/snapshots/toolChoiceAutoParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/toolChoiceAutoParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/toolChoiceAutoParam/anthropic/request.json create mode 100644 payloads/snapshots/toolChoiceAutoParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/toolChoiceAutoParam/anthropic/response.json create mode 100644 payloads/snapshots/toolChoiceNoneParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/toolChoiceNoneParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/toolChoiceNoneParam/anthropic/request.json create mode 100644 payloads/snapshots/toolChoiceNoneParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/toolChoiceNoneParam/anthropic/response.json create mode 100644 payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/toolChoiceRequiredParam/anthropic/request.json create mode 100644 payloads/snapshots/toolChoiceRequiredParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/toolChoiceRequiredParam/anthropic/response.json create mode 100644 payloads/snapshots/topKParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/topKParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/topKParam/anthropic/request.json create mode 100644 payloads/snapshots/topKParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/topKParam/anthropic/response.json create mode 100644 payloads/snapshots/topPParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/topPParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/topPParam/anthropic/request.json create mode 100644 payloads/snapshots/topPParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/topPParam/anthropic/response.json create mode 100644 payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/webSearchToolAdvancedParam/anthropic/request.json create mode 100644 payloads/snapshots/webSearchToolAdvancedParam/anthropic/response.json create mode 100644 payloads/snapshots/webSearchToolParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/webSearchToolParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/webSearchToolParam/anthropic/request.json create mode 100644 payloads/snapshots/webSearchToolParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/webSearchToolParam/anthropic/response.json create mode 100644 payloads/snapshots/webSearchUserLocationParam/anthropic/followup-request.json create mode 100644 payloads/snapshots/webSearchUserLocationParam/anthropic/followup-response.json create mode 100644 payloads/snapshots/webSearchUserLocationParam/anthropic/request.json create mode 100644 payloads/snapshots/webSearchUserLocationParam/anthropic/response-streaming.json create mode 100644 payloads/snapshots/webSearchUserLocationParam/anthropic/response.json diff --git a/crates/coverage-report/src/report.rs b/crates/coverage-report/src/report.rs index 5e938809..05631724 100644 --- a/crates/coverage-report/src/report.rs +++ b/crates/coverage-report/src/report.rs @@ -7,7 +7,7 @@ use std::collections::HashMap; use lingua::processing::adapters::ProviderAdapter; use crate::runner::RoundtripResults; -use crate::types::{PairResult, RoundtripResult, TableStats}; +use crate::types::{IssueEntry, PairResult, RoundtripResult, TableResult, TableStats}; pub fn format_cell(pair_result: &PairResult) -> String { let total = pair_result.passed + pair_result.failed; @@ -23,17 +23,22 @@ pub fn format_cell(pair_result: &PairResult) -> String { format!("{} {}/{}", emoji, pair_result.passed, total) } +/// Generate a coverage table with statistics and issue details. pub fn generate_table( results: &HashMap<(usize, usize), PairResult>, adapters: &[Box], title: &str, -) -> (String, TableStats, Vec<(String, String, String)>) { +) -> TableResult { let mut table = String::new(); let mut stats = TableStats { passed: 0, failed: 0, + limitations: 0, + missing_fixtures: 0, }; - let mut all_failures: Vec<(String, String, String)> = Vec::new(); + let mut all_failures: Vec = Vec::new(); + let mut all_limitations: Vec = Vec::new(); + let mut all_missing_fixtures: Vec = Vec::new(); table.push_str(&format!("### {}\n\n", title)); table.push_str("| Source ↓ / Target → |"); @@ -57,6 +62,8 @@ pub fn generate_table( stats.passed += pair_result.passed; stats.failed += pair_result.failed; + stats.limitations += pair_result.limitations; + stats.missing_fixtures += pair_result.missing_fixtures; for (test_case, error) in &pair_result.failures { all_failures.push(( @@ -65,12 +72,34 @@ pub fn generate_table( error.clone(), )); } + + for (test_case, error) in &pair_result.limitation_details { + all_limitations.push(( + format!("{} → {}", source.display_name(), target.display_name()), + test_case.clone(), + error.clone(), + )); + } + + for (test_case, error) in &pair_result.missing_fixture_details { + all_missing_fixtures.push(( + format!("{} → {}", source.display_name(), target.display_name()), + test_case.clone(), + error.clone(), + )); + } } } table.push('\n'); } - (table, stats, all_failures) + TableResult { + markdown: table, + stats, + failures: all_failures, + limitations: all_limitations, + missing_fixtures: all_missing_fixtures, + } } // ============================================================================ @@ -259,25 +288,27 @@ pub fn generate_report( report.push_str("## Cross-Provider Transformation Coverage\n\n"); - let (req_table, req_stats, req_failures) = - generate_table(request_results, adapters, "Request Transformations"); - report.push_str(&req_table); + let req = generate_table(request_results, adapters, "Request Transformations"); + report.push_str(&req.markdown); report.push('\n'); - let (resp_table, resp_stats, resp_failures) = - generate_table(response_results, adapters, "Response Transformations"); - report.push_str(&resp_table); + let resp = generate_table(response_results, adapters, "Response Transformations"); + report.push_str(&resp.markdown); report.push('\n'); - let (stream_table, stream_stats, stream_failures) = generate_table( + let stream = generate_table( streaming_results, adapters, "Streaming Response Transformations", ); - report.push_str(&stream_table); - - let total_passed = req_stats.passed + resp_stats.passed + stream_stats.passed; - let total_failed = req_stats.failed + resp_stats.failed + stream_stats.failed; + report.push_str(&stream.markdown); + + let total_passed = req.stats.passed + resp.stats.passed + stream.stats.passed; + let total_failed = req.stats.failed + resp.stats.failed + stream.stats.failed; + let total_limitations = + req.stats.limitations + resp.stats.limitations + stream.stats.limitations; + let total_missing = + req.stats.missing_fixtures + resp.stats.missing_fixtures + stream.stats.missing_fixtures; let total = total_passed + total_failed; let pass_percentage = if total > 0 { @@ -288,37 +319,49 @@ pub fn generate_report( report.push_str("\n### Summary\n\n"); report.push_str(&format!( - "**{}/{} ({:.1}%)** - {} failed\n", - total_passed, total, pass_percentage, total_failed + "**{}/{} ({:.1}%)** - {} failed, {} limitations, {} missing fixtures\n", + total_passed, total, pass_percentage, total_failed, total_limitations, total_missing )); - let req_total = req_stats.passed + req_stats.failed; - let resp_total = resp_stats.passed + resp_stats.failed; - let stream_total = stream_stats.passed + stream_stats.failed; + let req_total = req.stats.passed + req.stats.failed; + let resp_total = resp.stats.passed + resp.stats.failed; + let stream_total = stream.stats.passed + stream.stats.failed; report.push_str(&format!( - "\n**Requests:** {}/{} passed, {} failed\n", - req_stats.passed, req_total, req_stats.failed + "\n**Requests:** {}/{} passed, {} failed, {} limitations, {} missing\n", + req.stats.passed, + req_total, + req.stats.failed, + req.stats.limitations, + req.stats.missing_fixtures )); report.push_str(&format!( - "**Responses:** {}/{} passed, {} failed\n", - resp_stats.passed, resp_total, resp_stats.failed + "**Responses:** {}/{} passed, {} failed, {} limitations, {} missing\n", + resp.stats.passed, + resp_total, + resp.stats.failed, + resp.stats.limitations, + resp.stats.missing_fixtures )); report.push_str(&format!( - "**Streaming:** {}/{} passed, {} failed\n", - stream_stats.passed, stream_total, stream_stats.failed + "**Streaming:** {}/{} passed, {} failed, {} limitations, {} missing\n", + stream.stats.passed, + stream_total, + stream.stats.failed, + stream.stats.limitations, + stream.stats.missing_fixtures )); // Organize issues by source provider → request/response/streaming → target - if !req_failures.is_empty() || !resp_failures.is_empty() || !stream_failures.is_empty() { + if !req.failures.is_empty() || !resp.failures.is_empty() || !stream.failures.is_empty() { report.push_str("\n### Issues by Source\n\n"); // Group failures by source provider, keeping request/response/streaming separate - let mut req_by_source: HashMap> = HashMap::new(); - let mut resp_by_source: HashMap> = HashMap::new(); - let mut stream_by_source: HashMap> = HashMap::new(); + let mut req_by_source: HashMap> = HashMap::new(); + let mut resp_by_source: HashMap> = HashMap::new(); + let mut stream_by_source: HashMap> = HashMap::new(); - for (direction, test_case, error) in req_failures { + for (direction, test_case, error) in req.failures { let source = direction .split(" → ") .next() @@ -330,7 +373,7 @@ pub fn generate_report( .push((direction, test_case, error)); } - for (direction, test_case, error) in resp_failures { + for (direction, test_case, error) in resp.failures { let source = direction .split(" → ") .next() @@ -342,7 +385,7 @@ pub fn generate_report( .push((direction, test_case, error)); } - for (direction, test_case, error) in stream_failures { + for (direction, test_case, error) in stream.failures { let source = direction .split(" → ") .next() @@ -509,6 +552,116 @@ pub fn generate_report( } } + // Add provider limitations section + let all_limitations: Vec<_> = req + .limitations + .into_iter() + .chain(resp.limitations) + .chain(stream.limitations) + .collect(); + + if !all_limitations.is_empty() { + report.push_str("\n### Provider Limitations\n\n"); + report.push_str("These are provider-specific features that cannot be transformed:\n\n"); + + // Group by source provider + let mut by_source: HashMap> = HashMap::new(); + for (direction, test_case, error) in all_limitations { + let source = direction + .split(" → ") + .next() + .unwrap_or(&direction) + .to_string(); + by_source + .entry(source) + .or_default() + .push((direction, test_case, error)); + } + + let mut sources: Vec<_> = by_source.into_iter().collect(); + sources.sort_by(|a, b| b.1.len().cmp(&a.1.len())); + + for (source, limitations) in sources { + report.push_str("
\n"); + report.push_str(&format!( + "⚠️ {} ({} limitations)\n\n", + source, + limitations.len() + )); + + // Group by target + let mut by_target: HashMap> = HashMap::new(); + for (direction, test_case, error) in limitations { + let target = direction + .split(" → ") + .nth(1) + .unwrap_or("Unknown") + .to_string(); + by_target + .entry(target) + .or_default() + .push((test_case, error)); + } + + let mut targets: Vec<_> = by_target.into_iter().collect(); + targets.sort_by(|a, b| b.1.len().cmp(&a.1.len())); + + for (target, target_limitations) in targets { + report.push_str(&format!("**→ {}:**\n", target)); + for (test_case, error) in target_limitations { + report.push_str(&format!(" - `{}` - {}\n", test_case, error)); + } + report.push('\n'); + } + + report.push_str("
\n\n"); + } + } + + // Add missing fixtures section (collapsed by default) + let all_missing: Vec<_> = req + .missing_fixtures + .into_iter() + .chain(resp.missing_fixtures) + .chain(stream.missing_fixtures) + .collect(); + + if !all_missing.is_empty() { + report.push_str("\n### Missing Test Fixtures\n\n"); + report.push_str("
\n"); + report.push_str(&format!( + "📁 {} missing fixtures (expand to see details)\n\n", + all_missing.len() + )); + + // Group by source provider + let mut by_source: HashMap> = HashMap::new(); + for (direction, test_case, error) in all_missing { + let source = direction + .split(" → ") + .next() + .unwrap_or(&direction) + .to_string(); + by_source + .entry(source) + .or_default() + .push((direction, test_case, error)); + } + + let mut sources: Vec<_> = by_source.into_iter().collect(); + sources.sort_by(|a, b| b.1.len().cmp(&a.1.len())); + + for (source, missing) in sources { + report.push_str(&format!("**{}** ({} missing):\n", source, missing.len())); + for (_, test_case, _) in missing { + report.push_str(&format!(" - `{}`\n", test_case)); + } + report.push('\n'); + } + + report.push_str("
\n"); + } + // Add roundtrip section report.push('\n'); report.push_str(&generate_roundtrip_section(roundtrip_results, adapters)); diff --git a/crates/coverage-report/src/runner.rs b/crates/coverage-report/src/runner.rs index 01dddba8..72cf8902 100644 --- a/crates/coverage-report/src/runner.rs +++ b/crates/coverage-report/src/runner.rs @@ -18,6 +18,30 @@ use crate::types::{PairResult, TransformResult, ValidationLevel}; type PairResults = HashMap<(usize, usize), PairResult>; type AllResults = (PairResults, PairResults, PairResults); +// Patterns that indicate provider limitations (real gaps, not bugs) +const LIMITATION_PATTERNS: &[&str] = &[ + "Provider limitation", + "has no OpenAI equivalent", + "has no Anthropic equivalent", + "has no Bedrock equivalent", + "has no Google equivalent", + "Unsupported", +]; + +// Patterns that indicate missing test fixtures (test coverage gaps) +const MISSING_FIXTURE_PATTERNS: &[&str] = &["Source payload not found"]; + +/// Classify an error into failure, limitation, or missing fixture. +fn classify_error(error: &str) -> ValidationLevel { + if MISSING_FIXTURE_PATTERNS.iter().any(|p| error.contains(p)) { + ValidationLevel::MissingFixture + } else if LIMITATION_PATTERNS.iter().any(|p| error.contains(p)) { + ValidationLevel::Limitation + } else { + ValidationLevel::Fail + } +} + // Validation uses request_to_universal/response_to_universal from the adapter trait. // These methods return Result with detailed error info when validation fails. @@ -30,10 +54,11 @@ pub fn test_request_transformation( let payload = match load_payload(test_case, source_adapter.directory_name(), filename) { Some(p) => p, None => { + let error = format!("Source payload not found: {}", filename); return TransformResult { - level: ValidationLevel::Fail, - error: Some(format!("Source payload not found: {}", filename)), - } + level: ValidationLevel::MissingFixture, + error: Some(error), + }; } }; @@ -77,10 +102,14 @@ pub fn test_request_transformation( }, } } - Err(e) => TransformResult { - level: ValidationLevel::Fail, - error: Some(format!("{}", e)), - }, + Err(e) => { + let error = format!("{}", e); + let level = classify_error(&error); + TransformResult { + level, + error: Some(error), + } + } } } @@ -265,6 +294,22 @@ pub fn run_all_tests(adapters: &[Box]) -> AllResults { .push((format!("{} (request)", test_case), error)); } } + ValidationLevel::Limitation => { + pair_result.limitations += 1; + if let Some(error) = result.error { + pair_result + .limitation_details + .push((format!("{} (request)", test_case), error)); + } + } + ValidationLevel::MissingFixture => { + pair_result.missing_fixtures += 1; + if let Some(error) = result.error { + pair_result + .missing_fixture_details + .push((format!("{} (request)", test_case), error)); + } + } } // Test followup request if exists @@ -285,6 +330,22 @@ pub fn run_all_tests(adapters: &[Box]) -> AllResults { .push((format!("{} (followup)", test_case), error)); } } + ValidationLevel::Limitation => { + pair_result.limitations += 1; + if let Some(error) = followup_result.error { + pair_result + .limitation_details + .push((format!("{} (followup)", test_case), error)); + } + } + ValidationLevel::MissingFixture => { + pair_result.missing_fixtures += 1; + if let Some(error) = followup_result.error { + pair_result + .missing_fixture_details + .push((format!("{} (followup)", test_case), error)); + } + } } } @@ -308,6 +369,22 @@ pub fn run_all_tests(adapters: &[Box]) -> AllResults { .push((format!("{} (response)", test_case), error)); } } + ValidationLevel::Limitation => { + resp_pair_result.limitations += 1; + if let Some(error) = response_result.error { + resp_pair_result + .limitation_details + .push((format!("{} (response)", test_case), error)); + } + } + ValidationLevel::MissingFixture => { + resp_pair_result.missing_fixtures += 1; + if let Some(error) = response_result.error { + resp_pair_result + .missing_fixture_details + .push((format!("{} (response)", test_case), error)); + } + } } } @@ -337,6 +414,22 @@ pub fn run_all_tests(adapters: &[Box]) -> AllResults { .push((format!("{} (streaming)", test_case), error)); } } + ValidationLevel::Limitation => { + stream_pair_result.limitations += 1; + if let Some(error) = streaming_result.error { + stream_pair_result + .limitation_details + .push((format!("{} (streaming)", test_case), error)); + } + } + ValidationLevel::MissingFixture => { + stream_pair_result.missing_fixtures += 1; + if let Some(error) = streaming_result.error { + stream_pair_result + .missing_fixture_details + .push((format!("{} (streaming)", test_case), error)); + } + } } } @@ -362,6 +455,22 @@ pub fn run_all_tests(adapters: &[Box]) -> AllResults { .push((format!("{} (followup-streaming)", test_case), error)); } } + ValidationLevel::Limitation => { + stream_pair_result.limitations += 1; + if let Some(error) = followup_streaming_result.error { + stream_pair_result + .limitation_details + .push((format!("{} (followup-streaming)", test_case), error)); + } + } + ValidationLevel::MissingFixture => { + stream_pair_result.missing_fixtures += 1; + if let Some(error) = followup_streaming_result.error { + stream_pair_result + .missing_fixture_details + .push((format!("{} (followup-streaming)", test_case), error)); + } + } } } } @@ -612,7 +721,9 @@ pub fn run_roundtrip_tests(adapters: &[Box]) -> RoundtripRe if let Some(result) = test_request_roundtrip(test_case, adapter, "request.json") { match result.level { ValidationLevel::Pass => provider_result.request_passed += 1, - ValidationLevel::Fail => { + ValidationLevel::Fail + | ValidationLevel::Limitation + | ValidationLevel::MissingFixture => { provider_result.request_failed += 1; provider_result .request_failures @@ -627,7 +738,9 @@ pub fn run_roundtrip_tests(adapters: &[Box]) -> RoundtripRe { match result.level { ValidationLevel::Pass => provider_result.request_passed += 1, - ValidationLevel::Fail => { + ValidationLevel::Fail + | ValidationLevel::Limitation + | ValidationLevel::MissingFixture => { provider_result.request_failed += 1; provider_result .request_failures @@ -640,7 +753,9 @@ pub fn run_roundtrip_tests(adapters: &[Box]) -> RoundtripRe if let Some(result) = test_response_roundtrip(test_case, adapter, "response.json") { match result.level { ValidationLevel::Pass => provider_result.response_passed += 1, - ValidationLevel::Fail => { + ValidationLevel::Fail + | ValidationLevel::Limitation + | ValidationLevel::MissingFixture => { provider_result.response_failed += 1; provider_result .response_failures diff --git a/crates/coverage-report/src/types.rs b/crates/coverage-report/src/types.rs index 12230c93..a4f1061e 100644 --- a/crates/coverage-report/src/types.rs +++ b/crates/coverage-report/src/types.rs @@ -6,6 +6,10 @@ Type definitions for coverage-report. pub enum ValidationLevel { Pass, Fail, + /// Provider limitation - feature that can't be transformed (e.g., "has no OpenAI equivalent") + Limitation, + /// Missing test fixture - "Source payload not found" + MissingFixture, } #[derive(Debug)] @@ -18,12 +22,30 @@ pub struct TransformResult { pub struct PairResult { pub passed: usize, pub failed: usize, + pub limitations: usize, + pub missing_fixtures: usize, pub failures: Vec<(String, String)>, + pub limitation_details: Vec<(String, String)>, + pub missing_fixture_details: Vec<(String, String)>, } pub struct TableStats { pub passed: usize, pub failed: usize, + pub limitations: usize, + pub missing_fixtures: usize, +} + +/// An issue entry: (direction, test_case, error_message) +pub type IssueEntry = (String, String, String); + +/// Result from generating a coverage table. +pub struct TableResult { + pub markdown: String, + pub stats: TableStats, + pub failures: Vec, + pub limitations: Vec, + pub missing_fixtures: Vec, } // ============================================================================ diff --git a/crates/lingua/src/providers/anthropic/convert.rs b/crates/lingua/src/providers/anthropic/convert.rs index 5de0b99d..f55ea7d2 100644 --- a/crates/lingua/src/providers/anthropic/convert.rs +++ b/crates/lingua/src/providers/anthropic/convert.rs @@ -2,8 +2,9 @@ use crate::error::ConvertError; use crate::providers::anthropic::generated; use crate::serde_json; use crate::universal::{ - convert::TryFromLLM, AssistantContent, AssistantContentPart, Message, TextContentPart, - ToolCallArguments, ToolContentPart, ToolResultContentPart, UserContent, UserContentPart, + convert::TryFromLLM, AssistantContent, AssistantContentPart, Message, ProviderOptions, + TextContentPart, ToolCallArguments, ToolContentPart, ToolResultContentPart, UserContent, + UserContentPart, }; impl TryFromLLM for Message { @@ -139,6 +140,48 @@ impl TryFromLLM for Message { // Skip tool results for now - should be handled properly continue; } + generated::InputContentBlockType::Document => { + if let Some(source) = block.source { + match source { + generated::Source::SourceSource(doc_source) => { + if let Some(data) = doc_source.data { + let media_type = doc_source + .media_type + .map(|mt| match mt { + generated::FluffyMediaType::ImageJpeg => { + "image/jpeg".to_string() + } + generated::FluffyMediaType::ImagePng => { + "image/png".to_string() + } + generated::FluffyMediaType::ImageGif => { + "image/gif".to_string() + } + generated::FluffyMediaType::ImageWebp => { + "image/webp".to_string() + } + generated::FluffyMediaType::ApplicationPdf => { + "application/pdf".to_string() + } + generated::FluffyMediaType::TextPlain => { + "text/plain".to_string() + } + }) + .unwrap_or_else(|| "text/plain".to_string()); + content_parts.push(UserContentPart::File { + data: serde_json::Value::String(data), + filename: block.title.clone(), + media_type, + provider_options: None, + }); + } + } + _ => { + continue; + } + } + } + } _ => { // Skip other types for now continue; @@ -180,10 +223,23 @@ impl TryFromLLM for Message { match block.input_content_block_type { generated::InputContentBlockType::Text => { if let Some(text) = block.text { + let provider_options = + block.citations.as_ref().map(|citations| { + let mut opts = serde_json::Map::new(); + if let Ok(citations_json) = + serde_json::to_value(citations) + { + opts.insert( + "citations".to_string(), + citations_json, + ); + } + ProviderOptions { options: opts } + }); content_parts.push(AssistantContentPart::Text( TextContentPart { text, - provider_options: None, + provider_options, }, )); } @@ -192,7 +248,7 @@ impl TryFromLLM for Message { if let Some(thinking) = block.thinking { content_parts.push(AssistantContentPart::Reasoning { text: thinking, - encrypted_content: None, + encrypted_content: block.signature.clone(), }); } } @@ -218,6 +274,45 @@ impl TryFromLLM for Message { }); } } + generated::InputContentBlockType::ServerToolUse => { + // Server-executed tool call (e.g., web_search) + if let (Some(id), Some(name)) = (&block.id, &block.name) { + let input = if let Some(input_map) = &block.input { + serde_json::to_value(input_map) + .unwrap_or(serde_json::Value::Null) + } else { + serde_json::Value::Null + }; + + content_parts.push(AssistantContentPart::ToolCall { + tool_call_id: id.clone(), + tool_name: name.clone(), + arguments: serde_json::to_string(&input) + .unwrap_or_else(|_| "{}".to_string()) + .into(), + provider_options: None, + provider_executed: Some(true), + }); + } + } + generated::InputContentBlockType::WebSearchToolResult => { + // Web search tool result + if let Some(tool_use_id) = &block.tool_use_id { + let output = if let Some(content) = &block.content { + serde_json::to_value(content) + .unwrap_or(serde_json::Value::Null) + } else { + serde_json::Value::Null + }; + + content_parts.push(AssistantContentPart::ToolResult { + tool_call_id: tool_use_id.clone(), + tool_name: "web_search".to_string(), + output, + provider_options: None, + }); + } + } _ => { // Skip other types for now continue; @@ -344,7 +439,72 @@ impl TryFromLLM for generated::InputMessage { None } } - _ => None, // Skip other parts for now + UserContentPart::File { + data, + filename, + media_type, + .. + } => { + // Convert universal file back to Anthropic Document format + let file_data = match data { + serde_json::Value::String(s) => Some(s), + _ => None, + }; + + if let Some(doc_data) = file_data { + let anthropic_media_type = match media_type.as_str() { + "image/jpeg" => { + Some(generated::FluffyMediaType::ImageJpeg) + } + "image/png" => { + Some(generated::FluffyMediaType::ImagePng) + } + "image/gif" => { + Some(generated::FluffyMediaType::ImageGif) + } + "image/webp" => { + Some(generated::FluffyMediaType::ImageWebp) + } + "application/pdf" => { + Some(generated::FluffyMediaType::ApplicationPdf) + } + "text/plain" => { + Some(generated::FluffyMediaType::TextPlain) + } + _ => None, + }; + + Some(generated::InputContentBlock { + cache_control: None, + citations: None, + text: None, + input_content_block_type: + generated::InputContentBlockType::Document, + source: Some(generated::Source::SourceSource( + generated::SourceSource { + data: Some(doc_data), + media_type: anthropic_media_type, + source_type: generated::FluffyType::Text, + url: None, + content: None, + }, + )), + context: None, + title: filename, + content: None, + signature: None, + thinking: None, + data: None, + id: None, + input: None, + name: None, + is_error: None, + tool_use_id: None, + }) + } else { + None + } + } }) .collect(); generated::MessageContent::InputContentBlockArray(blocks) @@ -382,9 +542,17 @@ impl TryFromLLM for generated::InputMessage { .into_iter() .filter_map(|part| match part { AssistantContentPart::Text(text_part) => { + let citations = text_part + .provider_options + .as_ref() + .and_then(|opts| opts.options.get("citations")) + .and_then(|v| { + serde_json::from_value::(v.clone()) + .ok() + }); Some(generated::InputContentBlock { cache_control: None, - citations: None, + citations, text: Some(text_part.text), input_content_block_type: generated::InputContentBlockType::Text, @@ -402,57 +570,93 @@ impl TryFromLLM for generated::InputMessage { tool_use_id: None, }) } - AssistantContentPart::Reasoning { text, .. } => { + AssistantContentPart::Reasoning { + text, + encrypted_content, + } => Some(generated::InputContentBlock { + cache_control: None, + citations: None, + text: None, + input_content_block_type: + generated::InputContentBlockType::Thinking, + source: None, + context: None, + title: None, + content: None, + signature: encrypted_content, + thinking: Some(text), + data: None, + id: None, + input: None, + name: None, + is_error: None, + tool_use_id: None, + }), + AssistantContentPart::ToolCall { + tool_call_id, + tool_name, + arguments, + provider_executed, + .. + } => { + // Convert ToolCallArguments to serde_json::Map + let input_map = match &arguments { + ToolCallArguments::Valid(map) => Some(map.clone()), + ToolCallArguments::Invalid(_) => None, + }; + + // Use ServerToolUse for provider-executed tools, ToolUse otherwise + let block_type = if provider_executed == Some(true) { + generated::InputContentBlockType::ServerToolUse + } else { + generated::InputContentBlockType::ToolUse + }; + Some(generated::InputContentBlock { cache_control: None, citations: None, text: None, - input_content_block_type: - generated::InputContentBlockType::Thinking, + input_content_block_type: block_type, source: None, context: None, title: None, content: None, signature: None, - thinking: Some(text), + thinking: None, data: None, - id: None, - input: None, - name: None, + id: Some(tool_call_id.clone()), + input: input_map, + name: Some(tool_name.clone()), is_error: None, tool_use_id: None, }) } - AssistantContentPart::ToolCall { + AssistantContentPart::ToolResult { tool_call_id, - tool_name, - arguments, + output, .. } => { - // Convert ToolCallArguments to serde_json::Map - let input_map = match &arguments { - ToolCallArguments::Valid(map) => Some(map.clone()), - ToolCallArguments::Invalid(_) => None, - }; + // Convert tool result back to WebSearchToolResult + let content = serde_json::from_value(output).ok(); Some(generated::InputContentBlock { cache_control: None, citations: None, text: None, input_content_block_type: - generated::InputContentBlockType::ToolUse, + generated::InputContentBlockType::WebSearchToolResult, source: None, context: None, title: None, - content: None, + content, signature: None, thinking: None, data: None, - id: Some(tool_call_id.clone()), - input: input_map, - name: Some(tool_name.clone()), + id: None, + input: None, + name: None, is_error: None, - tool_use_id: None, + tool_use_id: Some(tool_call_id), }) } _ => None, // Skip other types for now @@ -530,9 +734,17 @@ impl TryFromLLM> for Vec { match block.content_block_type { generated::ContentBlockType::Text => { if let Some(text) = block.text { + // Preserve citations in provider_options for roundtrip + let provider_options = block.citations.as_ref().map(|citations| { + let mut opts = serde_json::Map::new(); + if let Ok(citations_json) = serde_json::to_value(citations) { + opts.insert("citations".to_string(), citations_json); + } + ProviderOptions { options: opts } + }); content_parts.push(AssistantContentPart::Text(TextContentPart { text, - provider_options: None, + provider_options, })); } } @@ -540,7 +752,7 @@ impl TryFromLLM> for Vec { if let Some(thinking) = block.thinking { content_parts.push(AssistantContentPart::Reasoning { text: thinking, - encrypted_content: None, + encrypted_content: block.signature.clone(), }); } } @@ -564,6 +776,43 @@ impl TryFromLLM> for Vec { }); } } + generated::ContentBlockType::ServerToolUse => { + // Server-executed tool call (e.g., web_search) + if let (Some(id), Some(name)) = (block.id, block.name) { + let input = if let Some(input_map) = block.input { + serde_json::to_value(input_map).unwrap_or(serde_json::Value::Null) + } else { + serde_json::Value::Null + }; + + content_parts.push(AssistantContentPart::ToolCall { + tool_call_id: id, + tool_name: name, + arguments: serde_json::to_string(&input) + .unwrap_or_else(|_| "{}".to_string()) + .into(), + provider_options: None, + provider_executed: Some(true), + }); + } + } + generated::ContentBlockType::WebSearchToolResult => { + // Web search tool result with encrypted content + if let Some(tool_use_id) = block.tool_use_id { + let output = if let Some(content) = block.content { + serde_json::to_value(content).unwrap_or(serde_json::Value::Null) + } else { + serde_json::Value::Null + }; + + content_parts.push(AssistantContentPart::ToolResult { + tool_call_id: tool_use_id, + tool_name: "web_search".to_string(), + output, + provider_options: None, + }); + } + } _ => { // Skip other types for now continue; @@ -614,8 +863,19 @@ impl TryFromLLM> for Vec { for part in parts { match part { AssistantContentPart::Text(text_part) => { + // Restore citations from provider_options if present + let citations = text_part + .provider_options + .as_ref() + .and_then(|opts| opts.options.get("citations")) + .and_then(|v| { + serde_json::from_value::< + Vec, + >(v.clone()) + .ok() + }); content_blocks.push(generated::ContentBlock { - citations: None, + citations, text: Some(text_part.text), content_block_type: generated::ContentBlockType::Text, signature: None, @@ -628,12 +888,15 @@ impl TryFromLLM> for Vec { tool_use_id: None, }); } - AssistantContentPart::Reasoning { text, .. } => { + AssistantContentPart::Reasoning { + text, + encrypted_content, + } => { content_blocks.push(generated::ContentBlock { citations: None, text: None, content_block_type: generated::ContentBlockType::Thinking, - signature: None, + signature: encrypted_content, thinking: Some(text), data: None, id: None, @@ -647,6 +910,7 @@ impl TryFromLLM> for Vec { tool_call_id, tool_name, arguments, + provider_executed, .. } => { // Convert ToolCallArguments to serde_json::Map for response generation @@ -655,10 +919,17 @@ impl TryFromLLM> for Vec { ToolCallArguments::Invalid(_) => None, }; + // Use ServerToolUse for provider-executed tools, ToolUse otherwise + let block_type = if provider_executed == Some(true) { + generated::ContentBlockType::ServerToolUse + } else { + generated::ContentBlockType::ToolUse + }; + content_blocks.push(generated::ContentBlock { citations: None, text: None, - content_block_type: generated::ContentBlockType::ToolUse, + content_block_type: block_type, signature: None, thinking: None, data: None, @@ -669,6 +940,29 @@ impl TryFromLLM> for Vec { tool_use_id: None, }); } + AssistantContentPart::ToolResult { + tool_call_id, + output, + .. + } => { + // Convert tool result back to WebSearchToolResult + let content = serde_json::from_value(output).ok(); + + content_blocks.push(generated::ContentBlock { + citations: None, + text: None, + content_block_type: + generated::ContentBlockType::WebSearchToolResult, + signature: None, + thinking: None, + data: None, + id: None, + input: None, + name: None, + content, + tool_use_id: Some(tool_call_id), + }); + } _ => { // Skip other types for now continue; diff --git a/payloads/cases/index.ts b/payloads/cases/index.ts index caa6cddd..49087574 100644 --- a/payloads/cases/index.ts +++ b/payloads/cases/index.ts @@ -12,7 +12,7 @@ export { paramsCases } from "./params"; import { simpleCases } from "./simple"; import { advancedCases } from "./advanced"; import { paramsCases } from "./params"; -import { mergeCollections } from "./utils"; +import { mergeCollections, getCaseNames } from "./utils"; // Combined collection of all test cases export const allTestCases = mergeCollections( @@ -21,5 +21,12 @@ export const allTestCases = mergeCollections( paramsCases ); +// Map of collection names to their case names (for --cases flag) +export const caseCollections: Record = { + simple: getCaseNames(simpleCases), + advanced: getCaseNames(advancedCases), + params: getCaseNames(paramsCases), +}; + // Legacy export for backward compatibility (can be removed later) export const unifiedTestCases = allTestCases; diff --git a/payloads/cases/models.ts b/payloads/cases/models.ts index 9f89b34e..e42a3eb5 100644 --- a/payloads/cases/models.ts +++ b/payloads/cases/models.ts @@ -1,8 +1,10 @@ // Canonical model configuration - change these to update all test cases -export const OPENAI_CHAT_COMPLETIONS_MODEL = "gpt-5-nano"; +export const OPENAI_CHAT_COMPLETIONS_MODEL = "gpt-4o-mini"; export const OPENAI_RESPONSES_MODEL = "gpt-5-nano"; // For parameters not supported by reasoning models (temperature, top_p, logprobs) export const OPENAI_NON_REASONING_MODEL = "gpt-4o-mini"; export const ANTHROPIC_MODEL = "claude-sonnet-4-20250514"; +// For Anthropic structured outputs (requires Sonnet 4.5+ for JSON schema output_format) +export const ANTHROPIC_STRUCTURED_OUTPUT_MODEL = "claude-sonnet-4-5-20250929"; export const GOOGLE_MODEL = "gemini-2.5-flash"; export const BEDROCK_MODEL = "us.anthropic.claude-haiku-4-5-20251001-v1:0"; diff --git a/payloads/cases/params.ts b/payloads/cases/params.ts index 31ba6346..0534d42a 100644 --- a/payloads/cases/params.ts +++ b/payloads/cases/params.ts @@ -3,6 +3,8 @@ import { OPENAI_CHAT_COMPLETIONS_MODEL, OPENAI_RESPONSES_MODEL, OPENAI_NON_REASONING_MODEL, + ANTHROPIC_MODEL, + ANTHROPIC_STRUCTURED_OUTPUT_MODEL, } from "./models"; // OpenAI Responses API and Chat Completions API parameter test cases @@ -13,7 +15,7 @@ export const paramsCases: TestCaseCollection = { reasoningSummaryParam: { "chat-completions": { - model: OPENAI_CHAT_COMPLETIONS_MODEL, + model: OPENAI_RESPONSES_MODEL, // Must use reasoning model for reasoning_effort messages: [{ role: "user", content: "What is 2+2?" }], reasoning_effort: "medium", }, @@ -25,7 +27,36 @@ export const paramsCases: TestCaseCollection = { summary: "detailed", }, }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 16000, + messages: [{ role: "user", content: "What is 2+2?" }], + thinking: { + type: "enabled", + budget_tokens: 10000, + }, + }, + google: null, + bedrock: null, + }, + + reasoningEffortLowParam: { + "chat-completions": { + model: OPENAI_RESPONSES_MODEL, // Must use reasoning model + messages: [{ role: "user", content: "What is 2+2?" }], + reasoning_effort: "low", + }, + responses: { + model: OPENAI_RESPONSES_MODEL, + input: [{ role: "user", content: "What is 2+2?" }], + reasoning: { effort: "low" }, + }, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 8000, + messages: [{ role: "user", content: "What is 2+2?" }], + thinking: { type: "enabled", budget_tokens: 5000 }, // low effort budget + }, google: null, bedrock: null, }, @@ -98,7 +129,39 @@ export const paramsCases: TestCaseCollection = { }, }, }, - anthropic: null, + anthropic: { + model: ANTHROPIC_STRUCTURED_OUTPUT_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Extract: John is 25." }], + output_format: { + type: "json_schema", + schema: { + type: "object", + properties: { + name: { type: "string" }, + age: { type: "number" }, + }, + required: ["name", "age"], + additionalProperties: false, + }, + }, + }, + google: null, + bedrock: null, + }, + + textFormatTextParam: { + "chat-completions": { + model: OPENAI_CHAT_COMPLETIONS_MODEL, + messages: [{ role: "user", content: "Say hello." }], + response_format: { type: "text" }, + }, + responses: { + model: OPENAI_RESPONSES_MODEL, + input: [{ role: "user", content: "Say hello." }], + text: { format: { type: "text" } }, + }, + anthropic: null, // text is default, no explicit param needed google: null, bedrock: null, }, @@ -112,7 +175,17 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Latest OpenAI news" }], tools: [{ type: "web_search_preview" }], }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Latest OpenAI news" }], + tools: [ + { + type: "web_search_20250305", + name: "web_search", + }, + ], + }, google: null, bedrock: null, }, @@ -129,7 +202,17 @@ export const paramsCases: TestCaseCollection = { ], tools: [{ type: "code_interpreter", container: { type: "auto" } }], }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Run Python" }], + tools: [ + { + type: "bash_20250124", + name: "bash", + }, + ], + }, google: null, bedrock: null, }, @@ -177,7 +260,25 @@ export const paramsCases: TestCaseCollection = { ], tool_choice: { type: "function", name: "get_weather" }, }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Tokyo weather" }], + tools: [ + { + name: "get_weather", + description: "Get weather", + input_schema: { + type: "object", + properties: { + location: { type: "string" }, + }, + required: ["location"], + }, + }, + ], + tool_choice: { type: "tool", name: "get_weather" }, + }, google: null, bedrock: null, }, @@ -225,7 +326,25 @@ export const paramsCases: TestCaseCollection = { ], parallel_tool_calls: false, }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "NYC and LA weather" }], + tools: [ + { + name: "get_weather", + description: "Get weather", + input_schema: { + type: "object", + properties: { + location: { type: "string" }, + }, + required: ["location"], + }, + }, + ], + tool_choice: { type: "auto", disable_parallel_tool_use: true }, + }, google: null, bedrock: null, }, @@ -245,7 +364,12 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Hi" }], instructions: "Reply with OK", }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Hi" }], + system: "Say OK", + }, google: null, bedrock: null, }, @@ -291,7 +415,12 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Hi" }], service_tier: "default", }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say ok." }], + service_tier: "auto", + }, google: null, bedrock: null, }, @@ -307,7 +436,18 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Hi" }], prompt_cache_key: "test-key", }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + system: [ + { + type: "text", + text: "Be helpful.", + cache_control: { type: "ephemeral" }, + }, + ], + messages: [{ role: "user", content: "Say ok." }], + }, google: null, bedrock: null, }, @@ -330,7 +470,12 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Hi" }], metadata: { key: "value" }, }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say ok." }], + metadata: { user_id: "user-12345" }, + }, google: null, bedrock: null, }, @@ -346,7 +491,12 @@ export const paramsCases: TestCaseCollection = { input: [{ role: "user", content: "Hi" }], safety_identifier: "test-user", }, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say ok." }], + metadata: { user_id: "hashed-user-id-abc123" }, + }, google: null, bedrock: null, }, @@ -360,7 +510,12 @@ export const paramsCases: TestCaseCollection = { temperature: 0.7, }, responses: null, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say hi." }], + temperature: 0.7, + }, google: null, bedrock: null, }, @@ -372,7 +527,12 @@ export const paramsCases: TestCaseCollection = { top_p: 0.9, }, responses: null, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say hi." }], + top_p: 0.9, + }, google: null, bedrock: null, }, @@ -435,7 +595,12 @@ export const paramsCases: TestCaseCollection = { stop: ["10", "ten"], }, responses: null, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Count to 20." }], + stop_sequences: ["10", "ten"], + }, google: null, bedrock: null, }, @@ -447,7 +612,11 @@ export const paramsCases: TestCaseCollection = { max_completion_tokens: 500, }, responses: null, - anthropic: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 500, + messages: [{ role: "user", content: "Say ok." }], + }, google: null, bedrock: null, }, @@ -499,4 +668,302 @@ export const paramsCases: TestCaseCollection = { google: null, bedrock: null, }, + + // === Anthropic-Specific Parameters === + + topKParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say hi." }], + top_k: 40, + }, + google: null, + bedrock: null, + }, + + streamParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Say hi." }], + stream: true, + }, + google: null, + bedrock: null, + }, + + textEditorToolParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Edit file." }], + tools: [{ type: "text_editor_20250124", name: "str_replace_editor" }], + }, + google: null, + bedrock: null, + }, + + textEditorToolV2Param: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Edit file." }], + tools: [ + { type: "text_editor_20250429", name: "str_replace_based_edit_tool" }, + ], + }, + google: null, + bedrock: null, + }, + + textEditorToolV3Param: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Edit file." }], + tools: [ + { + type: "text_editor_20250728", + name: "str_replace_based_edit_tool", + max_characters: 10000, + }, + ], + }, + google: null, + bedrock: null, + }, + + webSearchToolAdvancedParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "AI news" }], + tools: [ + { + type: "web_search_20250305", + name: "web_search", + allowed_domains: ["wikipedia.org", "arxiv.org"], + max_uses: 3, + }, + ], + }, + google: null, + bedrock: null, + }, + + webSearchUserLocationParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Local food" }], + tools: [ + { + type: "web_search_20250305", + name: "web_search", + user_location: { + type: "approximate", + city: "San Francisco", + region: "California", + country: "US", + timezone: "America/Los_Angeles", + }, + }, + ], + }, + google: null, + bedrock: null, + }, + + toolChoiceAutoParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Weather?" }], + tools: [ + { + name: "get_weather", + description: "Get weather", + input_schema: { + type: "object", + properties: { location: { type: "string" } }, + required: ["location"], + }, + }, + ], + tool_choice: { type: "auto" }, + }, + google: null, + bedrock: null, + }, + + toolChoiceAnyParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Weather?" }], + tools: [ + { + name: "get_weather", + description: "Get weather", + input_schema: { + type: "object", + properties: { location: { type: "string" } }, + required: ["location"], + }, + }, + ], + tool_choice: { type: "any" }, + }, + google: null, + bedrock: null, + }, + + toolChoiceNoneParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "Weather?" }], + tools: [ + { + name: "get_weather", + description: "Get weather", + input_schema: { + type: "object", + properties: { location: { type: "string" } }, + required: ["location"], + }, + }, + ], + tool_choice: { type: "none" }, + }, + google: null, + bedrock: null, + }, + + cacheControl5mParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + system: [ + { + type: "text", + text: "Be helpful.", + cache_control: { type: "ephemeral", ttl: "5m" }, + }, + ], + messages: [{ role: "user", content: "Hi" }], + }, + google: null, + bedrock: null, + }, + + cacheControl1hParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + system: [ + { + type: "text", + text: "Be helpful.", + cache_control: { type: "ephemeral", ttl: "1h" }, + }, + ], + messages: [{ role: "user", content: "Hi" }], + }, + google: null, + bedrock: null, + }, + + imageContentParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [ + { + role: "user", + content: [ + { + type: "image", + source: { + type: "base64", + media_type: "image/png", + data: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", + }, + }, + { type: "text", text: "Describe." }, + ], + }, + ], + }, + google: null, + bedrock: null, + }, + + documentContentParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [ + { + role: "user", + content: [ + { + type: "document", + source: { + type: "text", + media_type: "text/plain", + data: "Sample text.", + }, + title: "Doc", + }, + { type: "text", text: "Summarize." }, + ], + }, + ], + }, + google: null, + bedrock: null, + }, + + thinkingDisabledParam: { + "chat-completions": null, + responses: null, + anthropic: { + model: ANTHROPIC_MODEL, + max_tokens: 1024, + messages: [{ role: "user", content: "2+2?" }], + thinking: { type: "disabled" }, + }, + google: null, + bedrock: null, + }, }; diff --git a/payloads/cases/types.ts b/payloads/cases/types.ts index 7765ab4f..5f35be68 100644 --- a/payloads/cases/types.ts +++ b/payloads/cases/types.ts @@ -14,11 +14,18 @@ export interface GoogleGenerateContentRequest { // Re-export Bedrock type for convenience export type BedrockConverseRequest = ConverseCommandInput; +// Extended Anthropic type that includes beta features like output_format +// The executor uses regular client.messages.create() but test cases may define beta params +export type AnthropicMessageCreateParams = + Anthropic.Messages.MessageCreateParams & { + output_format?: Anthropic.Beta.Messages.BetaJSONOutputFormat | null; + }; + // Well-defined types for test cases export interface TestCase { "chat-completions": OpenAI.Chat.Completions.ChatCompletionCreateParams | null; responses: OpenAI.Responses.ResponseCreateParams | null; - anthropic: Anthropic.Messages.MessageCreateParams | null; + anthropic: AnthropicMessageCreateParams | null; google: GoogleGenerateContentRequest | null; bedrock: BedrockConverseRequest | null; } diff --git a/payloads/package.json b/payloads/package.json index 9be8bd21..33281925 100644 --- a/payloads/package.json +++ b/payloads/package.json @@ -15,7 +15,7 @@ "test:watch": "vitest" }, "dependencies": { - "@anthropic-ai/sdk": "^0.63.0", + "@anthropic-ai/sdk": "^0.71.2", "@aws-sdk/client-bedrock-runtime": "^3.700.0", "@google/genai": "^1.34.0", "openai": "^6.16.0" diff --git a/payloads/scripts/providers/anthropic.ts b/payloads/scripts/providers/anthropic.ts index e94978da..4aef4923 100644 --- a/payloads/scripts/providers/anthropic.ts +++ b/payloads/scripts/providers/anthropic.ts @@ -40,8 +40,7 @@ export async function executeAnthropic( const { stream, baseURL, apiKey } = options ?? {}; const client = new Anthropic({ apiKey: apiKey ?? process.env.ANTHROPIC_API_KEY, - // Anthropic SDK adds /messages, gateway expects /v1/messages - baseURL: baseURL ? `${baseURL}/v1` : undefined, + baseURL, // SDK adds /v1/messages itself }); const result: CaptureResult< Anthropic.Messages.MessageCreateParams, @@ -50,6 +49,12 @@ export async function executeAnthropic( > = { request: payload }; try { + // Add beta header if output_format is present (structured outputs beta) + const requestOptions = + "output_format" in payload + ? { headers: { "anthropic-beta": "structured-outputs-2025-11-13" } } + : undefined; + // Create promises for parallel execution const promises: Promise[] = []; @@ -57,10 +62,13 @@ export async function executeAnthropic( if (stream !== true) { promises.push( client.messages - .create({ - ...payload, - stream: false, - }) + .create( + { + ...payload, + stream: false, + }, + requestOptions + ) .then((response) => ({ type: "response", data: response })) ); } @@ -70,10 +78,13 @@ export async function executeAnthropic( promises.push( (async () => { const streamChunks: Array = []; - const streamResponse = await client.messages.create({ - ...payload, - stream: true, - }); + const streamResponse = await client.messages.create( + { + ...payload, + stream: true, + }, + requestOptions + ); for await (const chunk of streamResponse) { streamChunks.push(chunk); @@ -175,10 +186,13 @@ export async function executeAnthropic( if (stream !== true) { followupPromises.push( client.messages - .create({ - ...followUpPayload, - stream: false, - }) + .create( + { + ...followUpPayload, + stream: false, + }, + requestOptions + ) .then((response) => ({ type: "followupResponse", data: response })) ); } @@ -188,10 +202,13 @@ export async function executeAnthropic( (async () => { const followupStreamChunks: Array = []; - const followupStreamResponse = await client.messages.create({ - ...followUpPayload, - stream: true, - }); + const followupStreamResponse = await client.messages.create( + { + ...followUpPayload, + stream: true, + }, + requestOptions + ); for await (const chunk of followupStreamResponse) { followupStreamChunks.push(chunk); diff --git a/payloads/scripts/validate.ts b/payloads/scripts/validate.ts index acd4a882..b237ca16 100644 --- a/payloads/scripts/validate.ts +++ b/payloads/scripts/validate.ts @@ -58,7 +58,7 @@ function parseArguments(): CLIOptions { i++; } break; - case "--provider": + case "--providers": if (i + 1 < args.length) { options.providers = args[i + 1].split(","); i++; @@ -107,9 +107,10 @@ Options: Use $BRAINTRUST_API_KEY for Braintrust gateway --format Comma-separated formats to test (default: chat-completions) Available: ${formats.join(", ")} - --provider Comma-separated providers to test (default: uses snapshot model) + --providers Comma-separated providers to test (default: uses snapshot model) Available: openai, anthropic - --cases Comma-separated case names to test (default: all) + --cases Comma-separated case names or collections to test + Collections: simple, advanced, params --verbose, -v Show full diff details --stream, -s Test streaming responses instead of non-streaming --help, -h Show this help message @@ -122,7 +123,7 @@ Examples: ./scripts/validate.ts --proxy-url http://localhost:8080 --api-key $BRAINTRUST_API_KEY # Validate chat-completions format with both OpenAI and Anthropic providers - ./scripts/validate.ts --proxy-url http://localhost:8080 --provider openai,anthropic + ./scripts/validate.ts --proxy-url http://localhost:8080 --providers openai,anthropic # Validate multiple formats ./scripts/validate.ts --proxy-url http://localhost:8080 --format chat-completions,anthropic @@ -179,7 +180,8 @@ async function main(): Promise { printer.printSummary(results); - // Exit with error code if any tests failed + // Exit with error code only for actual failures (not warnings) + // Warnings (minor diffs like logprobs, tool args) are acceptable variations const failed = results.filter((r) => !r.success).length; process.exit(failed > 0 ? 1 : 0); } diff --git a/payloads/scripts/validation/diff-utils.test.ts b/payloads/scripts/validation/diff-utils.test.ts index 8d76e8f7..a4e6e1e4 100644 --- a/payloads/scripts/validation/diff-utils.test.ts +++ b/payloads/scripts/validation/diff-utils.test.ts @@ -35,7 +35,12 @@ describe("compareResponses", () => { const result = compareResponses(42, 43); expect(result.match).toBe(false); expect(result.diffs).toHaveLength(1); - expect(result.diffs[0]).toEqual({ path: "", expected: 42, actual: 43 }); + expect(result.diffs[0]).toEqual({ + path: "", + expected: 42, + actual: 43, + severity: "major", + }); }); it("detects different string values", () => { @@ -219,7 +224,12 @@ describe("compareResponses", () => { describe("formatDiff", () => { it("formats primitive diff", () => { - const diff: DiffEntry = { path: "value", expected: 42, actual: 43 }; + const diff: DiffEntry = { + path: "value", + expected: 42, + actual: 43, + severity: "major", + }; expect(formatDiff(diff)).toBe("value: 42 → 43"); }); @@ -228,6 +238,7 @@ describe("formatDiff", () => { path: "name", expected: "hello", actual: "world", + severity: "major", }; expect(formatDiff(diff)).toBe("name: hello → world"); }); @@ -237,6 +248,7 @@ describe("formatDiff", () => { path: "data", expected: { a: 1 }, actual: { a: 2 }, + severity: "major", }; expect(formatDiff(diff)).toBe('data: {"a":1} → {"a":2}'); }); @@ -246,6 +258,7 @@ describe("formatDiff", () => { path: "items", expected: [1, 2], actual: [1, 2, 3], + severity: "major", }; expect(formatDiff(diff)).toBe("items: [1,2] → [1,2,3]"); }); @@ -255,6 +268,7 @@ describe("formatDiff", () => { path: "choices.0.message.content", expected: "hello", actual: "world", + severity: "major", }; expect(formatDiff(diff)).toBe("choices.0.message.content: hello → world"); }); @@ -264,6 +278,7 @@ describe("formatDiff", () => { path: "field (missing)", expected: "(exists)", actual: "(missing)", + severity: "major", }; expect(formatDiff(diff)).toBe("field (missing): (exists) → (missing)"); }); diff --git a/payloads/scripts/validation/diff-utils.ts b/payloads/scripts/validation/diff-utils.ts index cf7a4863..9c57182f 100644 --- a/payloads/scripts/validation/diff-utils.ts +++ b/payloads/scripts/validation/diff-utils.ts @@ -1,9 +1,12 @@ // JSON comparison utilities with field ignore support +export type DiffSeverity = "minor" | "major"; + export interface DiffEntry { path: string; expected: unknown; actual: unknown; + severity: DiffSeverity; } export interface DiffResult { @@ -11,6 +14,36 @@ export interface DiffResult { diffs: DiffEntry[]; } +/** + * Patterns for fields that are expected to vary and should be treated as minor diffs. + * These typically include: + * - Logprobs (floating point precision variations) + * - Tool call arguments (model-generated, varies between runs) + */ +const MINOR_DIFF_PATTERNS: RegExp[] = [ + /\.logprob/, // Logprobs vary due to float precision + /logprobs\.content\.\d+\.top_logprobs\.\d+\.logprob/, // Specific logprob paths + /tool_calls\.\d+\.function\.arguments/, // Tool args are generated by model + /choices\.\d+\.message\.tool_calls\.\d+\.function\.arguments/, // Full path for tool args +]; + +/** + * Check if a path should be treated as a minor diff. + */ +function isMinorDiffPath(path: string): boolean { + return MINOR_DIFF_PATTERNS.some((pattern) => pattern.test(path)); +} + +/** + * Check if all diffs in a result are minor (warnings). + */ +export function hasOnlyMinorDiffs(diffResult: DiffResult): boolean { + if (diffResult.match || diffResult.diffs.length === 0) { + return false; // No diffs at all - this is a pass, not a warning + } + return diffResult.diffs.every((diff) => diff.severity === "minor"); +} + /** * Check if a path matches an ignore pattern. * Supports: @@ -61,7 +94,12 @@ function deepCompare( if (actual !== null && actual !== undefined) { // Only report if NOT ignored (ignored means we don't care about value differences) if (!isIgnored) { - diffs.push({ path, expected, actual }); + diffs.push({ + path, + expected, + actual, + severity: isMinorDiffPath(path) ? "minor" : "major", + }); } } return; @@ -74,6 +112,7 @@ function deepCompare( path: `${path} (missing)`, expected: "(exists)", actual: "(missing)", + severity: isMinorDiffPath(path) ? "minor" : "major", }); } return; @@ -89,14 +128,24 @@ function deepCompare( const actualType = typeof actual; if (expectedType !== actualType) { - diffs.push({ path, expected, actual }); + diffs.push({ + path, + expected, + actual, + severity: isMinorDiffPath(path) ? "minor" : "major", + }); return; } // Handle arrays if (Array.isArray(expected)) { if (!Array.isArray(actual)) { - diffs.push({ path, expected, actual }); + diffs.push({ + path, + expected, + actual, + severity: isMinorDiffPath(path) ? "minor" : "major", + }); return; } @@ -108,6 +157,7 @@ function deepCompare( path: lengthPath, expected: expected.length, actual: actual.length, + severity: isMinorDiffPath(lengthPath) ? "minor" : "major", }); } @@ -151,7 +201,12 @@ function deepCompare( // Handle primitives if (expected !== actual) { - diffs.push({ path, expected, actual }); + diffs.push({ + path, + expected, + actual, + severity: isMinorDiffPath(path) ? "minor" : "major", + }); } } diff --git a/payloads/scripts/validation/index.ts b/payloads/scripts/validation/index.ts index 0ea089df..ff2e7e59 100644 --- a/payloads/scripts/validation/index.ts +++ b/payloads/scripts/validation/index.ts @@ -2,7 +2,7 @@ import { readFileSync, existsSync } from "fs"; import { join } from "path"; -import { compareResponses, DiffResult } from "./diff-utils"; +import { compareResponses, DiffResult, hasOnlyMinorDiffs } from "./diff-utils"; // Import executors import { openaiExecutor } from "../providers/openai"; @@ -10,7 +10,12 @@ import { openaiResponsesExecutor } from "../providers/openai-responses"; import { anthropicExecutor } from "../providers/anthropic"; // Import test cases from code -import { simpleCases, getCaseNames, getCaseForProvider } from "../../cases"; +import { + allTestCases, + getCaseNames, + getCaseForProvider, + caseCollections, +} from "../../cases"; import { OPENAI_CHAT_COMPLETIONS_MODEL, ANTHROPIC_MODEL, @@ -61,8 +66,9 @@ export interface ValidationResult { caseName: string; model: string; // model that was tested success: boolean; + warning?: boolean; // true if success but only due to minor diffs (logprobs, tool args) durationMs: number; - diff?: DiffResult; // only if success=false due to diff + diff?: DiffResult; // only if success=false due to diff, or warning=true error?: string; // only if request failed } @@ -105,10 +111,10 @@ const PROVIDER_REGISTRY: Record = { * Get all available cases for a format from the cases definitions. */ function getAvailableCases(format: string): string[] { - return getCaseNames(simpleCases).filter( + return getCaseNames(allTestCases).filter( (caseName) => getCaseForProvider( - simpleCases, + allTestCases, caseName, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- format is a string key format as @@ -117,7 +123,7 @@ function getAvailableCases(format: string): string[] { | "anthropic" | "google" | "bedrock" - ) !== undefined + ) != null ); } @@ -167,8 +173,11 @@ export async function runValidation( const availableCases = getAvailableCases(format); let caseNames: string[]; if (options.cases) { - // User specified explicit cases - caseNames = options.cases.filter((c) => availableCases.includes(c)); + // User specified explicit cases or collection names - expand collections + const expandedCases = options.cases.flatMap( + (c) => caseCollections[c] ?? [c] + ); + caseNames = expandedCases.filter((c) => availableCases.includes(c)); } else if (options.all) { // Run all available cases caseNames = availableCases; @@ -205,7 +214,7 @@ export async function runValidation( try { // Get request from cases definitions (single source of truth) const caseRequest = getCaseForProvider( - simpleCases, + allTestCases, caseName, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- format is a string key format as @@ -254,11 +263,21 @@ export async function runValidation( } // Override model if not using default + // Only override if test uses the default chat-completions model + // Preserve explicit model choices (e.g., reasoning models like gpt-5-nano) if ( providerAlias !== "default" && PROVIDER_REGISTRY[providerAlias] ) { - request = { ...request, model: PROVIDER_REGISTRY[providerAlias] }; + if ( + request.model === OPENAI_CHAT_COMPLETIONS_MODEL || + !request.model + ) { + request = { + ...request, + model: PROVIDER_REGISTRY[providerAlias], + }; + } } // Execute through proxy @@ -291,13 +310,19 @@ export async function runValidation( executor.ignoredFields ?? [] ); + // Determine success/warning state: + // - success=true, warning=undefined: perfect match (no diffs) + // - success=true, warning=true: only minor diffs (logprobs, tool args) + // - success=false: major diffs or errors + const onlyMinorDiffs = hasOnlyMinorDiffs(diff); const result: ValidationResult = { format, caseName, model: modelName, - success: diff.match, + success: diff.match || onlyMinorDiffs, + warning: onlyMinorDiffs ? true : undefined, durationMs: Date.now() - start, - diff: diff.match ? undefined : diff, + diff: diff.match ? undefined : diff, // Include diff for warnings too }; options.onResult?.(result); return result; @@ -324,5 +349,5 @@ export async function runValidation( } // Re-export types for convenience -export type { DiffResult, DiffEntry } from "./diff-utils"; -export { compareResponses, formatDiff } from "./diff-utils"; +export type { DiffResult, DiffEntry, DiffSeverity } from "./diff-utils"; +export { compareResponses, formatDiff, hasOnlyMinorDiffs } from "./diff-utils"; diff --git a/payloads/scripts/validation/reporter.ts b/payloads/scripts/validation/reporter.ts index 0c46f3db..3d5b6a72 100644 --- a/payloads/scripts/validation/reporter.ts +++ b/payloads/scripts/validation/reporter.ts @@ -46,18 +46,43 @@ export function createStreamingPrinter(options: PrinterOptions) { currentFormat = result.format; } - // Print result - const icon = result.success - ? `${colors.green}✓${colors.reset}` - : `${colors.red}✗${colors.reset}`; + // Print result - determine icon based on state + let icon: string; + if (result.warning) { + icon = `${colors.yellow}~${colors.reset}`; + } else if (result.success) { + icon = `${colors.green}✓${colors.reset}`; + } else { + icon = `${colors.red}✗${colors.reset}`; + } const duration = `${colors.dim}(${result.durationMs}ms)${colors.reset}`; const modelLabel = result.model !== "default" ? ` ${colors.cyan}[${result.model}]${colors.reset}` : ""; - if (result.success) { + if (result.success && !result.warning) { + // Clean pass - no diffs + console.log(` ${icon} ${result.caseName}${modelLabel} ${duration}`); + } else if (result.warning && result.diff) { + // Warning - only minor diffs (logprobs, tool args) console.log(` ${icon} ${result.caseName}${modelLabel} ${duration}`); + console.log( + ` ${colors.yellow}Minor differences (expected variation):${colors.reset}` + ); + + const diffsToShow = verbose + ? result.diff.diffs + : result.diff.diffs.slice(0, 3); + for (const diff of diffsToShow) { + console.log(` ${colors.dim}${formatDiff(diff)}${colors.reset}`); + } + + if (!verbose && result.diff.diffs.length > 3) { + console.log( + ` ${colors.dim}... and ${result.diff.diffs.length - 3} more minor differences${colors.reset}` + ); + } } else if (result.error) { console.log(` ${icon} ${result.caseName}${modelLabel} ${duration}`); console.log(` ${colors.red}Error: ${result.error}${colors.reset}`); @@ -81,15 +106,26 @@ export function createStreamingPrinter(options: PrinterOptions) { }, printSummary(results: ValidationResult[]): void { - const passed = results.filter((r) => r.success).length; - const failed = results.length - passed; + const passed = results.filter((r) => r.success && !r.warning).length; + const warnings = results.filter((r) => r.warning).length; + const failed = results.filter((r) => !r.success).length; const totalDuration = results.reduce((sum, r) => sum + r.durationMs, 0); console.log(); // Blank line before summary console.log("━".repeat(50)); - console.log( - `${colors.bold}Summary:${colors.reset} ${colors.green}${passed} passed${colors.reset}, ${failed > 0 ? colors.red : colors.dim}${failed} failed${colors.reset}` + + // Build summary parts + const parts: string[] = [ + `${colors.green}${passed} passed${colors.reset}`, + ]; + if (warnings > 0) { + parts.push(`${colors.yellow}${warnings} warnings${colors.reset}`); + } + parts.push( + `${failed > 0 ? colors.red : colors.dim}${failed} failed${colors.reset}` ); + + console.log(`${colors.bold}Summary:${colors.reset} ${parts.join(", ")}`); console.log(`${colors.dim}Total time: ${totalDuration}ms${colors.reset}`); console.log("━".repeat(50)); }, diff --git a/payloads/snapshots/cacheControl1hParam/anthropic/followup-request.json b/payloads/snapshots/cacheControl1hParam/anthropic/followup-request.json new file mode 100644 index 00000000..9799fb7b --- /dev/null +++ b/payloads/snapshots/cacheControl1hParam/anthropic/followup-request.json @@ -0,0 +1,33 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral", + "ttl": "1h" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Hi" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl1hParam/anthropic/followup-response.json b/payloads/snapshots/cacheControl1hParam/anthropic/followup-response.json new file mode 100644 index 00000000..5cac75dd --- /dev/null +++ b/payloads/snapshots/cacheControl1hParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01ErUtBUXJ1nVgPt6BDqCQz2", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you figure out what to do next! To give you the most useful suggestions, it would help to know a bit more about your situation. For example:\n\n- Are you looking for something to do right now (like an activity or task)?\n- Are you thinking about bigger life decisions (career, education, relationships)?\n- Do you have any specific goals or areas you're considering?\n- What's your current situation or what prompted this question?\n\nFeel free to share as much or as little as you'd like, and I'll do my best to offer some helpful thoughts or suggestions!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 40, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 130, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl1hParam/anthropic/request.json b/payloads/snapshots/cacheControl1hParam/anthropic/request.json new file mode 100644 index 00000000..268a5b09 --- /dev/null +++ b/payloads/snapshots/cacheControl1hParam/anthropic/request.json @@ -0,0 +1,20 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral", + "ttl": "1h" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Hi" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl1hParam/anthropic/response-streaming.json b/payloads/snapshots/cacheControl1hParam/anthropic/response-streaming.json new file mode 100644 index 00000000..6d97551c --- /dev/null +++ b/payloads/snapshots/cacheControl1hParam/anthropic/response-streaming.json @@ -0,0 +1,77 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_0118JviecF6mje34fqkLAoJo", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hello! How are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today? Is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " there anything I can help you with?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 20 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/cacheControl1hParam/anthropic/response.json b/payloads/snapshots/cacheControl1hParam/anthropic/response.json new file mode 100644 index 00000000..9f141ff4 --- /dev/null +++ b/payloads/snapshots/cacheControl1hParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01H6yqDn7qukbj8rVL2y3yJH", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 20, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl5mParam/anthropic/followup-request.json b/payloads/snapshots/cacheControl5mParam/anthropic/followup-request.json new file mode 100644 index 00000000..b80a903d --- /dev/null +++ b/payloads/snapshots/cacheControl5mParam/anthropic/followup-request.json @@ -0,0 +1,33 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral", + "ttl": "5m" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Hi" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl5mParam/anthropic/followup-response.json b/payloads/snapshots/cacheControl5mParam/anthropic/followup-response.json new file mode 100644 index 00000000..44de446d --- /dev/null +++ b/payloads/snapshots/cacheControl5mParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01XRdLMi9zVAG3TbYmswwDgs", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you figure out what to do next! To give you the most useful suggestions, it would help to know a bit more about your situation. For example:\n\n- Are you looking for something to do right now (like an activity or task)?\n- Are you thinking about bigger life decisions or goals?\n- Is this related to work, personal time, a project you're working on, or something else?\n\nWhat's on your mind? What kind of \"next step\" are you thinking about?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 40, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 111, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl5mParam/anthropic/request.json b/payloads/snapshots/cacheControl5mParam/anthropic/request.json new file mode 100644 index 00000000..251b830d --- /dev/null +++ b/payloads/snapshots/cacheControl5mParam/anthropic/request.json @@ -0,0 +1,20 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral", + "ttl": "5m" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Hi" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/cacheControl5mParam/anthropic/response-streaming.json b/payloads/snapshots/cacheControl5mParam/anthropic/response-streaming.json new file mode 100644 index 00000000..e6064458 --- /dev/null +++ b/payloads/snapshots/cacheControl5mParam/anthropic/response-streaming.json @@ -0,0 +1,85 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01EMD84TEcZEUdMUovjwLvSj", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hello! How" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today? Is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " there anything I can help you with?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 20 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/cacheControl5mParam/anthropic/response.json b/payloads/snapshots/cacheControl5mParam/anthropic/response.json new file mode 100644 index 00000000..6e0aa1c8 --- /dev/null +++ b/payloads/snapshots/cacheControl5mParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01Rqs2q4yJSxfzDh87xbdqJw", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 11, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 20, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-request.json b/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-request.json new file mode 100644 index 00000000..b69bd00e --- /dev/null +++ b/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-request.json @@ -0,0 +1,43 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Run Python" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll start Python for you." + }, + { + "type": "tool_use", + "id": "toolu_016NCPiqAKWbF3xRw64dMBHw", + "name": "bash", + "input": { + "command": "python3" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_016NCPiqAKWbF3xRw64dMBHw", + "content": "71 degrees" + } + ] + } + ], + "tools": [ + { + "type": "bash_20250124", + "name": "bash" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-response.json b/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-response.json new file mode 100644 index 00000000..121e50b3 --- /dev/null +++ b/payloads/snapshots/codeInterpreterToolParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01YHVjjTYimg18c6ZX7Mj4mM", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I see the Python interpreter started and is waiting for input. The \"71 degrees\" output seems unusual - this might be showing a prompt or system information. \n\nYou can now enter Python commands. Would you like me to run any specific Python code, or would you prefer to interact with the Python interpreter directly? If you have specific Python commands or scripts you'd like to execute, just let me know!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 641, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 86, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/codeInterpreterToolParam/anthropic/request.json b/payloads/snapshots/codeInterpreterToolParam/anthropic/request.json new file mode 100644 index 00000000..868cc752 --- /dev/null +++ b/payloads/snapshots/codeInterpreterToolParam/anthropic/request.json @@ -0,0 +1,16 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Run Python" + } + ], + "tools": [ + { + "type": "bash_20250124", + "name": "bash" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/codeInterpreterToolParam/anthropic/response-streaming.json b/payloads/snapshots/codeInterpreterToolParam/anthropic/response-streaming.json new file mode 100644 index 00000000..234ebc77 --- /dev/null +++ b/payloads/snapshots/codeInterpreterToolParam/anthropic/response-streaming.json @@ -0,0 +1,131 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01Ec2MNjvULyqkhbXoCuh94X", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 566, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 3, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'll start" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " Python" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " for you." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "content_block_start", + "index": 1, + "content_block": { + "type": "tool_use", + "id": "toolu_01BwRQ1AdtojZ4A498HsxGw1", + "name": "bash", + "input": {} + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "{\"" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "command\": \"p" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "ython" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "3\"}" + } + }, + { + "type": "content_block_stop", + "index": 1 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "tool_use", + "stop_sequence": null + }, + "usage": { + "input_tokens": 566, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 60 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/codeInterpreterToolParam/anthropic/response.json b/payloads/snapshots/codeInterpreterToolParam/anthropic/response.json new file mode 100644 index 00000000..996f0b1a --- /dev/null +++ b/payloads/snapshots/codeInterpreterToolParam/anthropic/response.json @@ -0,0 +1,33 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01ShNNMjod1Y8UYKsT9jqg4s", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll start Python for you." + }, + { + "type": "tool_use", + "id": "toolu_016NCPiqAKWbF3xRw64dMBHw", + "name": "bash", + "input": { + "command": "python3" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 566, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 60, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/documentContentParam/anthropic/followup-request.json b/payloads/snapshots/documentContentParam/anthropic/followup-request.json new file mode 100644 index 00000000..3f18bbba --- /dev/null +++ b/payloads/snapshots/documentContentParam/anthropic/followup-request.json @@ -0,0 +1,37 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": [ + { + "type": "document", + "source": { + "type": "text", + "media_type": "text/plain", + "data": "Sample text." + }, + "title": "Doc" + }, + { + "type": "text", + "text": "Summarize." + } + ] + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "The document contains only a brief placeholder text that says \"Sample text.\" There is no substantial content to summarize." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/documentContentParam/anthropic/followup-response.json b/payloads/snapshots/documentContentParam/anthropic/followup-response.json new file mode 100644 index 00000000..99e78a30 --- /dev/null +++ b/payloads/snapshots/documentContentParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01YaWyniRVqasc4mankPRFFw", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Since you have a document with just placeholder text, here are some potential next steps:\n\n1. **Replace the placeholder** - Add your actual content to the document if this was meant to contain real information\n\n2. **Provide the real document** - If you have a different document you'd like me to summarize, please share that instead\n\n3. **Clarify your goal** - Let me know what kind of document you're working with or what you're trying to accomplish\n\n4. **Ask a different question** - If you have other questions or tasks I can help with, feel free to ask\n\nWhat would be most helpful for your situation?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 97, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 138, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/documentContentParam/anthropic/request.json b/payloads/snapshots/documentContentParam/anthropic/request.json new file mode 100644 index 00000000..80c497ba --- /dev/null +++ b/payloads/snapshots/documentContentParam/anthropic/request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": [ + { + "type": "document", + "source": { + "type": "text", + "media_type": "text/plain", + "data": "Sample text." + }, + "title": "Doc" + }, + { + "type": "text", + "text": "Summarize." + } + ] + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/documentContentParam/anthropic/response-streaming.json b/payloads/snapshots/documentContentParam/anthropic/response-streaming.json new file mode 100644 index 00000000..d6c88cfa --- /dev/null +++ b/payloads/snapshots/documentContentParam/anthropic/response-streaming.json @@ -0,0 +1,141 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01Mq3izkQU3pTMB6GHQHSSWx", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 62, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "The" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " document contains" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " only" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " brief" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " placeholder" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " text that" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " says" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " \"Sample text.\" There is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " no substant" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ive content to summarize." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 62, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 27 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/documentContentParam/anthropic/response.json b/payloads/snapshots/documentContentParam/anthropic/response.json new file mode 100644 index 00000000..e3a6df71 --- /dev/null +++ b/payloads/snapshots/documentContentParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01VQnH1Mdmx7VU1PpTB6S6Js", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "The document contains only a brief placeholder text that says \"Sample text.\" There is no substantial content to summarize." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 62, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 26, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/imageContentParam/anthropic/followup-request.json b/payloads/snapshots/imageContentParam/anthropic/followup-request.json new file mode 100644 index 00000000..fdf9d043 --- /dev/null +++ b/payloads/snapshots/imageContentParam/anthropic/followup-request.json @@ -0,0 +1,36 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": [ + { + "type": "image", + "source": { + "type": "base64", + "media_type": "image/png", + "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" + } + }, + { + "type": "text", + "text": "Describe." + } + ] + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "This image shows a collection of old, weathered stone or concrete blocks scattered on what appears to be sandy or dusty ground. The blocks are various sizes and have a grayish, aged appearance with rough, eroded surfaces that suggest they've been exposed to the elements for a considerable time. The lighting appears natural and somewhat dim, giving the scene a muted, earthy tone. The blocks seem to be randomly placed rather than in any organized pattern, and the overall setting has an archaeological or historical site quality to it, possibly ruins or remnants of an old structure or wall." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/imageContentParam/anthropic/followup-response.json b/payloads/snapshots/imageContentParam/anthropic/followup-response.json new file mode 100644 index 00000000..239390b8 --- /dev/null +++ b/payloads/snapshots/imageContentParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01ETAjCc6ypGFSFqWfdDNnLX", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I can see these appear to be old stone or concrete blocks in what looks like an archaeological or historical site. However, I don't have enough context about your specific situation, goals, or location to give you targeted advice about what to do next.\n\nCould you provide more details about:\n- Where you are and what brought you to this location\n- What you're trying to accomplish or investigate\n- Whether this is part of a project, research, or exploration\n\nWith more context, I'd be happy to help suggest appropriate next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 146, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 113, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/imageContentParam/anthropic/request.json b/payloads/snapshots/imageContentParam/anthropic/request.json new file mode 100644 index 00000000..53d701d9 --- /dev/null +++ b/payloads/snapshots/imageContentParam/anthropic/request.json @@ -0,0 +1,23 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": [ + { + "type": "image", + "source": { + "type": "base64", + "media_type": "image/png", + "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==" + } + }, + { + "type": "text", + "text": "Describe." + } + ] + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/imageContentParam/anthropic/response-streaming.json b/payloads/snapshots/imageContentParam/anthropic/response-streaming.json new file mode 100644 index 00000000..08381b5b --- /dev/null +++ b/payloads/snapshots/imageContentParam/anthropic/response-streaming.json @@ -0,0 +1,533 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_012htmSSj5XWmnQrooea8MD2", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 15, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "This" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " image" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " shows a wooden" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " boar" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "dwalk or deck extending across" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " what" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " appears to be a wet" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "land or" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " marshy area. The walk" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "way is made of weathered wooden plan" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ks an" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d has" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " rail" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ings on both sides for" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " safety. The surrounding" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " landscape features tall grasses and reeds" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " typical" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " of a marsh" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " or coastal" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " wet" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "land environment." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " The vegetation" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " appears golden" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " or tan" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " in color" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", suggesting this photo" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " may" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " have been taken during autumn" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " or in" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " naturally" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " drie" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d grass" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "land area" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ". The sky" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " appears" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " overcast or" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " h" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "azy, giving" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the scene" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a m" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "uted, atmospheric quality. This" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " type" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " of boar" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "dwalk is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " commonly found in nature" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " preserv" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "es, parks" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", or" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " coastal" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " areas to" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " allow" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " visitors" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " to explore" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " sensitive" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " wet" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "land ecos" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ystems without" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " disturbing the natural habitat" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 15, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 150 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/imageContentParam/anthropic/response.json b/payloads/snapshots/imageContentParam/anthropic/response.json new file mode 100644 index 00000000..41bffd95 --- /dev/null +++ b/payloads/snapshots/imageContentParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01PFExN72ent65uQKC22mvTC", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "This image shows a collection of old, weathered stone or concrete blocks scattered on what appears to be sandy or dusty ground. The blocks are various sizes and have a grayish, aged appearance with rough, eroded surfaces that suggest they've been exposed to the elements for a considerable time. The lighting appears natural and somewhat dim, giving the scene a muted, earthy tone. The blocks seem to be randomly placed rather than in any organized pattern, and the overall setting has an archaeological or historical site quality to it, possibly ruins or remnants of an old structure or wall." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 15, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 122, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/instructionsParam/anthropic/followup-request.json b/payloads/snapshots/instructionsParam/anthropic/followup-request.json new file mode 100644 index 00000000..5e9bd729 --- /dev/null +++ b/payloads/snapshots/instructionsParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Hi" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "system": "Say OK" +} \ No newline at end of file diff --git a/payloads/snapshots/instructionsParam/anthropic/followup-response.json b/payloads/snapshots/instructionsParam/anthropic/followup-response.json new file mode 100644 index 00000000..a4d93f64 --- /dev/null +++ b/payloads/snapshots/instructionsParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01CLa7VmMP71H5DwuSeTyZ7t", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you figure out what to do next! To give you the most useful suggestions, it would help to know a bit more about your situation. For example:\n\n- Are you looking for something to do right now (like an activity or task)?\n- Are you thinking about bigger life decisions or goals?\n- Is this related to work, personal life, a project, or something else?\n- What's currently on your mind or what brought up this question?\n\nFeel free to share as much or as little context as you'd like, and I'll do my best to offer some helpful ideas!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 39, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 131, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/instructionsParam/anthropic/request.json b/payloads/snapshots/instructionsParam/anthropic/request.json new file mode 100644 index 00000000..e432b403 --- /dev/null +++ b/payloads/snapshots/instructionsParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Hi" + } + ], + "system": "Say OK" +} \ No newline at end of file diff --git a/payloads/snapshots/instructionsParam/anthropic/response-streaming.json b/payloads/snapshots/instructionsParam/anthropic/response-streaming.json new file mode 100644 index 00000000..4ae338f3 --- /dev/null +++ b/payloads/snapshots/instructionsParam/anthropic/response-streaming.json @@ -0,0 +1,77 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01KG5iamGrd91RP9Q8Tvi1GV", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hello! How are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today? Is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " there anything I can help you with?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 20 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/instructionsParam/anthropic/response.json b/payloads/snapshots/instructionsParam/anthropic/response.json new file mode 100644 index 00000000..53352121 --- /dev/null +++ b/payloads/snapshots/instructionsParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01SAs1gdEMwgPU928Jz7LQR8", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hello! How are you doing today? Is there anything I can help you with?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 20, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-request.json b/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-request.json new file mode 100644 index 00000000..e73cff16 --- /dev/null +++ b/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-request.json @@ -0,0 +1,23 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 500, + "messages": [ + { + "role": "user", + "content": "Say ok." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-response.json b/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-response.json new file mode 100644 index 00000000..1a8c01ad --- /dev/null +++ b/payloads/snapshots/maxCompletionTokensParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01JtR3CuRwcTUEBqwhNe19eK", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I don't have context about what you're working on or what your goals are, so I can't give you specific guidance on what to do next. Could you share more details about:\n\n- What you're currently working on or thinking about\n- What you're trying to accomplish\n- Any particular area where you'd like suggestions (work, personal projects, learning, etc.)\n\nWith more information, I'd be happy to help you think through your next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 23, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 98, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/maxCompletionTokensParam/anthropic/request.json b/payloads/snapshots/maxCompletionTokensParam/anthropic/request.json new file mode 100644 index 00000000..93d2b2d7 --- /dev/null +++ b/payloads/snapshots/maxCompletionTokensParam/anthropic/request.json @@ -0,0 +1,10 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 500, + "messages": [ + { + "role": "user", + "content": "Say ok." + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/maxCompletionTokensParam/anthropic/response-streaming.json b/payloads/snapshots/maxCompletionTokensParam/anthropic/response-streaming.json new file mode 100644 index 00000000..fb7afd66 --- /dev/null +++ b/payloads/snapshots/maxCompletionTokensParam/anthropic/response-streaming.json @@ -0,0 +1,69 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01D7x1b9VXfLqcpaEScmPfrA", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 5 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/maxCompletionTokensParam/anthropic/response.json b/payloads/snapshots/maxCompletionTokensParam/anthropic/response.json new file mode 100644 index 00000000..c679925b --- /dev/null +++ b/payloads/snapshots/maxCompletionTokensParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01RbcmrtjnZBAkmHDgD31382", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/metadataParam/anthropic/followup-request.json b/payloads/snapshots/metadataParam/anthropic/followup-request.json new file mode 100644 index 00000000..7a29a8b5 --- /dev/null +++ b/payloads/snapshots/metadataParam/anthropic/followup-request.json @@ -0,0 +1,26 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "metadata": { + "user_id": "user-12345" + } +} \ No newline at end of file diff --git a/payloads/snapshots/metadataParam/anthropic/followup-response.json b/payloads/snapshots/metadataParam/anthropic/followup-response.json new file mode 100644 index 00000000..21116f68 --- /dev/null +++ b/payloads/snapshots/metadataParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01X2qLocZBFaWyEj9gFqAPou", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That's a pretty open question! What you should do next depends on what you're trying to accomplish or what's on your mind. Here are a few ways to think about it:\n\n- If you have a specific project or task you're working on, you could tell me about it and I can help you brainstorm next steps\n- If you're looking for something productive to do, you might consider learning something new, organizing something, or working on a personal goal\n- If you want to have a conversation, you could ask me about a topic you're curious about\n- If you're just experimenting with this chat, feel free to ask me anything you'd like to know\n\nWhat sounds most interesting to you right now?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 24, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 153, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/metadataParam/anthropic/request.json b/payloads/snapshots/metadataParam/anthropic/request.json new file mode 100644 index 00000000..c0cec6c1 --- /dev/null +++ b/payloads/snapshots/metadataParam/anthropic/request.json @@ -0,0 +1,13 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + } + ], + "metadata": { + "user_id": "user-12345" + } +} \ No newline at end of file diff --git a/payloads/snapshots/metadataParam/anthropic/response-streaming.json b/payloads/snapshots/metadataParam/anthropic/response-streaming.json new file mode 100644 index 00000000..50ebff95 --- /dev/null +++ b/payloads/snapshots/metadataParam/anthropic/response-streaming.json @@ -0,0 +1,61 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01CwpoZCBhCTpGcrwo4Tf74B", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 4 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/metadataParam/anthropic/response.json b/payloads/snapshots/metadataParam/anthropic/response.json new file mode 100644 index 00000000..7ef6bc1c --- /dev/null +++ b/payloads/snapshots/metadataParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_018ZYXPc4vHdbKt7NG5UTqKQ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 5, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-request.json b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-request.json new file mode 100644 index 00000000..0ce411ca --- /dev/null +++ b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-request.json @@ -0,0 +1,58 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "NYC and LA weather" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll get the weather information for both New York City and Los Angeles for you." + }, + { + "type": "tool_use", + "id": "toolu_01DvEMYHasnGtuBASefscNvW", + "name": "get_weather", + "input": { + "location": "NYC" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_01DvEMYHasnGtuBASefscNvW", + "content": "71 degrees" + } + ] + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "auto", + "disable_parallel_tool_use": true + } +} \ No newline at end of file diff --git a/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-response.json b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-response.json new file mode 100644 index 00000000..337ed37f --- /dev/null +++ b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/followup-response.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01QU9RPrqCGg1ABvuxgvqUfY", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_019KeDAVtF2EKmp3ehs241EA", + "name": "get_weather", + "input": { + "location": "LA" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 435, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 44, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/request.json b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/request.json new file mode 100644 index 00000000..6f56d9fd --- /dev/null +++ b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/request.json @@ -0,0 +1,31 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "NYC and LA weather" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "auto", + "disable_parallel_tool_use": true + } +} \ No newline at end of file diff --git a/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response-streaming.json b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response-streaming.json new file mode 100644 index 00000000..d44bcc89 --- /dev/null +++ b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response-streaming.json @@ -0,0 +1,123 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01UQpbDdEj6mDBVKAev6hLXR", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 349, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 8, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'll get the weather information for both" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " New" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " York City and Los Angeles for you." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "content_block_start", + "index": 1, + "content_block": { + "type": "tool_use", + "id": "toolu_01UQx2E4zdAKTfq8mgvDguGA", + "name": "get_weather", + "input": {} + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "{\"l" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": "ocation\":" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "input_json_delta", + "partial_json": " \"NYC\"}" + } + }, + { + "type": "content_block_stop", + "index": 1 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "tool_use", + "stop_sequence": null + }, + "usage": { + "input_tokens": 349, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 62 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response.json b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response.json new file mode 100644 index 00000000..4dd4f1ab --- /dev/null +++ b/payloads/snapshots/parallelToolCallsDisabledParam/anthropic/response.json @@ -0,0 +1,33 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01TztpYyUCNNHLPG8JwvSapx", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'll get the weather information for both New York City and Los Angeles for you." + }, + { + "type": "tool_use", + "id": "toolu_01DvEMYHasnGtuBASefscNvW", + "name": "get_weather", + "input": { + "location": "NYC" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 349, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 62, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/promptCacheKeyParam/anthropic/followup-request.json b/payloads/snapshots/promptCacheKeyParam/anthropic/followup-request.json new file mode 100644 index 00000000..3b114482 --- /dev/null +++ b/payloads/snapshots/promptCacheKeyParam/anthropic/followup-request.json @@ -0,0 +1,32 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Say ok." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Ok." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/promptCacheKeyParam/anthropic/followup-response.json b/payloads/snapshots/promptCacheKeyParam/anthropic/followup-response.json new file mode 100644 index 00000000..c60355c0 --- /dev/null +++ b/payloads/snapshots/promptCacheKeyParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01LuriiKPyzsTSryt8eGqa2W", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That depends on what you're trying to accomplish! Here are a few ways to think about it:\n\n- **If you have a specific goal or project in mind**: Break it down into smaller, manageable steps and tackle the first one.\n\n- **If you're looking for something productive to do**: Consider tasks like learning something new, organizing your space, exercising, or reaching out to someone you care about.\n\n- **If you're feeling stuck or uncertain**: Sometimes taking a short break, going for a walk, or doing something creative can help clarify your thoughts.\n\n- **If you want to chat more**: Feel free to tell me about what's on your mind or ask about anything you're curious about.\n\nWhat feels most relevant to where you are right now?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 27, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 163, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/promptCacheKeyParam/anthropic/request.json b/payloads/snapshots/promptCacheKeyParam/anthropic/request.json new file mode 100644 index 00000000..4819294c --- /dev/null +++ b/payloads/snapshots/promptCacheKeyParam/anthropic/request.json @@ -0,0 +1,19 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "system": [ + { + "type": "text", + "text": "Be helpful.", + "cache_control": { + "type": "ephemeral" + } + } + ], + "messages": [ + { + "role": "user", + "content": "Say ok." + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/promptCacheKeyParam/anthropic/response-streaming.json b/payloads/snapshots/promptCacheKeyParam/anthropic/response-streaming.json new file mode 100644 index 00000000..09507999 --- /dev/null +++ b/payloads/snapshots/promptCacheKeyParam/anthropic/response-streaming.json @@ -0,0 +1,61 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_014CqavsP7x6G68stp1UmWR8", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 13, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 13, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 4 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/promptCacheKeyParam/anthropic/response.json b/payloads/snapshots/promptCacheKeyParam/anthropic/response.json new file mode 100644 index 00000000..1ec3473c --- /dev/null +++ b/payloads/snapshots/promptCacheKeyParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01S2bGRF8aXiQxU3dLhftW97", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Ok." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 13, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 5, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-request.json b/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-request.json new file mode 100644 index 00000000..091e69a2 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-request.json @@ -0,0 +1,32 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 8000, + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + }, + { + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "This is a very straightforward math question. 2 + 2 = 4.", + "signature": "EuABCkYICxgCKkB7j437d6XJZqQHfoXpijH7vIqYgO0dMpJQrDG7jPE7OEI44ETSkXqWkQU36vPj1EBQGUoxmZ7w/fVtYH6MOHhLEgyJq5BPDZsGWCUro3AaDAU86KB/Y7BDWNi/eSIwSX1cHbVSTAnQ0pftwSi9o9f0kMAh5SmuA6iOWzuM09JXKWgdb8nF8wo035s7+FALKkiSRnfwfrNAZssJM6yRGsvu3wFHubOiB3i4/1ybzACrfI0LMhpdDmk8weOf3NDODnTtnybQSLK3ApP2BlrjToWU8TuIcQd09usYAQ==" + }, + { + "type": "text", + "text": "2 + 2 = 4" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "thinking": { + "type": "enabled", + "budget_tokens": 5000 + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-response.json b/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-response.json new file mode 100644 index 00000000..ebc30ac7 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/anthropic/followup-response.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01BroKqS7k4iJSTDC924dsY9", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "The human just asked \"What should I do next?\" without providing any context about what they're currently doing, what their goals are, or what situation they're in. This is a very open-ended question that I can't answer meaningfully without more information.\n\nI should ask for clarification about what context they're referring to - are they asking about a specific task, project, life decision, or something else entirely? I want to be helpful but I need more information to give useful guidance.", + "signature": "EpkFCkYICxgCKkC54v5/9oXyoR5AN4IzKZ4m7ZiuTkpaqD1nvsfm/ETAz/wrIrWiS5IxyaFCa4+Ok0c6yiu1h2X6PGaM64PGf/DyEgxav/x5zaDts9nqtpUaDD2DDh3nQfAZtCgr3CIwpUit4rtzrBCvEQyF0fyumb2tGAW9KqFAkUDTKStU3bocS0lB7YLhv0eLdVqgDd8OKoAEvqt814iy2uOSRraBbciuRKyJnL07brHQkAelz8CNofqJSLZ7Z14MBMRUbFd2gkr3zel75HElIfW8UricVkdEjJ6I0x8QpfBycFcR5UrZa+9r3QcVxAxm0s+bpgiAyDFuJZPjdqKBEdbLthZuGF+ymgwiSd7BGM7sdMUf6U7Tic3YY3rFii+Kc1GCi5Yjx7dHXECkUmjtSmLhJwPQMCUOjz5elWk6htokJF7wi0ru0r69O5FmOLav5lKQj26JYmoAQL5N2F/JmwPNGd++r5Cqr/XUNuFisqNJov8xHFugbWqMHBEzfsCPFVuF4E13TOpBmZcr5pEdBqZ7ltHxinyBH0z4QlUc1Bva/cwCTy42fjPvG0o6e+LcrLbARACDy8V2tj28rf3x5mv0TVZf7wZO4ct7lIlFuE3KQRQ/43dokMcCI5z5KEDacKKAppcoU3fPeBiySA7Svn7J744Df4ibE6QD3B2Z/3gKf0V4a/Y8zXnlE37+JGOfLpIwM4xAeXjb6bw/QrOO0cU/JBdd+00rFmuVy1Jon4Wls5N9uSYESOFRziXDuBDCQEmwecpVfOaq6pr7Tsc8sDmp5wIrrzFjEEKWZgipwFIXwHMkZNws6PE1W8XpkVc6eWd8NbNp199E9ni2HsI9TDpnERZ0TVncR8ND5jDaVHTc5sdOdAHq+KoYAQ==" + }, + { + "type": "text", + "text": "I'd be happy to help, but I need more context! \"What should I do next?\" could mean many different things depending on your situation. Could you tell me more about what you're working on or what context you're asking about? For example:\n\n- Are you working on a specific project or task?\n- Are you looking for general life advice?\n- Are you trying to solve a problem?\n- Are you planning your day or schedule?\n\nWith more details, I can give you much more helpful suggestions!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 65, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 220, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/anthropic/request.json b/payloads/snapshots/reasoningEffortLowParam/anthropic/request.json new file mode 100644 index 00000000..7fffd4fe --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/anthropic/request.json @@ -0,0 +1,14 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 8000, + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + } + ], + "thinking": { + "type": "enabled", + "budget_tokens": 5000 + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/anthropic/response.json b/payloads/snapshots/reasoningEffortLowParam/anthropic/response.json new file mode 100644 index 00000000..1ed7481b --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/anthropic/response.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01FSMtKAia3mA1XeAX55CLwX", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "This is a very straightforward math question. 2 + 2 = 4.", + "signature": "EuABCkYICxgCKkB7j437d6XJZqQHfoXpijH7vIqYgO0dMpJQrDG7jPE7OEI44ETSkXqWkQU36vPj1EBQGUoxmZ7w/fVtYH6MOHhLEgyJq5BPDZsGWCUro3AaDAU86KB/Y7BDWNi/eSIwSX1cHbVSTAnQ0pftwSi9o9f0kMAh5SmuA6iOWzuM09JXKWgdb8nF8wo035s7+FALKkiSRnfwfrNAZssJM6yRGsvu3wFHubOiB3i4/1ybzACrfI0LMhpdDmk8weOf3NDODnTtnybQSLK3ApP2BlrjToWU8TuIcQd09usYAQ==" + }, + { + "type": "text", + "text": "2 + 2 = 4" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 43, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 40, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-request.json b/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-request.json new file mode 100644 index 00000000..4b5990b9 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-request.json @@ -0,0 +1,20 @@ +{ + "model": "gpt-5-nano", + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + }, + { + "role": "assistant", + "content": "4", + "refusal": null, + "annotations": [] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "reasoning_effort": "low" +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-response.json b/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-response.json new file mode 100644 index 00000000..6be98441 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/chat-completions/followup-response.json @@ -0,0 +1,35 @@ +{ + "id": "chatcmpl-Cysk8pWynTVUpKWp4vWjr5pCwub6t", + "object": "chat.completion", + "created": 1768626148, + "model": "gpt-5-nano-2025-08-07", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I’m not sure what you’re working on. Could you tell me a bit about your goal or situation? In the meantime, here are some generic “what to do next” templates you can use:\n\n- If you’re trying to make progress on a project:\n 1) Define your next milestone (specific, measurable).\n 2) List the concrete steps needed to reach it.\n 3) Pick the first step and do it for 25–50 minutes (time-box).\n 4) Review what happened, adjust, and repeat.\n\n- If you’re feeling stuck or overwhelmed:\n 1) Write down the top 3 tasks that matter most.\n 2) Break them into tiny actions (2–5 minutes each).\n 3) Do one small action now, then reassess.\n\n- If you’re learning something new:\n 1) Set a learning goal for today (e.g., “watch 1 lesson and take notes”).\n 2) Do a quick recall exercise (summarize what you learned from memory).\n 3) Practice with a small example or quiz.\n\n- If you’re deciding what to do next:\n 1) List 3 options with pros/cons.\n 2) Choose the option with the highest impact and lowest effort, or do a quick 5-minute test.\n\n- If you want a routine or daily plan:\n 1) Pick 3 non-negotiables for the day.\n 2) Schedule focused blocks for deep work.\n 3) End with a quick reflection: what went well, what to adjust tomorrow.\n\nIf you can share a bit more about your goal, I can suggest a precise next step.", + "refusal": null, + "annotations": [] + }, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 30, + "completion_tokens": 424, + "total_tokens": 454, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 64, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": null +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/chat-completions/request.json b/payloads/snapshots/reasoningEffortLowParam/chat-completions/request.json new file mode 100644 index 00000000..50b321c5 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/chat-completions/request.json @@ -0,0 +1,10 @@ +{ + "model": "gpt-5-nano", + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + } + ], + "reasoning_effort": "low" +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/chat-completions/response.json b/payloads/snapshots/reasoningEffortLowParam/chat-completions/response.json new file mode 100644 index 00000000..488bd6a4 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/chat-completions/response.json @@ -0,0 +1,35 @@ +{ + "id": "chatcmpl-Cysk7Vm5zTv4XsuTf0nvIcA1oDx47", + "object": "chat.completion", + "created": 1768626147, + "model": "gpt-5-nano-2025-08-07", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "4", + "refusal": null, + "annotations": [] + }, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 13, + "completion_tokens": 10, + "total_tokens": 23, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": null +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/responses/followup-request.json b/payloads/snapshots/reasoningEffortLowParam/responses/followup-request.json new file mode 100644 index 00000000..7a6573e8 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/responses/followup-request.json @@ -0,0 +1,35 @@ +{ + "model": "gpt-5-nano", + "input": [ + { + "role": "user", + "content": "What is 2+2?" + }, + { + "id": "rs_00a964d72425097e00696b17e40a5c81a19a5efa4ae81a49f1", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_00a964d72425097e00696b17e44d5881a199f3ab66741c00b4", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "4" + } + ], + "role": "assistant" + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "reasoning": { + "effort": "low" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/responses/followup-response.json b/payloads/snapshots/reasoningEffortLowParam/responses/followup-response.json new file mode 100644 index 00000000..e1379627 --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/responses/followup-response.json @@ -0,0 +1,77 @@ +{ + "id": "resp_00a964d72425097e00696b17e5115881a186ea59e293a6f0ff", + "object": "response", + "created_at": 1768626149, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1768626168, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5-nano-2025-08-07", + "output": [ + { + "id": "rs_00a964d72425097e00696b17e7059081a1b830938ac3ab44e2", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_00a964d72425097e00696b17ef021c81a19fe64867be309dde", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "I’m not sure what you’re trying to do. Could you tell me a bit more about your goal or the context?\n\nIf you just want a quick starter, here are some general next-step ideas:\n- Set a clear goal: Write down what you want to achieve in the next day or week.\n- Break it down: List the small tasks needed to reach that goal.\n- Prioritize: Pick 1–3 top tasks to tackle first.\n- Schedule it: Put those tasks on a simple calendar or timer.\n- Check progress: At the end of the day, review what you did and adjust for tomorrow.\n- Get help if stuck: Ask a specific question or share what’s blocking you.\n\nTell me the area you’re working in (study, work project, coding, health, etc.), and I can give tailored steps." + } + ], + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": null, + "reasoning": { + "effort": "low", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tools": [], + "top_logprobs": 0, + "top_p": 1, + "truncation": "disabled", + "usage": { + "input_tokens": 30, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 303, + "output_tokens_details": { + "reasoning_tokens": 128 + }, + "total_tokens": 333 + }, + "user": null, + "metadata": {}, + "output_text": "I’m not sure what you’re trying to do. Could you tell me a bit more about your goal or the context?\n\nIf you just want a quick starter, here are some general next-step ideas:\n- Set a clear goal: Write down what you want to achieve in the next day or week.\n- Break it down: List the small tasks needed to reach that goal.\n- Prioritize: Pick 1–3 top tasks to tackle first.\n- Schedule it: Put those tasks on a simple calendar or timer.\n- Check progress: At the end of the day, review what you did and adjust for tomorrow.\n- Get help if stuck: Ask a specific question or share what’s blocking you.\n\nTell me the area you’re working in (study, work project, coding, health, etc.), and I can give tailored steps." +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/responses/request.json b/payloads/snapshots/reasoningEffortLowParam/responses/request.json new file mode 100644 index 00000000..bd8092eb --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/responses/request.json @@ -0,0 +1,12 @@ +{ + "model": "gpt-5-nano", + "input": [ + { + "role": "user", + "content": "What is 2+2?" + } + ], + "reasoning": { + "effort": "low" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningEffortLowParam/responses/response.json b/payloads/snapshots/reasoningEffortLowParam/responses/response.json new file mode 100644 index 00000000..298345fa --- /dev/null +++ b/payloads/snapshots/reasoningEffortLowParam/responses/response.json @@ -0,0 +1,77 @@ +{ + "id": "resp_00a964d72425097e00696b17e394cc81a1bf22ed63fe84b503", + "object": "response", + "created_at": 1768626147, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1768626148, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5-nano-2025-08-07", + "output": [ + { + "id": "rs_00a964d72425097e00696b17e40a5c81a19a5efa4ae81a49f1", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_00a964d72425097e00696b17e44d5881a199f3ab66741c00b4", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "4" + } + ], + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": null, + "reasoning": { + "effort": "low", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tools": [], + "top_logprobs": 0, + "top_p": 1, + "truncation": "disabled", + "usage": { + "input_tokens": 13, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 7, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 20 + }, + "user": null, + "metadata": {}, + "output_text": "4" +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningSummaryParam/anthropic/followup-request.json b/payloads/snapshots/reasoningSummaryParam/anthropic/followup-request.json new file mode 100644 index 00000000..a2857f3c --- /dev/null +++ b/payloads/snapshots/reasoningSummaryParam/anthropic/followup-request.json @@ -0,0 +1,32 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 16000, + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + }, + { + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "This is a very straightforward math question. 2 + 2 = 4. This is basic arithmetic that I can answer directly and confidently.", + "signature": "EqYCCkYICxgCKkDNDfL3D+exJ9vvBpFEtkYhbE2CBxLfmbk2mRfGn8a+PSAhT3+qjg+a6ztfILQ86jZNdUjRbEUGCzNBciktry5xEgxofZ1ulnMkl78wc8AaDEqpLsvifMT/w3q3lyIw08o0jSkU8G6PG+sTMjV354h5KF7F/DXXzBA8heNSW2iSmIkHVvXBK7Yjufwf6EtiKo0BYdQ7hfHLA55wwZG0ATNiTCTB9btWFaqBdE5IKUtVAqKiv6j0W1hCjqu0LAejomNQ1G9+IkgK0DZDadVOb95oFvqvHE1wT9dHbS+O8ztY25sWRqqCIjQOTHEM5Ao9tgNtnakC0wZ0iLjPTmJ4xQG5EC3dPXwZR6gXibFKmM5N3t1iENhoORSukdOMkts1GAE=" + }, + { + "type": "text", + "text": "2 + 2 = 4" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "thinking": { + "type": "enabled", + "budget_tokens": 10000 + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningSummaryParam/anthropic/followup-response.json b/payloads/snapshots/reasoningSummaryParam/anthropic/followup-response.json new file mode 100644 index 00000000..b609366b --- /dev/null +++ b/payloads/snapshots/reasoningSummaryParam/anthropic/followup-response.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01Bb6xjmfhis18UXB57pvrj2", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "The human is asking \"What should I do next?\" but they haven't provided any context about what they're working on, what their goals are, or what situation they're in. This is a very open-ended question that I can't answer meaningfully without more information.\n\nI should ask them for more context so I can provide a helpful response. I could ask about what they're currently doing, what their goals are, or what kind of activity they're looking for suggestions about.", + "signature": "EvsECkYICxgCKkAhLQJy8UqYuswVLwge/ViwZgMuv+pjHeMzJtXSlW1JnrtpjuNma6+jOISIobbA5gdzDHjcddh8X8ijcu9Cu8kHEgx/4gdXCNfQa503sSgaDC2BJYAAh/OqRu2FfyIwlIc1vZjGmtg13JvE3rzfS1dP/2/eNS9ICrJ5cSOrblkuu7cu4N3AT3bweBOCYHniKuIDJxdaHyZN4AlmY6GOpY6xeL/35/auqZT4eHKUtWkouXNB3XcsBa+UE+aXDRBr99uqggN6kzuoxiHYCfQdcswu3rKJV5clXUm+qec+tCQLm+npAqPPQp1IJK+enPdPws3p5g9k5/wop4j2byAMbp7Gc7k/PQ8Itd7GNrs3Kk6avxfANSqFfNQBrYeluC26mOKF9kBRFCibKIIY4p7bNBOqK3Nid51EHswtTTZRU+FmmwfrC0/lUIZzyguooMkPpVi/bNGbTIV8WxI/Bd/YNCp3je83OUG/hy6m1QrhomD2WQuVJ5gFPq+ULeZ379uRH0ZVTCRM7pshWrykli5qwFDZeEtQNRAV2sFxtkKhyQbQxIGFa690DSX2kOzIDM6/5+5US7yBy7b81YTD4EwLQW2FaaNCTGX2biQ924qFpazkM8Tu8lnub0Tac8cpgu0vvfkkb7NjxhSWulwGV6Fbpw4UNmrad10cZP98muSPSWl8PZRok75+YmIdbkxzE80YfjEI8RO1jJFVMCKDlK/tvfLWXuZDu9rUZ7XQMQMlKFQ9d9Nx6eBHAYJmI+PommE53fdq2FOmerq7tlKPZ5sUyZjuSemohK1YcWs0wVrPFo61SVDKCRNy8gs7X4kFs+sCCWvXkxMYAQ==" + }, + { + "type": "text", + "text": "I'd be happy to help, but I need more context! \"What should I do next?\" could mean many different things depending on your situation. Could you tell me:\n\n- What are you currently working on or doing?\n- What are your goals for today or this moment?\n- Are you looking for suggestions for work, learning, entertainment, or something else?\n\nWith a bit more information, I can give you much better guidance!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 65, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 201, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningSummaryParam/anthropic/request.json b/payloads/snapshots/reasoningSummaryParam/anthropic/request.json new file mode 100644 index 00000000..9fb46ee6 --- /dev/null +++ b/payloads/snapshots/reasoningSummaryParam/anthropic/request.json @@ -0,0 +1,14 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 16000, + "messages": [ + { + "role": "user", + "content": "What is 2+2?" + } + ], + "thinking": { + "type": "enabled", + "budget_tokens": 10000 + } +} \ No newline at end of file diff --git a/payloads/snapshots/reasoningSummaryParam/anthropic/response-streaming.json b/payloads/snapshots/reasoningSummaryParam/anthropic/response-streaming.json new file mode 100644 index 00000000..639d2dc8 --- /dev/null +++ b/payloads/snapshots/reasoningSummaryParam/anthropic/response-streaming.json @@ -0,0 +1,170 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01Qt6FQAWczNuM3DN62zrZZP", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 43, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "thinking", + "thinking": "", + "signature": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": "This" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " is a very" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " simple arithmetic" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " question. " + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": "2 " + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": "+ 2 = 4." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " This" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " is basic" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": " addition." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "thinking_delta", + "thinking": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "signature_delta", + "signature": "EvUBCkYICxgCKkD5niUAZC495agWRJyzeImqN+60IlKHcVvVeVigvFmOqoNqNcNIJC0nrJ/xMebToiSrUlKuA7nMfAFxRIO2bCpBEgwo/cTnAEXLp01ZFvMaDBryiBCdZZ4YOlPJqiIwKAd+hGHUmGDALZXBqhaLJ7qICiBfe+whjKOrydAj4ZeNdEyu5DG9TdG2vTcyUbGQKl245b0vokST1oRMmbBO9Jrp0uH2AtdSUv4EsEk5uWYSIFOh+Gex56eUNWuoYdf+1C7IVUX2lRDxYoHb7lZ+rqiD5/GOWBvjELgKYSxpaQWzdOQpMl4J/rddKk6ojIIYAQ==" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "content_block_start", + "index": 1, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "text_delta", + "text": "2 + 2 " + } + }, + { + "type": "content_block_delta", + "index": 1, + "delta": { + "type": "text_delta", + "text": "= 4" + } + }, + { + "type": "content_block_stop", + "index": 1 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 43, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 44 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/reasoningSummaryParam/anthropic/response.json b/payloads/snapshots/reasoningSummaryParam/anthropic/response.json new file mode 100644 index 00000000..948b1166 --- /dev/null +++ b/payloads/snapshots/reasoningSummaryParam/anthropic/response.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01PTrCuuYstzWZhEmsnoAT6W", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "thinking", + "thinking": "This is a very straightforward math question. 2 + 2 = 4. This is basic arithmetic that I can answer directly and confidently.", + "signature": "EqYCCkYICxgCKkDNDfL3D+exJ9vvBpFEtkYhbE2CBxLfmbk2mRfGn8a+PSAhT3+qjg+a6ztfILQ86jZNdUjRbEUGCzNBciktry5xEgxofZ1ulnMkl78wc8AaDEqpLsvifMT/w3q3lyIw08o0jSkU8G6PG+sTMjV354h5KF7F/DXXzBA8heNSW2iSmIkHVvXBK7Yjufwf6EtiKo0BYdQ7hfHLA55wwZG0ATNiTCTB9btWFaqBdE5IKUtVAqKiv6j0W1hCjqu0LAejomNQ1G9+IkgK0DZDadVOb95oFvqvHE1wT9dHbS+O8ztY25sWRqqCIjQOTHEM5Ao9tgNtnakC0wZ0iLjPTmJ4xQG5EC3dPXwZR6gXibFKmM5N3t1iENhoORSukdOMkts1GAE=" + }, + { + "type": "text", + "text": "2 + 2 = 4" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 43, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 53, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/safetyIdentifierParam/anthropic/followup-request.json b/payloads/snapshots/safetyIdentifierParam/anthropic/followup-request.json new file mode 100644 index 00000000..6c950f1e --- /dev/null +++ b/payloads/snapshots/safetyIdentifierParam/anthropic/followup-request.json @@ -0,0 +1,26 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "metadata": { + "user_id": "hashed-user-id-abc123" + } +} \ No newline at end of file diff --git a/payloads/snapshots/safetyIdentifierParam/anthropic/followup-response.json b/payloads/snapshots/safetyIdentifierParam/anthropic/followup-response.json new file mode 100644 index 00000000..45245439 --- /dev/null +++ b/payloads/snapshots/safetyIdentifierParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01BoYnGtQfFJT7uRWoiLdXac", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I don't have context about what you're working on or what your goals are, so I can't give you specific advice about what to do next. Could you tell me more about:\n\n- What you're currently working on or thinking about\n- What you're trying to accomplish\n- Any particular area where you'd like suggestions (work, personal projects, learning something new, etc.)\n\nWith more context, I'd be happy to help you think through your next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 23, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 100, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/safetyIdentifierParam/anthropic/request.json b/payloads/snapshots/safetyIdentifierParam/anthropic/request.json new file mode 100644 index 00000000..c07ad2d6 --- /dev/null +++ b/payloads/snapshots/safetyIdentifierParam/anthropic/request.json @@ -0,0 +1,13 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + } + ], + "metadata": { + "user_id": "hashed-user-id-abc123" + } +} \ No newline at end of file diff --git a/payloads/snapshots/safetyIdentifierParam/anthropic/response-streaming.json b/payloads/snapshots/safetyIdentifierParam/anthropic/response-streaming.json new file mode 100644 index 00000000..905a6d75 --- /dev/null +++ b/payloads/snapshots/safetyIdentifierParam/anthropic/response-streaming.json @@ -0,0 +1,61 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_016m2fmuzineXyVNA3wTRGV7", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 4 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/safetyIdentifierParam/anthropic/response.json b/payloads/snapshots/safetyIdentifierParam/anthropic/response.json new file mode 100644 index 00000000..8e4a3edb --- /dev/null +++ b/payloads/snapshots/safetyIdentifierParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01KL8AD97eT5QF9S4Um3Lvmm", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/serviceTierParam/anthropic/followup-request.json b/payloads/snapshots/serviceTierParam/anthropic/followup-request.json new file mode 100644 index 00000000..6571bca0 --- /dev/null +++ b/payloads/snapshots/serviceTierParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "service_tier": "auto" +} \ No newline at end of file diff --git a/payloads/snapshots/serviceTierParam/anthropic/followup-response.json b/payloads/snapshots/serviceTierParam/anthropic/followup-response.json new file mode 100644 index 00000000..9ee13dfc --- /dev/null +++ b/payloads/snapshots/serviceTierParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01YBXUWnYRTc8VPADxFoQ2ar", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I don't have any context about what you're working on or what your goals are, so I can't give you specific advice about what to do next. \n\nCould you tell me more about your situation? For example:\n- Are you working on a particular project or task?\n- Are you looking for general life advice?\n- Is there a specific problem you're trying to solve?\n- Are you just looking for ideas on how to spend your time?\n\nWith more information, I'd be happy to help you figure out a good next step!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 23, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 118, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/serviceTierParam/anthropic/request.json b/payloads/snapshots/serviceTierParam/anthropic/request.json new file mode 100644 index 00000000..a67a8d03 --- /dev/null +++ b/payloads/snapshots/serviceTierParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say ok." + } + ], + "service_tier": "auto" +} \ No newline at end of file diff --git a/payloads/snapshots/serviceTierParam/anthropic/response-streaming.json b/payloads/snapshots/serviceTierParam/anthropic/response-streaming.json new file mode 100644 index 00000000..fb37c576 --- /dev/null +++ b/payloads/snapshots/serviceTierParam/anthropic/response-streaming.json @@ -0,0 +1,69 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01RLVwRPeKsN3bvvwZXCLKhc", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 5 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/serviceTierParam/anthropic/response.json b/payloads/snapshots/serviceTierParam/anthropic/response.json new file mode 100644 index 00000000..03a161ef --- /dev/null +++ b/payloads/snapshots/serviceTierParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01J1QFg6jEffm5mZ2uFzyUnF", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "ok" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 4, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/stopSequencesParam/anthropic/followup-request.json b/payloads/snapshots/stopSequencesParam/anthropic/followup-request.json new file mode 100644 index 00000000..782e1083 --- /dev/null +++ b/payloads/snapshots/stopSequencesParam/anthropic/followup-request.json @@ -0,0 +1,27 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Count to 20." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "1, 2, 3, 4, 5, 6, 7, 8, 9, " + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "stop_sequences": [ + "10", + "ten" + ] +} \ No newline at end of file diff --git a/payloads/snapshots/stopSequencesParam/anthropic/followup-response.json b/payloads/snapshots/stopSequencesParam/anthropic/followup-response.json new file mode 100644 index 00000000..96167b54 --- /dev/null +++ b/payloads/snapshots/stopSequencesParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01MPj9GkoMMsbu2fjVZ1dYAU", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "You were in the middle of counting to 20! You could continue from where we left off:\n\n" + } + ], + "stop_reason": "stop_sequence", + "stop_sequence": "10", + "usage": { + "input_tokens": 52, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 22, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/stopSequencesParam/anthropic/request.json b/payloads/snapshots/stopSequencesParam/anthropic/request.json new file mode 100644 index 00000000..bd9a6e95 --- /dev/null +++ b/payloads/snapshots/stopSequencesParam/anthropic/request.json @@ -0,0 +1,14 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Count to 20." + } + ], + "stop_sequences": [ + "10", + "ten" + ] +} \ No newline at end of file diff --git a/payloads/snapshots/stopSequencesParam/anthropic/response-streaming.json b/payloads/snapshots/stopSequencesParam/anthropic/response-streaming.json new file mode 100644 index 00000000..0adcd70d --- /dev/null +++ b/payloads/snapshots/stopSequencesParam/anthropic/response-streaming.json @@ -0,0 +1,85 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_019xj8wB6wuGJqxVr24C8JYC", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "1, 2, 3," + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " 4, 5, 6" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", 7, 8, " + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "9, " + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "stop_sequence", + "stop_sequence": "10" + }, + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 29 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/stopSequencesParam/anthropic/response.json b/payloads/snapshots/stopSequencesParam/anthropic/response.json new file mode 100644 index 00000000..6de06f7c --- /dev/null +++ b/payloads/snapshots/stopSequencesParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01FhwmMwmpcfjNNcTcWDWsbC", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "1, 2, 3, 4, 5, 6, 7, 8, 9, " + } + ], + "stop_reason": "stop_sequence", + "stop_sequence": "10", + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 29, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/streamParam/anthropic/followup-request.json b/payloads/snapshots/streamParam/anthropic/followup-request.json new file mode 100644 index 00000000..123edb53 --- /dev/null +++ b/payloads/snapshots/streamParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "stream": true +} \ No newline at end of file diff --git a/payloads/snapshots/streamParam/anthropic/followup-response.json b/payloads/snapshots/streamParam/anthropic/followup-response.json new file mode 100644 index 00000000..517565b1 --- /dev/null +++ b/payloads/snapshots/streamParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01ET845zee2dNBQKGxnXxv5f", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That's a pretty open question! What you should do next really depends on what's going on in your life right now. Here are a few ways to think about it:\n\n- **If you're looking for something productive:** Maybe tackle a task you've been putting off, learn something new, or organize a space around you\n- **If you want to relax:** Read a book, take a walk, listen to music, or call someone you care about\n- **If you're feeling stuck:** Try writing down what's on your mind, or do something small that usually makes you feel good\n\nIs there a particular area of your life you're thinking about, or are you just looking for general inspiration for how to spend your time?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 30, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 154, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/streamParam/anthropic/request.json b/payloads/snapshots/streamParam/anthropic/request.json new file mode 100644 index 00000000..47950c9c --- /dev/null +++ b/payloads/snapshots/streamParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + } + ], + "stream": true +} \ No newline at end of file diff --git a/payloads/snapshots/streamParam/anthropic/response-streaming.json b/payloads/snapshots/streamParam/anthropic/response-streaming.json new file mode 100644 index 00000000..da4d368b --- /dev/null +++ b/payloads/snapshots/streamParam/anthropic/response-streaming.json @@ -0,0 +1,85 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01PaaS2RVgGEySgWxvD6HDXY", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hi" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "! How" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 11 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/streamParam/anthropic/response.json b/payloads/snapshots/streamParam/anthropic/response.json new file mode 100644 index 00000000..d32099b1 --- /dev/null +++ b/payloads/snapshots/streamParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01FThj8Fph2HWW7DRehqCCzk", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 11, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/temperatureParam/anthropic/followup-request.json b/payloads/snapshots/temperatureParam/anthropic/followup-request.json new file mode 100644 index 00000000..724859ca --- /dev/null +++ b/payloads/snapshots/temperatureParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "temperature": 0.7 +} \ No newline at end of file diff --git a/payloads/snapshots/temperatureParam/anthropic/followup-response.json b/payloads/snapshots/temperatureParam/anthropic/followup-response.json new file mode 100644 index 00000000..24f845be --- /dev/null +++ b/payloads/snapshots/temperatureParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01Uzc3i3zX1oEaDg1VMQ4q9g", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That's a pretty open question! What you should do next really depends on what's going on in your life right now. Here are a few ways to think about it:\n\n**If you're looking for something to do right now:**\n- What sounds appealing - something productive, relaxing, creative, or social?\n- Any tasks or responsibilities you've been putting off?\n- Something you've been wanting to learn or try?\n\n**If you're thinking bigger picture:**\n- What are your current goals or priorities?\n- Is there something you've been meaning to work toward?\n- Any decisions you've been weighing?\n\nWhat context were you thinking about? I'd be happy to help you brainstorm once I know more about your situation!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 30, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 161, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/temperatureParam/anthropic/request.json b/payloads/snapshots/temperatureParam/anthropic/request.json new file mode 100644 index 00000000..5d729e55 --- /dev/null +++ b/payloads/snapshots/temperatureParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + } + ], + "temperature": 0.7 +} \ No newline at end of file diff --git a/payloads/snapshots/temperatureParam/anthropic/response-streaming.json b/payloads/snapshots/temperatureParam/anthropic/response-streaming.json new file mode 100644 index 00000000..3af0f13b --- /dev/null +++ b/payloads/snapshots/temperatureParam/anthropic/response-streaming.json @@ -0,0 +1,85 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_013XP4bk26VfubC5QvEeMdXX", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hi" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "! How" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 11 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/temperatureParam/anthropic/response.json b/payloads/snapshots/temperatureParam/anthropic/response.json new file mode 100644 index 00000000..3994b7c9 --- /dev/null +++ b/payloads/snapshots/temperatureParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01SquU4hMa7Gjs8KUjRM4uXU", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 11, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolParam/anthropic/followup-request.json b/payloads/snapshots/textEditorToolParam/anthropic/followup-request.json new file mode 100644 index 00000000..c6e598c8 --- /dev/null +++ b/payloads/snapshots/textEditorToolParam/anthropic/followup-request.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need more information to proceed:\n\n1. **Which file** would you like to edit? Please provide the file path.\n2. **What changes** would you like to make to the file?\n\nFor example, you could say:\n- \"Edit `/path/to/myfile.txt` and replace 'old text' with 'new text'\"\n- \"View `/path/to/myfile.py` first, then I'll tell you what to change\"\n- \"Create a new file at `/path/to/newfile.txt` with some content\"\n\nCould you please provide these details so I can help you edit your file?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "text_editor_20250124", + "name": "str_replace_editor" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolParam/anthropic/followup-response.json b/payloads/snapshots/textEditorToolParam/anthropic/followup-response.json new file mode 100644 index 00000000..f24a6a6d --- /dev/null +++ b/payloads/snapshots/textEditorToolParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_019AgXbdELQZXm8xFgxxMnyu", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "To help you decide what to do next, I need to understand what you're working on. Here are some options to get started:\n\n1. **If you want to explore what files are available:**\n - Tell me a directory path to view (e.g., `/home/user/project` or `/repo`)\n - I can show you what files and folders exist\n\n2. **If you have a specific file in mind:**\n - Provide the file path and I can view its contents\n - Then you can tell me what changes you'd like to make\n\n3. **If you want to create a new file:**\n - Tell me the path where you want to create it\n - Let me know what content should go in it\n\n4. **If you're working on a coding project:**\n - Tell me about the project and what you're trying to accomplish\n - I can help you edit existing code or create new files\n\nCould you tell me:\n- What type of project or task are you working on?\n- Do you have a specific directory or file you want to work with?\n- What's your end goal?\n\nThis will help me guide you on the best next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1190, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 260, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolParam/anthropic/request.json b/payloads/snapshots/textEditorToolParam/anthropic/request.json new file mode 100644 index 00000000..39723fea --- /dev/null +++ b/payloads/snapshots/textEditorToolParam/anthropic/request.json @@ -0,0 +1,16 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + } + ], + "tools": [ + { + "type": "text_editor_20250124", + "name": "str_replace_editor" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolParam/anthropic/response-streaming.json b/payloads/snapshots/textEditorToolParam/anthropic/response-streaming.json new file mode 100644 index 00000000..98240cfe --- /dev/null +++ b/payloads/snapshots/textEditorToolParam/anthropic/response-streaming.json @@ -0,0 +1,301 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_016FGgifqon38LtrNy3yUxk1", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1025, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you edit a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file!" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " However, I nee" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d more" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " information to assist" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you properly" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ":" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n\n1. **Which" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file**" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " would you like to edit? Please" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " provide the file" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " path." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n2. **What kin" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d of edit" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "** " + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "do you want" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " to make" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "? For example:\n - View" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " current" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " contents" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n - Replace specific" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " text\n - Insert new content" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n - Create" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a new file" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n\nCoul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you please provide" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " these" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " details so I can help you edit the" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 1025, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 104 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolParam/anthropic/response.json b/payloads/snapshots/textEditorToolParam/anthropic/response.json new file mode 100644 index 00000000..6b70b1db --- /dev/null +++ b/payloads/snapshots/textEditorToolParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01AMhC1SDYiHnuEzBhjSu74z", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need more information to proceed:\n\n1. **Which file** would you like to edit? Please provide the file path.\n2. **What changes** would you like to make to the file?\n\nFor example, you could say:\n- \"Edit `/path/to/myfile.txt` and replace 'old text' with 'new text'\"\n- \"View `/path/to/myfile.py` first, then I'll tell you what to change\"\n- \"Create a new file at `/path/to/newfile.txt` with some content\"\n\nCould you please provide these details so I can help you edit your file?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1025, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 156, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV2Param/anthropic/followup-request.json b/payloads/snapshots/textEditorToolV2Param/anthropic/followup-request.json new file mode 100644 index 00000000..96a0130c --- /dev/null +++ b/payloads/snapshots/textEditorToolV2Param/anthropic/followup-request.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need some additional information to proceed:\n\n1. **File path**: What is the path to the file you want to edit?\n2. **What kind of edit**: Do you want to:\n - View the current contents of the file?\n - Create a new file with specific content?\n - Replace specific text in an existing file?\n - Insert text at a specific location?\n\nCould you please provide the file path and describe what changes you'd like to make?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "text_editor_20250429", + "name": "str_replace_based_edit_tool" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV2Param/anthropic/followup-response.json b/payloads/snapshots/textEditorToolV2Param/anthropic/followup-response.json new file mode 100644 index 00000000..28f04269 --- /dev/null +++ b/payloads/snapshots/textEditorToolV2Param/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01TAkK2x1b83RsrHngFjBuRc", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "To help you decide what to do next with file editing, I can suggest a few common approaches:\n\n1. **Start by viewing a file or directory** - If you have a specific file in mind, I can show you its contents, or if you want to explore what files are available, I can list the contents of a directory.\n\n2. **Create a new file** - If you need to create a new file from scratch, I can help you create it with whatever content you need.\n\n3. **Edit an existing file** - If you have a file that needs modifications, I can help you replace text or insert new content.\n\nHere are some examples of what you could ask me to do:\n\n- \"View the contents of /path/to/myfile.txt\"\n- \"Show me what files are in the /home/user/documents directory\" \n- \"Create a new file called script.py with some Python code\"\n- \"Replace the word 'old' with 'new' in myfile.txt\"\n\nWhat type of file operation would be most helpful for your current task? Or if you have a specific file path in mind, just let me know and I can start by showing you what's there!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1214, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 263, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV2Param/anthropic/request.json b/payloads/snapshots/textEditorToolV2Param/anthropic/request.json new file mode 100644 index 00000000..b9c6127e --- /dev/null +++ b/payloads/snapshots/textEditorToolV2Param/anthropic/request.json @@ -0,0 +1,16 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + } + ], + "tools": [ + { + "type": "text_editor_20250429", + "name": "str_replace_based_edit_tool" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV2Param/anthropic/response-streaming.json b/payloads/snapshots/textEditorToolV2Param/anthropic/response-streaming.json new file mode 100644 index 00000000..e2003fde --- /dev/null +++ b/payloads/snapshots/textEditorToolV2Param/anthropic/response-streaming.json @@ -0,0 +1,309 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01BPxbo42eVJ5YVDc9E76kv9", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you edit a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file!" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " However, I nee" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d more" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " information to procee" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d:" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n\n1. **" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Which" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file**" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " woul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you like to edit? Please" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " provide the file" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " path." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n2. **What changes" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "** woul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you like to make?" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " For example:\n - View" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the current" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " content first" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n - Replace" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " specific" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " text\n - Insert new content at" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a specific location" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n - Create" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a new file with specific" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " content\n\nCoul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you please provide" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " these" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " details so I can help" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you edit the file appropri" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ately?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 110 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV2Param/anthropic/response.json b/payloads/snapshots/textEditorToolV2Param/anthropic/response.json new file mode 100644 index 00000000..0f12cdad --- /dev/null +++ b/payloads/snapshots/textEditorToolV2Param/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01Lo53w8cLbAJrv1X92ADrbh", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need some additional information to proceed:\n\n1. **File path**: What is the path to the file you want to edit?\n2. **What kind of edit**: Do you want to:\n - View the current contents of the file?\n - Create a new file with specific content?\n - Replace specific text in an existing file?\n - Insert text at a specific location?\n\nCould you please provide the file path and describe what changes you'd like to make?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 118, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV3Param/anthropic/followup-request.json b/payloads/snapshots/textEditorToolV3Param/anthropic/followup-request.json new file mode 100644 index 00000000..240336ee --- /dev/null +++ b/payloads/snapshots/textEditorToolV3Param/anthropic/followup-request.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need more information to proceed:\n\n1. **Which file** do you want to edit? Please provide the file path.\n2. **What changes** do you want to make? For example:\n - Replace specific text\n - Insert new content at a particular line\n - View the file first to see what's in it\n - Create a new file with specific content\n\nCould you please provide these details so I can help you edit the file?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "text_editor_20250728", + "name": "str_replace_based_edit_tool", + "max_characters": 10000 + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV3Param/anthropic/followup-response.json b/payloads/snapshots/textEditorToolV3Param/anthropic/followup-response.json new file mode 100644 index 00000000..6b0fe747 --- /dev/null +++ b/payloads/snapshots/textEditorToolV3Param/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01PzyVMbvwkc6NwapsHHcKpy", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "To help you with editing a file, I need to understand your specific situation. Here are some options for what you can do next:\n\n1. **If you have a specific file in mind:**\n - Tell me the file path (e.g., `/home/user/document.txt` or `./my_script.py`)\n - Let me know what changes you want to make\n\n2. **If you want to explore what files are available:**\n - Give me a directory path to view (e.g., `/home/user/` or `.` for current directory)\n\n3. **If you want to create a new file:**\n - Tell me the desired file path and name\n - Provide the content you want in the file\n\n4. **Common editing tasks I can help with:**\n - View file contents\n - Replace specific text\n - Insert new lines of code/text\n - Create new files from scratch\n\nCould you tell me more about what you're trying to accomplish? For example:\n- \"I want to edit `/path/to/my/file.txt`\"\n- \"Show me what files are in the current directory\"\n- \"I want to create a new Python script\"\n- \"I need to replace some text in a configuration file\"" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1209, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 281, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV3Param/anthropic/request.json b/payloads/snapshots/textEditorToolV3Param/anthropic/request.json new file mode 100644 index 00000000..a42ed8e4 --- /dev/null +++ b/payloads/snapshots/textEditorToolV3Param/anthropic/request.json @@ -0,0 +1,17 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Edit file." + } + ], + "tools": [ + { + "type": "text_editor_20250728", + "name": "str_replace_based_edit_tool", + "max_characters": 10000 + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV3Param/anthropic/response-streaming.json b/payloads/snapshots/textEditorToolV3Param/anthropic/response-streaming.json new file mode 100644 index 00000000..77289173 --- /dev/null +++ b/payloads/snapshots/textEditorToolV3Param/anthropic/response-streaming.json @@ -0,0 +1,269 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01FWWfuHGCqadrrFJpMTEApk", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you edit a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " file!" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " However, I need more" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " information to proceed:" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n\n1. **File path" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "**: What's" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the path" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " to the file you want to edit?" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n2. **What" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " type" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " of edit" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "**:" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " Do" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you want to:\n - View" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the current" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " content of" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the file?\n - Create a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " new file?\n - Replace specific" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " text in" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the file?\n - Insert text" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " at a specific location" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "?\n\nCoul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you please provide the file path and describe" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " what changes" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d like to make?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 113 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/textEditorToolV3Param/anthropic/response.json b/payloads/snapshots/textEditorToolV3Param/anthropic/response.json new file mode 100644 index 00000000..93577565 --- /dev/null +++ b/payloads/snapshots/textEditorToolV3Param/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01Qdgw4gErriXvC2FisRJSeD", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you edit a file! However, I need more information to proceed:\n\n1. **Which file** do you want to edit? Please provide the file path.\n2. **What changes** do you want to make? For example:\n - Replace specific text\n - Insert new content at a particular line\n - View the file first to see what's in it\n - Create a new file with specific content\n\nCould you please provide these details so I can help you edit the file?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 1087, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 113, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-request.json b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-request.json new file mode 100644 index 00000000..1cd200dd --- /dev/null +++ b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-request.json @@ -0,0 +1,42 @@ +{ + "model": "claude-sonnet-4-5-20250929", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Extract: John is 25." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "{\"name\":\"John\",\"age\":25}" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "output_format": { + "type": "json_schema", + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "age": { + "type": "number" + } + }, + "required": [ + "name", + "age" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-response.json b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-response.json new file mode 100644 index 00000000..1604305c --- /dev/null +++ b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-5-20250929", + "id": "msg_016LdbYqq1pVQN5BN6Lhid62", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "{\"name\":\"Unknown\",\"age\":0}" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 197, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 12, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatJsonSchemaParam/anthropic/request.json b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/request.json new file mode 100644 index 00000000..576d3153 --- /dev/null +++ b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/request.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-5-20250929", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Extract: John is 25." + } + ], + "output_format": { + "type": "json_schema", + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "age": { + "type": "number" + } + }, + "required": [ + "name", + "age" + ], + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatJsonSchemaParam/anthropic/response.json b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/response.json new file mode 100644 index 00000000..3969c8da --- /dev/null +++ b/payloads/snapshots/textFormatJsonSchemaParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-5-20250929", + "id": "msg_01MpgCbuL516vEoxpXVYXHp9", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "{\"name\":\"John\",\"age\":25}" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 176, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 12, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/chat-completions/followup-request.json b/payloads/snapshots/textFormatTextParam/chat-completions/followup-request.json new file mode 100644 index 00000000..d20ea912 --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/chat-completions/followup-request.json @@ -0,0 +1,22 @@ +{ + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Say hello." + }, + { + "role": "assistant", + "content": "Hello! How can I assist you today?", + "refusal": null, + "annotations": [] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "response_format": { + "type": "text" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/chat-completions/followup-response.json b/payloads/snapshots/textFormatTextParam/chat-completions/followup-response.json new file mode 100644 index 00000000..0845c227 --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/chat-completions/followup-response.json @@ -0,0 +1,36 @@ +{ + "id": "chatcmpl-Cysk80Cex2vN3dayT2Hct4BBvNG6A", + "object": "chat.completion", + "created": 1768626148, + "model": "gpt-4o-mini-2024-07-18", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "That depends on what you're looking to accomplish! Here are a few suggestions:\n\n1. **Learn Something New**: Consider taking an online course or reading about a topic that interests you.\n \n2. **Get Creative**: Try your hand at drawing, writing, or any other creative pursuit.\n \n3. **Exercise**: Go for a walk, do some yoga, or engage in any form of physical activity.\n \n4. **Connect with Others**: Reach out to friends or family for a chat or plan a get-together.\n \n5. **Organize or Clean**: Tackle a space in your home that could use some tidying up.\n\n6. **Plan Your Day**: Make a list of tasks you want to accomplish.\n\nLet me know if you need more specific suggestions based on your interests or current situation!", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 33, + "completion_tokens": 169, + "total_tokens": 202, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_29330a9688" +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/chat-completions/request.json b/payloads/snapshots/textFormatTextParam/chat-completions/request.json new file mode 100644 index 00000000..70ef5aab --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/chat-completions/request.json @@ -0,0 +1,12 @@ +{ + "model": "gpt-4o-mini", + "messages": [ + { + "role": "user", + "content": "Say hello." + } + ], + "response_format": { + "type": "text" + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/chat-completions/response.json b/payloads/snapshots/textFormatTextParam/chat-completions/response.json new file mode 100644 index 00000000..b626567f --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/chat-completions/response.json @@ -0,0 +1,36 @@ +{ + "id": "chatcmpl-Cysk7K8vuISvqGLSKWqndQ9Onza7A", + "object": "chat.completion", + "created": 1768626147, + "model": "gpt-4o-mini-2024-07-18", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "Hello! How can I assist you today?", + "refusal": null, + "annotations": [] + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 10, + "completion_tokens": 9, + "total_tokens": 19, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 0, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": "fp_29330a9688" +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/responses/followup-request.json b/payloads/snapshots/textFormatTextParam/responses/followup-request.json new file mode 100644 index 00000000..dcc6997f --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/responses/followup-request.json @@ -0,0 +1,37 @@ +{ + "model": "gpt-5-nano", + "input": [ + { + "role": "user", + "content": "Say hello." + }, + { + "id": "rs_050192d8839a516c00696b17e40b9881a0add59ad77c8597a5", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_050192d8839a516c00696b17e5ae7481a0b9a5d1f7f2e7739c", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Hello! How can I help you today?" + } + ], + "role": "assistant" + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "text": { + "format": { + "type": "text" + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/responses/followup-response.json b/payloads/snapshots/textFormatTextParam/responses/followup-response.json new file mode 100644 index 00000000..93f07b4f --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/responses/followup-response.json @@ -0,0 +1,77 @@ +{ + "id": "resp_050192d8839a516c00696b17e6352081a084cd0256192ebbcd", + "object": "response", + "created_at": 1768626150, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1768626157, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5-nano-2025-08-07", + "output": [ + { + "id": "rs_050192d8839a516c00696b17e68a5c81a08bdaa4e936952387", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_050192d8839a516c00696b17ebdf8081a0bcdb3dd71eda7703", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Sure—what are you trying to accomplish? If you’d like, I can tailor it. Meanwhile, here are a few quick paths you can choose from:\n\n- Get a quick win (2-minute rule): Do any small task you can finish in two minutes to gain momentum.\n\n- Plan your day: List 3 tasks, label them Urgent vs Important, and pick one to start now.\n\n- Tackle a project: Break the project into a next concrete action (e.g., \"draft outline for report\" or \"email teammate for approvals\") and set a short deadline.\n\n- Learn something new: Set a micro-goal (e.g., 25 minutes of focused study), do it, then test yourself on what you learned.\n\n- Decide between options: Use a quick decision framework (impact vs effort) to pick the top action.\n\nIf you share a bit more about your goal or task, I’ll suggest a specific next step." + } + ], + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": null, + "reasoning": { + "effort": "medium", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tools": [], + "top_logprobs": 0, + "top_p": 1, + "truncation": "disabled", + "usage": { + "input_tokens": 34, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 1156, + "output_tokens_details": { + "reasoning_tokens": 960 + }, + "total_tokens": 1190 + }, + "user": null, + "metadata": {}, + "output_text": "Sure—what are you trying to accomplish? If you’d like, I can tailor it. Meanwhile, here are a few quick paths you can choose from:\n\n- Get a quick win (2-minute rule): Do any small task you can finish in two minutes to gain momentum.\n\n- Plan your day: List 3 tasks, label them Urgent vs Important, and pick one to start now.\n\n- Tackle a project: Break the project into a next concrete action (e.g., \"draft outline for report\" or \"email teammate for approvals\") and set a short deadline.\n\n- Learn something new: Set a micro-goal (e.g., 25 minutes of focused study), do it, then test yourself on what you learned.\n\n- Decide between options: Use a quick decision framework (impact vs effort) to pick the top action.\n\nIf you share a bit more about your goal or task, I’ll suggest a specific next step." +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/responses/request.json b/payloads/snapshots/textFormatTextParam/responses/request.json new file mode 100644 index 00000000..540fa342 --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/responses/request.json @@ -0,0 +1,14 @@ +{ + "model": "gpt-5-nano", + "input": [ + { + "role": "user", + "content": "Say hello." + } + ], + "text": { + "format": { + "type": "text" + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/textFormatTextParam/responses/response.json b/payloads/snapshots/textFormatTextParam/responses/response.json new file mode 100644 index 00000000..ab3da6d5 --- /dev/null +++ b/payloads/snapshots/textFormatTextParam/responses/response.json @@ -0,0 +1,77 @@ +{ + "id": "resp_050192d8839a516c00696b17e39a7081a09c8b0e72092ee84c", + "object": "response", + "created_at": 1768626147, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1768626150, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5-nano-2025-08-07", + "output": [ + { + "id": "rs_050192d8839a516c00696b17e40b9881a0add59ad77c8597a5", + "type": "reasoning", + "summary": [] + }, + { + "id": "msg_050192d8839a516c00696b17e5ae7481a0b9a5d1f7f2e7739c", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Hello! How can I help you today?" + } + ], + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": null, + "reasoning": { + "effort": "medium", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tools": [], + "top_logprobs": 0, + "top_p": 1, + "truncation": "disabled", + "usage": { + "input_tokens": 9, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 207, + "output_tokens_details": { + "reasoning_tokens": 192 + }, + "total_tokens": 216 + }, + "user": null, + "metadata": {}, + "output_text": "Hello! How can I help you today?" +} \ No newline at end of file diff --git a/payloads/snapshots/thinkingDisabledParam/anthropic/followup-request.json b/payloads/snapshots/thinkingDisabledParam/anthropic/followup-request.json new file mode 100644 index 00000000..ffa75573 --- /dev/null +++ b/payloads/snapshots/thinkingDisabledParam/anthropic/followup-request.json @@ -0,0 +1,26 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "2+2?" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "2 + 2 = 4" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "thinking": { + "type": "disabled" + } +} \ No newline at end of file diff --git a/payloads/snapshots/thinkingDisabledParam/anthropic/followup-response.json b/payloads/snapshots/thinkingDisabledParam/anthropic/followup-response.json new file mode 100644 index 00000000..00ae837f --- /dev/null +++ b/payloads/snapshots/thinkingDisabledParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01P64Fy2kZSMet8n8RfvYwH7", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I don't have enough context to give you a specific recommendation! What you should do next depends on your situation, goals, and what you were working on. Here are a few ways to think about it:\n\n- If you're studying math, you might try more addition problems or move on to other operations\n- If you're just getting started with something, consider what your main objective is\n- If you're feeling stuck or bored, maybe take a short break or switch to a different activity\n\nWhat were you hoping to accomplish, or what's on your mind right now? That would help me give you a more useful suggestion!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 34, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 132, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/thinkingDisabledParam/anthropic/request.json b/payloads/snapshots/thinkingDisabledParam/anthropic/request.json new file mode 100644 index 00000000..4010f53a --- /dev/null +++ b/payloads/snapshots/thinkingDisabledParam/anthropic/request.json @@ -0,0 +1,13 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "2+2?" + } + ], + "thinking": { + "type": "disabled" + } +} \ No newline at end of file diff --git a/payloads/snapshots/thinkingDisabledParam/anthropic/response-streaming.json b/payloads/snapshots/thinkingDisabledParam/anthropic/response-streaming.json new file mode 100644 index 00000000..95b5908c --- /dev/null +++ b/payloads/snapshots/thinkingDisabledParam/anthropic/response-streaming.json @@ -0,0 +1,69 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01HKbeW2HqaQ79kP6gh8yuc7", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "2 " + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "+ 2 = 4" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 13 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/thinkingDisabledParam/anthropic/response.json b/payloads/snapshots/thinkingDisabledParam/anthropic/response.json new file mode 100644 index 00000000..ada90167 --- /dev/null +++ b/payloads/snapshots/thinkingDisabledParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01EpCWN9SVbzb4J3NqgunHrA", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "2 + 2 = 4" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 12, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 13, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-request.json b/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-request.json new file mode 100644 index 00000000..4ece0033 --- /dev/null +++ b/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-request.json @@ -0,0 +1,53 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + }, + { + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Q3ikQ7QbcbfETxaCN9zHqo", + "name": "get_weather", + "input": { + "location": "" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_01Q3ikQ7QbcbfETxaCN9zHqo", + "content": "71 degrees" + } + ] + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "any" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-response.json b/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-response.json new file mode 100644 index 00000000..1c4e07a3 --- /dev/null +++ b/payloads/snapshots/toolChoiceAnyParam/anthropic/followup-response.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_013i8x2XndNQUWgyxrwdksab", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01LYRBWWfFBcAPK55Zkt32xe", + "name": "get_weather", + "input": { + "location": "current location" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 443, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 39, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAnyParam/anthropic/request.json b/payloads/snapshots/toolChoiceAnyParam/anthropic/request.json new file mode 100644 index 00000000..0e621afb --- /dev/null +++ b/payloads/snapshots/toolChoiceAnyParam/anthropic/request.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "any" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAnyParam/anthropic/response-streaming.json b/payloads/snapshots/toolChoiceAnyParam/anthropic/response-streaming.json new file mode 100644 index 00000000..a49aaf45 --- /dev/null +++ b/payloads/snapshots/toolChoiceAnyParam/anthropic/response-streaming.json @@ -0,0 +1,87 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_011WpY1hieyhctUnc7SKuENB", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 374, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 8, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "tool_use", + "id": "toolu_01DarR2oPUW2aRfoAbkCKwkZ", + "name": "get_weather", + "input": {} + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "{\"locatio" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "n\": \"<" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "UNKNOWN>\"}" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "tool_use", + "stop_sequence": null + }, + "usage": { + "input_tokens": 374, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 39 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAnyParam/anthropic/response.json b/payloads/snapshots/toolChoiceAnyParam/anthropic/response.json new file mode 100644 index 00000000..27fa2b7d --- /dev/null +++ b/payloads/snapshots/toolChoiceAnyParam/anthropic/response.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_017EUo3u1o7TRTKde4C5boDH", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01Q3ikQ7QbcbfETxaCN9zHqo", + "name": "get_weather", + "input": { + "location": "" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 374, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 39, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-request.json b/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-request.json new file mode 100644 index 00000000..913787ff --- /dev/null +++ b/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-request.json @@ -0,0 +1,43 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you get the weather information! However, I need to know which location you'd like the weather for. Could you please specify the city, state, or country you're interested in?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "auto" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-response.json b/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-response.json new file mode 100644 index 00000000..88eeec23 --- /dev/null +++ b/payloads/snapshots/toolChoiceAutoParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01XMTcTfWRMaogmx5KsffpFb", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That's a pretty open-ended question! To give you the most helpful advice, it would be useful to know more context about what you're referring to. For example:\n\n- Are you asking about what to do next in your day/schedule?\n- Are you looking for next steps on a particular project or task?\n- Are you seeking general life advice or direction?\n- Are you asking about something specific we were discussing?\n\nCould you provide a bit more detail about what situation or area of your life you're thinking about? That way I can give you more targeted and useful suggestions!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 427, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 125, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAutoParam/anthropic/request.json b/payloads/snapshots/toolChoiceAutoParam/anthropic/request.json new file mode 100644 index 00000000..c8a67954 --- /dev/null +++ b/payloads/snapshots/toolChoiceAutoParam/anthropic/request.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "auto" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAutoParam/anthropic/response-streaming.json b/payloads/snapshots/toolChoiceAutoParam/anthropic/response-streaming.json new file mode 100644 index 00000000..c477e002 --- /dev/null +++ b/payloads/snapshots/toolChoiceAutoParam/anthropic/response-streaming.json @@ -0,0 +1,181 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01XUkq3HaENGdM87nSvKn22Y", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you get" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " weather" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " information! However, I need to" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " know which" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " location" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you'd like the" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " weather for. Coul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you please specify" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " city" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " state" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", country" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", or other" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " location?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 44 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceAutoParam/anthropic/response.json b/payloads/snapshots/toolChoiceAutoParam/anthropic/response.json new file mode 100644 index 00000000..a89e792e --- /dev/null +++ b/payloads/snapshots/toolChoiceAutoParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01TA21Gtbf6TYWrwxa9oJzsJ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you get the weather information! However, I need to know which location you'd like the weather for. Could you please specify the city, state, or country you're interested in?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 46, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-request.json b/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-request.json new file mode 100644 index 00000000..a2d144bf --- /dev/null +++ b/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-request.json @@ -0,0 +1,43 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you get weather information! However, I need to know which location you'd like the weather for. Could you please specify a city, state, country, or other location?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "none" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-response.json b/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-response.json new file mode 100644 index 00000000..e911fc0c --- /dev/null +++ b/payloads/snapshots/toolChoiceNoneParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01SiCjkSyd63Yymo1EGuiNvo", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'm not sure what specific context you're referring to when you ask \"What should I do next?\" To give you the most helpful advice, could you provide more details about your situation? For example:\n\n- Are you asking about next steps for getting weather information?\n- Do you have a particular project, task, or decision you're working on?\n- Are you looking for general life advice or guidance on a specific topic?\n\nOnce you give me more context, I'll be better able to help you figure out your next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 425, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 113, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceNoneParam/anthropic/request.json b/payloads/snapshots/toolChoiceNoneParam/anthropic/request.json new file mode 100644 index 00000000..4d492726 --- /dev/null +++ b/payloads/snapshots/toolChoiceNoneParam/anthropic/request.json @@ -0,0 +1,30 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Weather?" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "none" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceNoneParam/anthropic/response-streaming.json b/payloads/snapshots/toolChoiceNoneParam/anthropic/response-streaming.json new file mode 100644 index 00000000..384e903b --- /dev/null +++ b/payloads/snapshots/toolChoiceNoneParam/anthropic/response-streaming.json @@ -0,0 +1,157 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01FZaVYVSh68ma8KmzXhGxAN", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you get" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " the weather information! However, I nee" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d to" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " know which" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " location you'd like the weather for." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " Coul" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d you please specify the city" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " region" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", or location" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you're" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " interested in?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 46 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceNoneParam/anthropic/response.json b/payloads/snapshots/toolChoiceNoneParam/anthropic/response.json new file mode 100644 index 00000000..f0f354f5 --- /dev/null +++ b/payloads/snapshots/toolChoiceNoneParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01UjV78APwkz9SCBHxukBhgM", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you get weather information! However, I need to know which location you'd like the weather for. Could you please specify a city, state, country, or other location?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 372, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 44, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-request.json b/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-request.json new file mode 100644 index 00000000..20472914 --- /dev/null +++ b/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-request.json @@ -0,0 +1,54 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Tokyo weather" + }, + { + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01MWoFAbQkgyajQ3QE6AU3mw", + "name": "get_weather", + "input": { + "location": "Tokyo" + } + } + ] + }, + { + "role": "user", + "content": [ + { + "type": "tool_result", + "tool_use_id": "toolu_01MWoFAbQkgyajQ3QE6AU3mw", + "content": "71 degrees" + } + ] + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "tool", + "name": "get_weather" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-response.json b/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-response.json new file mode 100644 index 00000000..9395cedf --- /dev/null +++ b/payloads/snapshots/toolChoiceRequiredParam/anthropic/followup-response.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01PtYuLJEZ9SrgUeQTBerCh5", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01T2Md7ikPrjUvmqxxaUmgdg", + "name": "get_weather", + "input": { + "location": "Osaka" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 447, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 34, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceRequiredParam/anthropic/request.json b/payloads/snapshots/toolChoiceRequiredParam/anthropic/request.json new file mode 100644 index 00000000..e3c3ea74 --- /dev/null +++ b/payloads/snapshots/toolChoiceRequiredParam/anthropic/request.json @@ -0,0 +1,31 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Tokyo weather" + } + ], + "tools": [ + { + "name": "get_weather", + "description": "Get weather", + "input_schema": { + "type": "object", + "properties": { + "location": { + "type": "string" + } + }, + "required": [ + "location" + ] + } + } + ], + "tool_choice": { + "type": "tool", + "name": "get_weather" + } +} \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceRequiredParam/anthropic/response-streaming.json b/payloads/snapshots/toolChoiceRequiredParam/anthropic/response-streaming.json new file mode 100644 index 00000000..89c31f31 --- /dev/null +++ b/payloads/snapshots/toolChoiceRequiredParam/anthropic/response-streaming.json @@ -0,0 +1,103 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_013BB5r8ZrszrFhGF5Jk1Pov", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 379, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 16, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "tool_use", + "id": "toolu_01P7M79DcNLpaRxtWHG7Za1M", + "name": "get_weather", + "input": {} + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "{\"" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "locatio" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "n\":" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": " \"Tok" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "yo\"}" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "tool_use", + "stop_sequence": null + }, + "usage": { + "input_tokens": 379, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 33 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/toolChoiceRequiredParam/anthropic/response.json b/payloads/snapshots/toolChoiceRequiredParam/anthropic/response.json new file mode 100644 index 00000000..52a61665 --- /dev/null +++ b/payloads/snapshots/toolChoiceRequiredParam/anthropic/response.json @@ -0,0 +1,29 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_017Y61C8Lr6jdrbss8NdQ6m6", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "tool_use", + "id": "toolu_01MWoFAbQkgyajQ3QE6AU3mw", + "name": "get_weather", + "input": { + "location": "Tokyo" + } + } + ], + "stop_reason": "tool_use", + "stop_sequence": null, + "usage": { + "input_tokens": 379, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 33, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/topKParam/anthropic/followup-request.json b/payloads/snapshots/topKParam/anthropic/followup-request.json new file mode 100644 index 00000000..170fd0fd --- /dev/null +++ b/payloads/snapshots/topKParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "top_k": 40 +} \ No newline at end of file diff --git a/payloads/snapshots/topKParam/anthropic/followup-response.json b/payloads/snapshots/topKParam/anthropic/followup-response.json new file mode 100644 index 00000000..845b998f --- /dev/null +++ b/payloads/snapshots/topKParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_018PrKxXXyCobJsZv7iL1znd", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That's a pretty open question! What you should do next depends on what's going on in your life right now. Here are a few ways to think about it:\n\n- **If you have tasks or responsibilities:** Maybe tackle something on your to-do list, or the thing that's been weighing on your mind\n- **If you're looking for something enjoyable:** Do something that usually makes you feel good - read, listen to music, go for a walk, call a friend\n- **If you're feeling stuck:** Sometimes just changing your environment helps - step outside, move to a different room, or try something small and different\n\nWhat's your current situation? Are you bored, procrastinating, looking for ideas, or something else? I'd be happy to give more specific suggestions if you share a bit more context!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 30, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 175, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/topKParam/anthropic/request.json b/payloads/snapshots/topKParam/anthropic/request.json new file mode 100644 index 00000000..5b60cada --- /dev/null +++ b/payloads/snapshots/topKParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + } + ], + "top_k": 40 +} \ No newline at end of file diff --git a/payloads/snapshots/topKParam/anthropic/response-streaming.json b/payloads/snapshots/topKParam/anthropic/response-streaming.json new file mode 100644 index 00000000..9189eeaf --- /dev/null +++ b/payloads/snapshots/topKParam/anthropic/response-streaming.json @@ -0,0 +1,93 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01VRb3yG8MxogxZg3ZGU9bR6", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hi" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "!" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " How" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you doing today?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 11 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/topKParam/anthropic/response.json b/payloads/snapshots/topKParam/anthropic/response.json new file mode 100644 index 00000000..6d7fd08a --- /dev/null +++ b/payloads/snapshots/topKParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_019RvtnChwsSe84jxXwwELaL", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 11, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/topPParam/anthropic/followup-request.json b/payloads/snapshots/topPParam/anthropic/followup-request.json new file mode 100644 index 00000000..d0a9ca64 --- /dev/null +++ b/payloads/snapshots/topPParam/anthropic/followup-request.json @@ -0,0 +1,24 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "top_p": 0.9 +} \ No newline at end of file diff --git a/payloads/snapshots/topPParam/anthropic/followup-response.json b/payloads/snapshots/topPParam/anthropic/followup-response.json new file mode 100644 index 00000000..90287337 --- /dev/null +++ b/payloads/snapshots/topPParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_017VFaJeGyC7cAP8iP5GXxGe", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "That depends on what you're looking to accomplish! Here are a few questions that might help me give you a better suggestion:\n\n- Are you looking for something productive to do, or more for relaxation/fun?\n- Do you have any specific goals or tasks you've been putting off?\n- What's your current situation - are you at home, work, have free time, etc.?\n- What kinds of activities do you usually enjoy?\n\nOr if you just want a general suggestion: taking a short walk, reading something interesting, or reaching out to someone you care about are usually good \"next steps\" that tend to improve most people's day!\n\nWhat sounds appealing to you?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 30, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 147, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/topPParam/anthropic/request.json b/payloads/snapshots/topPParam/anthropic/request.json new file mode 100644 index 00000000..077c3257 --- /dev/null +++ b/payloads/snapshots/topPParam/anthropic/request.json @@ -0,0 +1,11 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Say hi." + } + ], + "top_p": 0.9 +} \ No newline at end of file diff --git a/payloads/snapshots/topPParam/anthropic/response-streaming.json b/payloads/snapshots/topPParam/anthropic/response-streaming.json new file mode 100644 index 00000000..a4a00893 --- /dev/null +++ b/payloads/snapshots/topPParam/anthropic/response-streaming.json @@ -0,0 +1,77 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_01QQMWXto4tMKKWfHMuErrNo", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "Hi" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "! How" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " are you doing today?" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 11 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/topPParam/anthropic/response.json b/payloads/snapshots/topPParam/anthropic/response.json new file mode 100644 index 00000000..49c1f774 --- /dev/null +++ b/payloads/snapshots/topPParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01TeKQqaWgNMkQLbtiN4xQPB", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "Hi! How are you doing today?" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 10, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 11, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-request.json b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-request.json new file mode 100644 index 00000000..8b242064 --- /dev/null +++ b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-request.json @@ -0,0 +1,432 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "AI news" + }, + { + "role": "assistant", + "content": [ + { + "type": "server_tool_use", + "id": "srvtoolu_01KYHqxtD6w46cT14WezbA7K", + "name": "web_search", + "input": { + "query": "AI news today January 2025" + } + }, + { + "type": "web_search_tool_result", + "tool_use_id": "srvtoolu_01KYHqxtD6w46cT14WezbA7K", + "content": [ + { + "type": "web_search_result", + "title": "2025 in artificial intelligence - Wikipedia", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence Jan 2026", + "url": "https://arxiv.org/list/cs.AI/current", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "AI bubble - Wikipedia", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "encrypted_content": "EsMoCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEYXXqsaHdQUlWRmVhoMp7dnc7x0JYuDcdf/IjCf+dL5GblKLFLjpWjcpBHWJbthPoryJhLksWjPk2uJVuOGZ4uM5RfPyAb3WvcPxksqxich27qc66ioxlvOqeIX99wbvg+jTShKwlQ9InBvq5toc5lxwrmWsp/8qG4O5oxFn59KyNFUHGQX322JahHBYX6h8S3OX0Ech70DDeuAODtGS8P0QLo/5Tyc2l2J45d8uAmB9rVF5R27PjFmF9/BHyU6ybXRvXrXIYeZ50A7055KF++5S6jXhzHAFFi7jrKmkJ3XC0VUMA6a3pN5pTiuwLjJrBXVtN7U28IkROtK6met4APSxcENMV2Trqqv94cw8xQ2EO+/o5mg9o+gONdUMXnZopuIqXTjMlmoq+wzcjk/4dt3CimnRUpt/9BvQI225iiG33N6jHlkeYDAZlzz9mEJnDct842R1h9yg4eOSRRb0+u5k2FLCCiqeboKyxXMD5Lms09PU8UU6dTXeug9T8DStqUmziKwk3xGaL0VYGQJ1xznKl+++Gf7olVGbUkXU7ukbwiuQLrDM3Lpi1EQKDfGJGjoJX2CdbYdvH9IpeFOT3z7XbZKp2fHTkdWmcXuyDJrnu+6bV10fQgGtPrR6/3crjdZEhBAmiXERP0z7Hx8wr4M+patyNS4S0A/9oKga2ia59iMKkAzqIKry5pmtLXm7vQpRqPo4tBEzVuTn6CWyOVw43qVzOJAGN55IjeS/XIeWAYHKeMaDVCDqLmvBIYA/lBv1B4VlO/VRHsUdbvLC7QB982Ag4WMaFbStE74zI9eNjB+VB33dlEmdDp36iBcbLxKs3gXFByCQwZf7jD2axYaOQHL1Kk6FpZ5TZkG6B75UNcQ/gkMQaF4UarOkWvLq/YdRuKOK3KWUd8CYve6WUzw2SahjfSZ7JgG3a2UTyjWDGw5bni9s+9uDoSjDOnAACjAM6A3me+5rpVqg1SrVGUMg8IbAO7z4xVaWnWvO5Y66nHCXipwLjaVz3+jatY+ydnwuUgTl0lc+znSj5bBp2SIa7XMdGWUoCeTtRRtPD1f1FrUZwklBQ8zmNsuGyYd3T4uVXuwWEuDKxqFy6pmoZqWwLqO5nXEtpybeOT+cKSwKfUGwoPGTFN5/KvHRtTe9bPNpVU0CM2s/IHPc/IP7J73i/14JnXBQM/B7bfK1VxLnUP1KRk0B9y6bJ9yG5Ria8/nE+HjgMC5ckss022B55XXG1AFChUg5VX6XT2Wmr3XIrMJP3kLRaIYVQpMhT2HSVCJSytBAugVb6zvhZlhcwaDjsgBxxkr9PwCAk14Mmad6GsqyWvYI975PXiocE0aQLFmig7orGrLn4L7YwcR9xk0ChVBVPfwcQPyesVhm8wqZXoiCUq+4XVV5gOw6k5MLGdDpWXNM1Gx0xNNVCscu48v05oogGfPJLUpa0P2gVs0GfeN+eR5+2q4sFHkNRm7cpfpX73yr+aPMlqMTLR+f99x523wIbez2hb+75SxvKKmNNSBlEhGXsdVT8DzrPRk40E0/LwDYnD9iOFtk/eMjhYH+JLwCiwlnfgcdGeUy+fp2PNIdwepybaLSkVV+8pVYqcdWk7rI7p0ygofv+7icxNt+m1XR/16UzkNuVtP90zZlJzhms03LXPAvGGNNpnKvgRrtip/bufJsVmWJIW4vgvKemsg68EkAyy95bHOslCUI6asEMF65m4g9IOwg0Amnl59Z2DgHnMjznohAhe/h4ZstTEgemlNJGgNka6SDvGvenIpnpiCnA+QaYVS4wHws6RR2PBnjLrOvghbkrxMMhY1Hz1ataFuu4h8mUxgc2GiqsHEcXvgc3r7coGke1TQL7FoPq+5FsIv6PDI+RiYOZ4sEfv/KPSaxGBZvEu0AXnc0AK3UN5IuV3iiEvnRnwvRtIUGwvEVy4za5dJBJkGZUVzca8oi0R1km57ekqwHS6h+TXwspnjPvMvvrZYSW7I/6v7x1Tl9NnanSQkUcUWpp1RCbuhCdiIbXvs7cs8bLu6df9G9NyKmtL0b8DGXgtCErRvBkoFyXe4UGAvIRKukQJFJ/6HF3Nqlw5gv6nqb8Yj7xW8ZOm0dxrBrQX8oWazeMXBoNE2rUBvyL0S+tMshRPQea7HShES+9e2UAWBzCg0breBbQlfZeIQhni1Pz+qtWcYC/4rWJ17137gTDlCVk/lzWO6EXnRA6bGBzmmkitctuU/3XfTt44aRsKnIScV8w0+VZWY6zlyGhEgLJZCpOrnyPuO5MvLg5jtvrc1o5gxJLs5x03mUc1a8QoJGkXnRyfNGnoHDWJD26usW4vQLT9ba91MPLkx8LZAA0blfb5aXF4J9Wrsl5qm0dxLfkwtLgpAlBPdy7qGFhy+FMg3Hd5JXUNhMy0WutYbX2BrB6XzgWuTuopxITPUJWGPVfvOCd3knaQxtUixmcC+1TGxLZz9x3D4Q+swkTHx/GdL7LhyBFNrg8F4DkhGqSufQoZKdVuH/dxC5QzLzxxwwcYD5xi3ryd5gFu0/1a2LrhS6u7Ygm1Va6wudc6ldD7jC6VNZeQlZDIBDGzPVG1aD5PM1evhz5oC525AiVHJK7BjFdpapXZ7gpZBoQwkkTAiomZ57jt+Ix4cpSoSpM4TV7eXBc6mmHl4OmZkfgShyj2TdLKYNNI5c+qLkvV+yK2NC/97D293eit29QbFz+652nVjPP11IyzcIz66h6drdPo0xekWZBs8jBiifdTjKCgyx224GWUKLM8xL9KsA7DneWYJMMXMFeNkLD3azttdx0m55/DT816g6idfFzAokt26bzpowlBxwmV8vJxpWqaVR6oq+ZmraMS+OGFDllQ/3bzJSAQUIeOdT4KkArzXiAOipxexPEJuALTM8Wq3+sb5mTeFO18uglNfUWHTfGSQyytVbV5MIW/ErVT3NyEYuG+pxK9aXWsNZUZy/EX/y7ivutqlJ+RUTgHJ1xRX8772T0TOpWlB9piXMYL9PRuitiu0y9TjGrcqWu7eMIovgbCNr2QCQnit1bASbIjNZDQboJNumb6CTUOgKPxeg4dDHUd5fAXCem0Q4h2IvkP78zxJG6klTXmRRXy6OeXBW/UR4KBpKwsyUy4UQ+sbqiD+tDyu9rcJCPmPwP09wOsOsex7nr0Np5gwECQ6qhw+c5eGUp9iJWTm4ekyms9ecOjbVZ688InDBNVZl0USBc2BBYXpuIVVuomSgFvxwZ1u9ZmrimPKaepFUj5eLwSskvBkAxtKfz9hZgqH9n6tx8Tf5uoypsdCF3mMf1CuH56o+WrRpATorWLvkkGknGPTtm9RRA67r3iPI2KJiM07pBHiU5ecZsfxE7sb5kPmDGrWJPNv+ZiQr/Mqk+xGbNU0Ru0PJwEtx99efEHNhDmdQnJfAvsxZlFBLea1BF43SjUixGHnqvIkgKbglXyMxWS9tM5pZtpjuvl3z4C93VFPJPQ7+04rSQ1ok6ZhawYYSDYovBAKdfXrtTzuqoExqLvTlIAihkeg21x0jOJqlzH9ldyEjvQOCdjYdgFaS3zw1PaH5TYjg50NyI060gt25ncjxSNs+P1FzYffnMk3pUmY9BGEUzwm5Il0iKaCBe3fx3IFa8t14NrnyJNcZFOPSOmkhMEn/8bdrHKcgsl9nZ6Ysi7XQSyKNhVR6IV1Ch9x1EFu5Mn+chlca7ZQWKlhvd3Kfg5zRzGBPpxz+hl+hp9EHvoXT0i4HhFShOxhNtJg1jkPWk/Xyr9s+ghBmPdBlq1nSs64s2Hmb7137KE6im/85MxRgAChGa6HQlL6N3O6PNFShPU8zPxnnUNgUtPRxqY1s7aofLqsIaAH72QYHjLmYqcWohy96hb2lOKvb8aqpTcCP4NXJSSvw3PQPPKhqjr4AasWz9i+42/sFMh4DI2XOSOx1LigH0iY3FrBQTkfPLI2bTESkiCmRgCUO9Nu54iXrYSzgUv3LE0c52TnJkp0Q9yljZ6ZZYdSg44iP/Q8tN2nVg5jfmBeDupoLzv+OvGjOVloGmB4zjbOfvoq/97ewy9bUOUGneLBrPNN/8VVvzalnWGzrGBSUx3FTJ7ifjMTeoOXFVXNP5DeVb3j14IKQlFvLrvoOpRvVKoISKpNdQ2/T53oVrPNzDK30143JtbkrWOH1Hs+DLK/wHqI4PYzyx4/V78QN6ZJSlDb6n62Tc41YhvaMaj6l7eBM1/IMRd/I5Dz33jOVrETZ85BdN1kgbsrD7rhE7NegMyhjZmtYUWNm2iEwkAGacoB23K08eovI6/FvITROEFNoFmYt+NZXLtUfVD3XwJXDVBDIL7IyURDq/QfGFqGTd2lllvGpvjdKzV2p8/IZj8ksxUj1PWXBOcxpiZLa3WfFRm4RQWX3UhBV+93TyoQhxU8I4WJTUyEcab2w9LVWrkgSUM59+d2KAtkYZ4GmHYaKIMWlz1fQkECvu8tVRJuMeH+dNu7Dpmh8zp9q73dnqVKIJaPJ1DXvDKoaqHZCqHFsXV9irgBnp13szD7mFaZJdaO0Kf22v4bjyQdleL6Uc8wJO09WHjB3QZPbLZc0c8SMkQeQFhzlVrdqynW+37iawfuc08Ai41vqUGu9ZkG9lyMST6at/3mfUic+YG7s27gXQA7VLOfwwMfQ9w2zXcrUlyYFdAOA37KP9r2S+nbDZ8ZH+9DxqElzGtGYDad/ArqYW/gXdZPMOLxgk5XLaQCrC8y6F1ZsganxU6p42bctnanr6N6qq53pvZ20Lx72hGXDHzcl/UNCWHDNiAr0YERUsigmer3NYK+XjojFKQUoOGXecwHIXbmIJX7nt4yl8h6mb4JKjjL+CZVadRu8vxLf7IygVNzjWNLttkdYzJYO2jeNZ9bkaRzwAgwSpfYmq+5pfR02YdQ4MDTJYiwZuNudiXfAJvsz9K3eyHwC0lAFydCrLsR3CegPzozsZJ3Kvco/xpS10vFrHuT7vMV6v8WQfPpUEZrtdbnwOoRGaLZUD737pJosoCHFX17KcObV7MEkZ9oo6TUixgLQIFKNrMzr6Hs3VO3jXAoAXL5BQJJVYe/rGdpOaqA6XSeZMo5VJ8BDkXorNdfF1Dvi1Uspq2HQwW3pBUn3JsaweAFQHFSRDPzm4tSrN/lnWtLqUdKvX4v1mV8sCqx2Xx1O7Tc1cNXfDwqTj5bzpJWpqR4o3veOdrcOc6x2HrK6bf49q4L8yafV00iqAZDDJpiBQyPRTMpLuCy1VV1Sxpo2rQVIEKXt7mOUBJ253tUmYsYFIOo+gyxwwZkwz+27luiyeMhca82KFInmJyAR0mWxbKQxOEvTHaBsdZOoSLEhfayKIqnLQx2jGapfE2fRF2TZawUHk0S2XDjapklEnCb2uYAoFT83o86hi1EwAnqpDZa6bcRz+YnoQoeOuUpHbqDwGJoafsnNRLT/o2LVRZYaEluu0a1OYHyFpkA8Yoh8L6i4Gnsodtc1syoZ1h8WyyxEJ6mLYpU+D3E0p4O3iNbTl5GgRlMoopOhez/FkdhBnr4+0fU+maNU3s26LmSslptZ5IX32RrLKBdZCgQXR8TBlh9SwodhOqxBDKvv45mRETfSINEeJPke80XVqxa6ylApGjy7A1HTduccB1s8fs6z1Y8/DOuKWx5Pe0Xg2rIoKm5/pMyzVRLuhydG8m+BnsmTwEe8ymLoBBJksgZbkhZTW83NjX95O4HUK1MP6P2Zxqn7GM6FjRR7jY/g34pSxJb1VR52Lp2aOibUwlB8snt2UikIAQ5yu32iMUUxE1HGA7lhYvXCT2lS8AaQQmUlhgMYKzAzm+/oiBpP8bSxr5Ml4wS29jEmZQArm7eaVBSRRg9UdMb2CE8Rp0eUPSpuR2NJiDxcbDf5HI6Zp4qMDDGbqOvPE4NElc6zjewH+BDFOuM5ctlHMzKzmdBlOaLAtO8DyR3k5G0iPddG0YtUf6GDHu5KXSZTB0n+AxkpDX8wlI8D/U9+qr5xMl47b2WIV0ZakbZQsxl/waOtCKvZ/LAYJQUbSiiXnvsWtUxhL0hIquHZAmHj4AswOiJPdltS2OIptdi1AsEUGP5rT6uQVqCuCaW31WRkSIQztY9eJEjN/hHDFvkyQzcopka2Yy/wNv4jHsWwrJf1+lZiXX68wEnWIKJ91e5JXY1d+vDV+qW0OfmLsHyE7mQ8RhrQ8vzIt2XhpP6pEmOqhHjn9gzmdjes6QlMGDnqyfjIOQalbvFEkTFpXhFJoadhA+RGGVkaoGRz8AT7LoUUVoUejI3lF1Mm2TGWCo4kc98l32lVBUT7pM6wKQtWnLTQE/kl9+ThEovH9m9dBOb8zf0dbDyheepFnJrGZuWv6ZtLNa8WO/id3YattC4AxlgfYP9DMydXbarrTGiPIJRyC+/tjcGj+KxzM3DpRgJocLizXAJdgK/McznQeoQnd6Dk1INwbD0vMB6AB9RnVqhfcTySq1Sga6rPajN6P5CwDB3RYNFnMStMlmiwVt5VSFsf+gNFUWMO9nQ3wwI59/jK4s8nRRkCeY8JuebN3dgaXWQgaCy38VfJRjTxE3q/5sAVryJeRGAXEc2sGqJwtxTRN4mDjJ2cGFiX/QdL6yepoi93E8T4vcEMngLbAy2s/cU3vqj2wADCSnyRqWK0dLdQs72XFchv40O1WTLDoTtXCACDwVjifQFWucopAFJtCB9p2+IMJBNt/MRTkDGA9ky5J00+mXS+lOzTgZA7Mdc7/WReb/BcZrWuGObOZBPGEjen8fD1pxqENWyaWdqZkeR4UTNYyoZR/4Xh62yxBvEpitl8npJFXnlH7I6po+BwlHJDQZu+Bif5Z3x8/r+p9iyuY2P8s4OfLci3RJyEF7d42i1+TMGjaT7GAM=", + "page_age": "3 days ago" + }, + { + "type": "web_search_result", + "title": "Stargate LLC - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Stargate_LLC", + "encrypted_content": "EoIKCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEhHDL86Phsb2ciUnxoMUT2CHg3md9Ha1ws+IjBQHHa2KvLgb+6uwV/TQJAbYK18HRpH+OtqlHhsyR/PY7ZRrjq+MX5IDVwIDNWJCLUqhQmSVtstnnE12qg678PHZfq3lE2SlW7O2jpKwQrrrdj+ONYpNdWWTpc0iAe95xQPDm8+im06kTrbrTp7MdpCwWbX4Wo4zFEtYfx5Uhm+I0SqbO+rGkFKq2VT0ds8+sM198zXTHnbc7W9DZQYMTAwu2Ssla8f9mstJTaHwcR15Q+0lJ8EN9vCnVLrsGansYeeYW/x+CBVm3n9a1A5p1e7zhlfEvMUNJ1f1bKyOaSoJ8MsE6tQTEel4BEWi4pKv3wsYeQS0vo18BRrK5QrcKumg4ASQlFlmzlzTUCq0VETGHBc/Y8LqJbSQhS1EdKDxNdBGnwUsB5xReZiPL4bz/4LohtPX51U8nGLshIRRfXxb9xL7RFk0FBjxTvvKQ/WRHL7tFTgPRTUvOZnVtzIbwffyZsJdDcZq9ZM2IE8KVqDjiZoLkS+ftMn0+6WFySDDhlZYhGTBJ7FiEghvxS6mvloNwxFDFPDjNeovUJ+Nj13nTHozcgK9+Uv1NcZ0ucHeGdKdLtjtDqoHD1GM/HGTv/VY3Lu13QrwbaPWKqxPjlL2kumjmi+xGk2iO4Lgpg2kY+mFnvBZn3CEaitDK2tEO84I0tvNHtdU6Cc/LquotXuqIMqW2y8ik+BpaxLdcuN8zJaumL6c0Hgqv5MGMoRJDI2e+iuBSP8A4VpR6BekjmRiE/A32E7znPbWMek6qVj+5qe4NBlNhMv3z8d2RV8PDv1s83qjdYIKmTRazcsc8X2ZT4ItPRlf578zKm1nxo5huwRXHq9W/+i1Z95xNTlsgRbhmxQm6BYX4tx+Ka786/kvso4pk42fisA/Fev4D1lboh7LoeCqpPYV2LkZC9LklCo6P8qvX9JEfYxnVaP46ZKbMXxPZSjvIGBdNdv9DcVaqvx+lGshCGKHucFlV2g/yKzKrVRRdRKjFUNO9iYCWodhbg5eOd14+dpdQ7WSz4bWNKKorOVUwvgBG4IhRdPJVpnHHczhRCTKfpgjnQx/G19pkoV/5L06zU+yaQmMMbKf48cu36JlNs6egXraPVcwjsM1eLxo//Mwj43GlAoNe4b2Ay8pPW7McynjLYX4RbNDoIUBDufK6WHvbqUKvEt+rC5gRUFyhY21TpeG0RjHxX/63cNjWKRBweVpnlfnqBPgyhWNIg5/MoOwdU6dAo7nQXORI2ZLBkrCjZGBlifeLRfVAN3srX9UKXJmUCEe0b6O8liGC6IIQFzMcWvIrHAcpbByii6GSifiKXEl4elLt7EJzkHqJYQYyqPdplP/ooU/Vo1Gy2+GaBQboB01x9+gbbGnZ+3Gkyp5kTTkE+iAaZbRbnrg7lan9IYRlZHZ5Mh34M9n/7yUj1Rf/tEsbSePYZml1ad9ff13c+lgDke+Pr1fkM5ZVyZmQAV+1qTR0LCFp7hEdL8Z/R6WX4xP/HdUekOCXSZt298M1Gov5cxhqA+0WM1t7UxGeVGoLqpuY+5K5uyW4mfBj3JXPRj8Rf8J/ZonDAxVtp9WizrnPESxOH9/BoEyP3tE1xce5tFUIaoVxGzWChYlfiavBgD", + "page_age": "December 16, 2025" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence", + "url": "https://arxiv.org/list/cs.AI/new", + "encrypted_content": "EqkhCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDDLZHhTW/rg/JQazkhoMWeamNN+IgXCIAgb2IjC9pCi6wlGQE2FrfUSjb1d1tOzx11dP2pOFbRbfcMRc0OcWIOXlYEHpAurbpnBgt24qrCBPg6ZCR9QjkPqDnK11/6YXF9np7iRvwO5R39quO28HB1Jy180Btcb+VsIWfbU29/A0HSM5jgFecEvzZv20eeE57QKq9PsJB+FNap+cJJWdja861ftlF4IQisnObiQFc1PpVGsgMMoO0vn59TJlbjr/Vv2J/JWxBhzqfnbe16MHfh45cX2M9mN7sKXY2vS8M2ERzf0ZxfbeI0C2Vv/xcjHF23ilWQXiQ0QcmtTqjeeRV6LCV7qHllPAAtcfutHk89VDqRPE/SZDOspR0S/3PCJyj9PC8a5AXbcdc+d5UXLPJ8ijtFs3vWnsmQXu8SI8Ots7L+uzhoROsBw6o/s+zi6YPgXpBVDa8Eilm2QEj18NawY6/+iGVNXqFL91M9m5o89KKlRWpiGKrXdtp/08bgbQIScokZDIgk5g2eOqMZUJ3nH6aT37UoSuyEWIAIOqHJOwt+3NEJUJP6gyivnOC0nFfOXU81bBO+b8yHjdZyQVVQWwCuzmwtwt2aLu/nH1ODoicS9qlxCj9ef1eCTaHsemxiuV/fruiOFze0jHlBQ0Zq5tuJI4HX47LteFnDnJ4n/tWfDrr4rCfQ9ex3D9O2BMzWR4exyL3+R6sO8WxmZ/jsUycGpOnwH5sGBdYmh8IP+09WH8NMWMHzlzyJdO84GUsFhg1k0x+aM9kQeU1LWrIqDtwyVAx+0biwRMNsxIKfFMxC4fqSstGR/JsWPAS8NkQN1ZAgOcuaSXsVn+ZeCWHrtoH5fNC5VfM/ZI/S/pdrnHfi5Ypf9xBeNwZaChRLymfKUceImayptfOc7SM2eKC9d4Rbi5CrsdNeZnQLhAv3Ztczq5WC8cBx+cugEe9utqcsRGV/87BBmcGvCYkHNlF5Ud3/X6/vKCrQb7fXjbJaGdUGphO6D0rEgW+X9Q7IGHcE/oJGMlMcZpJPwhmlrOjF36LWkIg6PAqimzjGgrX4mOlZTyQ+xOuO3El0frNQ2hJ6wXSmDYFN130HiuZ+iDPPGaiT7/5XORfLMZKvtCsNdfOut27LuEkrk0DruoiMrw4bre7/7jTLhFvk0ZxHLCmashG/95GCCFpZ7+5KavPBT10zvVqBJbKSq2WD76DogW1Rz8M4hVwpihNL/fW3M2uiyR9IjfQc5XeCU8xwOcuQWaTqd8uALt9CdttDRq+ImU1Fk7oTmLu8oggL5cF4lv+93c0yOh1pSstHrYaNHuAyoQNmoyD3/wujCDV1bB08ManuwfdoKBd/aZdeTJ5WhklodL3VJQ+yfK2dSU5LfTvOONa5CNJ3a/+AKIxGhqmgLfaaM6KTi9KP2kMtsw/lSCbKkE8TgdRWs7JwzASCTthRwrWAgPUf1gbkRSVk6EzHH1Sqkc4M82cX0v8BWaOp2UBqxc8dsjGn63sveloNPGEsqyAcNb78okXLRvHpFFFqq5ITlkWxz6PTfIejiNG2xCsQ8S1/h6nu7N9PWRH76iPSJqdRSnbJjMDyNPPff7vW+yYW3YsSo3C337WyhsppHJRLz5IrXDjVmS7moLcOyUwmf2dMvdjQA/CM6wb33jI6QcnjIHiJdCCCoONdZwq1yLOuapRQ2bfazI4Z9mF7+7l/MG7lF6w1elOXBzWJFIwu1edO9/yeI20Vy6NGmRXIUZ/oRwaXghTmHH+D5nLGDqA+g8WvNm6okt2Yza8P9qcvkGq/W+BgLQVK2/Cat6anb/vNAaUAQAhsznIYqynRcmuytOmdRa3wFF8v55qzXisQ+ZK4w/4C6QxSmgjAUUWG76HkJLerFZpLH2MQB25hvkx2HDz3yUbDhZBiGTcZbmWTS4gRL2uRhFnpTEaFQnHMnW0Jz3C/Thu33AHd8bKJv23Qp7GasBs18ksnPbwy/LwMlSLTG3wqgauvhkBXBvYzOuACpUOQu4N7YaxlSdoHGuI+GF3QbTTnqUtfA5pTL2MNYUMyd9g7ptBqqoWH9B+CnC9ycDgeOQ3sLctPnH4IphCBPi4QpFBlgv5YphPKSdv79syGnFOldYvaHTPsouiwaOnWGZl1UigmAKRWM0IlGj1ywskb2hVcDhXzhPW4vqRWq+2KFeNJqqrv3wpGMNpEi6WXMapa9u5E7HJjpY8w4wQwGC9guEjO4kqxZORIAvGOT1mJ7R9Ub99TMBpg4zZ0447H/UPbPOclcvyyK9uGeSxXFFpI4+OsL4m3+KcaIadoOfbOnq0c0FRF4r5wgJ39NDj8gCf5oI34Q2SHgvkdbvq7MRIEkk0fLLot5PXAOIRXtk2n1CCgAg3YQ/FQfJ8Rlz2mvzZCWKpdlyLh4PjhNaJVGU8c3uiIAUu37wu4mq+Gm1p7/2+wpirYHAB7RIYcnOPNRjSgmCOcpwrr/U6l4AMwYVUMxXwHZoEPQM9dSPvMNIVLTXKpnjIAOdYzDUs54CxLfS3dGaEGnwVV0bK0XcvoHnuLTa/v9oJkh/qwCcGFUkc0OGzuS8FAjsW56u0sl8VV7TX9Wn5G8lwIv5X15UkzPRxZQFMDZOQJiaVEv2ZZVntvmXV7vMWvp9nEk58bLKlFX7iLEjJ408hv88cR1zSHHIwMKkWp5L2K8+xCIaeIdQaqzRWlzrUNWdyVXkF3Bukfea7cfGK5WaJ7YqLuFCmoVa94SgRcJrJZmjlvOaxzDvCA0NXmQvMuHbCmLtRHh+HvhTTXelae7W+NAcmrZa8Dr2iDixHDG5aY08sRi+8vDEw62cCuELZRfnF2Wd8+DUP5TVA1Bktf1hycIqVG9dws5xC5XVySww7Kwr8AdfWQEZHm0Z3+eOfvS83hum+JWCFN1VGV4vgoGWjTiOj5JTN3cAlL6VxNbv5eP3QeQBrQAE6DWFp3mvPh6hsXbGqZXvTKejGvlhvazzT/yYIf8NfrVunK8R/Ua1zhxIwksi8nUHJG4VLqpb3xhKQmYB8NSfQ6x9N1a8fu2fhug1xPKlFPZn/4Gw9on6WAYDW9hBCtZlwoZSUfzr8s8BztjwixMuLZtL/M9Ucr20OsMM9xd9fJflFPSsPqT1hrXAi9NdRsNIegFq5QiNx8fPzm9Di8D/KtUOAFgS0445PZt9O7DfZJ+FeLHFRrrZcYtYIssHkBqYkw2raQSsq0gsMMVKOAsIRxY2oNQUNiKm7P2SgniuGchrLDi2aM9uSV56pLSMCk1OUneDZcQcHmgMxSY1vyv17p1W5Xm/ylPBOS6wAHIVrBp7R/CSPA/0i6NBKbNFZVzfhpMHwpE0zR0VhQQRB6xWHdB7NQf4fBHgDirmZGOQn0S2uJRdcc15WVa6NU3EDWPWxdVO60hWyeEXik0DrgGCQT6vllIqypCy5e+UnieogPT1PsGvtOryBw34ZA1E2w/occd7cVc7OItesQh+hfv8il7ixqbLHkMQ7DTWNV0e1Cc3bdnsO9EeI8YwQ3KLY5AxpgdPZDHu1YJiZOrVkxnM9iGPgWTdDfSzlopq/pweeqTsq+kxECXVvTVtUurl+WOKF6S/Ie5OdUp8yMlfJVgCeplIT7Xjk3ApV9uvngIX8ilRXFPlsUU2iyy/3e/NoZDJ/PaDVMrN8oWJdhjenXT8Yx7WG3Gs5UYodW60tCsvxvlmCadkDmXQ2Chtmd4GarGgDocukZR+A7lILYDoPLZCEMP9noBiq3gc26pG4xbbnUgFAN3Hj1RARgD08fElMD5kQdV1wAWxMpBaYRVOYtHseZgnR1DQ0t6W/FfHJl68Ep1LNGbI9rvdFlJqS5aj3qIzcKDY86ei6JhgjpneYVILdEADiXEzhIekUWN/3yryiMnS02GcciQZhxzF0RdY2q5ksPtQDURqyKLb3+SnTCQiNGBhp4zIsYZQM1X1d4o3mQpuX7YSYXz8ZInOUFTjse+moW+S7X1C3VfGx6MUCLDIggwP8w35dG888JAvM7aBS18d9IeJ26WOhDafDX7WYJJboGA5hYjMl2Mn9w7P4am4rppXnzn4G+jbALach+ChmjZroZJQIEBnpPLB2wrlpU4M0jXimYNmIsNSDzRXQ/Fa48afxk6YqQnSx30tlVOT4ZtwaPncQrnW7VmL+OyRibLvSSWtw9EeogZGqjdyLBbhN0ZOQc2MxWpZEAZcj+Ke4mwmwC2U9iX4DHzARMXCqvMneukZK/eS5U6LUy5UWFX+CoQr6uRpgZ5IVMo9GHGVAawJPZvWY0wNPID9Ljukugo57U5axZ+LyYfc/z9IBVSS9Bag4ODoqdWVX6SD+B0t/XsMufmeFi512fYyrc+5TyYGRO3MoBeUn0psYZtwScDJzQ6YGWXAQY80wXlkF6YUegqoGWdFkOgwMiDpYmfhuaDRdtte3ih8uqjIMVKpe+pYX0/THArK04V7kYKfvK/G081Wrux+4rsum5mxOmDdcB92F1hInlY60qxhsRcWAxBLhaDUK0I+r+GWmsr1gxN0SrSIbgzi0tTMcfmPXN1SHX1YqdjuLiBE7jK+i9XXuMn2DkViyBf6MUS+jotdPzdDD9EuYkJlvXr3STmiLXnkcHO//J5wa5MyLQmB914w3w4WR+Qfj5oqomgFFCAYnPEl5E1nXkXlEX2DQYoFlB2OAcIiUGl1TZ+kOy2XAi6N0alzRFJ/+NyIOV+xVui8BdJ9Bh0nTCisY9ldWEDFixal/5o7VSBu3OFeojmftYJGOrw5fE9O785ED3sEMWsMB29w9PBmVYAou/ddEJQm6A2mdKu/osBEsrU3sTL4V02UpHtHZ0iHIi/CI/n2/w6XDeI1ZU+5rXJmRfnNI9YzaL6fg4f8N+4UxKT0gZaRlu+aBhAwNrEB9rIV8mE8H7GYbExiFv7bPl/RaGGwySwzjCbDmJRC6s69N467JV7Grjqgr6biDtsKUo1/up5Qj/dUb5QnEWNVA0arI0kYo7FWf92RTl/DOdUOTokvY195c1nd6p5q06ASmf2dY+nNlzGtEXYOOsm6J6wN+3Z94rW0EirOHC0U06DrY5JV8XdYTo267gM9gGSL9kP+9dRl6eMpA43zf9KzLzQ+QmesSk41m2pt3iu+O16434oTABrKKSQBZTr3A7P91TSzcWQMoR2/y4BeKJlgaU/E19aSdFpjEZ7EchxBdLu21b9R/6lLeDMnH5Texpn4BTohLpTF+6JK87Hurc6ZjdVkHJsC9pSpKGZWu0pyfVWaJCSvVaNwjcAoGUI5ZAaykt3funL/uChdX0aj0WZzFRqk1zn/4GFNIq5j2N0aWeprY3Ow9DdvNQagqUgdrQDIEkmLu71/3vyjVWBMCSdKVWcB2u1k7nBU98F14qBiUYeN11ojBZPrUALx+ly6PdUUjeDMEBid1v2+fibwIIaTzcGQYyqNV7DLjUUiGwm06g27pRPdKuvvhGyo7H2Sy5fz5XuomDIVXNPJFmL3zMx5R3nFOXQmQyMUeQWAQ2JY39SB6WnCI4IyXTZfNP99QTcwzhAA3P1jgIQqQWglJQ/0HTdwenYrgS5A6687fV/bGi5PmHW5t+WD/2gftQMWZqQvPEUjWJ6WrMZGvWKpeeg3+rJ/LDvHQCCfnfsYAw==", + "page_age": null + }, + { + "type": "web_search_result", + "title": "DeepSeek (chatbot) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "Anysphere - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence Jan 2025", + "url": "https://arxiv.org/list/cs.AI/2025-01", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Gemini (language model) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "encrypted_content": "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", + "page_age": "1 day ago" + }, + { + "type": "web_search_result", + "title": "Kimi (chatbot) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Kimi_(chatbot)", + "encrypted_content": "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", + "page_age": "1 month ago" + } + ] + }, + { + "type": "text", + "text": "Here are the latest AI news highlights:\n\n## Major Recent Developments\n\n**DeepSeek R1 Disrupts the Market**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 20 – DeepSeek releases DeepSeek-R1, a large language model based on DeepSeek-V3 utilising a chain-of-thought, stating it achieves performance ...", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDO3q+8e1PvXlI/0UpBoM7sGMYgy6PschpVckIjBmgAvV4liUAv6pVGiQAspxvafFxsW2K7Fl2za8GtN4XW9+BTA1JmZ2HMH3F9p8E8gqE6Nmev8CGR94gQmNHcJEFM8gaPcYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "January 20 – DeepSeek releases DeepSeek-R1, a large language model based on DeepSeek-V3 utilising a chain-of-thought, stating it achieves performance ...", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDHL9jxm34dE4aOYJQRoM9R5I1kk9aB1+fpbrIjDFVnOUEZauYMedmu8MTsdrdpczhdDKhUfSHxOVVefOWu8aBb5A8LBy1qMrs/kZ3W0qFBoCARiS2HCouGZMW0IODF1dFO4oGAQ=" + } + ], + "type": "text", + "text": "DeepSeek released DeepSeek-R1 on January 20, 2025, a large language model based on DeepSeek-V3 utilizing chain-of-thought, claiming performance comparable to OpenAI-o1 across math, code, and reasoning tasks" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "DeepSeek-R1 is open-source. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJISr94EKgrPXkj6/RoMsjdOsO/EElij+JR4IjB8Ocoop/fdeEKf6P0rqRqKo1mMuXyZwFRD8o9pJ/sv9u2lAjY5WZinPJ+fV6t75rcqE1g9iFBUQOuueBlRQPlJxXlppgEYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "DeepSeek-R1 is open-source. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDCvn7X2zfIqVfgA9JxoMzLkVKoJFZ/Oh1HbQIjDbhkp8w6ZnyoAGIhB/IEqcI8njeK1XL+sYArqW4uB2NfgkWOkvBDbDdseEOy0+4XgqFBTV0tFvsP3O7RWremmJ4Mv9DMN8GAQ=" + } + ], + "type": "text", + "text": "DeepSeek-R1 is open-source" + }, + { + "type": "text", + "text": ", which has significantly impacted the AI industry. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Released on 20 January 2025, DeepSeek-R1 surpassed ChatGPT as the most downloaded freeware app on the iOS App Store in the United States by 27 January...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDF34gl/k+qfceWZnPRoMrlG/CqQ3FlXXC8KtIjD7WxU2wFopXBPkGhnMMSAD0eNxgcGwtl+tmnei+ySFeqJJJxRHPrzoJkz96Tx0G6IqFIwyqbBtxwHsdmetIde6nV2Z19VuGAQ=" + } + ], + "type": "text", + "text": "By January 27, DeepSeek-R1 surpassed ChatGPT as the most downloaded freeware app on the iOS App Store in the United States" + }, + { + "type": "text", + "text": ".\n\nThe release caused major market turbulence. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The success of the company's AI models consequently \"sparked market turmoil\" and caused shares in major global technology companies to plunge on 27 Ja...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDH+DfboyH+wzekBB2RoMB/n4rpQgo4lJwredIjBLkIaI2+OpX04xUE628exOb+lZDzCI7EqnM7b3OK+qhXOmmhxiHB68xDhwhzgHCKsqFMnhanyXzTRwQenba5fvZfsAM2g+GAQ=" + } + ], + "type": "text", + "text": "The success of DeepSeek's AI models \"sparked market turmoil\" and caused shares in major global technology companies to plunge on 27 January 2025: Nvidia's stock fell by as much as 17–18%" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "A global sell-off of technology stocks on Nasdaq, prompted by the release of the R1 model, led to record losses of about $593 billion in the market ca...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNE9U55SD7y56cW0wRoMppMLQNXD62X6GvifIjDXwnfSGNy+Zv8DdalBg/TkK8iNrgckMWEcHFtpIEZohWQcseSLlCCjNdwtDyhYJTYqFAlz11eNMr2DNiAm1dASnmOhMxveGAQ=" + } + ], + "type": "text", + "text": "A global sell-off of technology stocks on Nasdaq led to record losses of about $593 billion in market capitalizations of AI and computer hardware companies, and by the next day a total of $1 trillion of value was wiped from American stocks" + }, + { + "type": "text", + "text": ".\n\n**The Stargate Project**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 21 – The Stargate Project, a joint venture created by OpenAI, SoftBank, Oracle and MGX, is formally announced by U.S. president Donald Trump. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDGQMJpl0NaDZI+yWGxoMDmfHztiwrp8ibv4zIjDnyYbMaNrrfqNFONwxcy9N+Dj2KJst6v2RE+ZCpvK8RZI5h3euNdE/xRxTYcCyFCkqFPIHVx/Let0Q5Spz1/eWbrYQ4geQGAQ=" + } + ], + "type": "text", + "text": "On January 21, The Stargate Project, a joint venture created by OpenAI, SoftBank, Oracle and MGX, was formally announced by U.S. president Donald Trump" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The venture plans on investing up to US$500 billion in AI infrastructure in the United States by 2029. It has been planned since 2022 and was formally...", + "url": "https://en.wikipedia.org/wiki/Stargate_LLC", + "title": "Stargate LLC - Wikipedia", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNc3FJ3IaKAdN+7kOxoMv0EnUKAWyupnoGBoIjBThP1LR7b6Iy+mcGg2NPlmlRpVJCgB/vJq+AjG/tUOVrvz8TRDEX0QiAp/GSDPfL8qFav5W84K7Agm9J/Ljd7LLAzKmJYjUxgE" + } + ], + "type": "text", + "text": "The venture plans on investing up to US$500 billion in AI infrastructure in the United States by 2029" + }, + { + "type": "text", + "text": ".\n\n## Corporate Developments\n\n**Google's AI Advancements**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "On January 30, 2025, Google released Gemini 2.0 Flash as the new default model, with Gemini 1.5 Flash still available for usage. ", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "title": "Gemini (language model) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDF1ULTpRIysVxBQ4UxoMKy0sevNy0HM6FYa8IjCUaxtEr4cbnPw+6gk0mQAo3pVifDWbaD9CkTqTM6Z+PZOzlmLM2abljKLLq6s1otkqFMNGYKZdrNDpfCi2S4bo9GJHR9auGAQ=" + } + ], + "type": "text", + "text": "On January 30, 2025, Google released Gemini 2.0 Flash as the new default model" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "On January 12, 2026, Apple has officially partnered with Google to use Google's Gemini AI model as the foundation for the next generation of Apple Fou...", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "title": "Gemini (language model) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPdPRp2lrJeVchUkKhoM2vL18VHhoW3C/I9OIjCY9XslnUSOZwuFDYoYhlTca1Q1uVcUBLmrlJ4oP/1GJQEt8dk3XC0Z0+QGmlzVAF4qFHDpC8rPIgVWynW4j1vurUd5EFzrGAQ=" + } + ], + "type": "text", + "text": "On January 12, 2026, Apple officially partnered with Google to use Google's Gemini AI model as the foundation for the next generation of Apple Foundation models, which will power its upcoming version of Siri" + }, + { + "type": "text", + "text": ".\n\n**Anysphere's Growth**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025. ", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "title": "Anysphere - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDA9G6gj0eO9Q55y5MhoMYmICSV3iXMHUBWIaIjBTWa6UuaRT1NWVar7fhF28y+iTZDBlP3Chx2mgz9Kr266gv0+hAMMiZNcB7FkHqV0qE9pwQJUf/nWTxdVoOAwBQWYce0IYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025. ", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "title": "Anysphere - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDIX5KukQ6z5dWKZ28BoMjS1MQmE2MciVF8zBIjAQh9xK71KmDtVpjDJ5X4QDuu/NBTeqhV7uKq6WzE4PsM0MBYgxSMxLSMmPcoDF2AsqEyTDIuKdoukXvqBv7+GRj1+efjsYBA==" + } + ], + "type": "text", + "text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025" + }, + { + "type": "text", + "text": ".\n\n## AI Benchmarks and Research\n\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 23 – Humanity's Last Exam, a benchmark for large language models, is published. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDHc4vphv6F7T2pf2PRoMNHi0YObJXiHhfIasIjDbSuIaBObpZ6lTSQwkBZ61UvF5bWfPWoFIlzctwqJLvZ1duWJX821phd4sTncQTJ8qE0gMsbhBzsztHr1ARGBlCsA6wI0YBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "January 23 – Humanity's Last Exam, a benchmark for large language models, is published. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDAOE97vyXDm6ZmV+wxoMpY/vMdmFwPYTOcvrIjCG0vX6twsBgvgBNgSB9vF4NKjf9uj0kfFG0eO+usH3YV0LuI2OYTomuPPdHNRs7GcqFK+zEOokzyUvXZQeIKYsoACd3ar/GAQ=" + } + ], + "type": "text", + "text": "On January 23, Humanity's Last Exam, a benchmark for large language models, was published" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The dataset consists of 3,000 challenging questions across over a hundred subjects. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEGcrjN7OzxyBKtn7xoMbPTpJwJ5luLU/nqJIjBIuwBnz3QSunyyr7vNkIMld9VgmkFtl7FCgwmvm6mQ5LztQTLFh0+p9cGmSFk2DzwqExsSn40lV1HM8yfxDMsG8BktbZEYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "The dataset consists of 3,000 challenging questions across over a hundred subjects. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPVHPAMejDCvoduKHhoMj8juzBL/2SxKawxiIjDTyu0TDBi8B88/2xsbOugBuj7n+AEJT2fMOVW0MM4gtfQpoHX/bgIuzUy/F7D8JBsqFKdtXeBc+Y+GUJD9PcWtY4aAlXCaGAQ=" + } + ], + "type": "text", + "text": "The dataset consists of 3,000 challenging questions across over a hundred subjects" + }, + { + "type": "text", + "text": ".\n\n## Market Concerns\n\nThe AI industry is facing scrutiny over potential bubble conditions. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDDgz3exbuKIKQ/ofCBoMKYumhJz+aRk5g2OZIjDlsnp8zU0Dr8N7Rblc8BYZVcvDGQw7kGEWPh7wj4abqF419qAWyqoljRoMcNaCyJgqEwqdOnQOHE5kJqAlxDiKxUBCWCUYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDN5+GASmjKIAwxTcEBoMeL+6BeZDvzUaGo03IjAHEcP1mIQa1eMMVlNoAE8dF/WOqmA/qr5Ayz3BFVJhlSLutkim73UcutMVETT58HEqE5vbYT3FX4N3LAz0AZwckE/wXq4YBA==" + } + ], + "type": "text", + "text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "... Sam Altman, CEO of OpenAI and creator of ChatGPT, stated in 2025 that he believed that an AI bubble is ongoing. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEShmeVU3l25kNJfPRoMGoxPTA2tYmY7TCQ0IjBBOoiP9Vw742RfUlGhbSPAPBHg4D/NxWLLtmoigLUIwEJx1vMcq/ZpQtnJJ6LcgeUqFMn4Z+hXRblLaaGSNw26t5h/oj0qGAQ=" + } + ], + "type": "text", + "text": "Sam Altman, CEO of OpenAI, stated in 2025 that he believed that an AI bubble is ongoing" + }, + { + "type": "text", + "text": ".\n\n## Regulatory and Security Issues\n\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "DeepSeek's compliance with Chinese government censorship policies and its data collection practices have also raised concerns over privacy and informa...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKIMLHMLRcQUBeex0xoMswosdJgJ59hMhjmqIjAjinA4UCJp5BZR0Yxtl9ursFGtENAYXQhfj8b7ZSU/y358Dgv06UV5+5gzgRD1hNEqFFPbrRdk7Cmva8kLtgn6+GnF+jd6GAQ=" + } + ], + "type": "text", + "text": "DeepSeek's compliance with Chinese government censorship policies and its data collection practices have raised concerns over privacy and information control, prompting regulatory scrutiny in multiple countries" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Some experts fear that the government of China could use the AI system for foreign influence operations, spreading disinformation, surveillance, and t...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPkqBvPJgBoukoXQUBoMrRVtPmhBuSH3MTL8IjBAuH3DUW8ipHz3F63vD6+EULpyeeqO09M/DRU79nyCUmjG/BwzYSMLS9e7OEmzZvAqFIeYeVKXdoco3q9/fGdznt8d7fynGAQ=" + } + ], + "type": "text", + "text": "Some experts fear that the government of China could use the AI system for foreign influence operations, spreading disinformation, surveillance, and the development of cyberweapons" + }, + { + "type": "text", + "text": ".\n\nThese developments reflect a rapidly evolving AI landscape with significant technological advances, market volatility, and growing geopolitical considerations." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search", + "allowed_domains": [ + "wikipedia.org", + "arxiv.org" + ], + "max_uses": 3 + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-response.json b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-response.json new file mode 100644 index 00000000..eb61f004 --- /dev/null +++ b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01W6AUDeRb3kwxgXofe5etmK", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you decide what to do next! However, I need a bit more context to give you the most relevant advice. Could you tell me:\n\n- What area are you looking for guidance on? (career, personal projects, learning, etc.)\n- What's your current situation or what you've been working on recently?\n- Are you asking in relation to the AI news we just discussed, or something completely different?\n\nFor example, are you:\n- Looking to get involved in AI/tech based on the news?\n- Seeking general life or career advice?\n- Working on a specific project and need direction?\n- Trying to decide between different options?\n\nOnce I understand your context better, I can offer more tailored suggestions!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 18239, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 163, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolAdvancedParam/anthropic/request.json b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/request.json new file mode 100644 index 00000000..e55022b5 --- /dev/null +++ b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/request.json @@ -0,0 +1,21 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "AI news" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search", + "allowed_domains": [ + "wikipedia.org", + "arxiv.org" + ], + "max_uses": 3 + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolAdvancedParam/anthropic/response.json b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/response.json new file mode 100644 index 00000000..7fba8426 --- /dev/null +++ b/payloads/snapshots/webSearchToolAdvancedParam/anthropic/response.json @@ -0,0 +1,426 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01MKf5myCQiA1JgLYLi2n6RS", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "server_tool_use", + "id": "srvtoolu_01KYHqxtD6w46cT14WezbA7K", + "name": "web_search", + "input": { + "query": "AI news today January 2025" + } + }, + { + "type": "web_search_tool_result", + "tool_use_id": "srvtoolu_01KYHqxtD6w46cT14WezbA7K", + "content": [ + { + "type": "web_search_result", + "title": "2025 in artificial intelligence - Wikipedia", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence Jan 2026", + "url": "https://arxiv.org/list/cs.AI/current", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "AI bubble - Wikipedia", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "encrypted_content": "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", + "page_age": "3 days ago" + }, + { + "type": "web_search_result", + "title": "Stargate LLC - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Stargate_LLC", + "encrypted_content": "EoIKCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEhHDL86Phsb2ciUnxoMUT2CHg3md9Ha1ws+IjBQHHa2KvLgb+6uwV/TQJAbYK18HRpH+OtqlHhsyR/PY7ZRrjq+MX5IDVwIDNWJCLUqhQmSVtstnnE12qg678PHZfq3lE2SlW7O2jpKwQrrrdj+ONYpNdWWTpc0iAe95xQPDm8+im06kTrbrTp7MdpCwWbX4Wo4zFEtYfx5Uhm+I0SqbO+rGkFKq2VT0ds8+sM198zXTHnbc7W9DZQYMTAwu2Ssla8f9mstJTaHwcR15Q+0lJ8EN9vCnVLrsGansYeeYW/x+CBVm3n9a1A5p1e7zhlfEvMUNJ1f1bKyOaSoJ8MsE6tQTEel4BEWi4pKv3wsYeQS0vo18BRrK5QrcKumg4ASQlFlmzlzTUCq0VETGHBc/Y8LqJbSQhS1EdKDxNdBGnwUsB5xReZiPL4bz/4LohtPX51U8nGLshIRRfXxb9xL7RFk0FBjxTvvKQ/WRHL7tFTgPRTUvOZnVtzIbwffyZsJdDcZq9ZM2IE8KVqDjiZoLkS+ftMn0+6WFySDDhlZYhGTBJ7FiEghvxS6mvloNwxFDFPDjNeovUJ+Nj13nTHozcgK9+Uv1NcZ0ucHeGdKdLtjtDqoHD1GM/HGTv/VY3Lu13QrwbaPWKqxPjlL2kumjmi+xGk2iO4Lgpg2kY+mFnvBZn3CEaitDK2tEO84I0tvNHtdU6Cc/LquotXuqIMqW2y8ik+BpaxLdcuN8zJaumL6c0Hgqv5MGMoRJDI2e+iuBSP8A4VpR6BekjmRiE/A32E7znPbWMek6qVj+5qe4NBlNhMv3z8d2RV8PDv1s83qjdYIKmTRazcsc8X2ZT4ItPRlf578zKm1nxo5huwRXHq9W/+i1Z95xNTlsgRbhmxQm6BYX4tx+Ka786/kvso4pk42fisA/Fev4D1lboh7LoeCqpPYV2LkZC9LklCo6P8qvX9JEfYxnVaP46ZKbMXxPZSjvIGBdNdv9DcVaqvx+lGshCGKHucFlV2g/yKzKrVRRdRKjFUNO9iYCWodhbg5eOd14+dpdQ7WSz4bWNKKorOVUwvgBG4IhRdPJVpnHHczhRCTKfpgjnQx/G19pkoV/5L06zU+yaQmMMbKf48cu36JlNs6egXraPVcwjsM1eLxo//Mwj43GlAoNe4b2Ay8pPW7McynjLYX4RbNDoIUBDufK6WHvbqUKvEt+rC5gRUFyhY21TpeG0RjHxX/63cNjWKRBweVpnlfnqBPgyhWNIg5/MoOwdU6dAo7nQXORI2ZLBkrCjZGBlifeLRfVAN3srX9UKXJmUCEe0b6O8liGC6IIQFzMcWvIrHAcpbByii6GSifiKXEl4elLt7EJzkHqJYQYyqPdplP/ooU/Vo1Gy2+GaBQboB01x9+gbbGnZ+3Gkyp5kTTkE+iAaZbRbnrg7lan9IYRlZHZ5Mh34M9n/7yUj1Rf/tEsbSePYZml1ad9ff13c+lgDke+Pr1fkM5ZVyZmQAV+1qTR0LCFp7hEdL8Z/R6WX4xP/HdUekOCXSZt298M1Gov5cxhqA+0WM1t7UxGeVGoLqpuY+5K5uyW4mfBj3JXPRj8Rf8J/ZonDAxVtp9WizrnPESxOH9/BoEyP3tE1xce5tFUIaoVxGzWChYlfiavBgD", + "page_age": "December 16, 2025" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence", + "url": "https://arxiv.org/list/cs.AI/new", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "DeepSeek (chatbot) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "Anysphere - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "Artificial Intelligence Jan 2025", + "url": "https://arxiv.org/list/cs.AI/2025-01", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Gemini (language model) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "encrypted_content": "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", + "page_age": "1 day ago" + }, + { + "type": "web_search_result", + "title": "Kimi (chatbot) - Wikipedia", + "url": "https://en.wikipedia.org/wiki/Kimi_(chatbot)", + "encrypted_content": "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", + "page_age": "1 month ago" + } + ] + }, + { + "type": "text", + "text": "Here are the latest AI news highlights:\n\n## Major Recent Developments\n\n**DeepSeek R1 Disrupts the Market**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 20 – DeepSeek releases DeepSeek-R1, a large language model based on DeepSeek-V3 utilising a chain-of-thought, stating it achieves performance ...", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDO3q+8e1PvXlI/0UpBoM7sGMYgy6PschpVckIjBmgAvV4liUAv6pVGiQAspxvafFxsW2K7Fl2za8GtN4XW9+BTA1JmZ2HMH3F9p8E8gqE6Nmev8CGR94gQmNHcJEFM8gaPcYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "January 20 – DeepSeek releases DeepSeek-R1, a large language model based on DeepSeek-V3 utilising a chain-of-thought, stating it achieves performance ...", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDHL9jxm34dE4aOYJQRoM9R5I1kk9aB1+fpbrIjDFVnOUEZauYMedmu8MTsdrdpczhdDKhUfSHxOVVefOWu8aBb5A8LBy1qMrs/kZ3W0qFBoCARiS2HCouGZMW0IODF1dFO4oGAQ=" + } + ], + "type": "text", + "text": "DeepSeek released DeepSeek-R1 on January 20, 2025, a large language model based on DeepSeek-V3 utilizing chain-of-thought, claiming performance comparable to OpenAI-o1 across math, code, and reasoning tasks" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "DeepSeek-R1 is open-source. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJISr94EKgrPXkj6/RoMsjdOsO/EElij+JR4IjB8Ocoop/fdeEKf6P0rqRqKo1mMuXyZwFRD8o9pJ/sv9u2lAjY5WZinPJ+fV6t75rcqE1g9iFBUQOuueBlRQPlJxXlppgEYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "DeepSeek-R1 is open-source. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDCvn7X2zfIqVfgA9JxoMzLkVKoJFZ/Oh1HbQIjDbhkp8w6ZnyoAGIhB/IEqcI8njeK1XL+sYArqW4uB2NfgkWOkvBDbDdseEOy0+4XgqFBTV0tFvsP3O7RWremmJ4Mv9DMN8GAQ=" + } + ], + "type": "text", + "text": "DeepSeek-R1 is open-source" + }, + { + "type": "text", + "text": ", which has significantly impacted the AI industry. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Released on 20 January 2025, DeepSeek-R1 surpassed ChatGPT as the most downloaded freeware app on the iOS App Store in the United States by 27 January...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDF34gl/k+qfceWZnPRoMrlG/CqQ3FlXXC8KtIjD7WxU2wFopXBPkGhnMMSAD0eNxgcGwtl+tmnei+ySFeqJJJxRHPrzoJkz96Tx0G6IqFIwyqbBtxwHsdmetIde6nV2Z19VuGAQ=" + } + ], + "type": "text", + "text": "By January 27, DeepSeek-R1 surpassed ChatGPT as the most downloaded freeware app on the iOS App Store in the United States" + }, + { + "type": "text", + "text": ".\n\nThe release caused major market turbulence. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The success of the company's AI models consequently \"sparked market turmoil\" and caused shares in major global technology companies to plunge on 27 Ja...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDH+DfboyH+wzekBB2RoMB/n4rpQgo4lJwredIjBLkIaI2+OpX04xUE628exOb+lZDzCI7EqnM7b3OK+qhXOmmhxiHB68xDhwhzgHCKsqFMnhanyXzTRwQenba5fvZfsAM2g+GAQ=" + } + ], + "type": "text", + "text": "The success of DeepSeek's AI models \"sparked market turmoil\" and caused shares in major global technology companies to plunge on 27 January 2025: Nvidia's stock fell by as much as 17–18%" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "A global sell-off of technology stocks on Nasdaq, prompted by the release of the R1 model, led to record losses of about $593 billion in the market ca...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNE9U55SD7y56cW0wRoMppMLQNXD62X6GvifIjDXwnfSGNy+Zv8DdalBg/TkK8iNrgckMWEcHFtpIEZohWQcseSLlCCjNdwtDyhYJTYqFAlz11eNMr2DNiAm1dASnmOhMxveGAQ=" + } + ], + "type": "text", + "text": "A global sell-off of technology stocks on Nasdaq led to record losses of about $593 billion in market capitalizations of AI and computer hardware companies, and by the next day a total of $1 trillion of value was wiped from American stocks" + }, + { + "type": "text", + "text": ".\n\n**The Stargate Project**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 21 – The Stargate Project, a joint venture created by OpenAI, SoftBank, Oracle and MGX, is formally announced by U.S. president Donald Trump. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDGQMJpl0NaDZI+yWGxoMDmfHztiwrp8ibv4zIjDnyYbMaNrrfqNFONwxcy9N+Dj2KJst6v2RE+ZCpvK8RZI5h3euNdE/xRxTYcCyFCkqFPIHVx/Let0Q5Spz1/eWbrYQ4geQGAQ=" + } + ], + "type": "text", + "text": "On January 21, The Stargate Project, a joint venture created by OpenAI, SoftBank, Oracle and MGX, was formally announced by U.S. president Donald Trump" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The venture plans on investing up to US$500 billion in AI infrastructure in the United States by 2029. It has been planned since 2022 and was formally...", + "url": "https://en.wikipedia.org/wiki/Stargate_LLC", + "title": "Stargate LLC - Wikipedia", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNc3FJ3IaKAdN+7kOxoMv0EnUKAWyupnoGBoIjBThP1LR7b6Iy+mcGg2NPlmlRpVJCgB/vJq+AjG/tUOVrvz8TRDEX0QiAp/GSDPfL8qFav5W84K7Agm9J/Ljd7LLAzKmJYjUxgE" + } + ], + "type": "text", + "text": "The venture plans on investing up to US$500 billion in AI infrastructure in the United States by 2029" + }, + { + "type": "text", + "text": ".\n\n## Corporate Developments\n\n**Google's AI Advancements**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "On January 30, 2025, Google released Gemini 2.0 Flash as the new default model, with Gemini 1.5 Flash still available for usage. ", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "title": "Gemini (language model) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDF1ULTpRIysVxBQ4UxoMKy0sevNy0HM6FYa8IjCUaxtEr4cbnPw+6gk0mQAo3pVifDWbaD9CkTqTM6Z+PZOzlmLM2abljKLLq6s1otkqFMNGYKZdrNDpfCi2S4bo9GJHR9auGAQ=" + } + ], + "type": "text", + "text": "On January 30, 2025, Google released Gemini 2.0 Flash as the new default model" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "On January 12, 2026, Apple has officially partnered with Google to use Google's Gemini AI model as the foundation for the next generation of Apple Fou...", + "url": "https://en.wikipedia.org/wiki/Gemini_(language_model)", + "title": "Gemini (language model) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPdPRp2lrJeVchUkKhoM2vL18VHhoW3C/I9OIjCY9XslnUSOZwuFDYoYhlTca1Q1uVcUBLmrlJ4oP/1GJQEt8dk3XC0Z0+QGmlzVAF4qFHDpC8rPIgVWynW4j1vurUd5EFzrGAQ=" + } + ], + "type": "text", + "text": "On January 12, 2026, Apple officially partnered with Google to use Google's Gemini AI model as the foundation for the next generation of Apple Foundation models, which will power its upcoming version of Siri" + }, + { + "type": "text", + "text": ".\n\n**Anysphere's Growth**\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025. ", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "title": "Anysphere - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDA9G6gj0eO9Q55y5MhoMYmICSV3iXMHUBWIaIjBTWa6UuaRT1NWVar7fhF28y+iTZDBlP3Chx2mgz9Kr266gv0+hAMMiZNcB7FkHqV0qE9pwQJUf/nWTxdVoOAwBQWYce0IYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025. ", + "url": "https://en.wikipedia.org/wiki/Anysphere", + "title": "Anysphere - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDIX5KukQ6z5dWKZ28BoMjS1MQmE2MciVF8zBIjAQh9xK71KmDtVpjDJ5X4QDuu/NBTeqhV7uKq6WzE4PsM0MBYgxSMxLSMmPcoDF2AsqEyTDIuKdoukXvqBv7+GRj1+efjsYBA==" + } + ], + "type": "text", + "text": "Anysphere crossed US$100 million in annual recurring revenue (ARR) in January 2025, and topped US$500 million ARR by June 2025" + }, + { + "type": "text", + "text": ".\n\n## AI Benchmarks and Research\n\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 23 – Humanity's Last Exam, a benchmark for large language models, is published. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDHc4vphv6F7T2pf2PRoMNHi0YObJXiHhfIasIjDbSuIaBObpZ6lTSQwkBZ61UvF5bWfPWoFIlzctwqJLvZ1duWJX821phd4sTncQTJ8qE0gMsbhBzsztHr1ARGBlCsA6wI0YBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "January 23 – Humanity's Last Exam, a benchmark for large language models, is published. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDAOE97vyXDm6ZmV+wxoMpY/vMdmFwPYTOcvrIjCG0vX6twsBgvgBNgSB9vF4NKjf9uj0kfFG0eO+usH3YV0LuI2OYTomuPPdHNRs7GcqFK+zEOokzyUvXZQeIKYsoACd3ar/GAQ=" + } + ], + "type": "text", + "text": "On January 23, Humanity's Last Exam, a benchmark for large language models, was published" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The dataset consists of 3,000 challenging questions across over a hundred subjects. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEGcrjN7OzxyBKtn7xoMbPTpJwJ5luLU/nqJIjBIuwBnz3QSunyyr7vNkIMld9VgmkFtl7FCgwmvm6mQ5LztQTLFh0+p9cGmSFk2DzwqExsSn40lV1HM8yfxDMsG8BktbZEYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "The dataset consists of 3,000 challenging questions across over a hundred subjects. ", + "url": "https://en.wikipedia.org/wiki/2025_in_artificial_intelligence", + "title": "2025 in artificial intelligence - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPVHPAMejDCvoduKHhoMj8juzBL/2SxKawxiIjDTyu0TDBi8B88/2xsbOugBuj7n+AEJT2fMOVW0MM4gtfQpoHX/bgIuzUy/F7D8JBsqFKdtXeBc+Y+GUJD9PcWtY4aAlXCaGAQ=" + } + ], + "type": "text", + "text": "The dataset consists of 3,000 challenging questions across over a hundred subjects" + }, + { + "type": "text", + "text": ".\n\n## Market Concerns\n\nThe AI industry is facing scrutiny over potential bubble conditions. " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDDgz3exbuKIKQ/ofCBoMKYumhJz+aRk5g2OZIjDlsnp8zU0Dr8N7Rblc8BYZVcvDGQw7kGEWPh7wj4abqF419qAWyqoljRoMcNaCyJgqEwqdOnQOHE5kJqAlxDiKxUBCWCUYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDN5+GASmjKIAwxTcEBoMeL+6BeZDvzUaGo03IjAHEcP1mIQa1eMMVlNoAE8dF/WOqmA/qr5Ayz3BFVJhlSLutkim73UcutMVETT58HEqE5vbYT3FX4N3LAz0AZwckE/wXq4YBA==" + } + ], + "type": "text", + "text": "In late January 2025, the unexpectedly successful launch of the Chinese-made chatbot DeepSeek resulted in concerns about a possible AI bubble" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "... Sam Altman, CEO of OpenAI and creator of ChatGPT, stated in 2025 that he believed that an AI bubble is ongoing. ", + "url": "https://en.wikipedia.org/wiki/AI_bubble", + "title": "AI bubble - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEShmeVU3l25kNJfPRoMGoxPTA2tYmY7TCQ0IjBBOoiP9Vw742RfUlGhbSPAPBHg4D/NxWLLtmoigLUIwEJx1vMcq/ZpQtnJJ6LcgeUqFMn4Z+hXRblLaaGSNw26t5h/oj0qGAQ=" + } + ], + "type": "text", + "text": "Sam Altman, CEO of OpenAI, stated in 2025 that he believed that an AI bubble is ongoing" + }, + { + "type": "text", + "text": ".\n\n## Regulatory and Security Issues\n\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "DeepSeek's compliance with Chinese government censorship policies and its data collection practices have also raised concerns over privacy and informa...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKIMLHMLRcQUBeex0xoMswosdJgJ59hMhjmqIjAjinA4UCJp5BZR0Yxtl9ursFGtENAYXQhfj8b7ZSU/y358Dgv06UV5+5gzgRD1hNEqFFPbrRdk7Cmva8kLtgn6+GnF+jd6GAQ=" + } + ], + "type": "text", + "text": "DeepSeek's compliance with Chinese government censorship policies and its data collection practices have raised concerns over privacy and information control, prompting regulatory scrutiny in multiple countries" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Some experts fear that the government of China could use the AI system for foreign influence operations, spreading disinformation, surveillance, and t...", + "url": "https://en.wikipedia.org/wiki/DeepSeek_(chatbot)", + "title": "DeepSeek (chatbot) - Wikipedia", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPkqBvPJgBoukoXQUBoMrRVtPmhBuSH3MTL8IjBAuH3DUW8ipHz3F63vD6+EULpyeeqO09M/DRU79nyCUmjG/BwzYSMLS9e7OEmzZvAqFIeYeVKXdoco3q9/fGdznt8d7fynGAQ=" + } + ], + "type": "text", + "text": "Some experts fear that the government of China could use the AI system for foreign influence operations, spreading disinformation, surveillance, and the development of cyberweapons" + }, + { + "type": "text", + "text": ".\n\nThese developments reflect a rapidly evolving AI landscape with significant technological advances, market volatility, and growing geopolitical considerations." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 19260, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1063, + "service_tier": "standard", + "server_tool_use": { + "web_search_requests": 1 + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolParam/anthropic/followup-request.json b/payloads/snapshots/webSearchToolParam/anthropic/followup-request.json new file mode 100644 index 00000000..f9e1092c --- /dev/null +++ b/payloads/snapshots/webSearchToolParam/anthropic/followup-request.json @@ -0,0 +1,277 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Latest OpenAI news" + }, + { + "role": "assistant", + "content": [ + { + "type": "server_tool_use", + "id": "srvtoolu_01BNm4uXHL8iP38cA1CnsrbF", + "name": "web_search", + "input": { + "query": "OpenAI news January 2026" + } + }, + { + "type": "web_search_tool_result", + "tool_use_id": "srvtoolu_01BNm4uXHL8iP38cA1CnsrbF", + "content": [ + { + "type": "web_search_result", + "title": "OpenAI News | OpenAI", + "url": "https://openai.com/news/", + "encrypted_content": "EtYJCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDARMACQW344fkw46wBoMEYF6BNiwu9sQXKKPIjA9kR8pPWrYLqS/a/ZYoNu6FngJapGYMp/TxqjTt2TXJYXpDCtkdwBhefLgxYrZXV0q2QgU4l+EXLllL4fHRPluk2ON+42qEFnvRuk2cBrvRKiowmQRD1CLZ2lOiY1ZC1dGmkGapAkQL6yRSaMifVu2l4djJUXCyIIjNySmQXgvB8Af2rl7JfNRlaDVKt06gKO24MFNkr2hCkPmcaM1ECekjPUuV/m3Cmw+Hzglt7nCkmiXZPJrmU+nLS3nuHEq7S+KIH1Kgm56mUJpGQcoew9r3SLC4QW3QZ+FR8gFh/B1ys1gacQhzbzpPkDEn9500+3ZKHXNd3W9l9SO8nhl/wQcT7UvHdl1mrt+Ez/UGXO7s0PZezvA2JPKntKjPEh6IhCdczK6Meufd7+dqj8CY8VW2DnNcgEAc2yk38xMT1ouTmnOj/7x2jJIMATYoD/gWXjzWU6EdJWE5XWuzEv40GnDC0MKdWL917wMHUx+Uuj3ssT33BXHJ7jv2KkkDUaCckJTvB+HICViu9damrvYlHZwr2SwpEGvwDe0pbAgCZkLjKXQBUc8xO/Lxf1+ZcyeZntfJjjrciVaqMdgL5Ms2rQMMGUuPNKOzQnozWdVYQUoamS+WfNiCuiYRKea+5P0lIrZ7vIJBUMxWnTU6yA0sbDXEsuK4KeyDW8W0LnH09fUB1C5D4NeSWSJ99P1VcL/p+ylC2K8icTEOR5zesMWxK/+HVHNbACpwhSMbst9rksH38EeJi/Td7A2mOc1ykiYa3tenPjkOnSQ03dTuI5+E4EFFgGAtN4uPR90uM4ACKrfcBsw5d/fGIUWDNryr94FGPpWe6ePDeYWFSeLKpiRFeC+juO8s3wgYf4E9p0mm9oNZ0iPtuiKsFDz4jnUdS2AIb6Pxu0ohwtOp4z14mOl6aYLPKcJQqs1G4LyTtXJCdD4nJKzVW4m5Mj3g2N3tfLvFTqdUTzRu353om8KcIlpJYen7JJQ4S0G6ETkWaNUI4/ZVzEzTioZHmFuRzfRgsT96RvoHiet3BXjBYF2myB1+elneuNLrr0FxPGeFq/j2JGPcMGP9CsY+RRBPu0cBl5EcRF7j+oK8csTjw+/4qSn2cerHEZvMIMjYVR8Sq+B3kembyO65msKobw4nCOv98Z4xdMduP6MjMnm0SOSZWXkBE+Ingy78uelFzuj0jwTQfT442k3hYxHATQBWG7BPPJei1MW9ZhSDMMhg/y6e8BX7Ar+ZwufIClBdZ1j0cNlYGac4OAhBiygtSlb3qILBlSVqlnBFGShfneTnoT6YNxhKXXvg5nhwr+icsZR79VJ9gxQ2xFazPoCiQZeLRIDSTpSBMRsk72te+P2eNmmzLukFEO5TbjcZuikW2t63lzVG4KDZDG68HeHg5MuMyKPFheC3bSx0mVxCjTtUvGfbpAWN8b5smxfgrXFqFxqrErjBi8g609gzzdv0znul1quQqDRPGZ0fco+LhDmvHrPqAhEf6WRqxbcw+7j88Ojn3m4vHqykdDzzbGrEWMOquFkqNHMoBTpo89kBTbjRn9NHxsYAw==", + "page_age": null + }, + { + "type": "web_search_result", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "The Walt Disney Company and OpenAI reach landmark agreement to bring beloved characters from across Disney’s brands to Sora | OpenAI", + "url": "https://openai.com/index/disney-sora-agreement/", + "encrypted_content": "EtMECioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDGOoopTYOC6bpVKrTxoMZnQOlUrjMcQvF4fhIjBkaAjpxSWlW3Og33mqq6TW/XuTIA1QIdSp/8rFAH3S31RCxUMcwFOkHyCUqBI2UDkq1gMqlB21DhW+iVZ/heQ0My5vfnGlzZrMkMlsx9kvJzDWwDC3KGatt/jgc8jgCD8XjdICZrljeWw1KQcZ6Kb7qPJDU33I10X6tJt0yTVWGkJnr2B6IOg9x1PDlfIFJrao4sm6wwsLyGzgZD+S9mQ0zh1GHQQsFQFVN9q+b1cjhvvOvrFZOaVW/nRpBbDod110Yu+ON+qW0Z4yK0/z844yhtYX9Y5KE7s225t+JEx4TikoAigMzhBij3BZYSau/z6kJW0VuptMlJfGciAd2LTWNgavzE0Zbqo2jNMgpgvh7h4YnIIoeUcmoT9hu8UQmbGA6Q9MSePX9fle+wsTtMcX8fuFoTqewlpip6RY8eCvoUbCNBPdqfMgaddm03+QAkceczFil9gykiVBmFAfXgXkhgnVx/3YZzgmUtlvNDR4+hf6rTQCllIcjYHZ0e+7DrTHAcLJep6OUWE1m4voQDnmUggk/V7MUtjguZfRbqgtVY3fl718e9JlfgwPm2XZb+gt5th7F6n/WQVJdL+7r2DvT1HMzIOkZAqwRwS9UCkLogfmiC9uB3/yS1ONLd6Lz8Q5GNu535Hk5/PPpcSG91oK80ryp6Ba3TooUnEbK69l2CfpZ7qZI55VWBgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Introducing ChatGPT Health | OpenAI", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "encrypted_content": "EtAKCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDC5NlAgKehnpVsLPWhoMorb+ksEaTjAZSi4qIjBlomGQravEknZg4HpREX9e+FR4aFeqI9YcfkWbCaBsgHpmWY42hrvMeGwdw9veYVAq0wnRATHWl/0Ig1tWRCKkMlO96RDpcZYRjkiakEglyNYX18mzzBaO1JO4a1OhiQQOtiKf/Gxk4zqyrYlxSe7Gv1zwloRZj6ZOWXfqcj6ZovsKEuEiUZYpvrDQHXIskeDjpzHce/TTBJYigjqaZVZO8xXxUkRl8LsTEObW/tIgZlf9ffhvUF+Gj9MEFqwTIZhKj6Yr7DvsKRc3t5Kyk0821pK7ZyPADrb2IZpowH+EOnyZtlFgLB/Hnri1sBlKGv2Fw4amKlDRKhSGa9e/xGf7wWfdOYPzYsyyn4xYD8xTt86SGrwmYlpTdyRytJr/stz6+wZcCz4aV5iTuZyUUXUZwFCS6g/6X0UAxmbK3FZsCmQiicXpYM1TEb7Q4dWDNm1BC4X2t6/90RNafDAjM9kWcWdQERs91hwFbBgFLapzbX5vVM2jaY4IoMY8q6g66XpzYvZ/kkGkx89jhPZOqQCxINcVWxn+rN/Xs4eV/nrYUIV/p7sjubyWCo5S72Aab+WU5OCMOrmHJBNh1VrTSySFeOM8unjudjPFXK2SDFZlYGzd21xuRyvaU8ms1MoZ/ceSlsOupUsl7REEWMJGFVUodldFSpSbO7LXD6YOx+fnVXmp1KubNGPovSyLOxvAfVTwAgtHFkyUnLopBlwEm9Pt9Yj1RCJc/eerM5YX1+GuMkD6/NcYX21MftLo76Svi++xOsqFRJCH8OBvZd6Wg0/NwyG1NAW5lYvGcX+7gBABqVbSs5wC3YDpvUEaqkgVMKr8/pzN2X8ADzxaF5j/TDEqEZiuwMI8E99DVdRuBFI8BosX9W+LJ0T6/3gPwgCy8DayETf3X4KB0N3czr8vVlT3wpPiK5HjqEDB+JOL0NySz6ku8aHX4yDe6fC5zbM3Cdn9VVAUlEA9B0soveBpZ3818PqmFytmAyN70aw4c5RZf7mJYb4H4TcvOFBxH+llWoNqLTRF8SroJzJGQSacMW2mRwr+jAjIovKGzhXMbTbGsU9U1l+lAEx5kFjI0rxNnbOORwz7vUIw71j/Wd52wuf5F78/kKoZnrSGI+sssV+CnLj7bMxnYPPAeNhWZOceuPjAztiA8CUjHpS1YuIHHieWBciwj+Hu+bP6oaN1VMjExAZHa8bLhYWyNljXIfAwzfX+5IDE02CS720OKI4zvHKufaUHxU+0dH2RCbUdwvwV8ThHeywdMhiwAqi637ZPYTL8jUZKez1gfevXC5fjo0kfgvr3r2A49YLE8mdmhrpg8kFYLdG4VMh+Pa4i6OlyyEXQGcTM6sMP5nd4SjHjK8JzPpPmPOdM0NqgC7PrgKFtD5KoKKd8PoUMMXBC5e2QSl9z81+iQRFl7id/940zlkkm7gazzQyaFX6DWAHkTKiT22PjkddWfmF63QyamldVi5YxiczqSzyFnuA0BzrlFrzQLgukeePGuVnMeYTcnwvcDJsurCt50oqMb8DfTXe26kZB+CfSQdjPimlaUkfgjVbTO4SQ92OQBOwZsrGQS3pOKCZg8pEZVHsv3ZuQA5klnibv4JjXX4HhMft9Q3uFwi7vmxo9Z0dym9U4t65SSmidi13WROOdxcwbmdOKhCoEKU9qHM0Jx7GOkKGhOF7cAA/yhelxAiozQe/AGxtLmzDMyMo1ZBszbRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Introducing OpenAI for Healthcare | OpenAI", + "url": "https://openai.com/index/openai-for-healthcare/", + "encrypted_content": "EtcCCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNzgVoozaaOuhnAWaBoMIQ2HAHsHJo3FxCaHIjBgccPohTj6VbntGVDJeBr2wXmTC+FLhwmgsW8ZK1l8oM7aVxLDVeAkKTICITTZK+kq2gGPHpYZJUdaE4rfMXi0Dt8d6kLwHZ+ZJ7fobJWqIfW0YVPRw3Qy6gC5YvVEPDtFhrZh+ZcMkScvbyGsdpSU2FCpuUNajU6kn3W9n/++Z7UXlPUP+iWr5KZ2tN3ivUSkOgKdcPVOJd1PAYiWKdm+9VvNDy3eVL6PLwJFABOpSnvEBpTaLvofM9ehJumzNbnKqVw3Rk7m9lw0+qwri3QcJY0KjNXv3t2mADPuRtHGeR8bLRP91HpuY5zcFy1F+2jRH7PYWaVFmuSVNmfdtQH3OindCXPVIbUJC1VVjRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "encrypted_content": "Ep0UCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDLqmiRNrXSxap6DaFhoM/ULDFe0kDVb0wYcpIjC1Ld154yfilDW5XvKrqVwe/c080mJiX3dx3prm5DeQiaoobFzfY9JHjyY8iXOeiJwqoBMOwVrNeoTe2lfTBeZjfFbTsBmYDDRGO1Lz3MOvQ/2zB4AJIXtZTXpl+2tj+S2NmfQ4cd17kVCfodBMTZT2uJxUYgRIGTkk/CNOBoAZFwX5tNaVE5neZ/ghyC9dRsDS8InJG3CmMciuGglGgzYGcEsAK4OJ9qdWP+t4rKuS1dg0JRhG304XibpqzSdBIY6DZKlw4d81ZZZZHvu/TcvgZsxSmy1YwCn0yBVTstrd1VxjgWNo3sx71B6k2G/p/0NXMrddzZFuBnNOxlrcTcXy/zpAccqIbBhoI/+0mCM2hKcVR2VZtMZhOsNqhPSlfjzUf7qACsOVMuqKQDFtJD+snku0Y8J2rO75TjHPPYgbbM+DjCbNG8yI4VaQJZQ+rUKORzMmtkjt4uVifaTU64LPJmLBEyRk+ipPlGzXCYcR1GEQqoJ3EYRulWzKDx9i57nC2SCiu78fJfnotnjaqfqzklgoqr1Uck1xxKQJ7Cw1Qoh5J+Fxx+fS/ey+03Ad5GAoE1b0cgf7aUZnE0WFVYYP/JJkKyWTeBcMXmqv7ddVh2WA3vHLiKidXw2chiPZuEVnyUCGFxGV4XsHbC1LoBFQZPNjxRzgjiQO2Yi76C+o7FDixKB+Y2gkXkbVwe/TRKwEKnSoQIYnCgigttt4b1+uQ3Lcz4U3biwwJBUUbu/XSz2kD7DKdplUg8oiw9vT3+iFkhirQUshemUWx//DK9/znp9ZgTwRHpEAabbRLRH4T3+Tr4tj6Aj1JmjNyUqJV/NEe1F5jO9TZCsqCPJkNtH2fwUWXp2paAYExabVpo0dHUnl8gTvcA8AdmiV7US/9ufsQD9BEDCp9cRZehDR5QMUwFYiOHIoc2SLAm4J4r6DtU/Eo3eRelLPOOiJ3PuKMJ8zD4AtMAQfCXIuyYUdI2oFxKgI0ADw0mrcvVg38Bg0Ej/KAHI7RIwLNFUdV4aFVf2MtpBo+HTB4z327Ir4TuHe1wOwpkUad42c44yKgp95KQeRoDPXthJlkkfF9uLhHssBz+/NHrAlaZj7NmVsQzvrwrboaRkQcb+Ac1RPQVB0neHA20Dc0Dm+vTDBupLdyZtOxx3yTA8czG+xDDZ28wN0Sl19kcTSO3vuydx9fRliIQkTOu1JB1hgoHoArtEWrunBaIlNnSZrSarbg1MpcNjMvoHefACY5ZxahrwdwGHHmltt9Ziy7FkSi2qGB/Uw1hoF93B0RJDYtyezqkfSshvVNmhjJil/aONgpIsZc1kKn0Y7tYsc4VFDQBD1W6rNZxGPFcu08vsRiSeqZSPbNSd8Ne1DWJD/fuOEI1hGeUQrL1Be3OFMFy8htd0WbmgdkVAwU8Z9dNIbXZP3rLRa5CypueXtVW4RiTACDNJoRTL/pdI7xeeNan/mtPr4expQW/nsz99EUqYyCvU9j1atYEZuq5YLjl/LFskSUV2NN/Y0nt5Id7dPNmOgKptdLE5RHTyjODJ/UsZfQXIh56Eqyb7WwkkVzM3KQ8iobxNhA40L7fkS1Qd4q2xfoAu+vcHkldNNY0q1Tq9B91ztaiVUiO7/ipyT7l8qEq9Qr1c+uha2TPv0Uge2wjl+c3JxQTS4u7Fvz2OR36KGs22ByIg21wlDGDvzJaqdiUbSSYzx2wkMgRfMRwEGxo0vseoC6+Y9bOCUMXq8hhMu7oGl5nZi0HzxWSp0FpfE4iXNGNhBMJk2dfXXizp99AVoqz1CLSB6RpWT+R6LkoHGxB7H4BP9r86OhxbqSA0lSwAG/MY6GAD6qdxO8W+hFBoVsndocOvGd1MtHMYywxRJquk8teL1EebLJHvY1D3s9NsJLPwwpOxCEa2G7jWwZ2sfvRqYvTYyWIFuYci7AjLSmtg/6G3iDhu9j+mXmnliBtgkQBVwbBqbMqJ4f2vG9z8zcXMERycEd7+X9BrCpaPIt9DTT0t7He9KXdDRuQSsUR6ZEctWkmdvICnWMpFDtrh+BMsGOJwJY3VCLoq+mefqk88w76e9sewUnaA8b4dCiukKSkyd4kyzotTkpJ/0rEyjjQEbBrlHllu8ohybdfsTUKWWFGqnlmuwLQ7sNXBZcHx4G6c6XwLS1T4eeyPJyzrlpcevq+sb84rbMQRAmyHUz0n3NJmKyn2lzTftK8ThVsYEbwKLl1GafETXg230F7GYw/eVwF8Guu81mgOtPVtHTmpg3p3di0it4m6Qg02I7hj4X7qbC2vx9P6v5vGwwnObobkpsP4AbPq9vadxtY7lgICHcxMy7MXPyf1v2U2EmmRLmj4X6u3lLVDlnVbhDeTtzGmYFJz2fvNYOLX8LZdUshZeNjhIlItA5xBGw6f7Ax+CnTh5j+frZEmWPreLivXj8t4IW/oz5cZ4coIMZ19L+gIS6g4pUDch+cRYpFnMs6VSRj7/+y3XDqgfUDe/cauNSKN7rNxjfxYrtdsytXgtRp8DmSUImvP1AM3YvQDLh/ezEieBSfNtpdZ1ybLpNX8YaRmcDVAMF94KCSg4W9tsvCEgROaHIbSufirS2nL4U2OwL6Fxl34OkHWYsOUWhSDJzizPQ/TGvC31HEWHdXI5UrJtqbING94Zhe1EYJNNvylaQk3QT2yKqFjZimW7Ue0u0i2beTjVMxKrPdC/eIpKmCOKMqMVYDiKyZvu3FaYV3zc6eMJcMXobRA4HyxcxleRk2dgpr84JfClka/YzmFOn4dH9dvBdrmX3TXANDe15mhD+MP1NnNfB08CQSGUAG8crWm9PyJSX7My20q9/BmcvxLz8sbe7j/Luvv3da523ug8YKLuTwbdJi82bElJ91md5YnftNMN2wAOe6r3ALkHbmCxQYk5mFkSb2J0pSoEPuhUjaqPcgYfThIpSHS+jOGg2LWGv6/lQzAGoLmWdVY3di7u4R5lZMosbBRCgtq1saZ8txQ7z92q3Ofp/pQSOyH2KOCFkPY2KqXqT8vkVRPF86bNm4NgQIqwGylTDd+XRT7HS9sONI4T9ZB9QjhUY2sTMDhW3g6mGtYqmiQHkhrJVx3HRmDC5ZwJy+L532WBAx4kh08NldP5p5BuKZ8KYVLJ1hgr+6Tm7A2VjE8bBEhE9eufuGkpIupzOxKFRq08tdgMobzi56Qd1YGQa0Plz3vIcNpo3wuL8EnEKB9fI940UNwtFkCH6/SBc8mqLyftwsBeVJS17XmMMMN7dm/Jff2NcaTMOkwe0ZSNMQqRl8XC26Kw7YzI6qnYCVVXf5ghJ/7cYIEDi35+uo4N6Uc35c83JXoyKpe8pWHcyOBLA4dbKomWFQClu3huBNfrGAM=", + "page_age": "2 days ago" + }, + { + "type": "web_search_result", + "title": "How Tolan builds voice-first AI with GPT-5.1 | OpenAI", + "url": "https://openai.com/index/tolan/", + "encrypted_content": "EoALCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKnkN5nUn3ZevEuvVxoMXjwoCakawtgVV9tDIjDb1A5laui1kggxahDXFg7L2X/ueEJWxdI/Z1suxrvT0xN0v5IRVNh8p2DDEghe6qAqgwqr7h4P4XG34jsiqrS35V+Wkmooemb1QAsU8MRqAKBBCTOiYTehPL36m4I7FJES5Y7qHNa7XwJniWwge+AuNCtmo2WktfA/GoW1QlI/6w7QfDL2fz3N2cUHOE4v42J0VZgt4+8v4wFyUCgT4rY9QVtDlyV0eiCedJ59nP7mHNfysgzqr9Q9RqOAHR3zLZznrYjBL9u3kONOqwmPOi0Nx9MO9n45bTE1ekxM8/loFYGR8CYWjeYn1eG6/xI1C2cNR5U0hj6BeqheT62K/c1hfVptBcaeEIq3HbYLUJMoOPDcI/POcYv7MIDjroh4fDm193bFuWfxbvS/7t5n5dyIQ0b4W1o06J3w5fpu6XPnFrYIYCX5AYV3m94rwb8hPm/TncSj+Pu4VkgJP9sF/wGRBlma6dDmUsc4uzmcJgTk448J6srQsR2tQZ3a1PoOnwLBAvLnDE9D6kRj+N0o+iLsaXhxDDi+VbCw+KUylrT85vGS2yXZHde5WT64Zd+/m6UsROzMqYO8Ejwfucs8s1nXE2sAkb3DgsIpbB6UEXx7UxkbnzRM0c666t7T9ojHPxFfQxt/TnXf+XtEX35CH2QIAl+pMnbD5UN/divZRM2pp+o2KqiXPWAyp6vR6AQCHdS8yBeOJ9bm4ZYxYwikYwMnvfR7T6pp6WjQst5F/hMqtkXXn9n4krTtIjmDFAkuETnxCCrkGFcEqQLelyPJvI1uzXblLX36A9tVc6C9kHePZ4p3BgxMfTnDEYBoQ4hM5Iqoxkqtjo2XAbonUyF8ecIAvJL7047ZsbPs91ebhaWQEQAGeyJxHXfJtY6gR+DkB7GEdZH/yVW0EUdlagfHQizxiA04F7+cQHfmSOpnzTXpGbM/4mIsCCvS+eBtcpdZl5XMzUTnd2ZSF5qDjSKS1H3Vk/D7gJ+luW3lroz4H6IrQjdmSbH2fuqK8xmK924QNmx5NeFa/vPoWjNnDHf7iaRSrdsfXR6Z6vQjTkvBEoPMy9XZoJeqzkdQiQUsaBsYSbuIy42B5A+UDK6u4z8d7vVO/R5qRkTLexIEOulwC4rhczur3o5n2DV7IUdYq+6rc0aCTHd//MGzMQfQczaPoNf8vceMLOOVNaNCa8b/R3KBZKz2yOZGgicX7+ZY2R6G2ctJfOgGwOjwKVKMKjE75VyyatCry2G3Ww/Kls4WS5cpvO7oIPne0PHFwk+qkOP0FMZ+GgZsRyIqvQvXasP/DqUt67bXsDI8eq2CaXa1xGpLJI6BAjCvITI5CENfBvVN9c10DitQuB7xykHwCimWlKO4cmmxEteg6NDJLmtJ/a/kXHqpqXMwbNH85vN5CYBvTct6FOjIyb7CJcnBA4Pt2I+4/RmxN8dzbuCog1VeONoSG4xR7eXhN2EOqFPa6QnhiS6qD+g/g7/LPkk34Y4M5GeHcIx6BxkGEs/jMNFuALoX2aLabmgl3UzMhFONJ932x+Fpz9IOZaClFtTvNZ3Op3WcnD9VTW78xVz1WQpKcNr1amJm5ZSWl03yBtOcAN03K7Ml7sSuGBiiGjX/0DTBGpk8Mg9MPys5nl7dzqIC3Qfg2URhFdaz4mWcE/PNTTriqA0RDSl4GWgiWHl4XyojBpFLztOFyvmT4/vOzwu/TXusBDw0uzt/+TltdTucIOZ+LQW+sBV800zs7pK9X24nw9ZxFlMqWItxiU/z97BIwqUOwzYJrriuJRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "OpenAI Release Notes - January 2026 Latest Updates - Releasebot", + "url": "https://releasebot.io/updates/openai", + "encrypted_content": "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", + "page_age": "5 days ago" + } + ] + }, + { + "type": "text", + "text": "Here are the latest OpenAI news highlights for January 2026:\n\n## Major Healthcare Initiative\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 7, 2026Product · A dedicated experience in ChatGPT designed for health and wellness. ", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "title": "Introducing ChatGPT Health | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPQ9aCfl7LuMjlm4zBoMMaBOldNc5m2FvkapIjDiaCrB0ldQP8zgfWyqqMTF7xkUW/9TxvpqcvkmjMFZ+Hm9GrADCHSScUXYtPh+mxsqEwld2JLBXBa4o4RUmpKYdijvn9YYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "Join the waitlist(opens in a new window) Loading… · Share · We’re introducing ChatGPT Health, a dedicated experience that securely brings your health ...", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "title": "Introducing ChatGPT Health | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDK/IdkkdRj2GZcLqShoM+75AV58f9MVPkEwaIjBKytLckd27NVGIYZc1iFteUD8IRIve0w8ObjxR/kLArMj23xfjMRFrhuk19ezM7N8qE1yGFaGBpVdlwxLadYn9NGCnZEoYBA==" + } + ], + "type": "text", + "text": "OpenAI launched ChatGPT Health on January 7, 2026, a dedicated experience in ChatGPT designed for health and wellness that securely brings your health information and ChatGPT's intelligence together" + }, + { + "type": "text", + "text": ". The following day, " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 8, 2026Product · Secure AI products to help healthcare organizations scale high-quality care, reduce admin work for teams, and power custom cl...", + "url": "https://openai.com/index/openai-for-healthcare/", + "title": "Introducing OpenAI for Healthcare | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDBazEyYeVpFO6J59SRoMVqF5hcOf4FF/MpG9IjAb4/JvpvmbwIBGO2dRjbvSCDzVbIexOiDxPb+0Gif//UujMvkIhrzrCk4yWA5adNcqE9gonbepFBul9hj9HjIpkdOUjnEYBA==" + } + ], + "type": "text", + "text": "OpenAI introduced OpenAI for Healthcare, offering secure AI products to help healthcare organizations scale high-quality care, reduce admin work for teams, and power custom clinical solutions—while protecting health data" + }, + { + "type": "text", + "text": ".\n\n## Disney Partnership for Video Generation\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Under the license, fans will be able to watch curated selections of Sora-generated videos on Disney+, and OpenAI and Disney will collaborate to utiliz...", + "url": "https://openai.com/index/disney-sora-agreement/", + "title": "The Walt Disney Company and OpenAI reach landmark agreement to bring beloved characters from across Disney’s brands to Sora | OpenAI", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEIhGbKZzx+2Ei4HgRoMogV2FicYcxpEzuG+IjDZeIPkVh5TW32kINoYQBiwBxanLCqg77ZuPFG0Au9M2XYjGGvBlGK+W750v63qvAUqFZTPg7sZW/FG2Amq8C6nYO1fvou2chgE" + } + ], + "type": "text", + "text": "OpenAI and Disney reached a landmark agreement that will allow fans to watch curated selections of Sora-generated videos on Disney+, with Sora and ChatGPT Images expected to start generating fan-inspired videos with Disney's multi-brand licensed characters in early 2026" + }, + { + "type": "text", + "text": ".\n\n## Audio-First Technology Push\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "According to new reporting from The Information, the company has unified several engineering, product, and research teams over the past two months to ...", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDE/6mUjQYHdRGCqWIhoMhPqKarZSYAX4QKGtIjBglEb6rtRqhgPh34gAjFIzxvU/Dx6mcwjO8VYt0X1P/eeY31sl+8vL8H6hxdQGVnQqFK6BXrxYJNaq2CD3FlW7So6O1lpFGAQ=" + } + ], + "type": "text", + "text": "OpenAI has unified several engineering, product, and research teams over the past two months to overhaul its audio models, all in preparation for an audio-first personal device expected to launch in about a year" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The Information today cited sources as saying that the algorithm will launch by the end of March.", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJjoLBQhd/Mj2w1Z9xoMOcKQlxr3th/UC5uwIjAo1iX7tqVZpAK7qfZHdnNnWcXDN3z/zZQISqvD+ow04VO+OvvHzEfPwvkNf3LyLdoqE9YtfbGUZvJINo0JKNREogjv3UoYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "According to the publication, it’s expected to produce more natural-sounding speech than OpenAI’s current models. ", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDD7QjGxWYCYUpDyiOxoMxB1KTILYow0xiLK5IjDXQcfE/wGTNDEwun8hY52GpbF2NjcrQfAoq1X1U+JhxFHq476bOzn31AjXf7YtqpwqE1vA41DzPRLJwwd/xljBvdps1TAYBA==" + } + ], + "type": "text", + "text": "A new audio model is expected to launch by the end of March that will produce more natural-sounding speech than OpenAI's current models" + }, + { + "type": "text", + "text": ".\n\n## Recent Acquisitions\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "OpenAI is acquiring the team behind executive coaching AI tool Convogo in an all-stock deal, adding to the firm's M&A spree.", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJGWK9OfMOpZHlIFABoMaucQ0R0DhepxhJ78IjAjnPP6Of5zrB98A196DAu7YtyEg+LnUYyKat+nFMOoQT+tc7wCVYI5vih+6LwD8Y4qE+TVgoEAjoLJCZ8rQXNpC0KRfksYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "The AI giant is acquiring the team behind Convogo, a business software platform that helps executive coaches, consultants, talent leaders, and HR team...", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDLyBv0ouQXpzZwi36BoMWrsHARTZDDqzi5ekIjAwXmq7gcI3mBeBJqtZvBs+T2fb7Q9mjNxylk4jdB5zOeUVbp/fP5qLcXt6A9r97KoqEzvU2xJQBJlsUVMnPLPBcu9eMQsYBA==" + } + ], + "type": "text", + "text": "OpenAI is acquiring the team behind Convogo, a business software platform that helps executive coaches and HR teams with leadership assessments and feedback reporting" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "An OpenAI spokesperson said the company is not acquiring Convogo’s IP or technology, but rather hiring the team to work on its “AI cloud efforts.” The...", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDBtJrrmWPh5h8Pv7ABoM/LuuDblDifpgD+64IjCRYndNwG+sgtZWAYyMRrYcX8G5MCDH8y/neiFB9pPhrImLwuDuXb9abM2f1jpQ958qFRUqiQIE0G22CXL8IKNCRXjCLWIDSBgE" + } + ], + "type": "text", + "text": "The three co-founders will join OpenAI's \"AI cloud efforts\" in an all-stock deal, while Convogo's product will be wound down" + }, + { + "type": "text", + "text": ".\n\n## Training Data Strategy\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work that they did in past and current jobs, according...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDOKD6Plxgs1CI7pxEhoM35EoXJQLuDUUh9o3IjCXdstYWNbU7utBXJGTucsmjYOiVE/9ySDTXphQLK5TAfv8ricbTsNb1Ym3nTXTNdMqE4wrz+ndkmZZd8tE2TCRiV7Nm5QYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "In OpenAI’s case, a company presentation reportedly asks contractors to describe tasks they’ve performed at other jobs and upload examples of “real, o...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDMBfeOUom7AVysMR+RoMQxk4XcmbQHHy7vvUIjATGftSpnJ/zTTw7QyFbSq6a+bwwFV4BKAf7acpkYqscAesBXWyvnTZQSUpnZ5lLBoqEySz8chGJaxaVBEzZ2sI5XmtKEQYBA==" + } + ], + "type": "text", + "text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work from past and current jobs, with company presentations asking for examples of \"real, on-the-job work\" including Word docs, PDFs, PowerPoints, and Excel files" + }, + { + "type": "text", + "text": ".\n\nThese developments show OpenAI's expansion into healthcare, entertainment partnerships, hardware development, and continued focus on improving AI capabilities across different domains." + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolParam/anthropic/followup-response.json b/payloads/snapshots/webSearchToolParam/anthropic/followup-response.json new file mode 100644 index 00000000..c8c132d1 --- /dev/null +++ b/payloads/snapshots/webSearchToolParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01WvFc8WKhU7tM4RgtefUsTw", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you figure out what to do next! However, I need a bit more context to give you the most useful advice. Could you tell me more about your situation? For example:\n\n- Are you looking for the next step in a specific project you're working on?\n- Are you trying to decide what to do with your day/evening?\n- Are you at a career crossroads or life decision point?\n- Are you looking for learning or skill development suggestions?\n- Are you asking about next steps related to the OpenAI news we just discussed?\n\nOnce I understand what area of your life or work you're thinking about, I can offer much more targeted and helpful suggestions!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 9983, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 150, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolParam/anthropic/request.json b/payloads/snapshots/webSearchToolParam/anthropic/request.json new file mode 100644 index 00000000..4476601d --- /dev/null +++ b/payloads/snapshots/webSearchToolParam/anthropic/request.json @@ -0,0 +1,16 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Latest OpenAI news" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search" + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolParam/anthropic/response-streaming.json b/payloads/snapshots/webSearchToolParam/anthropic/response-streaming.json new file mode 100644 index 00000000..cb6df23a --- /dev/null +++ b/payloads/snapshots/webSearchToolParam/anthropic/response-streaming.json @@ -0,0 +1,2774 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_011Urqhn7BX3rJHdELTBKZyo", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 2035, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 1, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "server_tool_use", + "id": "srvtoolu_01MQRkzEdLvVa5cYGTsX2ban", + "name": "web_search", + "input": {} + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "{\"qu" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "ery\": \"Op" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "en" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "AI n" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "ews lates" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "input_json_delta", + "partial_json": "t 2026\"}" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "content_block_start", + "index": 1, + "content_block": { + "type": "web_search_tool_result", + "tool_use_id": "srvtoolu_01MQRkzEdLvVa5cYGTsX2ban", + "content": [ + { + "type": "web_search_result", + "title": "ChatGPT Health: What you should know about OpenAI's newest chatbot", + "url": "https://www.advisory.com/daily-briefing/2026/01/12/chatgpt-health-ab-oi-ec", + "encrypted_content": "EpUKCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDG3gQ5TL0oAr5Ja1mRoMbS4YQQTBGSBaldZeIjDqAs/5r/Pt1RI5Zq3/CjYGVjNXXsmTAN+oc4ZwZgVdXHoPo9H0XwmfMES5WfTDAx8qmAk8sW8QgLXc+Y/W1m7NXaA6wlM8pjBCpv+VIqLyVK3xSDiHPO3jiuSQkNIVgV+4VgGHUDf6JIochvW9CaGz3hsD9+GxH2EjEr33lqnve4lYMf4JEcnPkxof15fLrdO4SDBVl5exej6H5B/bz+oO+P2jfBSvEKKkjwDzPc7UlYzkF34nA1Pvg2qe3zVT4b2ulnwvNYto9FNLihXBYKOBW8UuqOrsY8pc7jXlzFPSgmsseDKeLXO3NTmBkVvmxiTt7NO/lUUA1ezZBdkesBHGm8kNbphXdaFwsrqfDnQMazQtMtJQ3oVsyTWe91M41Fg+GrV0mbJPjYNV+jeZYDdnBaEIUULlAy9ohE7XDI8mOI7HsMr04dSpkHZxBcT56vkmpdSg6ob8kVGktymIvLSas4a2aPRsZi5lB9PKGMw+fmF1u4GmOYUIIOWSXRhs+DEDCxnhSfxV2UF+wnUia+IGmfPhnRQ44SEiOxvvRiazocc9Sji6nH03YNKtVuhE5cdIdzjpE++yEwq38Y5xEY/Ky0kxKx/rhK80rBqMPA3x1orELUvct2rHZe7r976dOJaRCn3IKulDxvmUZ+F5/FmODkaQBKOZZGCcoC6cF1sNdRBsOEjZ1cbqBKdL6sHVxUlKAqxjJuNA+2ffwaOlO0E81wcTp2/TbPy1Z+B1SYJh/nFmtBtyl0giHEbyB0owj+dpGbll1EgotAj66nFi6+6MzzPU2ykFfuuTxVQhVhFmTWzENqJSdLobOsMcFx5cYpMU4hi+9ogqm7gpxu3zZGYaCmVaZfnuVZoFBhcthK4fulik2RiKlawetqcMZ0x/5vw5FSRN8HA12Xv0vB6mdNPXTGiVNWbF+3+gh3UGnUwXT9UPx6TaskNLVqN9/NGbi5UN2mFEqa3yPW4MosaE3KQFRw9ZQ25quKojcPWlMxJZvcIIrlDoXSPZs5Uq9i7V34DZrQakCp62oGihUhbAJ4I2GGaDV7jTSCgMVGMg7yoy5eHSmwJ94jHyDiud+1jQ9xddw5fk3EFPUSxUQ3qvfHN7pjnXPs3Fd7NdlagW03D2LCV/76SAM//hUy8IoRz23cKuVdQek5Iv8BKNTFkxelxs3A4knVT7JdOLKmVOjShQhaNJh86OQl0N7+2tnJG7zTgNUkXNYppiYLDqpgOwbFK+SzjOnU0tF2vUXDSlHV9nHuAaR36GgT6VpYWJhiT6HLliwisG/QqAg4a5N+YY4GYG23DfcbFhvSVZjqtYAuASLnjywNKaz9B/WY8jw54MaDHbVq7YDGAn7P3rzCnnZg3t2/mcxKGjhBwK24EyE6NkmNrohlVX+NoyHqX3tJks3KctL095OVMMHBdhotC8xJ5JT7Bs/CIY8WAWXNJ1S6fuFCDfmxrdqo0dsHoQw23xXENn3DnQdTN996dlwd+7TOs7KP1zSfrUqMlTp91TuUOkOGRepISGN6yGaANZfPFZSwp48uAkGEEnMn31rytn2YBgP8WHE8P6pFs28nL+RNW8/scxlgdM4utqGwYOHy+Yq7xuOdoKlCN/ebKhtNyIqojA+2tMcEzYop49w84YAw==", + "page_age": "2 days ago" + }, + { + "type": "web_search_result", + "title": "Jimmy Kimmel Thanks Trump, OpenAI at 2026 Critics Choice Awards", + "url": "https://www.hollywoodreporter.com/tv/tv-news/jimmy-kimmel-trump-openai-2026-critics-choice-awards-1236463973/", + "encrypted_content": "EtAJCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKoFfDFf6zWqP2oUKRoMhY03/jXgmKVrFB+qIjDjtMubtVbIFW9yD52bqma+I+FofG0JH/hq0kN5GOLnSjCjCd4DmQX4gqpxsf2zjh4q0whF4lTCmg2TUi84cyTdz+6Bp2MZ2rS6ytjXm+0rof0i+71uVjJFjxwRr+f7cvVWmnFwqrun53JWbJMWs4YOF5qsTMJpYaIv7ukX+Cojrsk/8ch9CkSagoYN3XuO3q/CufiCq8PTrN3tFK5vAOFb7QXIfqEKBO4zu0MSRfiDWVbAmJDCRZNpGiRpkMKeQ0yLJxQQCyphSFkKxB4EWbJEtXE2VLK52QtMBItD0F2HxJC9Vx0FCnek3I2tBlNdgxF6dFj/lH9GW55t90ZcW8XEk9gAIPDZzLI7XoUGpbAvsWmGfoygV9jh+bJ3QM8Cb4s37Ro8sA9pPGig8xD47z8DzhZTVR2rtFi2TcUpVSq5c4wWkq5Zsoh3MBZslYiQGFe+poaHiwwYlP1umoryXtrd5La00CyG98hVDwn+TPE5MpYg1ZtNz7CgIvsRif5oCrC1ZoUe3uB6u/Bxt6ibeTDRd9zj1tVeL6zuHkEs/AJNx91wcL+21jhSkYFD5TAYrKm9eRpOWkefZlFwSxVM4uGfxrtVTH+4/ryeO3j+US58+0MKdCHrY4NbRi+SRLx1AQt39raPvjsNcWfvWYkgWt1lf39D8urfpuTeTtPvJC2epLYawSfB9AH8rkP13DcBm/Juqy/gbsSd1nWml0f5j8RCYUjPlu1tZEjS8ojaNOKaBAVQTaeb8NHZ34as9R2KjqpDHqj15c6CBlbZtaNd/ccuFwUnpKfp/EPvd6RafJTEEoh9jAPgb7NcKR3mNokVouMKYMdTnZk6vZxqOCkWqsPYF5BI9azCyEwqieMxajHoOY6Wi8a9bpg30wkxwO/fI2ZiPK3xOqKYUSXd3Ch9G6xW1hAVdV1NVzjfSymetQ7ZGeD1a7AG5uEOCKt8mSNOyH/qd+Y0wguzwhx7faHeTD0RoP7IXYlb8Viez24jtYlATrI8+CRPjxpYe0toJ2HGculgPZ8p09lOYqoHb+5y+/KNNXSVp2YSA3V55ESpE0XQJwBpj9tRwrk9ZVJBfUK1AMaViZbb9FQlSVq3ebsEEs02wyyObFU4Iiwg1080QZjP8oVIQ5VVeqyGJ1T5qypjge7D9E+mU8w2WNwk/zHOee8mE/ldW3/BblhhuJYlVPOYpS6l68+Zd28f3CZEFDpvpJiO+OjDsABbCznkUarF450meOxnbFVCLa9pHtiVg/ebU+MpzrGnDAcytV5B6v24yTFAZcnrQtgB/3bszo7p8j5tYrU63lSCoUD0M073ZHj3ZsZfI2ANszU1CFrm3KYc3m2al2ISo5h2JNwNMrKTya8mAjycFgcMnE/o9GIWfkCd645coKSAku4l8JRgAXzgBMkkqn1aphK6eL0bqpONvBGDRtgDqEzER8Fb38bdEA/G2maYNBhT8mGUZ6pfQwf+xjUToR7VdqQiayJkRW3kOYWx7ar+ggoBjuqrnz01m+JfCBHoQIcx6GEb/st3dmfK46GM0S+W/MgYAw==", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "OpenAI News | OpenAI", + "url": "https://openai.com/news/", + "encrypted_content": "EucJCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKlpToF2sI4EMV3wrBoMHahWtenwGqYObK94IjAlACVutnhSNRHM7Py5bQMyUweQyQEDxvUmL0xBWvEZi1giCKImZh8utk8LzHS0kS0q6gh+N+loY6NRDEXh6C8HMhkPB01D++EueXRv+03DQEBX89oVC4uzTamqqgSjuBqWYR2xLv8oThhr31fFmpdzMj90DunLrpIS0Y/gNbuYx+Mqf2tUiPQHNy6TJj9KsJTPXpYarO8jXouThO8LabWGSYBZFwpUojRiNaeH0UHLmFkrfMpIa01iqwFdRw24OhRxzT8bsrPV8gOXtF1lFNQfWhWbmjupJaNPP7SQpsELsUgayZlE8FnV+bZDYhQucea6oLrYWYf3ZT9IedTw//VHA0pOTUn7jV3nATyr5XiHl9q0jTReIN77fUpkmnKS3eNQhZfOJ+I8apW9FpopvXWkabewncTke+GgNYft5+LQjoKfITLXqKEYww++UCbAJm7yH+mb82Vwog/rnVoM0XY1eMheWeot+ojCzL1cafuy8Ou8eaNHUJQ7oMD+Xlz1QY7DEdtUT0Lu0ivgcUfz9j12BXcGGpFpb9n6nRpMJZTpOGWjlq8ywx19nRURGKg6FXY2tnMLsXAyY6afUWX1SQ0OxbpcT78FfykH14UkTfPrjLTZPGFyxnRScq02NN0sOaWhTGesNuFMKRHmth5GoHlHqpcqdds3Dq2YFyC1KB2LB4mNxZIf14WbuF9i4TqvpXFg9H7qf+riUBlVFLyddt+WmyKFIVGxvgTvpGs1+VXdVfzOx6gheWy9zxEwP82Qoty8KPVaRpTw26Mjevnaq7uTQH3Dd1lqh/pvw7p6l+PYcbyZkA+7EDtJ29mSuUmiIqkgAMfXUemgLdGOAdOM51WI3KBTSLSXWiBsJ74EgJkSlEM815Jv05/YE4GM1E8i45+onyhkfva9G8ZBePb9CQphPnwlpd6smdy1QNGV/dxxndNKjiz2ttntDLrn692MkIcu9+W/iu5S7jsciwaMOBxDD9CM0sXc96TiKsVeGLch3rM5bUr75BqyEGk688soknqO+1PhodpZ+aT15Cp50rVXVE8ZOXWdL3XogebzITpoaltd0Tb2vqHnFg9zTWU+D9CFaFSiaojcK9iQLlg0Wx9YA1YBNXl+cxgC6IGo1mE0KaYEL409mI4c16x1760/VYMkpNT3jm5DKd2t+dDp0Y1t5Yvqk0rjVi2ZLMozRIXrlSax5xTDgHUGxrVuT2j2ENwaIeHA9XX3Il4pwHK5jyyOPktKXHbjtXHTTzo/rxLfmKpMVV5fqCUUqTYH40E5RI47tj53cXOamcyTkuZ5CsH3N2taftRXHOBVYRNQ8vYLONLy5H4Sr01eUbXIcUAarfpN5oQ9GGiWs1g2ahbksgRrXhCrE6FDcvkUOdilYN0saOeqrlMkGGqSRKywG4f9qLfU7HIPRm9XMgO3JlQ/5Mo5eA1UOvrhaSqphOZnmlwUvs1GOvP+4VnsThLyH3zMuqBozIBIRFa+LxQ/lJE+x+/w8Mq25x8arlhMIMRwf3VLGAPdl/8XqMX4Nic1xa8i6Vj3kNNShNM8lMGHipA3ax2xKuc4gsnCuFHMTwXD6BgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Why OpenAI faces massively critical year ahead in 2026 | Technology | sfexaminer.com", + "url": "https://www.sfexaminer.com/news/technology/why-openai-faces-massively-critical-year-ahead-in-2026/article_6112d59f-28b5-4770-bde1-b333deb5f01a.html", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "encrypted_content": "ErELCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDCG5aeTrDucj5SUyvhoMf0XaROnGPeiCs/ikIjBNyFhHdKHs3abmOs27hc1V+N+g3zBqIS3P2MERaweWM+8YDTbmxQurtW0HKpbhGRQqtApIU/kbIZaERi8Hx886aNSRnfcAtoer/04D9cC1nZSHNBmMpGOjN0r6GmFFKzWM5ULXWOVKPJttjEdp1EridHRQ9qXAmai6n+B7SsEUYCWpIaa3uY5rdWgyBvvv2j4W4blPawSc2qMQP9gug+xRyDhPHDN3DcUa/0A/RpJpvlTvGHNoTc9l7/x3AOR/+5AdGlAyvOKTHjn6hMNCwuMZWV8oNuWzPRkI1srV49U4UZQwrNcfDISrm1w5WuIJB54jeXhpIb3fslc1rXrfuukx720ASeFuoveCNgFFynzrD1YR39StiiKNCU5WuDZ7LYjqZ4ETaxqlS/ZXRI249l44mX3fMUDLGF9cndQB3K0DP5XjsOFomewMURVeM/1J1wiis2YbtToFcVlB5i5X3GLc79jagaDsekculF0IB0D230Rz/FWjB9F2iwSBHob4LLkcXHGBv/pwWcXHJVtzHyRsSRNlLzpqJ1NdN4/7PzsvZq0EL6vnsXSnMc5ojXl1ofyzsDh1fZVGR9ivHblVnoG+t/AJWO4PeyB41qCPOEcDklb0UzCvKsUH5dXehAnuhFB8V+LPPC7sa7QH83ZDfQ8W4HKBkScnIvcM8CPcNgxLINLBFrRyBoT7jJAd5BzW83RwmvAXh3R8oPO8wrUusoO8Zz56ZuIVOshbJ/ZN49LqwX8nHtm/1mdATrtocPTbJXBubbEEtnQMGs/SZRNuQwpTr5HlSr/iV9XPPq4xK9CyKmZe6uWNfsvn6C3R8fW/Y6zc1qP0tR80yM3k9tVi53oFzVauP51EAaOVWULQS6UbhkjRxEdwCZp16/ImIDIm+SbSZLaMZoyhy1haHnDTchZ6kFGyoxRcr3Bc2/HoFO9t/QQ5/Z4iRjaB8IrADkd9jsXluPxOM5DMLXUu7eJBgBN1Cr5ByrD5g8vN7B/ov02KDmLezc9/9fxZg6W5VlmgfoSHfRnHGr/ei/6b7fB7VAN/B2Fic5CM6PBLi0Mt1dJTLdDajNBV5OR9a5l62QUK06QIUKug8hcD19fPxSx/qsIdAbOAx1guAEziDO50/C/i24bR//kQfSWDuh+JjL7kSYLzfgkfTsQ3Bk0myl65mNRnF9nFmMOyQ1v0Hj4I+wR+F42xo9n8MQrJOHewZSYjo1z74D5WIxyGnaHt/jshdNHtxljJdPenfvCxhagD1ZiW+brrDz+TggZsyBJoT53hF32QdK+IWX3yInUBxMREi1ohyzv9wNFsz6tgisFxWLku9KIspjrLtsmDFnenv9W++trqhPpTMeIQ2fc7teOOrLJgX6AGXSbbDepY5OVF4VyPdeXzJRjWX1XxkQGWB3GicgFTo89pB82PgzHz/gYsuIIvYEaKF/7Z+82PWqJeC0OTpHmvS7o8/13XZa9kIPNSdnOhYiRSYRg9gqaYBZjvRI1ElsOnUaQtuLq6j9pmQmnB1r5LHmVaU+eq4EJfOCaYPoMj0wcwTWTTGVkBAWki0W/ktxbY9HX91I8dJCDXyiyqcPdZ7iPhlpwVuNR5ULHlQkZemZHhUaJIuVbMEpY/RPJ5JeXujCw1VuJIp228NBT+JxfJfWnYv/4IiCLMS/B0i9mrBe9vPV01QNs3UTLJRKUveBn6pr/ZmpwQ6to+KLW9xo1pu5Cf0A9qYtjtAFbJMjRcIml4njquJq497iiaC+t9s6rb+EA+AV4fI5VATChcR3okbwQ56KW4ZA5SOylV1z2SYjEmTSA4sg86apUXyXqC5ekgrdxM6aFUIRaiK758aWFg0qXCJ0IYAw==", + "page_age": "2 days ago" + }, + { + "type": "web_search_result", + "title": "OpenAI and SoftBank Group partner with SB Energy | OpenAI", + "url": "https://openai.com/index/stargate-sb-energy-partnership/", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Introducing ChatGPT Health | OpenAI", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "encrypted_content": "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", + "page_age": null + }, + { + "type": "web_search_result", + "title": "OpenAI unveils ChatGPT Health, says 230 million users ask about health each week | TechCrunch", + "url": "https://techcrunch.com/2026/01/07/openai-unveils-chatgpt-health-says-230-million-users-ask-about-health-each-week/", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "OpenAI launches ChatGPT Health to connect user medical records, wellness apps", + "url": "https://www.cnbc.com/2026/01/07/openai-chatgpt-health-medical-records.html", + "encrypted_content": "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", + "page_age": "1 week ago" + } + ] + } + }, + { + "type": "content_block_stop", + "index": 1 + }, + { + "type": "content_block_start", + "index": 2, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": "Based on the" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " latest" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " search" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " results, here" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " are" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " the most significant" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " recent" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " developments at" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " OpenAI:\n\n## New Health" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": " Products" + } + }, + { + "type": "content_block_delta", + "index": 2, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 2 + }, + { + "type": "content_block_start", + "index": 3, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "With over 40 million Americans using AI chatbots for health advice daily, OpenAI has launched a new health-specific feature called Ch...", + "url": "https://www.advisory.com/daily-briefing/2026/01/12/chatgpt-health-ab-oi-ec", + "title": "ChatGPT Health: What you should know about OpenAI's newest chatbot", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDCzcelFXr6/lR5ijpRoMEaa+IHnAFywWoiXcIjBpvGFD8EfBbkIzMRnn+qOnK1PdDqRp3/EXj+qIPIUEjacbbBJ9DvwoG9A9S2fDL64qE2imDtqbiNwXaeN6mkPhrEw6IGIYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "Join the waitlist(opens in a new window) Loading… · Share · We’re introducing ChatGPT Health, a dedicated experience that securely brings your health ...", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "title": "Introducing ChatGPT Health | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNNHQ7KfpufxJOFWmhoMhULlK1v5AUOoArYOIjCng1vsjnEyg4ojtAp4tPMHssLVRLC26CBMuE+qpH+ElN14zwAHG+r8ca/9bwUPGEoqE86xqDU4klY2Mr22B2Es3+libvkYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": "OpenAI has launche" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": "d ChatGPT Health, a dedicate" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": "d experience that allows" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " users to uploa" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": "d medical" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " records and connect" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " health" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " data" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " from" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " other" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " wellness" + } + }, + { + "type": "content_block_delta", + "index": 3, + "delta": { + "type": "text_delta", + "text": " apps" + } + }, + { + "type": "content_block_stop", + "index": 3 + }, + { + "type": "content_block_start", + "index": 4, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 4, + "delta": { + "type": "text_delta", + "text": ". " + } + }, + { + "type": "content_block_stop", + "index": 4 + }, + { + "type": "content_block_start", + "index": 5, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "People already use ChatGPT to ask about medical issues; OpenAI says that over 230 million people ask health and wellness questions on the platform eac...", + "url": "https://techcrunch.com/2026/01/07/openai-unveils-chatgpt-health-says-230-million-users-ask-about-health-each-week/", + "title": "OpenAI unveils ChatGPT Health, says 230 million users ask about health each week | TechCrunch", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDBGVTiFPu0eJqaiYxBoMU/E6nbd2aecdax3aIjBQSh2q/fBS0WHZI/pBDiKwaDvUuszhW32i8JsOpLKknhpuDAMy8ZrmX9ifIWa9LPcqFPum4EKroOhbvzIv1T18ns4vjnu5GAQ=" + } + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": "The" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": " company" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": " reports" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": " that over" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": " 230 million people ask health an" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": "d wellness questions on Chat" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": "GPT each" + } + }, + { + "type": "content_block_delta", + "index": 5, + "delta": { + "type": "text_delta", + "text": " week" + } + }, + { + "type": "content_block_stop", + "index": 5 + }, + { + "type": "content_block_start", + "index": 6, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": ", making" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": " health" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": " one" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": " of the most popular use" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": " cases for the platform" + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_delta", + "index": 6, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 6 + }, + { + "type": "content_block_start", + "index": 7, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "In addition to ChatGPT Health, OpenAI also recently launched OpenAI for Healthcare, a suite of new AI tools aimed at supporting clinical and administr...", + "url": "https://www.advisory.com/daily-briefing/2026/01/12/chatgpt-health-ab-oi-ec", + "title": "ChatGPT Health: What you should know about OpenAI's newest chatbot", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDC9Z4fJuDbpQiFEwKhoMXY9HKGEcM2AZEesZIjAYmc+mp2uoVIJEvc8ekfatbTS5Y3LDmxJ2WveWwk6zGf6DFtH5SGqh2sJcXLzyyYoqFTEiMitbsAskTnQJ2Y0BdSFlKCCw9BgE" + } + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "In" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " addition" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " to Chat" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "GPT Health, OpenAI" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " also" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " recently" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " launched Open" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "AI for Healthcare, a suite" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " of new" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " AI" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " tools aime" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "d at supporting" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " clinical" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " an" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "d administrative" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " work at" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " hospitals" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " and health" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " systems," + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " including Chat" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "GPT for" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " Healthcare" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " an" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "d the" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " Open" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": "AI API" + } + }, + { + "type": "content_block_delta", + "index": 7, + "delta": { + "type": "text_delta", + "text": " for Healthcare" + } + }, + { + "type": "content_block_stop", + "index": 7 + }, + { + "type": "content_block_start", + "index": 8, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 8, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_delta", + "index": 8, + "delta": { + "type": "text_delta", + "text": "\n\n## Data" + } + }, + { + "type": "content_block_delta", + "index": 8, + "delta": { + "type": "text_delta", + "text": " Acquisition" + } + }, + { + "type": "content_block_delta", + "index": 8, + "delta": { + "type": "text_delta", + "text": " Controversy" + } + }, + { + "type": "content_block_delta", + "index": 8, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 8 + }, + { + "type": "content_block_start", + "index": 9, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work that they did in past and current jobs, according...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDHs0LBOQrILIq90EJBoMqk29stfuTLp6S+s5IjDbRV2XwMEAAjRLPTJLK6Daq9AFQGKZeoIP2NIF0131GdZJzJlQxKR7xJVE6UQq99QqExKnDas2MADnUIrstEyQbySOoBgYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work that they did in past and current jobs, according...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDN9PWRucgYR8WNAVnBoMkO4CKQpPoNUcj3JEIjApSxOIRIn8ZJyUjLPzxI6Wc+LU+nfsTn1snXxTHjlSQ/FAlATHVf7nO3TnJUKKEx4qE35CqzcRMuYiqWe6lGY6RoJYlcIYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "text_delta", + "text": "OpenAI and training data company" + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "text_delta", + "text": " Handshake AI are asking thir" + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "text_delta", + "text": "d-party contractors to upload real work that" + } + }, + { + "type": "content_block_delta", + "index": 9, + "delta": { + "type": "text_delta", + "text": " they did in past and current jobs" + } + }, + { + "type": "content_block_stop", + "index": 9 + }, + { + "type": "content_block_start", + "index": 10, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 10, + "delta": { + "type": "text_delta", + "text": ". " + } + }, + { + "type": "content_block_stop", + "index": 10 + }, + { + "type": "content_block_start", + "index": 11, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 11, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "An intellectual property lawyer says OpenAI is \"putting itself at great risk\" with this approach.", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDO6pmX0jZa715tpuHBoMUCxiYuYED7Q8Au8OIjC7ioy9YYiNokZ+mae80z3V129Gc0q/GWaFqVcK3nz1n2Zd8aibdLVAlZXZo1ZmUPYqE1fbfLBarMgyt8Dj0uooqCH4g+kYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 11, + "delta": { + "type": "text_delta", + "text": "An intellectual property lawyer says OpenA" + } + }, + { + "type": "content_block_delta", + "index": 11, + "delta": { + "type": "text_delta", + "text": "I is \"putting itself at great risk" + } + }, + { + "type": "content_block_delta", + "index": 11, + "delta": { + "type": "text_delta", + "text": "\" with this approach" + } + }, + { + "type": "content_block_stop", + "index": 11 + }, + { + "type": "content_block_start", + "index": 12, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " as part" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " of their" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " strategy to generate" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " high" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "-quality training data for" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " autom" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "ating white" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "-collar work.\n\n## Audio" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "-" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "First" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": " Strategy" + } + }, + { + "type": "content_block_delta", + "index": 12, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 12 + }, + { + "type": "content_block_start", + "index": 13, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "OpenAI’s new audio model, slated for early 2026, will reportedly sound more natural, handle interruptions like an actual conversation partner, and eve...", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPNxlAGwYug7I8fpyhoMv6J3Sf0AHvKYrZ+zIjAVPYEIujFtUwR/x+Rb+bBB/5Tm0JuJSq+6Nhv0QsgA6w9RVToKpIiGQFtsTsEyhZEqE6kbT8aLrVP7ejFHROiCYSz0I7oYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "According to new reporting from The Information, the company has unified several engineering, product, and research teams over the past two months to ...", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJJwJjKqbkDDGbAAGRoM0YYnECpQ9KVBu84GIjBwIORp4LrjgHFm7vidBP7sKnRECq+U2oDrmCxLRkEqRB7WrG/dx/L+RD5pMlaiOCMqFCIw9z8LqoBtAmMU0277/DdxrBseGAQ=" + } + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "OpenAI is betting" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " big" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " on audio AI" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": ", having" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " unifie" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "d several" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " engineering" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " product" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": ", and research" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " teams over" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " the past two" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " months" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " to over" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "haul its audio models" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " all" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " in" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " preparation" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " for an" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " audio-first personal" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " device" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " expecte" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": "d to launch in about" + } + }, + { + "type": "content_block_delta", + "index": 13, + "delta": { + "type": "text_delta", + "text": " a year" + } + }, + { + "type": "content_block_stop", + "index": 13 + }, + { + "type": "content_block_start", + "index": 14, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 14, + "delta": { + "type": "text_delta", + "text": ". " + } + }, + { + "type": "content_block_stop", + "index": 14 + }, + { + "type": "content_block_start", + "index": 15, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "OpenAI’s new audio model, slated for early 2026, will reportedly sound more natural, handle interruptions like an actual conversation partner, and eve...", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPRJm/lRVcuk2JqIKBoMGX8cx8KY2b+6coREIjBHb0v/Tsna48i+AjMt7Rk+MojZmt9Eu+cBtlTs26D2IVrFxs1dN0z6S9yTv3PJH8MqEyaKg94edJ2P/++x5Nx2bs/UxjMYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": "Their" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " new" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " audio model" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": ", sl" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": "ated for" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " early" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " 2026" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": ", will reportedly" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " soun" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": "d more" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " natural" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " handle" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " interru" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": "ptions like" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " an" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " actual conversation partner" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": ", and even" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " speak" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " while" + } + }, + { + "type": "content_block_delta", + "index": 15, + "delta": { + "type": "text_delta", + "text": " you're talking" + } + }, + { + "type": "content_block_stop", + "index": 15 + }, + { + "type": "content_block_start", + "index": 16, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 16, + "delta": { + "type": "text_delta", + "text": ".\n\n##" + } + }, + { + "type": "content_block_delta", + "index": 16, + "delta": { + "type": "text_delta", + "text": " Major" + } + }, + { + "type": "content_block_delta", + "index": 16, + "delta": { + "type": "text_delta", + "text": " Infrastructure" + } + }, + { + "type": "content_block_delta", + "index": 16, + "delta": { + "type": "text_delta", + "text": " Partnership" + } + }, + { + "type": "content_block_delta", + "index": 16, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 16 + }, + { + "type": "content_block_start", + "index": 17, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "Redwood City, CA, Jan. 9, 2026—SB Energy⁠(opens in a new window), a SoftBank Group company, announced today a strategic partnership with OpenAI as par...", + "url": "https://openai.com/index/stargate-sb-energy-partnership/", + "title": "OpenAI and SoftBank Group partner with SB Energy | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDE9hMQmu+dkkP+UpGxoMQYUD5hrxojJhGWw1IjAQXJ4sne5KByO+w/MWkztYSAbDHN13GwCw3ysyUsM2DUwphe2Lx5gKeRA0aKR+Mp4qEw47LPmx5gFzj07qE8+hMk2w37sYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "To support the partnership and as demand for AI compute accelerates, OpenAI and SoftBank Group are each investing $500 million into SB Energy. ", + "url": "https://openai.com/index/stargate-sb-energy-partnership/", + "title": "OpenAI and SoftBank Group partner with SB Energy | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDMJzKYPkqcc8K/rY8RoM0OFDMnK/poNz6qC4IjAfvhV8B8UI1gdWT8RClZTK05qomvi6G4qsVQwVe2rjoxtX8KC1M8wTuLVt9FqD99UqE755rFqgNdQFj93rBghge72t/kEYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": "S" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": "B" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " Energy," + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " a S" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": "oftBank Group company, announced a strategic" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " partnership with OpenAI as part of" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " Stargate," + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " with" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " Open" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": "AI an" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": "d SoftBank Group each" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " investing $500 million into SB" + } + }, + { + "type": "content_block_delta", + "index": 17, + "delta": { + "type": "text_delta", + "text": " Energy" + } + }, + { + "type": "content_block_stop", + "index": 17 + }, + { + "type": "content_block_start", + "index": 18, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 18, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_delta", + "index": 18, + "delta": { + "type": "text_delta", + "text": " " + } + }, + { + "type": "content_block_stop", + "index": 18 + }, + { + "type": "content_block_start", + "index": 19, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "OpenAI has also selected SBE to build and operate its previously-announced 1.2 GW data center site in Milam County. ", + "url": "https://openai.com/index/stargate-sb-energy-partnership/", + "title": "OpenAI and SoftBank Group partner with SB Energy | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJ51ZmypGhnb8oGUihoMtJlrYT4x/6Acb63cIjB+GtI+WjKZc8pCVmSblKMEbagAwPtr6svz3JN1qbrTYcval/p9kWqVvn2VDXlstfYqE1lEp51ZB3O8EIrQp0WtkbGfjNsYBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "text_delta", + "text": "OpenAI has also" + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "text_delta", + "text": " selected SBE to build and operate" + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "text_delta", + "text": " its previously-announced 1.2" + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "text_delta", + "text": " GW data center site in" + } + }, + { + "type": "content_block_delta", + "index": 19, + "delta": { + "type": "text_delta", + "text": " Milam County" + } + }, + { + "type": "content_block_stop", + "index": 19 + }, + { + "type": "content_block_start", + "index": 20, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 20, + "delta": { + "type": "text_delta", + "text": ".\n\n## Financial" + } + }, + { + "type": "content_block_delta", + "index": 20, + "delta": { + "type": "text_delta", + "text": " Press" + } + }, + { + "type": "content_block_delta", + "index": 20, + "delta": { + "type": "text_delta", + "text": "ures an" + } + }, + { + "type": "content_block_delta", + "index": 20, + "delta": { + "type": "text_delta", + "text": "d Competition" + } + }, + { + "type": "content_block_delta", + "index": 20, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 20 + }, + { + "type": "content_block_start", + "index": 21, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "To realize its ambitions — and meet its estimated $1.4 trillion worth of commitments, mostly related to its data-center build-out — a company that has...", + "url": "https://www.sfexaminer.com/news/technology/why-openai-faces-massively-critical-year-ahead-in-2026/article_6112d59f-28b5-4770-bde1-b333deb5f01a.html", + "title": "Why OpenAI faces massively critical year ahead in 2026 | Technology | sfexaminer.com", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJj8wrmGQgaQIpnajBoMb6ftc2cCqij7QHOQIjBjf9P3JlTKi+Cr6dgS+8FLtymrjZtSNOugoobFEgSM0ESs5YlJE31IujFwSY68TEQqFZPm9Q0ZtW46PODOy2XKH3FZ4j21IxgE" + } + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "To" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " realize" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " its amb" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "itions an" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "d meet" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " its" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " estimate" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "d $1" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "." + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "4" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " trillion" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " worth" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " of commit" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "ments, OpenAI may" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " nee" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "d to raise $" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "100" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " billion or" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " more," + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " potentially" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " through an" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " initial" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " public offering planne" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": "d for as" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " soon" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " as the" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " second half" + } + }, + { + "type": "content_block_delta", + "index": 21, + "delta": { + "type": "text_delta", + "text": " of 2026" + } + }, + { + "type": "content_block_stop", + "index": 21 + }, + { + "type": "content_block_start", + "index": 22, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 22, + "delta": { + "type": "text_delta", + "text": ". " + } + }, + { + "type": "content_block_stop", + "index": 22 + }, + { + "type": "content_block_start", + "index": 23, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "Likely as a result of the increased competition, OpenAI’s share of the enterprise market has fallen from about half in 2023 to 27% this year, accordin...", + "url": "https://www.sfexaminer.com/news/technology/why-openai-faces-massively-critical-year-ahead-in-2026/article_6112d59f-28b5-4770-bde1-b333deb5f01a.html", + "title": "Why OpenAI faces massively critical year ahead in 2026 | Technology | sfexaminer.com", + "encrypted_index": "EpMBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDAnKj6y7fmXrX/BfeBoMXXGUAT1KGJvZfWTsIjCH8Z538E6fxBf8lD2r7xMvttUQMRDpA5sKs6B6QwCD+QAhN85HZRvtbXhy/1TPiisqF2iEA2KPoBobhAOAjc15LeKrME+JcyCpGAQ=" + } + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "The" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " company faces" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " increase" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "d competition," + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " with" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " its" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " share" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " of the enterprise" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " market" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " falling from" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " about" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " half" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " in" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " 2023" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " to " + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "27" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "% this" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " year, and traffic" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " to" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " Chat" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "GPT dropping" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " about" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " 5" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": "% from" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " October" + } + }, + { + "type": "content_block_delta", + "index": 23, + "delta": { + "type": "text_delta", + "text": " to November" + } + }, + { + "type": "content_block_stop", + "index": 23 + }, + { + "type": "content_block_start", + "index": 24, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 24, + "delta": { + "type": "text_delta", + "text": ".\n\n## Entertainment" + } + }, + { + "type": "content_block_delta", + "index": 24, + "delta": { + "type": "text_delta", + "text": " Industry" + } + }, + { + "type": "content_block_delta", + "index": 24, + "delta": { + "type": "text_delta", + "text": " Connections" + } + }, + { + "type": "content_block_delta", + "index": 24, + "delta": { + "type": "text_delta", + "text": "\n\n" + } + }, + { + "type": "content_block_stop", + "index": 24 + }, + { + "type": "content_block_start", + "index": 25, + "content_block": { + "citations": [], + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "citations_delta", + "citation": { + "type": "web_search_result_location", + "cited_text": "Kimmel’s remarks about Altman appear to be a reference to Disney’s recent $1 billion investment in OpenAI that included striking a licensing deal with...", + "url": "https://www.hollywoodreporter.com/tv/tv-news/jimmy-kimmel-trump-openai-2026-critics-choice-awards-1236463973/", + "title": "Jimmy Kimmel Thanks Trump, OpenAI at 2026 Critics Choice Awards", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDA5OE0apz6Xx5yCbohoMHXKNmO74XZ/6gvGYIjAANdW8SH8q/R3qkm5zzobmXeqvs0vZgpKV1Vf/yujlv178thI6v1nvtHOlS3fs3OsqE6CG3fnoyXzINe6js65yTDS7+z8YBA==" + } + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": "Disney" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " recently" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " made" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " a $1" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " billion investment in OpenAI that" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " include" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": "d striking" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " a licensing" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " deal with the AI" + } + }, + { + "type": "content_block_delta", + "index": 25, + "delta": { + "type": "text_delta", + "text": " company" + } + }, + { + "type": "content_block_stop", + "index": 25 + }, + { + "type": "content_block_start", + "index": 26, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " which" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " was" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " reference" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": "d by" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Jimmy" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Kimmel at" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " the 2026" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Critics" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Choice" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Awards when" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " he j" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": "ok" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": "ingly than" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": "ked OpenAI's" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Sam" + } + }, + { + "type": "content_block_delta", + "index": 26, + "delta": { + "type": "text_delta", + "text": " Altman." + } + }, + { + "type": "content_block_stop", + "index": 26 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 12551, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 866, + "server_tool_use": { + "web_search_requests": 1 + } + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/webSearchToolParam/anthropic/response.json b/payloads/snapshots/webSearchToolParam/anthropic/response.json new file mode 100644 index 00000000..57b1e030 --- /dev/null +++ b/payloads/snapshots/webSearchToolParam/anthropic/response.json @@ -0,0 +1,276 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01K6HeEQcDi3NCdnJy4A1nnv", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "server_tool_use", + "id": "srvtoolu_01BNm4uXHL8iP38cA1CnsrbF", + "name": "web_search", + "input": { + "query": "OpenAI news January 2026" + } + }, + { + "type": "web_search_tool_result", + "tool_use_id": "srvtoolu_01BNm4uXHL8iP38cA1CnsrbF", + "content": [ + { + "type": "web_search_result", + "title": "OpenAI News | OpenAI", + "url": "https://openai.com/news/", + "encrypted_content": "EtYJCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDARMACQW344fkw46wBoMEYF6BNiwu9sQXKKPIjA9kR8pPWrYLqS/a/ZYoNu6FngJapGYMp/TxqjTt2TXJYXpDCtkdwBhefLgxYrZXV0q2QgU4l+EXLllL4fHRPluk2ON+42qEFnvRuk2cBrvRKiowmQRD1CLZ2lOiY1ZC1dGmkGapAkQL6yRSaMifVu2l4djJUXCyIIjNySmQXgvB8Af2rl7JfNRlaDVKt06gKO24MFNkr2hCkPmcaM1ECekjPUuV/m3Cmw+Hzglt7nCkmiXZPJrmU+nLS3nuHEq7S+KIH1Kgm56mUJpGQcoew9r3SLC4QW3QZ+FR8gFh/B1ys1gacQhzbzpPkDEn9500+3ZKHXNd3W9l9SO8nhl/wQcT7UvHdl1mrt+Ez/UGXO7s0PZezvA2JPKntKjPEh6IhCdczK6Meufd7+dqj8CY8VW2DnNcgEAc2yk38xMT1ouTmnOj/7x2jJIMATYoD/gWXjzWU6EdJWE5XWuzEv40GnDC0MKdWL917wMHUx+Uuj3ssT33BXHJ7jv2KkkDUaCckJTvB+HICViu9damrvYlHZwr2SwpEGvwDe0pbAgCZkLjKXQBUc8xO/Lxf1+ZcyeZntfJjjrciVaqMdgL5Ms2rQMMGUuPNKOzQnozWdVYQUoamS+WfNiCuiYRKea+5P0lIrZ7vIJBUMxWnTU6yA0sbDXEsuK4KeyDW8W0LnH09fUB1C5D4NeSWSJ99P1VcL/p+ylC2K8icTEOR5zesMWxK/+HVHNbACpwhSMbst9rksH38EeJi/Td7A2mOc1ykiYa3tenPjkOnSQ03dTuI5+E4EFFgGAtN4uPR90uM4ACKrfcBsw5d/fGIUWDNryr94FGPpWe6ePDeYWFSeLKpiRFeC+juO8s3wgYf4E9p0mm9oNZ0iPtuiKsFDz4jnUdS2AIb6Pxu0ohwtOp4z14mOl6aYLPKcJQqs1G4LyTtXJCdD4nJKzVW4m5Mj3g2N3tfLvFTqdUTzRu353om8KcIlpJYen7JJQ4S0G6ETkWaNUI4/ZVzEzTioZHmFuRzfRgsT96RvoHiet3BXjBYF2myB1+elneuNLrr0FxPGeFq/j2JGPcMGP9CsY+RRBPu0cBl5EcRF7j+oK8csTjw+/4qSn2cerHEZvMIMjYVR8Sq+B3kembyO65msKobw4nCOv98Z4xdMduP6MjMnm0SOSZWXkBE+Ingy78uelFzuj0jwTQfT442k3hYxHATQBWG7BPPJei1MW9ZhSDMMhg/y6e8BX7Ar+ZwufIClBdZ1j0cNlYGac4OAhBiygtSlb3qILBlSVqlnBFGShfneTnoT6YNxhKXXvg5nhwr+icsZR79VJ9gxQ2xFazPoCiQZeLRIDSTpSBMRsk72te+P2eNmmzLukFEO5TbjcZuikW2t63lzVG4KDZDG68HeHg5MuMyKPFheC3bSx0mVxCjTtUvGfbpAWN8b5smxfgrXFqFxqrErjBi8g609gzzdv0znul1quQqDRPGZ0fco+LhDmvHrPqAhEf6WRqxbcw+7j88Ojn3m4vHqykdDzzbGrEWMOquFkqNHMoBTpo89kBTbjRn9NHxsYAw==", + "page_age": null + }, + { + "type": "web_search_result", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "The Walt Disney Company and OpenAI reach landmark agreement to bring beloved characters from across Disney’s brands to Sora | OpenAI", + "url": "https://openai.com/index/disney-sora-agreement/", + "encrypted_content": "EtMECioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDGOoopTYOC6bpVKrTxoMZnQOlUrjMcQvF4fhIjBkaAjpxSWlW3Og33mqq6TW/XuTIA1QIdSp/8rFAH3S31RCxUMcwFOkHyCUqBI2UDkq1gMqlB21DhW+iVZ/heQ0My5vfnGlzZrMkMlsx9kvJzDWwDC3KGatt/jgc8jgCD8XjdICZrljeWw1KQcZ6Kb7qPJDU33I10X6tJt0yTVWGkJnr2B6IOg9x1PDlfIFJrao4sm6wwsLyGzgZD+S9mQ0zh1GHQQsFQFVN9q+b1cjhvvOvrFZOaVW/nRpBbDod110Yu+ON+qW0Z4yK0/z844yhtYX9Y5KE7s225t+JEx4TikoAigMzhBij3BZYSau/z6kJW0VuptMlJfGciAd2LTWNgavzE0Zbqo2jNMgpgvh7h4YnIIoeUcmoT9hu8UQmbGA6Q9MSePX9fle+wsTtMcX8fuFoTqewlpip6RY8eCvoUbCNBPdqfMgaddm03+QAkceczFil9gykiVBmFAfXgXkhgnVx/3YZzgmUtlvNDR4+hf6rTQCllIcjYHZ0e+7DrTHAcLJep6OUWE1m4voQDnmUggk/V7MUtjguZfRbqgtVY3fl718e9JlfgwPm2XZb+gt5th7F6n/WQVJdL+7r2DvT1HMzIOkZAqwRwS9UCkLogfmiC9uB3/yS1ONLd6Lz8Q5GNu535Hk5/PPpcSG91oK80ryp6Ba3TooUnEbK69l2CfpZ7qZI55VWBgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Introducing ChatGPT Health | OpenAI", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "encrypted_content": "EtAKCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDC5NlAgKehnpVsLPWhoMorb+ksEaTjAZSi4qIjBlomGQravEknZg4HpREX9e+FR4aFeqI9YcfkWbCaBsgHpmWY42hrvMeGwdw9veYVAq0wnRATHWl/0Ig1tWRCKkMlO96RDpcZYRjkiakEglyNYX18mzzBaO1JO4a1OhiQQOtiKf/Gxk4zqyrYlxSe7Gv1zwloRZj6ZOWXfqcj6ZovsKEuEiUZYpvrDQHXIskeDjpzHce/TTBJYigjqaZVZO8xXxUkRl8LsTEObW/tIgZlf9ffhvUF+Gj9MEFqwTIZhKj6Yr7DvsKRc3t5Kyk0821pK7ZyPADrb2IZpowH+EOnyZtlFgLB/Hnri1sBlKGv2Fw4amKlDRKhSGa9e/xGf7wWfdOYPzYsyyn4xYD8xTt86SGrwmYlpTdyRytJr/stz6+wZcCz4aV5iTuZyUUXUZwFCS6g/6X0UAxmbK3FZsCmQiicXpYM1TEb7Q4dWDNm1BC4X2t6/90RNafDAjM9kWcWdQERs91hwFbBgFLapzbX5vVM2jaY4IoMY8q6g66XpzYvZ/kkGkx89jhPZOqQCxINcVWxn+rN/Xs4eV/nrYUIV/p7sjubyWCo5S72Aab+WU5OCMOrmHJBNh1VrTSySFeOM8unjudjPFXK2SDFZlYGzd21xuRyvaU8ms1MoZ/ceSlsOupUsl7REEWMJGFVUodldFSpSbO7LXD6YOx+fnVXmp1KubNGPovSyLOxvAfVTwAgtHFkyUnLopBlwEm9Pt9Yj1RCJc/eerM5YX1+GuMkD6/NcYX21MftLo76Svi++xOsqFRJCH8OBvZd6Wg0/NwyG1NAW5lYvGcX+7gBABqVbSs5wC3YDpvUEaqkgVMKr8/pzN2X8ADzxaF5j/TDEqEZiuwMI8E99DVdRuBFI8BosX9W+LJ0T6/3gPwgCy8DayETf3X4KB0N3czr8vVlT3wpPiK5HjqEDB+JOL0NySz6ku8aHX4yDe6fC5zbM3Cdn9VVAUlEA9B0soveBpZ3818PqmFytmAyN70aw4c5RZf7mJYb4H4TcvOFBxH+llWoNqLTRF8SroJzJGQSacMW2mRwr+jAjIovKGzhXMbTbGsU9U1l+lAEx5kFjI0rxNnbOORwz7vUIw71j/Wd52wuf5F78/kKoZnrSGI+sssV+CnLj7bMxnYPPAeNhWZOceuPjAztiA8CUjHpS1YuIHHieWBciwj+Hu+bP6oaN1VMjExAZHa8bLhYWyNljXIfAwzfX+5IDE02CS720OKI4zvHKufaUHxU+0dH2RCbUdwvwV8ThHeywdMhiwAqi637ZPYTL8jUZKez1gfevXC5fjo0kfgvr3r2A49YLE8mdmhrpg8kFYLdG4VMh+Pa4i6OlyyEXQGcTM6sMP5nd4SjHjK8JzPpPmPOdM0NqgC7PrgKFtD5KoKKd8PoUMMXBC5e2QSl9z81+iQRFl7id/940zlkkm7gazzQyaFX6DWAHkTKiT22PjkddWfmF63QyamldVi5YxiczqSzyFnuA0BzrlFrzQLgukeePGuVnMeYTcnwvcDJsurCt50oqMb8DfTXe26kZB+CfSQdjPimlaUkfgjVbTO4SQ92OQBOwZsrGQS3pOKCZg8pEZVHsv3ZuQA5klnibv4JjXX4HhMft9Q3uFwi7vmxo9Z0dym9U4t65SSmidi13WROOdxcwbmdOKhCoEKU9qHM0Jx7GOkKGhOF7cAA/yhelxAiozQe/AGxtLmzDMyMo1ZBszbRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Introducing OpenAI for Healthcare | OpenAI", + "url": "https://openai.com/index/openai-for-healthcare/", + "encrypted_content": "EtcCCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDNzgVoozaaOuhnAWaBoMIQ2HAHsHJo3FxCaHIjBgccPohTj6VbntGVDJeBr2wXmTC+FLhwmgsW8ZK1l8oM7aVxLDVeAkKTICITTZK+kq2gGPHpYZJUdaE4rfMXi0Dt8d6kLwHZ+ZJ7fobJWqIfW0YVPRw3Qy6gC5YvVEPDtFhrZh+ZcMkScvbyGsdpSU2FCpuUNajU6kn3W9n/++Z7UXlPUP+iWr5KZ2tN3ivUSkOgKdcPVOJd1PAYiWKdm+9VvNDy3eVL6PLwJFABOpSnvEBpTaLvofM9ehJumzNbnKqVw3Rk7m9lw0+qwri3QcJY0KjNXv3t2mADPuRtHGeR8bLRP91HpuY5zcFy1F+2jRH7PYWaVFmuSVNmfdtQH3OindCXPVIbUJC1VVjRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "encrypted_content": "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", + "page_age": "2 weeks ago" + }, + { + "type": "web_search_result", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "encrypted_content": "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", + "page_age": "2 days ago" + }, + { + "type": "web_search_result", + "title": "How Tolan builds voice-first AI with GPT-5.1 | OpenAI", + "url": "https://openai.com/index/tolan/", + "encrypted_content": "EoALCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDKnkN5nUn3ZevEuvVxoMXjwoCakawtgVV9tDIjDb1A5laui1kggxahDXFg7L2X/ueEJWxdI/Z1suxrvT0xN0v5IRVNh8p2DDEghe6qAqgwqr7h4P4XG34jsiqrS35V+Wkmooemb1QAsU8MRqAKBBCTOiYTehPL36m4I7FJES5Y7qHNa7XwJniWwge+AuNCtmo2WktfA/GoW1QlI/6w7QfDL2fz3N2cUHOE4v42J0VZgt4+8v4wFyUCgT4rY9QVtDlyV0eiCedJ59nP7mHNfysgzqr9Q9RqOAHR3zLZznrYjBL9u3kONOqwmPOi0Nx9MO9n45bTE1ekxM8/loFYGR8CYWjeYn1eG6/xI1C2cNR5U0hj6BeqheT62K/c1hfVptBcaeEIq3HbYLUJMoOPDcI/POcYv7MIDjroh4fDm193bFuWfxbvS/7t5n5dyIQ0b4W1o06J3w5fpu6XPnFrYIYCX5AYV3m94rwb8hPm/TncSj+Pu4VkgJP9sF/wGRBlma6dDmUsc4uzmcJgTk448J6srQsR2tQZ3a1PoOnwLBAvLnDE9D6kRj+N0o+iLsaXhxDDi+VbCw+KUylrT85vGS2yXZHde5WT64Zd+/m6UsROzMqYO8Ejwfucs8s1nXE2sAkb3DgsIpbB6UEXx7UxkbnzRM0c666t7T9ojHPxFfQxt/TnXf+XtEX35CH2QIAl+pMnbD5UN/divZRM2pp+o2KqiXPWAyp6vR6AQCHdS8yBeOJ9bm4ZYxYwikYwMnvfR7T6pp6WjQst5F/hMqtkXXn9n4krTtIjmDFAkuETnxCCrkGFcEqQLelyPJvI1uzXblLX36A9tVc6C9kHePZ4p3BgxMfTnDEYBoQ4hM5Iqoxkqtjo2XAbonUyF8ecIAvJL7047ZsbPs91ebhaWQEQAGeyJxHXfJtY6gR+DkB7GEdZH/yVW0EUdlagfHQizxiA04F7+cQHfmSOpnzTXpGbM/4mIsCCvS+eBtcpdZl5XMzUTnd2ZSF5qDjSKS1H3Vk/D7gJ+luW3lroz4H6IrQjdmSbH2fuqK8xmK924QNmx5NeFa/vPoWjNnDHf7iaRSrdsfXR6Z6vQjTkvBEoPMy9XZoJeqzkdQiQUsaBsYSbuIy42B5A+UDK6u4z8d7vVO/R5qRkTLexIEOulwC4rhczur3o5n2DV7IUdYq+6rc0aCTHd//MGzMQfQczaPoNf8vceMLOOVNaNCa8b/R3KBZKz2yOZGgicX7+ZY2R6G2ctJfOgGwOjwKVKMKjE75VyyatCry2G3Ww/Kls4WS5cpvO7oIPne0PHFwk+qkOP0FMZ+GgZsRyIqvQvXasP/DqUt67bXsDI8eq2CaXa1xGpLJI6BAjCvITI5CENfBvVN9c10DitQuB7xykHwCimWlKO4cmmxEteg6NDJLmtJ/a/kXHqpqXMwbNH85vN5CYBvTct6FOjIyb7CJcnBA4Pt2I+4/RmxN8dzbuCog1VeONoSG4xR7eXhN2EOqFPa6QnhiS6qD+g/g7/LPkk34Y4M5GeHcIx6BxkGEs/jMNFuALoX2aLabmgl3UzMhFONJ932x+Fpz9IOZaClFtTvNZ3Op3WcnD9VTW78xVz1WQpKcNr1amJm5ZSWl03yBtOcAN03K7Ml7sSuGBiiGjX/0DTBGpk8Mg9MPys5nl7dzqIC3Qfg2URhFdaz4mWcE/PNTTriqA0RDSl4GWgiWHl4XyojBpFLztOFyvmT4/vOzwu/TXusBDw0uzt/+TltdTucIOZ+LQW+sBV800zs7pK9X24nw9ZxFlMqWItxiU/z97BIwqUOwzYJrriuJRgD", + "page_age": null + }, + { + "type": "web_search_result", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "encrypted_content": "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", + "page_age": "1 week ago" + }, + { + "type": "web_search_result", + "title": "OpenAI Release Notes - January 2026 Latest Updates - Releasebot", + "url": "https://releasebot.io/updates/openai", + "encrypted_content": "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", + "page_age": "5 days ago" + } + ] + }, + { + "type": "text", + "text": "Here are the latest OpenAI news highlights for January 2026:\n\n## Major Healthcare Initiative\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 7, 2026Product · A dedicated experience in ChatGPT designed for health and wellness. ", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "title": "Introducing ChatGPT Health | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDPQ9aCfl7LuMjlm4zBoMMaBOldNc5m2FvkapIjDiaCrB0ldQP8zgfWyqqMTF7xkUW/9TxvpqcvkmjMFZ+Hm9GrADCHSScUXYtPh+mxsqEwld2JLBXBa4o4RUmpKYdijvn9YYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "Join the waitlist(opens in a new window) Loading… · Share · We’re introducing ChatGPT Health, a dedicated experience that securely brings your health ...", + "url": "https://openai.com/index/introducing-chatgpt-health/", + "title": "Introducing ChatGPT Health | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDK/IdkkdRj2GZcLqShoM+75AV58f9MVPkEwaIjBKytLckd27NVGIYZc1iFteUD8IRIve0w8ObjxR/kLArMj23xfjMRFrhuk19ezM7N8qE1yGFaGBpVdlwxLadYn9NGCnZEoYBA==" + } + ], + "type": "text", + "text": "OpenAI launched ChatGPT Health on January 7, 2026, a dedicated experience in ChatGPT designed for health and wellness that securely brings your health information and ChatGPT's intelligence together" + }, + { + "type": "text", + "text": ". The following day, " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "January 8, 2026Product · Secure AI products to help healthcare organizations scale high-quality care, reduce admin work for teams, and power custom cl...", + "url": "https://openai.com/index/openai-for-healthcare/", + "title": "Introducing OpenAI for Healthcare | OpenAI", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDBazEyYeVpFO6J59SRoMVqF5hcOf4FF/MpG9IjAb4/JvpvmbwIBGO2dRjbvSCDzVbIexOiDxPb+0Gif//UujMvkIhrzrCk4yWA5adNcqE9gonbepFBul9hj9HjIpkdOUjnEYBA==" + } + ], + "type": "text", + "text": "OpenAI introduced OpenAI for Healthcare, offering secure AI products to help healthcare organizations scale high-quality care, reduce admin work for teams, and power custom clinical solutions—while protecting health data" + }, + { + "type": "text", + "text": ".\n\n## Disney Partnership for Video Generation\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "Under the license, fans will be able to watch curated selections of Sora-generated videos on Disney+, and OpenAI and Disney will collaborate to utiliz...", + "url": "https://openai.com/index/disney-sora-agreement/", + "title": "The Walt Disney Company and OpenAI reach landmark agreement to bring beloved characters from across Disney’s brands to Sora | OpenAI", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDEIhGbKZzx+2Ei4HgRoMogV2FicYcxpEzuG+IjDZeIPkVh5TW32kINoYQBiwBxanLCqg77ZuPFG0Au9M2XYjGGvBlGK+W750v63qvAUqFZTPg7sZW/FG2Amq8C6nYO1fvou2chgE" + } + ], + "type": "text", + "text": "OpenAI and Disney reached a landmark agreement that will allow fans to watch curated selections of Sora-generated videos on Disney+, with Sora and ChatGPT Images expected to start generating fan-inspired videos with Disney's multi-brand licensed characters in early 2026" + }, + { + "type": "text", + "text": ".\n\n## Audio-First Technology Push\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "According to new reporting from The Information, the company has unified several engineering, product, and research teams over the past two months to ...", + "url": "https://techcrunch.com/2026/01/01/openai-bets-big-on-audio-as-silicon-valley-declares-war-on-screens/", + "title": "OpenAI bets big on audio as Silicon Valley declares war on screens | TechCrunch", + "encrypted_index": "EpABCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDE/6mUjQYHdRGCqWIhoMhPqKarZSYAX4QKGtIjBglEb6rtRqhgPh34gAjFIzxvU/Dx6mcwjO8VYt0X1P/eeY31sl+8vL8H6hxdQGVnQqFK6BXrxYJNaq2CD3FlW7So6O1lpFGAQ=" + } + ], + "type": "text", + "text": "OpenAI has unified several engineering, product, and research teams over the past two months to overhaul its audio models, all in preparation for an audio-first personal device expected to launch in about a year" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "The Information today cited sources as saying that the algorithm will launch by the end of March.", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJjoLBQhd/Mj2w1Z9xoMOcKQlxr3th/UC5uwIjAo1iX7tqVZpAK7qfZHdnNnWcXDN3z/zZQISqvD+ow04VO+OvvHzEfPwvkNf3LyLdoqE9YtfbGUZvJINo0JKNREogjv3UoYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "According to the publication, it’s expected to produce more natural-sounding speech than OpenAI’s current models. ", + "url": "https://siliconangle.com/2026/01/01/report-openai-plans-launch-new-audio-model-first-quarter/", + "title": "Report: OpenAI plans to launch new audio model in the first quarter - SiliconANGLE", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDD7QjGxWYCYUpDyiOxoMxB1KTILYow0xiLK5IjDXQcfE/wGTNDEwun8hY52GpbF2NjcrQfAoq1X1U+JhxFHq476bOzn31AjXf7YtqpwqE1vA41DzPRLJwwd/xljBvdps1TAYBA==" + } + ], + "type": "text", + "text": "A new audio model is expected to launch by the end of March that will produce more natural-sounding speech than OpenAI's current models" + }, + { + "type": "text", + "text": ".\n\n## Recent Acquisitions\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "OpenAI is acquiring the team behind executive coaching AI tool Convogo in an all-stock deal, adding to the firm's M&A spree.", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDJGWK9OfMOpZHlIFABoMaucQ0R0DhepxhJ78IjAjnPP6Of5zrB98A196DAu7YtyEg+LnUYyKat+nFMOoQT+tc7wCVYI5vih+6LwD8Y4qE+TVgoEAjoLJCZ8rQXNpC0KRfksYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "The AI giant is acquiring the team behind Convogo, a business software platform that helps executive coaches, consultants, talent leaders, and HR team...", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDLyBv0ouQXpzZwi36BoMWrsHARTZDDqzi5ekIjAwXmq7gcI3mBeBJqtZvBs+T2fb7Q9mjNxylk4jdB5zOeUVbp/fP5qLcXt6A9r97KoqEzvU2xJQBJlsUVMnPLPBcu9eMQsYBA==" + } + ], + "type": "text", + "text": "OpenAI is acquiring the team behind Convogo, a business software platform that helps executive coaches and HR teams with leadership assessments and feedback reporting" + }, + { + "type": "text", + "text": ". " + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "An OpenAI spokesperson said the company is not acquiring Convogo’s IP or technology, but rather hiring the team to work on its “AI cloud efforts.” The...", + "url": "https://techcrunch.com/2026/01/08/openai-to-acquire-the-team-behind-executive-coaching-ai-tool-convogo/", + "title": "OpenAI to acquire the team behind executive coaching AI tool Convogo | TechCrunch", + "encrypted_index": "EpEBCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDBtJrrmWPh5h8Pv7ABoM/LuuDblDifpgD+64IjCRYndNwG+sgtZWAYyMRrYcX8G5MCDH8y/neiFB9pPhrImLwuDuXb9abM2f1jpQ958qFRUqiQIE0G22CXL8IKNCRXjCLWIDSBgE" + } + ], + "type": "text", + "text": "The three co-founders will join OpenAI's \"AI cloud efforts\" in an all-stock deal, while Convogo's product will be wound down" + }, + { + "type": "text", + "text": ".\n\n## Training Data Strategy\n" + }, + { + "citations": [ + { + "type": "web_search_result_location", + "cited_text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work that they did in past and current jobs, according...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDOKD6Plxgs1CI7pxEhoM35EoXJQLuDUUh9o3IjCXdstYWNbU7utBXJGTucsmjYOiVE/9ySDTXphQLK5TAfv8ricbTsNb1Ym3nTXTNdMqE4wrz+ndkmZZd8tE2TCRiV7Nm5QYBA==" + }, + { + "type": "web_search_result_location", + "cited_text": "In OpenAI’s case, a company presentation reportedly asks contractors to describe tasks they’ve performed at other jobs and upload examples of “real, o...", + "url": "https://techcrunch.com/2026/01/10/openai-is-reportedly-asking-contractors-to-upload-real-work-from-past-jobs/", + "title": "OpenAI is reportedly asking contractors to upload real work from past jobs | TechCrunch", + "encrypted_index": "Eo8BCioICxgCIiQyNzc5NjY2OC03MzUxLTQwYWMtYWNjNC0wMjRhZWU4OTk1YTUSDMBfeOUom7AVysMR+RoMQxk4XcmbQHHy7vvUIjATGftSpnJ/zTTw7QyFbSq6a+bwwFV4BKAf7acpkYqscAesBXWyvnTZQSUpnZ5lLBoqEySz8chGJaxaVBEzZ2sI5XmtKEQYBA==" + } + ], + "type": "text", + "text": "OpenAI and training data company Handshake AI are asking third-party contractors to upload real work from past and current jobs, with company presentations asking for examples of \"real, on-the-job work\" including Word docs, PDFs, PowerPoints, and Excel files" + }, + { + "type": "text", + "text": ".\n\nThese developments show OpenAI's expansion into healthcare, entertainment partnerships, hardware development, and continued focus on improving AI capabilities across different domains." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 11425, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 648, + "service_tier": "standard", + "server_tool_use": { + "web_search_requests": 1 + } + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-request.json b/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-request.json new file mode 100644 index 00000000..53168269 --- /dev/null +++ b/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-request.json @@ -0,0 +1,36 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Local food" + }, + { + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you with information about local food! However, your query is quite broad. To provide you with the most relevant and useful information, could you help me understand what specifically you're looking for?\n\nFor example, are you interested in:\n\n- **Local food near you** - restaurants, markets, or food scenes in a specific city or area?\n- **Local/regional cuisine** - traditional dishes from a particular region?\n- **Local food movement** - farm-to-table, locally sourced ingredients, or sustainable eating?\n- **Finding local food sources** - farmers markets, local producers, or food co-ops?\n- **Local food trends** - what's popular in local food scenes right now?\n\nIf you let me know your location and what aspect of local food interests you most, I can search for current, relevant information to help you out!" + } + ] + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search", + "user_location": { + "type": "approximate", + "city": "San Francisco", + "region": "California", + "country": "US", + "timezone": "America/Los_Angeles" + } + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-response.json b/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-response.json new file mode 100644 index 00000000..7da868ca --- /dev/null +++ b/payloads/snapshots/webSearchUserLocationParam/anthropic/followup-response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01AENYXEgRgFwekkVzKkmTVB", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you figure out your next steps! However, I need a bit more context to give you useful guidance. Could you tell me more about your situation?\n\nFor example:\n- Are you asking about next steps related to local food (from your previous question)?\n- Is this about a specific project, decision, or goal you're working on?\n- Are you looking for general life advice or direction?\n- Is this related to work, personal life, a hobby, or something else?\n\nOnce I understand what area of your life or what specific situation you're referring to, I can provide much more targeted and helpful suggestions for your next steps!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 2229, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 141, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchUserLocationParam/anthropic/request.json b/payloads/snapshots/webSearchUserLocationParam/anthropic/request.json new file mode 100644 index 00000000..c34562d4 --- /dev/null +++ b/payloads/snapshots/webSearchUserLocationParam/anthropic/request.json @@ -0,0 +1,23 @@ +{ + "model": "claude-sonnet-4-20250514", + "max_tokens": 1024, + "messages": [ + { + "role": "user", + "content": "Local food" + } + ], + "tools": [ + { + "type": "web_search_20250305", + "name": "web_search", + "user_location": { + "type": "approximate", + "city": "San Francisco", + "region": "California", + "country": "US", + "timezone": "America/Los_Angeles" + } + } + ] +} \ No newline at end of file diff --git a/payloads/snapshots/webSearchUserLocationParam/anthropic/response-streaming.json b/payloads/snapshots/webSearchUserLocationParam/anthropic/response-streaming.json new file mode 100644 index 00000000..4bdaf439 --- /dev/null +++ b/payloads/snapshots/webSearchUserLocationParam/anthropic/response-streaming.json @@ -0,0 +1,517 @@ +[ + { + "type": "message_start", + "message": { + "model": "claude-sonnet-4-20250514", + "id": "msg_014QnZ2oa3XxPsExq6cXhHdh", + "type": "message", + "role": "assistant", + "content": [], + "stop_reason": null, + "stop_sequence": null, + "usage": { + "input_tokens": 2032, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 2, + "service_tier": "standard" + } + } + }, + { + "type": "content_block_start", + "index": 0, + "content_block": { + "type": "text", + "text": "" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "I'" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d be happy to help you with" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " information" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " about local food! However" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", your" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " request" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " is" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " quite" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " broa" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d." + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " Could you help" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " me understan" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d what specific" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " aspect" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " of local food you're interested in?" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " For example:\n\n- Are" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you looking for local" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " restaurants" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " or" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " foo" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d establishments" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " in" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a particular" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " city or area" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "?\n- Are you interested in local" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " food movements" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "," + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " farm" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "-to-table dining, or locally" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " sour" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ced ingredients" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "?\n- Do" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you want to know about traditional" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " or" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " regional" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " cuis" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "ines from" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " a" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " specific place" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "?\n- Are you looking" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " for local food markets, farmers" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " markets" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": ", or foo" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d festivals?" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "\n- Something" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " else relate" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d to local food?\n\nOnce you provide" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " more details about what you're looking for" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " an" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d potentially" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " which" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " location" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " you" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "'re interested in, I can give you" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " much" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " more helpful" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": " an" + } + }, + { + "type": "content_block_delta", + "index": 0, + "delta": { + "type": "text_delta", + "text": "d targeted information!" + } + }, + { + "type": "content_block_stop", + "index": 0 + }, + { + "type": "message_delta", + "delta": { + "stop_reason": "end_turn", + "stop_sequence": null + }, + "usage": { + "input_tokens": 2032, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 160 + } + }, + { + "type": "message_stop" + } +] \ No newline at end of file diff --git a/payloads/snapshots/webSearchUserLocationParam/anthropic/response.json b/payloads/snapshots/webSearchUserLocationParam/anthropic/response.json new file mode 100644 index 00000000..724cfce2 --- /dev/null +++ b/payloads/snapshots/webSearchUserLocationParam/anthropic/response.json @@ -0,0 +1,25 @@ +{ + "model": "claude-sonnet-4-20250514", + "id": "msg_01EvxGXbpFnoKsUaDBwkBwvJ", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "I'd be happy to help you with information about local food! However, your query is quite broad. To provide you with the most relevant and useful information, could you help me understand what specifically you're looking for?\n\nFor example, are you interested in:\n\n- **Local food near you** - restaurants, markets, or food scenes in a specific city or area?\n- **Local/regional cuisine** - traditional dishes from a particular region?\n- **Local food movement** - farm-to-table, locally sourced ingredients, or sustainable eating?\n- **Finding local food sources** - farmers markets, local producers, or food co-ops?\n- **Local food trends** - what's popular in local food scenes right now?\n\nIf you let me know your location and what aspect of local food interests you most, I can search for current, relevant information to help you out!" + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 2032, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 188, + "service_tier": "standard" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 623b3fc0..2569c445 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ importers: payloads: dependencies: '@anthropic-ai/sdk': - specifier: ^0.63.0 - version: 0.63.1 + specifier: ^0.71.2 + version: 0.71.2 '@aws-sdk/client-bedrock-runtime': specifier: ^3.700.0 version: 3.958.0 @@ -121,6 +121,15 @@ packages: zod: optional: true + '@anthropic-ai/sdk@0.71.2': + resolution: {integrity: sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ==} + hasBin: true + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + peerDependenciesMeta: + zod: + optional: true + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -2417,6 +2426,10 @@ snapshots: dependencies: json-schema-to-ts: 3.1.1 + '@anthropic-ai/sdk@0.71.2': + dependencies: + json-schema-to-ts: 3.1.1 + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0