diff --git a/crates/lingua/src/providers/openai/convert.rs b/crates/lingua/src/providers/openai/convert.rs index c2491269..69b09ea2 100644 --- a/crates/lingua/src/providers/openai/convert.rs +++ b/crates/lingua/src/providers/openai/convert.rs @@ -870,6 +870,21 @@ fn provider_options_from_openai_tool_call(namespace: Option) -> Option

) -> Result<(), ConvertError> { + match namespace { + Some(namespace) if !namespace.is_empty() => Err(ConvertError::UnsupportedMapping { + from: format!("OpenAI Responses function_call_output namespace '{namespace}'"), + to: "Lingua tool result (tool namespaces are provider-scoped registry state)", + }), + _ => Ok(()), + } +} + fn non_completed_function_call_status_to_string( status: Option, field: &str, @@ -1703,6 +1718,8 @@ impl TryFromLLM> for Vec { field: "function call output call_id".to_string(), })?; + reject_function_call_output_namespace(input.namespace.as_deref())?; + let output = input .output .map(openai_output_to_string) @@ -3231,6 +3248,12 @@ impl TryFromLLM for openai::InputItem { Some(openai::OutputItemType::CustomToolCall) => { Some(openai::InputItemType::CustomToolCall) } + Some(openai::OutputItemType::FunctionCallOutput) => { + Some(openai::InputItemType::FunctionCallOutput) + } + Some(openai::OutputItemType::CustomToolCallOutput) => { + Some(openai::InputItemType::CustomToolCallOutput) + } Some(openai::OutputItemType::Program) => Some(openai::InputItemType::Program), Some(openai::OutputItemType::ProgramOutput) => { Some(openai::InputItemType::ProgramOutput) @@ -3875,6 +3898,20 @@ impl TryFromLLM> for Vec { messages.push(tool_discovery::message_from_output_additional_tools(item)?); continue; } + Some(openai::OutputItemType::FunctionCallOutput) + | Some(openai::OutputItemType::CustomToolCallOutput) => { + // Tool results carry no output-only fields, so reuse the + // request-side input item conversion instead of duplicating + // it; that keeps both directions in step. + let input_item = + >::try_from(item)?; + messages.extend( + as TryFromLLM>>::try_from(vec![ + input_item, + ])?, + ); + continue; + } _ => { // Skip unknown output item types continue; @@ -5749,6 +5786,7 @@ mod tests { use crate::capabilities::ProviderFormat; use crate::processing::transform::transform_request; use crate::serde_json::json; + use crate::TransformResult; use bytes::Bytes; fn wav_base64() -> String { @@ -8506,4 +8544,214 @@ mod tests { Some(openai::InputItemType::AdditionalTools) ); } + + fn function_call_output_item( + output_item_type: openai::OutputItemType, + name: Option<&str>, + ) -> openai::OutputItem { + openai::OutputItem { + output_item_type: Some(output_item_type), + call_id: Some("call_list_databases".to_string()), + name: name.map(str::to_string), + output: Some(openai::OutputUnion::String( + r#"{"databases":["admin"]}"#.to_string(), + )), + ..Default::default() + } + } + + fn single_tool_result(messages: &[Message]) -> &ToolResultContentPart { + let [Message::Tool { content }] = messages else { + panic!("expected exactly one tool message, got {messages:?}"); + }; + let [ToolContentPart::ToolResult(result)] = content.as_slice() else { + panic!("expected exactly one tool result, got {content:?}"); + }; + result + } + + #[test] + fn responses_response_import_maps_function_call_output_to_tool_result() { + let messages = as TryFromLLM>>::try_from(vec![ + function_call_output_item( + openai::OutputItemType::FunctionCallOutput, + Some("list_databases"), + ), + ]) + .expect("function_call_output output item should import"); + + let result = single_tool_result(&messages); + assert_eq!(result.tool_call_id, "call_list_databases"); + assert_eq!(result.tool_name, "list_databases"); + assert_eq!(result.output, json!({"databases": ["admin"]})); + assert_eq!(result.custom_tool_call, None); + } + + #[test] + fn responses_response_import_maps_custom_tool_call_output_to_tool_result() { + let messages = as TryFromLLM>>::try_from(vec![ + function_call_output_item( + openai::OutputItemType::CustomToolCallOutput, + Some("list_databases"), + ), + ]) + .expect("custom_tool_call_output output item should import"); + + let result = single_tool_result(&messages); + assert_eq!(result.tool_name, "list_databases"); + assert_eq!(result.custom_tool_call, Some(true)); + } + + #[test] + fn responses_response_function_call_output_without_call_id_is_rejected() { + let item = openai::OutputItem { + call_id: None, + ..function_call_output_item( + openai::OutputItemType::FunctionCallOutput, + Some("list_databases"), + ) + }; + + let error = as TryFromLLM>>::try_from(vec![item]) + .expect_err("function_call_output without call_id should be rejected"); + assert!( + matches!(error, ConvertError::MissingRequiredField { ref field } + if field == "function call output call_id"), + "unexpected error: {error:?}" + ); + } + + #[test] + fn responses_response_function_call_output_tool_name_round_trips() { + for name in [Some("list_databases"), None] { + let item = function_call_output_item(openai::OutputItemType::FunctionCallOutput, name); + let messages = + as TryFromLLM>>::try_from(vec![item.clone()]) + .expect("function_call_output output item should import"); + let exported = + as TryFromLLM>>::try_from(messages) + .expect("tool result should export as an output item"); + + let [exported_item] = exported.as_slice() else { + panic!("expected exactly one output item, got {exported:?}"); + }; + // An absent name must stay absent rather than becoming the empty + // string, which the spec rejects via `minLength: 1`. + assert_eq!(exported_item.name, item.name); + assert_eq!(exported_item.call_id, item.call_id); + assert_eq!( + exported_item.output_item_type, + Some(openai::OutputItemType::FunctionCallOutput) + ); + } + } + + fn responses_request_with_function_call_output(namespace: Option<&str>) -> serde_json::Value { + let mut output_item = json!({ + "type": "function_call_output", + "call_id": "call_list_databases", + "name": "list_databases", + "output": r#"{"databases":["admin"]}"# + }); + if let Some(namespace) = namespace { + output_item["namespace"] = json!(namespace); + } + + json!({ + "model": "gpt-5.1", + "input": [ + {"role": "user", "content": "Which databases exist?"}, + { + "type": "function_call", + "call_id": "call_list_databases", + "name": "list_databases", + "arguments": "{}" + }, + output_item + ] + }) + } + + #[test] + fn function_call_output_namespace_survives_same_format_passthrough() { + let request = responses_request_with_function_call_output(Some("mongodb")); + let bytes = Bytes::from(serde_json::to_vec(&request).unwrap()); + + let transformed = transform_request(bytes.clone(), ProviderFormat::Responses, None) + .expect("same-format Responses request should transform"); + + match transformed.result { + TransformResult::PassThrough(passed) => assert_eq!(passed, bytes), + other => panic!("expected byte-preserving passthrough, got {other:?}"), + } + } + + #[test] + fn function_call_output_namespace_is_rejected_on_cross_provider_import() { + let with_namespace = responses_request_with_function_call_output(Some("mongodb")); + let error = transform_request( + Bytes::from(serde_json::to_vec(&with_namespace).unwrap()), + ProviderFormat::Anthropic, + None, + ) + .expect_err("function_call_output namespace should not convert cross-provider"); + let message = error.to_string(); + assert!( + message.contains("namespace") && message.contains("function_call_output"), + "error should name the unsupported field and item kind: {message}" + ); + + let without_namespace = responses_request_with_function_call_output(None); + transform_request( + Bytes::from(serde_json::to_vec(&without_namespace).unwrap()), + ProviderFormat::Anthropic, + None, + ) + .expect("the same item without a namespace should still convert"); + } + + #[test] + fn function_call_output_namespace_is_not_smuggled_into_the_tool_result() { + let input_item = openai::InputItem { + input_item_type: Some(openai::InputItemType::FunctionCallOutput), + call_id: Some("call_list_databases".to_string()), + name: Some("list_databases".to_string()), + output: Some(openai::Output::String("ok".to_string())), + ..Default::default() + }; + + let messages = + as TryFromLLM>>::try_from(vec![input_item]) + .expect("function_call_output input item should import"); + + // Pinning the serialized shape guards against reintroducing the opaque + // round-trip carrier used by the tool-call arm: any extra key here means + // provider-scoped state slipped into the universal model. + assert_eq!( + serde_json::to_value(single_tool_result(&messages)).unwrap(), + json!({ + "tool_call_id": "call_list_databases", + "tool_name": "list_databases", + "output": "ok", + }) + ); + } + + #[test] + fn response_function_call_output_namespace_is_rejected_on_import() { + let item = openai::OutputItem { + namespace: Some("mongodb".to_string()), + ..function_call_output_item( + openai::OutputItemType::FunctionCallOutput, + Some("list_databases"), + ) + }; + + let error = as TryFromLLM>>::try_from(vec![item]) + .expect_err("response-side namespace should not enter the universal model"); + assert!( + matches!(error, ConvertError::UnsupportedMapping { .. }), + "unexpected error: {error:?}" + ); + } } diff --git a/crates/lingua/src/providers/openai/generated.rs b/crates/lingua/src/providers/openai/generated.rs index 1ce271e6..83e4fe4e 100644 --- a/crates/lingua/src/providers/openai/generated.rs +++ b/crates/lingua/src/providers/openai/generated.rs @@ -6071,6 +6071,9 @@ pub struct OutputItem { /// The name of the function to run. /// /// + /// The name of the tool that produced the output. + /// + /// /// The name of the tool that was run. /// /// @@ -6083,6 +6086,9 @@ pub struct OutputItem { /// The namespace of the function to run. /// /// + /// The namespace of the tool that produced the output. + /// + /// /// The namespace of the custom tool being called. #[serde(skip_serializing_if = "Option::is_none")] pub namespace: Option, diff --git a/crates/lingua/tests/openai_function_call_output_namespace.rs b/crates/lingua/tests/openai_function_call_output_namespace.rs new file mode 100644 index 00000000..3597a65c --- /dev/null +++ b/crates/lingua/tests/openai_function_call_output_namespace.rs @@ -0,0 +1,64 @@ +use lingua::{ + serde_json, serde_json::json, Bytes, ProviderFormat, TransformError, TransformResult, +}; + +fn responses_request_with_namespaced_tool_output() -> Bytes { + let request = json!({ + "model": "gpt-5.1", + "input": [ + {"role": "user", "content": "Which databases exist?"}, + { + "type": "function_call", + "call_id": "call_list_databases", + "name": "list_databases", + "arguments": "{}" + }, + { + "type": "function_call_output", + "call_id": "call_list_databases", + "name": "list_databases", + "namespace": "mongodb", + "output": "{\"databases\":[\"admin\"]}" + } + ] + }); + + Bytes::from(serde_json::to_vec(&request).expect("request serializes")) +} + +#[test] +fn openai_function_call_output_namespace_cross_provider_transform_is_unsupported() { + for target in [ProviderFormat::Anthropic, ProviderFormat::Google] { + let error = lingua::transform_request( + responses_request_with_namespaced_tool_output(), + target, + None, + ) + .expect_err("a provider-scoped tool namespace has no cross-provider mapping"); + + let TransformError::ToUniversalFailed(reason) = &error else { + panic!("expected a to-universal conversion failure for {target:?}, got {error:?}"); + }; + assert!( + reason.contains("Unsupported mapping"), + "rejection must use the unsupported-mapping category: {reason}" + ); + assert!( + reason.contains("namespace") && reason.contains("function_call_output"), + "rejection must name the field and item kind it refuses: {reason}" + ); + } +} + +#[test] +fn openai_function_call_output_namespace_survives_native_passthrough() { + let request = responses_request_with_namespaced_tool_output(); + + let result = lingua::transform_request(request.clone(), ProviderFormat::Responses, None) + .expect("a native Responses request must still pass through"); + + let TransformResult::PassThrough(actual) = result.result else { + panic!("native Responses requests must not be re-serialized"); + }; + assert_eq!(actual, request); +} diff --git a/crates/lingua/tests/openai_function_call_output_tool_name.rs b/crates/lingua/tests/openai_function_call_output_tool_name.rs new file mode 100644 index 00000000..880d56ef --- /dev/null +++ b/crates/lingua/tests/openai_function_call_output_tool_name.rs @@ -0,0 +1,91 @@ +use lingua::universal::{Message, ToolContentPart}; +use lingua::{serde_json, serde_json::json, Bytes, ProviderFormat, TransformResult}; + +fn responses_response_with_function_call_output() -> Bytes { + let response = json!({ + "id": "resp_tool_name", + "object": "response", + "created_at": 1_759_000_000u64, + "status": "completed", + "model": "gpt-5.1", + "output": [ + { + "type": "function_call", + "id": "fc_1", + "call_id": "call_list_databases", + "name": "list_databases", + "arguments": "{}" + }, + { + "type": "function_call_output", + "id": "fco_1", + "call_id": "call_list_databases", + "name": "list_databases", + "output": "{\"databases\":[\"admin\"]}" + } + ], + "usage": {"input_tokens": 12, "output_tokens": 5, "total_tokens": 17} + }); + + Bytes::from(serde_json::to_vec(&response).expect("response serializes")) +} + +#[test] +fn responses_response_function_call_output_imports_as_universal_tool_result() { + let universal = lingua::response_to_universal(responses_response_with_function_call_output()) + .expect("Responses response parses"); + + let tool_result = universal + .messages + .iter() + .find_map(|message| match message { + Message::Tool { content } => content.iter().find_map(|part| match part { + ToolContentPart::ToolResult(result) => Some(result), + _ => None, + }), + _ => None, + }) + .expect("function_call_output must import instead of being dropped"); + + assert_eq!(tool_result.tool_call_id, "call_list_databases"); + assert_eq!(tool_result.tool_name, "list_databases"); + assert_eq!(tool_result.output, json!({"databases": ["admin"]})); +} + +#[test] +fn responses_response_with_function_call_output_transforms_to_google_tool_result() { + let result = lingua::transform_response( + responses_response_with_function_call_output(), + ProviderFormat::Google, + ) + .expect("Responses response with a tool output converts to Google"); + + let TransformResult::Transformed { bytes, .. } = result.result else { + panic!("cross-provider response conversion must transform"); + }; + + let converted: serde_json::Value = + serde_json::from_slice(&bytes).expect("converted response is JSON"); + let function_response = converted["candidates"] + .as_array() + .expect("Google responses carry candidates") + .iter() + .flat_map(|candidate| { + candidate["content"]["parts"] + .as_array() + .cloned() + .unwrap_or_default() + }) + .find(|part| part.get("functionResponse").is_some()) + .expect("the tool output must survive as a Google functionResponse part"); + + assert_eq!( + function_response["functionResponse"]["name"], + json!("list_databases"), + "tool name must be carried across providers: {converted}" + ); + assert_eq!( + function_response["functionResponse"]["response"], + json!({"databases": ["admin"]}) + ); +} diff --git a/payloads/cases/params.ts b/payloads/cases/params.ts index b911946d..d914db09 100644 --- a/payloads/cases/params.ts +++ b/payloads/cases/params.ts @@ -867,6 +867,54 @@ export const paramsCases: TestCaseCollection = { bedrock: null, }, + responsesFunctionCallOutputToolNameParam: { + "chat-completions": null, + responses: { + model: OPENAI_RESPONSES_MODEL, + input: [ + { + role: "user", + content: [ + { + type: "input_text", + text: "What databases exist in the connected MongoDB instance? Use the list_databases tool.", + }, + ], + }, + { + type: "function_call", + call_id: "6k7x6c84", + name: "list_databases", + arguments: "{}", + }, + { + type: "function_call_output", + call_id: "6k7x6c84", + name: "list_databases", + output: + '[{"type":"text","text":"{\\"databases\\":[\\"admin\\",\\"config\\",\\"local\\"]}"}]', + }, + ], + tools: [ + { + type: "function", + name: "list_databases", + description: "List databases in the connected MongoDB instance.", + parameters: { + type: "object", + properties: {}, + additionalProperties: false, + }, + strict: false, + }, + ], + tool_choice: "auto", + }, + anthropic: null, + google: null, + bedrock: null, + }, + responsesAdditionalToolsParam: { "chat-completions": null, responses: { diff --git a/payloads/cases/types.ts b/payloads/cases/types.ts index 64c3bb3d..4cab313e 100644 --- a/payloads/cases/types.ts +++ b/payloads/cases/types.ts @@ -82,12 +82,21 @@ type OpenAIResponseReasoningReplayItem = Omit< id?: string; }; +// Function call outputs carry the name of the tool that produced them, which +// the installed SDK's input-item type does not expose yet. +type OpenAIResponseFunctionCallOutputWithName = + OpenAI.Responses.ResponseInputItem.FunctionCallOutput & { + name?: string; + }; + type OpenAIResponseInputItem = | Exclude< OpenAI.Responses.ResponseInputItem, - OpenAI.Responses.ResponseReasoningItem + | OpenAI.Responses.ResponseReasoningItem + | OpenAI.Responses.ResponseInputItem.FunctionCallOutput > | OpenAIResponseReasoningReplayItem + | OpenAIResponseFunctionCallOutputWithName | OpenAI.Beta.Responses.BetaResponseInputItem.AgentMessage; type OpenAIResponseCreateParamsWithExtendedServiceTier = T extends unknown diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-request.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-request.json new file mode 100644 index 00000000..9365bd9a --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-request.json @@ -0,0 +1,59 @@ +{ + "model": "gpt-5.6-terra", + "input": [ + { + "role": "user", + "content": [ + { + "type": "input_text", + "text": "What databases exist in the connected MongoDB instance? Use the list_databases tool." + } + ] + }, + { + "type": "function_call", + "call_id": "6k7x6c84", + "name": "list_databases", + "arguments": "{}" + }, + { + "type": "function_call_output", + "call_id": "6k7x6c84", + "name": "list_databases", + "output": "[{\"type\":\"text\",\"text\":\"{\\\"databases\\\":[\\\"admin\\\",\\\"config\\\",\\\"local\\\"]}\"}]" + }, + { + "id": "msg_0c54b9937bf86ca7006aa836efb54c87d284054c143065d1a0", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + } + ], + "phase": "final_answer", + "role": "assistant" + }, + { + "role": "user", + "content": "What should I do next?" + } + ], + "tools": [ + { + "type": "function", + "name": "list_databases", + "description": "List databases in the connected MongoDB instance.", + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "tool_choice": "auto" +} \ No newline at end of file diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response-streaming.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response-streaming.json new file mode 100644 index 00000000..870cf159 --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response-streaming.json @@ -0,0 +1,1370 @@ +[ + { + "type": "response.created", + "response": { + "id": "resp_0c54b9937bf86ca7006aa836f05c7087d2bd4da0f3aa21113d", + "object": "response", + "created_at": 1789409008, + "status": "in_progress", + "background": false, + "completed_at": null, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "auto", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": null, + "user": null, + "metadata": {} + }, + "sequence_number": 0 + }, + { + "type": "response.in_progress", + "response": { + "id": "resp_0c54b9937bf86ca7006aa836f05c7087d2bd4da0f3aa21113d", + "object": "response", + "created_at": 1789409008, + "status": "in_progress", + "background": false, + "completed_at": null, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "auto", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": null, + "user": null, + "metadata": {} + }, + "sequence_number": 1 + }, + { + "type": "response.output_item.added", + "item": { + "id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "type": "message", + "status": "in_progress", + "content": [], + "phase": "final_answer", + "role": "assistant" + }, + "output_index": 0, + "sequence_number": 2 + }, + { + "type": "response.content_part.added", + "content_index": 0, + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "output_index": 0, + "part": { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "" + }, + "sequence_number": 3 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Those", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "d1mDd1DPMb2", + "output_index": 0, + "sequence_number": 4 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " are", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "YO4dzKmaPt7K", + "output_index": 0, + "sequence_number": 5 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " Mongo", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "HgV8eSSoJg", + "output_index": 0, + "sequence_number": 6 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "DB", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "2W5UD9Yf9K6vn3", + "output_index": 0, + "sequence_number": 7 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "’s", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "0TQULbOa0TzBrX", + "output_index": 0, + "sequence_number": 8 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " default", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "j6LWCvPX", + "output_index": 0, + "sequence_number": 9 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " system", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "VhHLje1wN", + "output_index": 0, + "sequence_number": 10 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " databases", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "OPk2R7", + "output_index": 0, + "sequence_number": 11 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ",", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "m0NqTFVFwWav6Xn", + "output_index": 0, + "sequence_number": 12 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " so", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "HTuelyK8agoT5", + "output_index": 0, + "sequence_number": 13 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " there", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "dcPzIIRTqr", + "output_index": 0, + "sequence_number": 14 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " may", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "LXyJwAnyDl9z", + "output_index": 0, + "sequence_number": 15 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " not", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "3rnxs1vmGxSK", + "output_index": 0, + "sequence_number": 16 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " be", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "lUmMS383EUexd", + "output_index": 0, + "sequence_number": 17 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " application", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "rQHK", + "output_index": 0, + "sequence_number": 18 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " data", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "8UvV4Jmk2cr", + "output_index": 0, + "sequence_number": 19 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " loaded", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "40zhRmtCw", + "output_index": 0, + "sequence_number": 20 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " yet", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "FyvQnLCNvu6r", + "output_index": 0, + "sequence_number": 21 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".\n\n", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "93irMex4O6G7c", + "output_index": 0, + "sequence_number": 22 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Next", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "IxlA9hHZfGJ4", + "output_index": 0, + "sequence_number": 23 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " steps", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "Xpu3gptKCc", + "output_index": 0, + "sequence_number": 24 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " you", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "n2JDU0kHE3Bl", + "output_index": 0, + "sequence_number": 25 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " could", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "mTohEQnmVL", + "output_index": 0, + "sequence_number": 26 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " take", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "q12zdSfGvPr", + "output_index": 0, + "sequence_number": 27 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ":\n\n", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "QgWomiijEYaIL", + "output_index": 0, + "sequence_number": 28 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "1", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "1fWbPwcS1ilTH56", + "output_index": 0, + "sequence_number": 29 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "GmBMadS4ZPxgnYw", + "output_index": 0, + "sequence_number": 30 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " **", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "XQZqHAWM4YndH", + "output_index": 0, + "sequence_number": 31 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Check", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "xml62plL6Ds", + "output_index": 0, + "sequence_number": 32 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " collections", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "yPSJ", + "output_index": 0, + "sequence_number": 33 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "**", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "gaGeYlPr7Z8jy7", + "output_index": 0, + "sequence_number": 34 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " in", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "SltxKBerRf06H", + "output_index": 0, + "sequence_number": 35 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " each", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "dVUJQrWerOx", + "output_index": 0, + "sequence_number": 36 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " database", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "IhC71iX", + "output_index": 0, + "sequence_number": 37 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ",", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "xp6kJC3SnFzDGOq", + "output_index": 0, + "sequence_number": 38 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " especially", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "BAJeC", + "output_index": 0, + "sequence_number": 39 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " `", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "ZL2DR66keprY5C", + "output_index": 0, + "sequence_number": 40 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "admin", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "PIh8MiN3Rw4", + "output_index": 0, + "sequence_number": 41 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "`", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "EfhKSOK42WxHxwb", + "output_index": 0, + "sequence_number": 42 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " and", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "JPtAf1x2nOoG", + "output_index": 0, + "sequence_number": 43 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " `", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "QQeEYhGIiJVeBr", + "output_index": 0, + "sequence_number": 44 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "config", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "SNWqYv6kTh", + "output_index": 0, + "sequence_number": 45 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "`,", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "WivFPLPJRSj0T9", + "output_index": 0, + "sequence_number": 46 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " to", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "NigGlTBkFYUHg", + "output_index": 0, + "sequence_number": 47 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " confirm", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "xsPP6URW", + "output_index": 0, + "sequence_number": 48 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " whether", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "5f3vKlaH", + "output_index": 0, + "sequence_number": 49 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " anything", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "oHJuDbd", + "output_index": 0, + "sequence_number": 50 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " custom", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "EqibTV49x", + "output_index": 0, + "sequence_number": 51 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " exists", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "aMTMgUzJp", + "output_index": 0, + "sequence_number": 52 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".\n", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "nljm99pKWDZ9q9", + "output_index": 0, + "sequence_number": 53 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "2", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "fkQsqlTmlu6cQkx", + "output_index": 0, + "sequence_number": 54 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "GBmdNxNN4AHQoV3", + "output_index": 0, + "sequence_number": 55 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " **", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "zofI4coXpWMOW", + "output_index": 0, + "sequence_number": 56 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Create", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "3Bux3Dk9Vb", + "output_index": 0, + "sequence_number": 57 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " or", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "hWgzGV9d1JCx4", + "output_index": 0, + "sequence_number": 58 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " connect", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "BHYBHuNh", + "output_index": 0, + "sequence_number": 59 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " to", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "Jni6MUJP9GVs5", + "output_index": 0, + "sequence_number": 60 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " an", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "vTri045XR2fas", + "output_index": 0, + "sequence_number": 61 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " application", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "SpAU", + "output_index": 0, + "sequence_number": 62 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " database", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "4PV8VWU", + "output_index": 0, + "sequence_number": 63 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "**", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "2V6h94ExRL4Zt1", + "output_index": 0, + "sequence_number": 64 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " if", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "51ZiaXklhr2Et", + "output_index": 0, + "sequence_number": 65 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " you", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "6gFCTp2Zc6Mr", + "output_index": 0, + "sequence_number": 66 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "’re", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "sf4j47sYOXZGC", + "output_index": 0, + "sequence_number": 67 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " setting", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "K0y007bT", + "output_index": 0, + "sequence_number": 68 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " up", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "MZsTVH6y63fkH", + "output_index": 0, + "sequence_number": 69 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " a", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "u8KLl4Tmr7ZYEr", + "output_index": 0, + "sequence_number": 70 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " new", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "3GT1UXxd1lr0", + "output_index": 0, + "sequence_number": 71 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " project", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "XoWQdHJF", + "output_index": 0, + "sequence_number": 72 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".\n", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "mKDf6X8lpcAjpa", + "output_index": 0, + "sequence_number": 73 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "3", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "kNez14YGwzjImgR", + "output_index": 0, + "sequence_number": 74 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "KPG0T5GgBBnHORs", + "output_index": 0, + "sequence_number": 75 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " **", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "W0aArsE419LvF", + "output_index": 0, + "sequence_number": 76 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Load", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "ljL9Z9ciA4z5", + "output_index": 0, + "sequence_number": 77 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "/import", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "w0B5X6iWU", + "output_index": 0, + "sequence_number": 78 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " data", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "2c5bA9Elz9A", + "output_index": 0, + "sequence_number": 79 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "**", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "J0MPcQPyXoykIl", + "output_index": 0, + "sequence_number": 80 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " if", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "MD6euKXT8EAHW", + "output_index": 0, + "sequence_number": 81 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " you", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "ErGyZgRxs7Ez", + "output_index": 0, + "sequence_number": 82 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " expected", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "qqsuMSH", + "output_index": 0, + "sequence_number": 83 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " an", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "d1zvS6zFyIDPa", + "output_index": 0, + "sequence_number": 84 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " existing", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "uBH0Qgz", + "output_index": 0, + "sequence_number": 85 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " dataset", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "hqB7bdpM", + "output_index": 0, + "sequence_number": 86 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".\n", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "3xZHNIlxZBISwn", + "output_index": 0, + "sequence_number": 87 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "4", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "t5jPNf2DvF1b2De", + "output_index": 0, + "sequence_number": 88 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "Sy0FA4FVR5i1Cu8", + "output_index": 0, + "sequence_number": 89 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " **", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "zuxWCVWB3XfMB", + "output_index": 0, + "sequence_number": 90 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "Verify", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "ay7pB0iyZO", + "output_index": 0, + "sequence_number": 91 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " your", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "COMUSrqbFeI", + "output_index": 0, + "sequence_number": 92 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " connection", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "cceuk", + "output_index": 0, + "sequence_number": 93 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " string", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "bIsfwGq1s", + "output_index": 0, + "sequence_number": 94 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "**", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "yVcOnEJynd9o5A", + "output_index": 0, + "sequence_number": 95 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " if", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "nwZylfsp0yQcY", + "output_index": 0, + "sequence_number": 96 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " you", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "8c3QuA6liV9I", + "output_index": 0, + "sequence_number": 97 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " expected", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "lWSYxUu", + "output_index": 0, + "sequence_number": 98 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " to", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "KJeNttMwmxtDj", + "output_index": 0, + "sequence_number": 99 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " see", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "7VmXKFmszirT", + "output_index": 0, + "sequence_number": 100 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " other", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "YbKSzo6SfK", + "output_index": 0, + "sequence_number": 101 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " databases", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "BbkXI2", + "output_index": 0, + "sequence_number": 102 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " but", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "vTllixZ1jvn5", + "output_index": 0, + "sequence_number": 103 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " don", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "aS06WfX4uDS2", + "output_index": 0, + "sequence_number": 104 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "’t", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "nHEewHPXjWUrZu", + "output_index": 0, + "sequence_number": 105 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ".", + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "obfuscation": "wTei1947CULxoju", + "output_index": 0, + "sequence_number": 106 + }, + { + "type": "response.output_text.done", + "content_index": 0, + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "logprobs": [], + "output_index": 0, + "sequence_number": 107, + "text": "Those are MongoDB’s default system databases, so there may not be application data loaded yet.\n\nNext steps you could take:\n\n1. **Check collections** in each database, especially `admin` and `config`, to confirm whether anything custom exists.\n2. **Create or connect to an application database** if you’re setting up a new project.\n3. **Load/import data** if you expected an existing dataset.\n4. **Verify your connection string** if you expected to see other databases but don’t." + }, + { + "type": "response.content_part.done", + "content_index": 0, + "item_id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "output_index": 0, + "part": { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Those are MongoDB’s default system databases, so there may not be application data loaded yet.\n\nNext steps you could take:\n\n1. **Check collections** in each database, especially `admin` and `config`, to confirm whether anything custom exists.\n2. **Create or connect to an application database** if you’re setting up a new project.\n3. **Load/import data** if you expected an existing dataset.\n4. **Verify your connection string** if you expected to see other databases but don’t." + }, + "sequence_number": 108 + }, + { + "type": "response.output_item.done", + "item": { + "id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Those are MongoDB’s default system databases, so there may not be application data loaded yet.\n\nNext steps you could take:\n\n1. **Check collections** in each database, especially `admin` and `config`, to confirm whether anything custom exists.\n2. **Create or connect to an application database** if you’re setting up a new project.\n3. **Load/import data** if you expected an existing dataset.\n4. **Verify your connection string** if you expected to see other databases but don’t." + } + ], + "phase": "final_answer", + "role": "assistant" + }, + "output_index": 0, + "sequence_number": 109 + }, + { + "type": "response.completed", + "response": { + "id": "resp_0c54b9937bf86ca7006aa836f05c7087d2bd4da0f3aa21113d", + "object": "response", + "created_at": 1789409008, + "status": "completed", + "background": false, + "completed_at": 1789409010, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [ + { + "id": "msg_0c54b9937bf86ca7006aa836f129a487d283ab2642545ad582", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "Those are MongoDB’s default system databases, so there may not be application data loaded yet.\n\nNext steps you could take:\n\n1. **Check collections** in each database, especially `admin` and `config`, to confirm whether anything custom exists.\n2. **Create or connect to an application database** if you’re setting up a new project.\n3. **Load/import data** if you expected an existing dataset.\n4. **Verify your connection string** if you expected to see other databases but don’t." + } + ], + "phase": "final_answer", + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": { + "input_tokens": 144, + "input_tokens_details": { + "cache_write_tokens": 0, + "cached_tokens": 0 + }, + "output_tokens": 107, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 251 + }, + "user": null, + "metadata": {} + }, + "sequence_number": 110 + } +] \ No newline at end of file diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response.json new file mode 100644 index 00000000..77ae3a1e --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/followup-response.json @@ -0,0 +1,108 @@ +{ + "id": "resp_0c54b9937bf86ca7006aa836f0424087d287859f424625fa9b", + "object": "response", + "created_at": 1789409008, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1789409012, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [ + { + "id": "msg_0c54b9937bf86ca7006aa836f1292c87d2b7452341ec690602", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The instance currently shows only MongoDB’s standard system databases:\n\n- `admin` — administrative users and roles\n- `config` — cluster metadata (commonly used in sharded deployments)\n- `local` — node-local operational data\n\nNext steps depend on your goal:\n\n1. **Explore existing data:** There may be no application databases yet; inspect collections in a database if you expect data to exist.\n2. **Create an application database:** Insert data into a chosen database name—MongoDB creates the database and collection on first write.\n3. **Set up access control:** Create application-specific users/roles rather than using broad admin access.\n4. **Verify connectivity/configuration:** Confirm you are connected to the expected MongoDB deployment, especially if you expected application databases to appear." + } + ], + "phase": "final_answer", + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": { + "input_tokens": 144, + "input_tokens_details": { + "cache_write_tokens": 0, + "cached_tokens": 0 + }, + "output_tokens": 162, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 306 + }, + "user": null, + "metadata": {}, + "output_text": "The instance currently shows only MongoDB’s standard system databases:\n\n- `admin` — administrative users and roles\n- `config` — cluster metadata (commonly used in sharded deployments)\n- `local` — node-local operational data\n\nNext steps depend on your goal:\n\n1. **Explore existing data:** There may be no application databases yet; inspect collections in a database if you expect data to exist.\n2. **Create an application database:** Insert data into a chosen database name—MongoDB creates the database and collection on first write.\n3. **Set up access control:** Create application-specific users/roles rather than using broad admin access.\n4. **Verify connectivity/configuration:** Confirm you are connected to the expected MongoDB deployment, especially if you expected application databases to appear." +} \ No newline at end of file diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/request.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/request.json new file mode 100644 index 00000000..860124e9 --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/request.json @@ -0,0 +1,40 @@ +{ + "model": "gpt-5.6-terra", + "input": [ + { + "role": "user", + "content": [ + { + "type": "input_text", + "text": "What databases exist in the connected MongoDB instance? Use the list_databases tool." + } + ] + }, + { + "type": "function_call", + "call_id": "6k7x6c84", + "name": "list_databases", + "arguments": "{}" + }, + { + "type": "function_call_output", + "call_id": "6k7x6c84", + "name": "list_databases", + "output": "[{\"type\":\"text\",\"text\":\"{\\\"databases\\\":[\\\"admin\\\",\\\"config\\\",\\\"local\\\"]}\"}]" + } + ], + "tools": [ + { + "type": "function", + "name": "list_databases", + "description": "List databases in the connected MongoDB instance.", + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "tool_choice": "auto" +} \ No newline at end of file diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response-streaming.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response-streaming.json new file mode 100644 index 00000000..2c4be594 --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response-streaming.json @@ -0,0 +1,550 @@ +[ + { + "type": "response.created", + "response": { + "id": "resp_05765ca1bbd30e53006aa836ee5e6887d2836c55ca33c6ba72", + "object": "response", + "created_at": 1789409006, + "status": "in_progress", + "background": false, + "completed_at": null, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "auto", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": null, + "user": null, + "metadata": {} + }, + "sequence_number": 0 + }, + { + "type": "response.in_progress", + "response": { + "id": "resp_05765ca1bbd30e53006aa836ee5e6887d2836c55ca33c6ba72", + "object": "response", + "created_at": 1789409006, + "status": "in_progress", + "background": false, + "completed_at": null, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "auto", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": null, + "user": null, + "metadata": {} + }, + "sequence_number": 1 + }, + { + "type": "response.output_item.added", + "item": { + "id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "type": "message", + "status": "in_progress", + "content": [], + "phase": "final_answer", + "role": "assistant" + }, + "output_index": 0, + "sequence_number": 2 + }, + { + "type": "response.content_part.added", + "content_index": 0, + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "output_index": 0, + "part": { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "" + }, + "sequence_number": 3 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "The", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "5IJeaSOJFkh30", + "output_index": 0, + "sequence_number": 4 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " connected", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "21tN4M", + "output_index": 0, + "sequence_number": 5 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " Mongo", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "VPXIAdHr3t", + "output_index": 0, + "sequence_number": 6 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "DB", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "6r4H4JLO2kYizQ", + "output_index": 0, + "sequence_number": 7 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " instance", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "d4pYgo0", + "output_index": 0, + "sequence_number": 8 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " contains", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "g5YP2Jw", + "output_index": 0, + "sequence_number": 9 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " these", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "nTrggAS2HO", + "output_index": 0, + "sequence_number": 10 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " databases", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "Kzqk3E", + "output_index": 0, + "sequence_number": 11 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": ":\n\n", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "CgLg64firRoho", + "output_index": 0, + "sequence_number": 12 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "-", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "TJ4Fu9mN6Unn2zI", + "output_index": 0, + "sequence_number": 13 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " `", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "XrnMh6bkETUPxf", + "output_index": 0, + "sequence_number": 14 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "admin", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "2DU4Oq5GgSO", + "output_index": 0, + "sequence_number": 15 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "`\n", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "bpRa0EOrkor8JU", + "output_index": 0, + "sequence_number": 16 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "-", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "Ijyvtbhp0YfCoeq", + "output_index": 0, + "sequence_number": 17 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " `", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "KKPxeHUlsAsEnk", + "output_index": 0, + "sequence_number": 18 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "config", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "hYwtFEzbsT", + "output_index": 0, + "sequence_number": 19 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "`\n", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "IoG8tbxl1HTs3S", + "output_index": 0, + "sequence_number": 20 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "-", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "fYsSD7TyJKSEyRD", + "output_index": 0, + "sequence_number": 21 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": " `", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "L1SJpBtGiv3x5e", + "output_index": 0, + "sequence_number": 22 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "local", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "8ZKKikaFVK4", + "output_index": 0, + "sequence_number": 23 + }, + { + "type": "response.output_text.delta", + "content_index": 0, + "delta": "`", + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "obfuscation": "zvy0GdMKVK91GP9", + "output_index": 0, + "sequence_number": 24 + }, + { + "type": "response.output_text.done", + "content_index": 0, + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "logprobs": [], + "output_index": 0, + "sequence_number": 25, + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + }, + { + "type": "response.content_part.done", + "content_index": 0, + "item_id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "output_index": 0, + "part": { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + }, + "sequence_number": 26 + }, + { + "type": "response.output_item.done", + "item": { + "id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + } + ], + "phase": "final_answer", + "role": "assistant" + }, + "output_index": 0, + "sequence_number": 27 + }, + { + "type": "response.completed", + "response": { + "id": "resp_05765ca1bbd30e53006aa836ee5e6887d2836c55ca33c6ba72", + "object": "response", + "created_at": 1789409006, + "status": "completed", + "background": false, + "completed_at": 1789409007, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [ + { + "id": "msg_05765ca1bbd30e53006aa836ef61b887d28ec6732fe9527917", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + } + ], + "phase": "final_answer", + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": { + "input_tokens": 107, + "input_tokens_details": { + "cache_write_tokens": 0, + "cached_tokens": 0 + }, + "output_tokens": 25, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 132 + }, + "user": null, + "metadata": {} + }, + "sequence_number": 28 + } +] \ No newline at end of file diff --git a/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response.json b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response.json new file mode 100644 index 00000000..e82bda90 --- /dev/null +++ b/payloads/snapshots/responsesFunctionCallOutputToolNameParam/responses/response.json @@ -0,0 +1,108 @@ +{ + "id": "resp_0c54b9937bf86ca7006aa836ee848487d2b45fdc8cd841adbf", + "object": "response", + "created_at": 1789409006, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "completed_at": 1789409007, + "error": null, + "frequency_penalty": 0, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5.6-terra", + "moderation": null, + "output": [ + { + "id": "msg_0c54b9937bf86ca7006aa836efb54c87d284054c143065d1a0", + "type": "message", + "status": "completed", + "content": [ + { + "type": "output_text", + "annotations": [], + "logprobs": [], + "text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" + } + ], + "phase": "final_answer", + "role": "assistant" + } + ], + "parallel_tool_calls": true, + "presence_penalty": 0, + "previous_response_id": null, + "prompt_cache_key": null, + "prompt_cache_retention": "24h", + "reasoning": { + "context": "all_turns", + "effort": "medium", + "mode": "standard", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": true, + "temperature": 1, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tool_usage": { + "image_gen": { + "input_tokens": 0, + "input_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "output_tokens": 0, + "output_tokens_details": { + "image_tokens": 0, + "text_tokens": 0 + }, + "total_tokens": 0 + }, + "web_search": { + "num_requests": 0 + } + }, + "tools": [ + { + "type": "function", + "description": "List databases in the connected MongoDB instance.", + "name": "list_databases", + "output_schema": null, + "parameters": { + "type": "object", + "properties": {}, + "additionalProperties": false + }, + "strict": false + } + ], + "top_logprobs": 0, + "top_p": 0.98, + "truncation": "disabled", + "usage": { + "input_tokens": 107, + "input_tokens_details": { + "cache_write_tokens": 0, + "cached_tokens": 0 + }, + "output_tokens": 25, + "output_tokens_details": { + "reasoning_tokens": 0 + }, + "total_tokens": 132 + }, + "user": null, + "metadata": {}, + "output_text": "The connected MongoDB instance contains these databases:\n\n- `admin`\n- `config`\n- `local`" +} \ No newline at end of file diff --git a/payloads/transforms/responses_to_anthropic/responsesFunctionCallOutputToolNameParam.json b/payloads/transforms/responses_to_anthropic/responsesFunctionCallOutputToolNameParam.json new file mode 100644 index 00000000..0cda7a83 --- /dev/null +++ b/payloads/transforms/responses_to_anthropic/responsesFunctionCallOutputToolNameParam.json @@ -0,0 +1,28 @@ +{ + "model": "claude-sonnet-4-5-20250929", + "id": "msg_011Cf3mmHDJr3WR4U2dofF4o", + "type": "message", + "role": "assistant", + "content": [ + { + "type": "text", + "text": "The connected MongoDB instance contains the following databases:\n\n1. **admin** - The administrative database for user authentication and authorization\n2. **config** - Used by MongoDB for sharded cluster configuration\n3. **local** - Used to store data local to a single MongoDB server (not replicated)\n\nThese are the default system databases that come with a MongoDB installation. There don't appear to be any custom user databases created yet." + } + ], + "container": null, + "stop_reason": "end_turn", + "stop_sequence": null, + "stop_details": null, + "usage": { + "input_tokens": 642, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "cache_creation": { + "ephemeral_5m_input_tokens": 0, + "ephemeral_1h_input_tokens": 0 + }, + "output_tokens": 91, + "service_tier": "standard", + "inference_geo": "not_available" + } +} \ No newline at end of file diff --git a/payloads/transforms/responses_to_google/responsesFunctionCallOutputToolNameParam.json b/payloads/transforms/responses_to_google/responsesFunctionCallOutputToolNameParam.json new file mode 100644 index 00000000..524811b2 --- /dev/null +++ b/payloads/transforms/responses_to_google/responsesFunctionCallOutputToolNameParam.json @@ -0,0 +1,31 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "Based on the list_databases tool, the following databases exist in the connected MongoDB instance:\n\n* **admin**\n* **config**\n* **local**", + "thoughtSignature": "EmgKZgERTTIPIh1dX6f/lbLALWeqmEhK25WiuFC5gXZVr0eBIBj8P8Pa9XVscxky407wE6ffxV4J5QL4JqQBc/yaGdup9se8cmGrFtuv8uevBSeUG8jbifMeE0n+E0vFCdHoYiQzrlAyRA==" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 87, + "candidatesTokenCount": 33, + "totalTokenCount": 120, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 87 + } + ], + "serviceTier": "standard" + }, + "modelVersion": "gemini-3.5-flash", + "responseId": "-TaoaqvHH4OwsOIPnKargQ8" +} \ No newline at end of file diff --git a/specs/openai/openapi.yml b/specs/openai/openapi.yml index bab5f144..ba202bd7 100644 --- a/specs/openai/openapi.yml +++ b/specs/openai/openapi.yml @@ -39973,86 +39973,8 @@ paths: $ref: '#/components/schemas/ProvenanceResource' x-oaiMeta: name: Create content provenance check - examples: - response: '' - request: - node.js: >- - import fs from 'fs'; - - import OpenAI from 'openai'; - - - const client = new OpenAI({ - apiKey: process.env['OPENAI_API_KEY'], // This is the default and can be omitted - }); - - - const contentProvenanceCheck = await - client.contentProvenanceChecks.create({ - file: fs.createReadStream('path/to/file'), - }); - - - console.log(contentProvenanceCheck.created_at); - python: >- - import os - - from openai import OpenAI - - - client = OpenAI( - api_key=os.environ.get("OPENAI_API_KEY"), # This is the default and can be omitted - ) - - content_provenance_check = - client.content_provenance_checks.create( - file=b"Example data", - ) - - print(content_provenance_check.created_at) - go: "package main\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"io\"\n\n\t\"github.com/openai/openai-go\"\n\t\"github.com/openai/openai-go/option\"\n)\n\nfunc main() {\n\tclient := openai.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tcontentProvenanceCheck, err := client.ContentProvenanceChecks.New(context.TODO(), openai.ContentProvenanceCheckNewParams{\n\t\tFile: io.Reader(bytes.NewBuffer([]byte(\"Example data\"))),\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", contentProvenanceCheck.CreatedAt)\n}\n" - java: >- - package com.openai.example; - - - import com.openai.client.OpenAIClient; - - import com.openai.client.okhttp.OpenAIOkHttpClient; - - import - com.openai.models.contentprovenancechecks.ContentProvenanceCheck; - - import - com.openai.models.contentprovenancechecks.ContentProvenanceCheckCreateParams; - - import java.io.ByteArrayInputStream; - - - public final class Main { - private Main() {} - - public static void main(String[] args) { - OpenAIClient client = OpenAIOkHttpClient.fromEnv(); - - ContentProvenanceCheckCreateParams params = ContentProvenanceCheckCreateParams.builder() - .file(new ByteArrayInputStream("Example data".getBytes())) - .build(); - ContentProvenanceCheck contentProvenanceCheck = client.contentProvenanceChecks().create(params); - } - } - ruby: >- - require "openai" - - - openai = OpenAI::Client.new(api_key: "My API Key") - - - content_provenance_check = - openai.content_provenance_checks.create(file: - StringIO.new("Example data")) - - - puts(content_provenance_check) + group: content_provenance_checks + examples: [] /videos: post: tags: @@ -58346,6 +58268,14 @@ components: type: string description: | The unique ID of the function tool call generated by the model. + name: + type: string + description: | + The name of the tool that produced the output. + namespace: + type: string + description: | + The namespace of the tool that produced the output. caller: anyOf: - $ref: '#/components/schemas/ToolCallCallerParam' @@ -62089,6 +62019,7 @@ components: - gpt-5.6-sol - gpt-5.6-terra - gpt-5.6-luna + - gpt-5.5 - gpt-5.4 - gpt-5.4-mini - gpt-5.4-nano @@ -75223,7 +75154,7 @@ components: conversation: anyOf: - default: null - $ref: '#/components/schemas/Conversation-2' + $ref: '#/components/schemas/ResponseConversation' - type: 'null' max_output_tokens: anyOf: @@ -87067,6 +86998,21 @@ components: An array of content outputs (text, image, file) for the function tool call. description: Text, image, or file output of the function tool call. + name: + anyOf: + - type: string + maxLength: 128 + minLength: 1 + description: The name of the tool that produced the output. + - type: 'null' + namespace: + anyOf: + - type: string + maxLength: 64 + minLength: 1 + pattern: ^[a-zA-Z0-9_-]+$ + description: The namespace of the tool that produced the output. + - type: 'null' caller: anyOf: - $ref: '#/components/schemas/ToolCallCallerParam' @@ -88033,7 +87979,7 @@ components: - output title: Moderation description: Moderation results or errors for the response input and output. - Conversation-2: + ResponseConversation: properties: id: type: string @@ -94783,6 +94729,21 @@ components: An array of content outputs (text, image, file) for the function tool call. description: Text, image, or file output of the function tool call. + name: + anyOf: + - type: string + maxLength: 128 + minLength: 1 + description: The name of the tool that produced the output. + - type: 'null' + namespace: + anyOf: + - type: string + maxLength: 64 + minLength: 1 + pattern: ^[a-zA-Z0-9_-]+$ + description: The namespace of the tool that produced the output. + - type: 'null' caller: anyOf: - $ref: '#/components/schemas/BetaToolCallCallerParam' @@ -96211,6 +96172,7 @@ components: - gpt-5.6-sol - gpt-5.6-terra - gpt-5.6-luna + - gpt-5.5 - gpt-5.4 - gpt-5.4-mini - gpt-5.4-nano @@ -97381,6 +97343,14 @@ components: type: string description: | The unique ID of the function tool call generated by the model. + name: + type: string + description: | + The name of the tool that produced the output. + namespace: + type: string + description: | + The namespace of the tool that produced the output. caller: anyOf: - $ref: '#/components/schemas/BetaToolCallCallerParam' @@ -98040,7 +98010,7 @@ components: conversation: anyOf: - default: null - $ref: '#/components/schemas/BetaConversation-2' + $ref: '#/components/schemas/BetaResponseConversation' - type: 'null' max_output_tokens: anyOf: @@ -98116,7 +98086,7 @@ components: total_tokens: 380 user: null metadata: {} - BetaConversation-2: + BetaResponseConversation: properties: id: type: string