From c096bc6cbf9b1d62fd59849b23f60cf687e52185 Mon Sep 17 00:00:00 2001 From: noalimoy Date: Thu, 15 Oct 2026 22:53:16 +0300 Subject: [PATCH 1/3] fix(vertex): mint unique fallback completion IDs Signed-off-by: noalimoy --- apis/src/vertex/gemini/mod.rs | 8 +- apis/src/vertex/gemini/response.rs | 132 +++++++-- .../integration/fixtures/inference/README.md | 3 +- .../fixtures/inference/coverage.yaml | 9 + .../vertex/bounded-stream-limits.json | 261 +++++++++--------- .../vertex/fallback-response-id.json | 122 ++++++++ .../vertex/fallback-response-id.yaml | 73 +++++ .../test_vertex_gemini_chat_completions.py | 19 ++ .../tests/suite/examples/vertex_gemini.rs | 6 + tests/utils/src/inference_fixture/coverage.rs | 17 +- 10 files changed, 489 insertions(+), 161 deletions(-) create mode 100644 tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json create mode 100644 tests/integration/fixtures/inference/scenarios/vertex/fallback-response-id.yaml diff --git a/apis/src/vertex/gemini/mod.rs b/apis/src/vertex/gemini/mod.rs index 0aa0e28b09..b6374186aa 100644 --- a/apis/src/vertex/gemini/mod.rs +++ b/apis/src/vertex/gemini/mod.rs @@ -42,11 +42,11 @@ const REQUEST_MODEL_KEY: &str = "vertex_gemini.model"; const REQUEST_INCLUDE_USAGE_KEY: &str = "vertex_gemini.include_usage"; /// Number of terminal streaming candidates expected for this request. const REQUEST_CANDIDATE_COUNT_KEY: &str = "vertex_gemini.candidate_count"; -/// Fallback response ID when no upstream `responseId` is available. +/// Prefix for a generated response ID when Vertex omits `responseId`. /// -/// Used in both non-streaming (`response.rs`) and streaming (`mod.rs`) -/// paths so that clients see a consistent id shape. -pub(super) const FALLBACK_RESPONSE_ID: &str = "chatcmpl-vertex"; +/// The random suffix is minted in `response.rs` once per logical response and +/// retained for every chunk of that response's stream. +pub(super) const FALLBACK_RESPONSE_ID_PREFIX: &str = "chatcmpl-vertex-"; // ----------------------------------------------------------------------------- // Filter State diff --git a/apis/src/vertex/gemini/response.rs b/apis/src/vertex/gemini/response.rs index 56759c132d..00bf3d4b5a 100644 --- a/apis/src/vertex/gemini/response.rs +++ b/apis/src/vertex/gemini/response.rs @@ -12,6 +12,7 @@ use std::{ sync::atomic::{AtomicU64, Ordering}, }; +use openssl::rand::rand_bytes; use serde_json::{Map, Value, json}; use tracing::warn; @@ -22,6 +23,9 @@ use tracing::warn; /// Maximum candidate choices allowed in a single stream. pub(crate) const MAX_STREAM_CANDIDATES: u64 = 64; +/// Maximum byte length of an upstream `responseId` retained in a client response. +const MAX_RESPONSE_ID_BYTES: usize = 256; + /// Maximum tool-call slots allowed per candidate in a single stream. pub(crate) const MAX_STREAM_TOOL_CALL_SLOTS: usize = 128; @@ -141,20 +145,39 @@ impl StreamTranslateState { } /// Set the OpenAI completion id once: Vertex `responseId` when the first - /// frame has one, otherwise the shared fallback. Later frames cannot + /// frame has one, otherwise a generated fallback. Later frames cannot /// change it (a late `responseId` must not rewrite earlier chunk ids). - fn ensure_completion_id(&mut self, response_id: Option<&str>) { + fn ensure_completion_id(&mut self, response_id: Option<&str>) -> Result<(), String> { if self.completion_id.is_none() { - self.completion_id = Some( - response_id - .map(str::trim) - .filter(|s| !s.is_empty()) - .map_or_else(|| super::FALLBACK_RESPONSE_ID.to_owned(), str::to_owned), - ); + self.completion_id = Some(response_id_or_minted_fallback(response_id)?); } + Ok(()) } } +/// Preserve a bounded, usable Vertex response ID, or mint an OpenAI-shaped fallback. +/// +/// A blank or oversized identifier is not useful to clients, so it follows the +/// same path as an omitted one. The generated ID is opaque and unique across +/// requests; stream state keeps it stable across all chunks for one response. +fn response_id_or_minted_fallback(response_id: Option<&str>) -> Result { + response_id + .map(str::trim) + .filter(|id| !id.is_empty() && id.len() <= MAX_RESPONSE_ID_BYTES) + .map_or_else(mint_fallback_completion_id, |id| Ok(id.to_owned())) +} + +/// Mint an OpenAI-shaped completion ID from 128 bits of OpenSSL randomness. +fn mint_fallback_completion_id() -> Result { + let mut random = [0_u8; 16]; + rand_bytes(&mut random).map_err(|error| format!("failed to generate fallback completion id: {error}"))?; + Ok(format!( + "{}{:032x}", + super::FALLBACK_RESPONSE_ID_PREFIX, + u128::from_be_bytes(random) + )) +} + // ----------------------------------------------------------------------------- // Public Entry Point // ----------------------------------------------------------------------------- @@ -174,10 +197,7 @@ pub(crate) fn transform_response(body: &[u8], model: &str) -> Result, St let obj = value.as_object(); - let id = obj - .and_then(|o| o.get("responseId")) - .and_then(Value::as_str) - .unwrap_or(super::FALLBACK_RESPONSE_ID); + let id = response_id_or_minted_fallback(obj.and_then(|o| o.get("responseId")).and_then(Value::as_str))?; let candidates = obj.and_then(|o| o.get("candidates")).and_then(Value::as_array); @@ -617,7 +637,7 @@ pub(crate) fn transform_stream_chunk( let value: Value = serde_json::from_slice(data).map_err(|e| format!("invalid JSON: {e}"))?; let obj = value.as_object(); - state.ensure_completion_id(obj.and_then(|o| o.get("responseId")).and_then(Value::as_str)); + state.ensure_completion_id(obj.and_then(|o| o.get("responseId")).and_then(Value::as_str))?; state.capture_usage(obj); // Detect upstream errors and content blocks that arrive as valid JSON @@ -645,8 +665,12 @@ fn serialize_stream_chunk( model: &str, state: &StreamTranslateState, ) -> Result>, String> { + let completion_id = state + .completion_id + .as_deref() + .ok_or("stream completion id was not initialized")?; let mut chunk = json!({ - "id": state.completion_id.as_deref().unwrap_or(super::FALLBACK_RESPONSE_ID), + "id": completion_id, "object": "chat.completion.chunk", "created": state.created, "model": model, @@ -687,9 +711,10 @@ pub(crate) fn take_stream_usage_chunk(state: &mut StreamTranslateState, model: & if !state.include_usage { return None; } + let completion_id = state.completion_id.as_deref()?; let usage = state.usage.take()?; let chunk = json!({ - "id": state.completion_id.as_deref().unwrap_or(super::FALLBACK_RESPONSE_ID), + "id": completion_id, "object": "chat.completion.chunk", "created": state.created, "model": model, @@ -1156,12 +1181,50 @@ mod tests { } #[test] - fn missing_response_id_uses_fallback() { - let body = br#"{"candidates": [{"content": {"parts": [{"text": "Hi"}]}, "finishReason": "STOP"}]}"#; + fn response_id_trims_whitespace() { + let body = br#"{ + "responseId": " resp-padded ", + "candidates": [{"content": {"parts": [{"text": "Hi"}]}, "finishReason": "STOP"}] + }"#; let output = transform_response(body, "gemini-1.5-pro").unwrap(); let parsed: Value = serde_json::from_slice(&output).unwrap(); - assert_eq!(parsed["id"], "chatcmpl-vertex"); + assert_eq!(parsed["id"], "resp-padded"); + } + + #[test] + fn oversized_response_id_mints_fallback() { + let accepted = "a".repeat(MAX_RESPONSE_ID_BYTES); + let fallback = "a".repeat(MAX_RESPONSE_ID_BYTES + 1); + + assert_eq!(response_id_or_minted_fallback(Some(&accepted)).unwrap(), accepted); + assert!( + response_id_or_minted_fallback(Some(&fallback)) + .unwrap() + .starts_with("chatcmpl-vertex-") + ); + } + + #[test] + fn missing_response_id_mints_unique_fallback_per_response() { + let body = br#"{"candidates": [{"content": {"parts": [{"text": "Hi"}]}, "finishReason": "STOP"}]}"#; + let first: Value = serde_json::from_slice(&transform_response(body, "gemini-1.5-pro").unwrap()).unwrap(); + let second: Value = serde_json::from_slice(&transform_response(body, "gemini-1.5-pro").unwrap()).unwrap(); + + let first_id = first["id"].as_str().unwrap(); + let second_id = second["id"].as_str().unwrap(); + assert!(first_id.starts_with("chatcmpl-vertex-")); + assert!(second_id.starts_with("chatcmpl-vertex-")); + assert_ne!(first_id, second_id); + } + + #[test] + fn blank_response_id_mints_fallback() { + let body = + br#"{"responseId":" ","candidates":[{"content":{"parts":[{"text":"Hi"}]},"finishReason":"STOP"}]}"#; + let parsed: Value = serde_json::from_slice(&transform_response(body, "gemini-1.5-pro").unwrap()).unwrap(); + + assert!(parsed["id"].as_str().unwrap().starts_with("chatcmpl-vertex-")); } #[test] @@ -1625,7 +1688,7 @@ mod tests { assert_eq!(parsed["object"], "chat.completion.chunk"); assert_eq!(parsed["created"], 1_700_000_000); - assert_eq!(parsed["id"], "chatcmpl-vertex"); + assert!(parsed["id"].as_str().unwrap().starts_with("chatcmpl-vertex-")); assert_eq!(parsed["choices"][0]["delta"]["role"], "assistant"); assert_eq!(parsed["choices"][0]["delta"]["content"], "Hi"); assert!(parsed["choices"][0]["finish_reason"].is_null()); @@ -1857,11 +1920,38 @@ mod tests { br#"{"responseId":"resp-late","candidates":[{"content":{"parts":[{"text":"!"}]}}]}"#, ); - assert_eq!(first["id"], "chatcmpl-vertex"); - assert_eq!(second["id"], "chatcmpl-vertex"); + assert!(first["id"].as_str().unwrap().starts_with("chatcmpl-vertex-")); + assert_eq!(first["id"], second["id"]); assert_ne!(second["id"], "resp-late"); } + #[test] + fn stream_completion_id_trims_upstream_response_id() { + let mut state = new_stream_state(1); + let parsed = translate_stream( + &mut state, + br#"{"responseId":" resp-padded ","candidates":[{"content":{"parts":[{"text":"Hi"}]}}]}"#, + ); + + assert_eq!(parsed["id"], "resp-padded"); + } + + #[test] + fn missing_response_id_mints_unique_fallback_per_stream() { + let data = br#"{"candidates":[{"content":{"parts":[{"text":"Hi"}]}}]}"#; + let mut first_state = new_stream_state(1); + let mut second_state = new_stream_state(1); + + let first = translate_stream(&mut first_state, data); + let second = translate_stream(&mut second_state, data); + let first_id = first["id"].as_str().unwrap(); + let second_id = second["id"].as_str().unwrap(); + + assert!(first_id.starts_with("chatcmpl-vertex-")); + assert!(second_id.starts_with("chatcmpl-vertex-")); + assert_ne!(first_id, second_id); + } + #[test] fn stream_finish_after_tool_call_maps_to_tool_calls() { let mut state = new_stream_state(1); diff --git a/tests/integration/fixtures/inference/README.md b/tests/integration/fixtures/inference/README.md index fab21f9aef..82c7c8737b 100644 --- a/tests/integration/fixtures/inference/README.md +++ b/tests/integration/fixtures/inference/README.md @@ -19,7 +19,7 @@ than editing the table. -The manifest declares **72 features** across **9 scopes**, linked to **60 scenarios**. +The manifest declares **73 features** across **9 scopes**, linked to **61 scenarios**. | Scope | Feature | Status | Scenarios | Provider coverage | | --- | --- | --- | --- | --- | @@ -92,6 +92,7 @@ The manifest declares **72 features** across **9 scopes**, linked to **60 scenar | `messages_to_chat_completions` | `messages.request.empty_citations` | `synthetic_only` | `messages/provider-parameter-passthrough` | `synthetic`: `synthetic_only` | | `openai_chat_completions_to_vertexai_gemini` | `vertex.gemini.response.text_metadata` | `synthetic_only` | `vertex/invalid-content` | `synthetic`: `synthetic_only` | | `openai_chat_completions_to_vertexai_gemini` | `vertex.gemini.response.schema_complete` | `synthetic_only` | `vertex/invalid-content` | `synthetic`: `synthetic_only` | +| `openai_chat_completions_to_vertexai_gemini` | `vertex.gemini.response.fallback_id` | `synthetic_only` | `vertex/fallback-response-id` | `synthetic`: `synthetic_only` | | `openai_chat_completions_to_vertexai_gemini` | `vertex.gemini.streaming.candidate_limit` | `synthetic_only` | `vertex/bounded-stream-limits` | `synthetic`: `synthetic_only` | | `openai_chat_completions_to_vertexai_gemini` | `vertex.gemini.streaming.tool_slot_limit` | `synthetic_only` | `vertex/bounded-stream-limits` | `synthetic`: `synthetic_only` | | `messages_to_chat_completions` | `messages.error.malformed_success_status` | `synthetic_only` | `messages/malformed-success` | `synthetic`: `synthetic_only` | diff --git a/tests/integration/fixtures/inference/coverage.yaml b/tests/integration/fixtures/inference/coverage.yaml index 3ec0190adc..d35ceeadc1 100644 --- a/tests/integration/fixtures/inference/coverage.yaml +++ b/tests/integration/fixtures/inference/coverage.yaml @@ -663,6 +663,15 @@ features: providers: synthetic: status: synthetic_only + - id: vertex.gemini.response.fallback_id + scopes: + - openai_chat_completions_to_vertexai_gemini + status: synthetic_only + scenarios: + - vertex/fallback-response-id + providers: + synthetic: + status: synthetic_only - id: vertex.gemini.streaming.candidate_limit scopes: - openai_chat_completions_to_vertexai_gemini diff --git a/tests/integration/fixtures/inference/recordings/synthetic/vertex/bounded-stream-limits.json b/tests/integration/fixtures/inference/recordings/synthetic/vertex/bounded-stream-limits.json index fbd9dd2f68..4d73316c0d 100644 --- a/tests/integration/fixtures/inference/recordings/synthetic/vertex/bounded-stream-limits.json +++ b/tests/integration/fixtures/inference/recordings/synthetic/vertex/bounded-stream-limits.json @@ -11,7 +11,8 @@ "normalization": { "version": 1, "linked_ids": { - "chatcmpl-vertex": "chatcmpl-recorded-0001" + "chatcmpl-vertex-synthetic-candidate-overflow": "chatcmpl-recorded-0001", + "chatcmpl-vertex-synthetic-tool-slot-overflow": "chatcmpl-recorded-0002" } }, "turns": [ @@ -162,769 +163,769 @@ "frames": [ { "event": null, - "data": "{\"choices\":[{\"delta\":{\"role\":\"assistant\",\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-0\",\"index\":0,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"role\":\"assistant\",\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-0\",\"index\":0,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-1\",\"index\":1,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-1\",\"index\":1,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-2\",\"index\":2,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-2\",\"index\":2,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-3\",\"index\":3,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-3\",\"index\":3,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-4\",\"index\":4,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-4\",\"index\":4,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-5\",\"index\":5,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-5\",\"index\":5,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-6\",\"index\":6,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-6\",\"index\":6,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-7\",\"index\":7,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-7\",\"index\":7,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-8\",\"index\":8,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-8\",\"index\":8,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-9\",\"index\":9,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-9\",\"index\":9,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-10\",\"index\":10,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-10\",\"index\":10,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-11\",\"index\":11,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-11\",\"index\":11,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-12\",\"index\":12,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-12\",\"index\":12,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-13\",\"index\":13,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-13\",\"index\":13,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-14\",\"index\":14,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-14\",\"index\":14,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-15\",\"index\":15,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-15\",\"index\":15,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-16\",\"index\":16,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-16\",\"index\":16,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-17\",\"index\":17,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-17\",\"index\":17,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-18\",\"index\":18,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-18\",\"index\":18,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-19\",\"index\":19,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-19\",\"index\":19,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-20\",\"index\":20,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-20\",\"index\":20,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-21\",\"index\":21,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-21\",\"index\":21,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-22\",\"index\":22,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-22\",\"index\":22,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-23\",\"index\":23,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-23\",\"index\":23,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-24\",\"index\":24,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-24\",\"index\":24,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-25\",\"index\":25,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-25\",\"index\":25,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-26\",\"index\":26,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-26\",\"index\":26,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-27\",\"index\":27,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-27\",\"index\":27,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-28\",\"index\":28,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-28\",\"index\":28,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-29\",\"index\":29,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-29\",\"index\":29,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-30\",\"index\":30,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-30\",\"index\":30,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-31\",\"index\":31,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-31\",\"index\":31,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-32\",\"index\":32,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-32\",\"index\":32,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-33\",\"index\":33,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-33\",\"index\":33,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-34\",\"index\":34,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-34\",\"index\":34,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-35\",\"index\":35,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-35\",\"index\":35,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-36\",\"index\":36,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-36\",\"index\":36,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-37\",\"index\":37,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-37\",\"index\":37,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-38\",\"index\":38,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-38\",\"index\":38,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-39\",\"index\":39,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-39\",\"index\":39,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-40\",\"index\":40,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-40\",\"index\":40,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-41\",\"index\":41,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-41\",\"index\":41,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-42\",\"index\":42,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-42\",\"index\":42,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-43\",\"index\":43,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-43\",\"index\":43,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-44\",\"index\":44,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-44\",\"index\":44,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-45\",\"index\":45,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-45\",\"index\":45,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-46\",\"index\":46,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-46\",\"index\":46,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-47\",\"index\":47,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-47\",\"index\":47,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-48\",\"index\":48,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-48\",\"index\":48,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-49\",\"index\":49,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-49\",\"index\":49,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-50\",\"index\":50,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-50\",\"index\":50,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-51\",\"index\":51,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-51\",\"index\":51,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-52\",\"index\":52,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-52\",\"index\":52,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-53\",\"index\":53,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-53\",\"index\":53,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-54\",\"index\":54,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-54\",\"index\":54,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-55\",\"index\":55,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-55\",\"index\":55,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-56\",\"index\":56,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-56\",\"index\":56,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-57\",\"index\":57,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-57\",\"index\":57,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-58\",\"index\":58,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-58\",\"index\":58,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-59\",\"index\":59,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-59\",\"index\":59,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-60\",\"index\":60,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-60\",\"index\":60,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-61\",\"index\":61,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-61\",\"index\":61,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-62\",\"index\":62,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-62\",\"index\":62,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-63\",\"index\":63,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-63\",\"index\":63,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-64\",\"index\":64,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-64\",\"index\":64,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-65\",\"index\":65,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-65\",\"index\":65,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-66\",\"index\":66,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-66\",\"index\":66,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-67\",\"index\":67,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-67\",\"index\":67,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-68\",\"index\":68,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-68\",\"index\":68,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-69\",\"index\":69,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-69\",\"index\":69,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-70\",\"index\":70,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-70\",\"index\":70,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-71\",\"index\":71,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-71\",\"index\":71,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-72\",\"index\":72,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-72\",\"index\":72,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-73\",\"index\":73,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-73\",\"index\":73,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-74\",\"index\":74,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-74\",\"index\":74,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-75\",\"index\":75,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-75\",\"index\":75,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-76\",\"index\":76,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-76\",\"index\":76,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-77\",\"index\":77,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-77\",\"index\":77,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-78\",\"index\":78,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-78\",\"index\":78,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-79\",\"index\":79,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-79\",\"index\":79,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-80\",\"index\":80,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-80\",\"index\":80,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-81\",\"index\":81,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-81\",\"index\":81,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-82\",\"index\":82,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-82\",\"index\":82,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-83\",\"index\":83,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-83\",\"index\":83,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-84\",\"index\":84,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-84\",\"index\":84,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-85\",\"index\":85,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-85\",\"index\":85,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-86\",\"index\":86,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-86\",\"index\":86,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-87\",\"index\":87,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-87\",\"index\":87,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-88\",\"index\":88,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-88\",\"index\":88,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-89\",\"index\":89,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-89\",\"index\":89,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-90\",\"index\":90,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-90\",\"index\":90,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-91\",\"index\":91,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-91\",\"index\":91,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-92\",\"index\":92,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-92\",\"index\":92,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-93\",\"index\":93,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-93\",\"index\":93,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-94\",\"index\":94,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-94\",\"index\":94,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-95\",\"index\":95,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-95\",\"index\":95,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-96\",\"index\":96,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-96\",\"index\":96,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-97\",\"index\":97,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-97\",\"index\":97,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-98\",\"index\":98,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-98\",\"index\":98,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-99\",\"index\":99,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-99\",\"index\":99,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-100\",\"index\":100,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-100\",\"index\":100,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-101\",\"index\":101,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-101\",\"index\":101,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-102\",\"index\":102,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-102\",\"index\":102,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-103\",\"index\":103,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-103\",\"index\":103,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-104\",\"index\":104,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-104\",\"index\":104,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-105\",\"index\":105,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-105\",\"index\":105,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-106\",\"index\":106,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-106\",\"index\":106,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-107\",\"index\":107,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-107\",\"index\":107,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-108\",\"index\":108,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-108\",\"index\":108,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-109\",\"index\":109,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-109\",\"index\":109,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-110\",\"index\":110,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-110\",\"index\":110,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-111\",\"index\":111,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-111\",\"index\":111,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-112\",\"index\":112,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-112\",\"index\":112,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-113\",\"index\":113,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-113\",\"index\":113,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-114\",\"index\":114,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-114\",\"index\":114,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-115\",\"index\":115,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-115\",\"index\":115,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-116\",\"index\":116,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-116\",\"index\":116,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-117\",\"index\":117,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-117\",\"index\":117,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-118\",\"index\":118,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-118\",\"index\":118,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-119\",\"index\":119,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-119\",\"index\":119,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-120\",\"index\":120,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-120\",\"index\":120,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-121\",\"index\":121,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-121\",\"index\":121,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-122\",\"index\":122,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-122\",\"index\":122,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-123\",\"index\":123,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-123\",\"index\":123,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-124\",\"index\":124,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-124\",\"index\":124,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-125\",\"index\":125,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-125\",\"index\":125,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-126\",\"index\":126,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-126\",\"index\":126,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, { "event": null, - "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-127\",\"index\":127,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0001\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", + "data": "{\"choices\":[{\"delta\":{\"tool_calls\":[{\"function\":{\"arguments\":\"{}\",\"name\":\"f\"},\"id\":\"id-127\",\"index\":127,\"type\":\"function\"}]},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0002\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null }, @@ -1758,4 +1759,4 @@ } } ] -} \ No newline at end of file +} diff --git a/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json b/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json new file mode 100644 index 0000000000..410a67b059 --- /dev/null +++ b/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json @@ -0,0 +1,122 @@ +{ + "version": 1, + "scenario_id": "vertex/fallback-response-id", + "protocol": "openai_chat_completions", + "provenance": { + "kind": "synthetic", + "provider": "synthetic", + "model": "synthetic-vertex-model", + "source_id": "controlled-vertex-fallback-response-id" + }, + "normalization": { + "version": 1, + "linked_ids": { + "chatcmpl-vertex-synthetic-finite-0001": "chatcmpl-recorded-0001", + "chatcmpl-vertex-synthetic-finite-0002": "chatcmpl-recorded-0002", + "chatcmpl-vertex-synthetic-stream-0001": "chatcmpl-recorded-0003" + } + }, + "turns": [ + { + "name": "finite-missing-response-id", + "client": { + "request": { + "method": "POST", + "path": "/v1/chat/completions", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"model": "synthetic-vertex-model", "messages": [{"role": "user", "content": "Hi"}]}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0001", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello", "refusal": null}, "finish_reason": "stop", "logprobs": null}], "usage": {}}} + } + }, + "upstream": { + "request": { + "method": "POST", + "path": "/v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:generateContent", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"contents": [{"role": "user", "parts": [{"text": "Hi"}]}]}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"candidates": [{"content": {"parts": [{"text": "Hello"}]}, "finishReason": "STOP"}]}} + } + } + }, + { + "name": "finite-missing-response-id-repeat", + "client": { + "request": { + "method": "POST", + "path": "/v1/chat/completions", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"model": "synthetic-vertex-model", "messages": [{"role": "user", "content": "Hi again"}]}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0002", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello again", "refusal": null}, "finish_reason": "stop", "logprobs": null}], "usage": {}}} + } + }, + "upstream": { + "request": { + "method": "POST", + "path": "/v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:generateContent", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"contents": [{"role": "user", "parts": [{"text": "Hi again"}]}]}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"candidates": [{"content": {"parts": [{"text": "Hello again"}]}, "finishReason": "STOP"}]}} + } + } + }, + { + "name": "streaming-missing-response-id", + "client": { + "request": { + "method": "POST", + "path": "/v1/chat/completions", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"model": "synthetic-vertex-model", "messages": [{"role": "user", "content": "Hi"}], "stream": true}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["text/event-stream"]}, + "body": { + "kind": "sse", + "frames": [ + {"event": null, "data": "{\"choices\":[{\"delta\":{\"content\":\"Hel\",\"role\":\"assistant\"},\"finish_reason\":null,\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0003\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null}, + {"event": null, "data": "{\"choices\":[{\"delta\":{\"content\":\"lo\"},\"finish_reason\":\"stop\",\"index\":0,\"logprobs\":null}],\"created\":0,\"id\":\"chatcmpl-recorded-0003\",\"model\":\"synthetic-vertex-model\",\"object\":\"chat.completion.chunk\"}", "id": null, "retry": null} + ], + "done": true + } + } + }, + "upstream": { + "request": { + "method": "POST", + "path": "/v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:streamGenerateContent?alt=sse", + "headers": {"content-type": ["application/json"]}, + "body": {"kind": "json", "value": {"contents": [{"role": "user", "parts": [{"text": "Hi"}]}]}} + }, + "response": { + "status": 200, + "headers": {"content-type": ["text/event-stream"]}, + "body": { + "kind": "sse", + "frames": [ + {"event": null, "data": "{\"candidates\":[{\"content\":{\"parts\":[{\"text\":\"Hel\"}]},\"index\":0}]}", "id": null, "retry": null}, + {"event": null, "data": "{\"candidates\":[{\"content\":{\"parts\":[{\"text\":\"lo\"}]},\"finishReason\":\"STOP\",\"index\":0}]}", "id": null, "retry": null} + ], + "done": false + } + } + } + } + ] +} diff --git a/tests/integration/fixtures/inference/scenarios/vertex/fallback-response-id.yaml b/tests/integration/fixtures/inference/scenarios/vertex/fallback-response-id.yaml new file mode 100644 index 0000000000..15057bd335 --- /dev/null +++ b/tests/integration/fixtures/inference/scenarios/vertex/fallback-response-id.yaml @@ -0,0 +1,73 @@ +version: 1 +id: vertex/fallback-response-id +description: Generate distinct completion IDs when Vertex omits responseId and retain one ID across stream chunks. +protocol: openai_chat_completions +example_config: vertex/chat-completions-to-gemini.yaml +upstream_authority: 127.0.0.1:3000 +features: + - vertex.gemini.response.fallback_id +turns: + - name: finite-missing-response-id + request: + method: POST + path: /v1/chat/completions + headers: + content-type: + - application/json + body: + kind: json + value: + model: ${MODEL} + messages: + - role: user + content: Hi + expect: + client_status: 200 + client_body_kind: json + upstream_path: /v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:generateContent + upstream_body_kind: json + client_sse_events: [] + upstream_sse_events: [] + - name: finite-missing-response-id-repeat + request: + method: POST + path: /v1/chat/completions + headers: + content-type: + - application/json + body: + kind: json + value: + model: ${MODEL} + messages: + - role: user + content: Hi again + expect: + client_status: 200 + client_body_kind: json + upstream_path: /v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:generateContent + upstream_body_kind: json + client_sse_events: [] + upstream_sse_events: [] + - name: streaming-missing-response-id + request: + method: POST + path: /v1/chat/completions + headers: + content-type: + - application/json + body: + kind: json + value: + model: ${MODEL} + messages: + - role: user + content: Hi + stream: true + expect: + client_status: 200 + client_body_kind: sse + upstream_path: /v1/projects/my-gcp-project/locations/us-central1/publishers/google/models/synthetic-vertex-model:streamGenerateContent?alt=sse + upstream_body_kind: json + client_sse_events: [] + upstream_sse_events: [] diff --git a/tests/integration/sdk/openai/test_vertex_gemini_chat_completions.py b/tests/integration/sdk/openai/test_vertex_gemini_chat_completions.py index efc11be2ca..f280aa2b6c 100755 --- a/tests/integration/sdk/openai/test_vertex_gemini_chat_completions.py +++ b/tests/integration/sdk/openai/test_vertex_gemini_chat_completions.py @@ -209,6 +209,9 @@ def _handle_streaming(self, request_json: dict[str, Any]) -> None: chunks = self._make_gemini_streaming_tool_chunks() else: chunks = self._make_gemini_streaming_chunks(user_text) + if "trigger missing stream response id" in user_text.lower(): + for chunk in chunks: + chunk.pop("responseId", None) if "trigger text metadata" in user_text.lower(): chunks[0]["candidates"][0]["content"]["parts"][0]["thought"] = False chunks[-1]["candidates"][0]["content"]["parts"].append( @@ -625,6 +628,19 @@ def test_streaming_basic(self, openai_client: OpenAI) -> None: "models/gemini-2.0-flash:streamGenerateContent?alt=sse" ) + def test_streaming_missing_response_id_is_stable(self, openai_client: OpenAI) -> None: + """A generated completion ID remains stable for all chunks of one stream.""" + with openai_client.chat.completions.create( + model="gemini-2.0-flash", + messages=[{"role": "user", "content": "Trigger missing stream response id"}], + stream=True, + ) as stream: + chunks = list(stream) + + ids = {chunk.id for chunk in chunks} + assert len(ids) == 1 + assert next(iter(ids)).startswith("chatcmpl-vertex-") + def test_tool_call(self, openai_client: OpenAI) -> None: """SDK receives a tool call and the backend sees Gemini declarations.""" response = openai_client.chat.completions.create( @@ -938,6 +954,9 @@ def test_multiple_requests_isolation(self, openai_client: OpenAI) -> None: assert response1.choices[0].message.content == "The answer is 4." assert response2.choices[0].message.content == "Hello! How can I help you today?" + assert response1.id.startswith("chatcmpl-vertex-") + assert response2.id.startswith("chatcmpl-vertex-") + assert response1.id != response2.id def test_tool_call_missing_arguments_rejected(self, vertex_proxy: int) -> None: """A tool call with no function.arguments field is rejected with 400.""" diff --git a/tests/integration/tests/suite/examples/vertex_gemini.rs b/tests/integration/tests/suite/examples/vertex_gemini.rs index a8837178a3..ade2a599cc 100644 --- a/tests/integration/tests/suite/examples/vertex_gemini.rs +++ b/tests/integration/tests/suite/examples/vertex_gemini.rs @@ -99,6 +99,12 @@ fn vertex_gemini_non_streaming_translates_response() { assert_chat_completion_response_schema(&parsed); assert_eq!(parsed["object"], "chat.completion"); assert_eq!(parsed["model"], "gemini-2.0-flash"); + assert!( + parsed["id"] + .as_str() + .is_some_and(|id| id.starts_with("chatcmpl-vertex-")), + "a response without Vertex responseId must receive a generated completion id" + ); assert_eq!( parsed["choices"][0]["message"]["content"], "4", "Gemini text part should become OpenAI message content" diff --git a/tests/utils/src/inference_fixture/coverage.rs b/tests/utils/src/inference_fixture/coverage.rs index a6a1af4b8e..ed3585bcd2 100644 --- a/tests/utils/src/inference_fixture/coverage.rs +++ b/tests/utils/src/inference_fixture/coverage.rs @@ -1299,6 +1299,7 @@ mod tests { vec!["openai_chat_completions_to_vertexai_gemini"], vec!["openai_chat_completions_to_vertexai_gemini"], vec!["openai_chat_completions_to_vertexai_gemini"], + vec!["openai_chat_completions_to_vertexai_gemini"], vec!["messages_to_chat_completions"], ] ); @@ -1381,11 +1382,12 @@ mod tests { CoverageStatus::SyntheticOnly, CoverageStatus::SyntheticOnly, CoverageStatus::SyntheticOnly, + CoverageStatus::SyntheticOnly, ] ); - assert_eq!(report.features_total, 72, "manifest feature inventory count"); - assert_eq!(report.scenarios_total, 60, "manifest scenario inventory count"); - assert_eq!(report.recordings_total, 65, "manifest recording inventory count"); + assert_eq!(report.features_total, 73, "manifest feature inventory count"); + assert_eq!(report.scenarios_total, 61, "manifest scenario inventory count"); + assert_eq!(report.recordings_total, 66, "manifest recording inventory count"); assert_eq!( scenarios.keys().collect::>(), vec![ @@ -1448,10 +1450,11 @@ mod tests { "responses/native-tool-call", "responses/responses-to-chat-completions-reasoning-agentic", "vertex/bounded-stream-limits", + "vertex/fallback-response-id", "vertex/invalid-content", ] ); - assert_eq!(manifest.features.len(), 72, "manifest must declare every feature"); + assert_eq!(manifest.features.len(), 73, "manifest must declare every feature"); assert_eq!(manifest.version, 1); assert_eq!( manifest @@ -1781,6 +1784,10 @@ mod tests { &"vertex.gemini.response.schema_complete".to_owned(), &vec!["vertex/invalid-content".to_owned()] ), + ( + &"vertex.gemini.response.fallback_id".to_owned(), + &vec!["vertex/fallback-response-id".to_owned()] + ), ( &"vertex.gemini.streaming.candidate_limit".to_owned(), &vec!["vertex/bounded-stream-limits".to_owned()] @@ -1953,7 +1960,7 @@ mod tests { .collect::>(), vec![("vllm", CoverageStatus::LiveCovered)], ); - for feature in &manifest.features[57..72] { + for feature in &manifest.features[57..73] { assert_eq!( feature .providers From ef4b76a57735f5c3950d28a34f827584ec6e6f08 Mon Sep 17 00:00:00 2001 From: noalimoy Date: Fri, 16 Oct 2026 00:54:25 +0300 Subject: [PATCH 2/3] test(inference): align Vertex fallback fixture schema Signed-off-by: noalimoy --- .../recordings/synthetic/vertex/fallback-response-id.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json b/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json index 410a67b059..35c8bdf90f 100644 --- a/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json +++ b/tests/integration/fixtures/inference/recordings/synthetic/vertex/fallback-response-id.json @@ -29,7 +29,7 @@ "response": { "status": 200, "headers": {"content-type": ["application/json"]}, - "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0001", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello", "refusal": null}, "finish_reason": "stop", "logprobs": null}], "usage": {}}} + "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0001", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello", "refusal": null}, "finish_reason": "stop", "logprobs": null}]}} } }, "upstream": { @@ -58,7 +58,7 @@ "response": { "status": 200, "headers": {"content-type": ["application/json"]}, - "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0002", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello again", "refusal": null}, "finish_reason": "stop", "logprobs": null}], "usage": {}}} + "body": {"kind": "json", "value": {"id": "chatcmpl-recorded-0002", "object": "chat.completion", "created": 0, "model": "synthetic-vertex-model", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Hello again", "refusal": null}, "finish_reason": "stop", "logprobs": null}]}} } }, "upstream": { From a82148b62569136666d0c96899b0fe58aae8e2e4 Mon Sep 17 00:00:00 2001 From: noalimoy Date: Fri, 16 Oct 2026 01:02:04 +0300 Subject: [PATCH 3/3] fix(vertex): defer fallback ID selection Signed-off-by: noalimoy --- apis/src/vertex/gemini/response.rs | 44 ++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/apis/src/vertex/gemini/response.rs b/apis/src/vertex/gemini/response.rs index 00bf3d4b5a..3e54155764 100644 --- a/apis/src/vertex/gemini/response.rs +++ b/apis/src/vertex/gemini/response.rs @@ -144,9 +144,10 @@ impl StreamTranslateState { } } - /// Set the OpenAI completion id once: Vertex `responseId` when the first - /// frame has one, otherwise a generated fallback. Later frames cannot - /// change it (a late `responseId` must not rewrite earlier chunk ids). + /// Set the OpenAI completion id once when an emitted chunk first needs it: + /// use Vertex `responseId` when present, otherwise generate a fallback. + /// Later frames cannot change it (a late `responseId` must not rewrite + /// earlier chunk ids). fn ensure_completion_id(&mut self, response_id: Option<&str>) -> Result<(), String> { if self.completion_id.is_none() { self.completion_id = Some(response_id_or_minted_fallback(response_id)?); @@ -637,7 +638,6 @@ pub(crate) fn transform_stream_chunk( let value: Value = serde_json::from_slice(data).map_err(|e| format!("invalid JSON: {e}"))?; let obj = value.as_object(); - state.ensure_completion_id(obj.and_then(|o| o.get("responseId")).and_then(Value::as_str))?; state.capture_usage(obj); // Detect upstream errors and content blocks that arrive as valid JSON @@ -656,6 +656,7 @@ pub(crate) fn transform_stream_chunk( return Ok(None); } + state.ensure_completion_id(obj.and_then(|o| o.get("responseId")).and_then(Value::as_str))?; serialize_stream_chunk(choices, model, state) } @@ -711,8 +712,13 @@ pub(crate) fn take_stream_usage_chunk(state: &mut StreamTranslateState, model: & if !state.include_usage { return None; } - let completion_id = state.completion_id.as_deref()?; + state.usage.as_ref()?; + if let Err(error) = state.ensure_completion_id(None) { + warn!(%error, "failed to generate completion id for trailing usage chunk"); + return None; + } let usage = state.usage.take()?; + let completion_id = state.completion_id.as_deref()?; let chunk = json!({ "id": completion_id, "object": "chat.completion.chunk", @@ -2314,6 +2320,34 @@ mod tests { serde_json::from_slice(&take_stream_usage_chunk(&mut state, "gemini-2.0-flash").unwrap()).unwrap(); assert_eq!(usage["choices"], json!([])); assert_eq!(usage["usage"]["total_tokens"], 15); + assert!(usage["id"].as_str().unwrap().starts_with("chatcmpl-vertex-")); + } + + #[test] + fn stream_metadata_first_preserves_later_response_id() { + let mut state = new_stream_state(1); + state.set_include_usage(true); + assert!( + transform_stream_chunk( + br#"{"usageMetadata":{"promptTokenCount":10,"candidatesTokenCount":5,"totalTokenCount":15}}"#, + "gemini-2.0-flash", + &mut state, + ) + .unwrap() + .is_none() + ); + assert!(state.completion_id.is_none()); + + let content = translate_stream( + &mut state, + br#"{"responseId":"resp-after-metadata","candidates":[{"content":{"parts":[{"text":"Hi"}]},"finishReason":"STOP"}]}"#, + ); + assert_eq!(content["id"], "resp-after-metadata"); + + let usage: Value = + serde_json::from_slice(&take_stream_usage_chunk(&mut state, "gemini-2.0-flash").unwrap()).unwrap(); + assert_eq!(usage["id"], "resp-after-metadata"); + assert_eq!(usage["usage"]["total_tokens"], 15); } #[test]