diff --git a/NEWS.md b/NEWS.md index c4935061..e0f0d0cf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # ellmer (development version) +* `chat_openai()` (and all other providers that use a ChatGPT model) now default to `gpt-5` (#800). +* `chat_anthropic()` now defaults to `claude-sonnet-4-5-20250929` (#800). * `chat_google_gemini()` and `chat_openai_responses()` support image generation (#368). * `batch_*()` no longer hashes properties of the provider besides the `name`, `model`, and `base_url`. This should provide some protection from accidentally reusing the same `.json` file with different providers, while still allowing you to use the same batch file across ellmer versions. * `batch_*()` have a new `ignore_hash` argument that allows you to opt out of the check if you're confident the difference only arises because ellmer itself has changed. diff --git a/R/batch-chat.R b/R/batch-chat.R index f822764f..5a13f89c 100644 --- a/R/batch-chat.R +++ b/R/batch-chat.R @@ -51,7 +51,7 @@ #' For any of the aboves, will return `NULL` if `wait = FALSE` and the job #' is not complete. #' @examplesIf has_credentials("openai") -#' chat <- chat_openai(model = "gpt-4.1-nano") +#' chat <- chat_openai(model = "gpt-5-nano") #' #' # Chat ---------------------------------------------------------------------- #' diff --git a/R/provider-anthropic.R b/R/provider-anthropic.R index 5fb939f5..ee08458d 100644 --- a/R/provider-anthropic.R +++ b/R/provider-anthropic.R @@ -15,7 +15,7 @@ NULL #' #' @inheritParams chat_openai #' @inherit chat_openai return -#' @param model `r param_model("claude-sonnet-4-20250514", "anthropic")` +#' @param model `r param_model("claude-sonnet-4-5-20250929", "anthropic")` #' @param api_key `r api_key_param("ANTHROPIC_API_KEY")` #' @param max_tokens Maximum number of tokens to generate before stopping. #' @param beta_headers Optionally, a character vector of beta headers to opt-in @@ -43,7 +43,7 @@ chat_anthropic <- function( ) { echo <- check_echo(echo) - model <- set_default(model, "claude-sonnet-4-20250514") + model <- set_default(model, "claude-sonnet-4-5-20250929") params <- params %||% params() if (lifecycle::is_present(max_tokens)) { @@ -75,7 +75,7 @@ chat_claude <- chat_anthropic chat_anthropic_test <- function( ..., - model = "claude-3-5-sonnet-latest", + model = "claude-haiku-4-5-20251001", params = NULL, echo = "none" ) { diff --git a/R/provider-azure.R b/R/provider-azure.R index 39d63c19..33c002af 100644 --- a/R/provider-azure.R +++ b/R/provider-azure.R @@ -44,7 +44,7 @@ NULL #' @export #' @examples #' \dontrun{ -#' chat <- chat_azure_openai(model = "gpt-4o-mini") +#' chat <- chat_azure_openai(model = "gpt-5-nano") #' chat$chat("Tell me three jokes about statisticians") #' } chat_azure_openai <- function( @@ -128,7 +128,7 @@ chat_azure_openai_test <- function( system_prompt = system_prompt, api_key = api_key, endpoint = "https://ai-hwickhamai260967855527.openai.azure.com", - model = "gpt-4o-mini", + model = "gpt-5-nano", params = params, echo = echo ) diff --git a/R/provider-github.R b/R/provider-github.R index 5465aef7..92c2632a 100644 --- a/R/provider-github.R +++ b/R/provider-github.R @@ -14,7 +14,7 @@ #' #' @family chatbots #' @param api_key `r api_key_param("GITHUB_PAT")` -#' @param model `r param_model("gpt-4o")` +#' @param model `r param_model("gpt-5")` #' @param params Common model parameters, usually created by [params()]. #' @export #' @inheritParams chat_openai @@ -37,7 +37,7 @@ chat_github <- function( ) { check_installed("gitcreds") - model <- set_default(model, "gpt-4.1") + model <- set_default(model, "gpt-5") echo <- check_echo(echo) # https://docs.github.com/en/rest/models/inference?apiVersion=2022-11-28 diff --git a/R/provider-openai-responses.R b/R/provider-openai-responses.R index 67ff107d..30541463 100644 --- a/R/provider-openai-responses.R +++ b/R/provider-openai-responses.R @@ -39,7 +39,7 @@ chat_openai_responses <- function( api_headers = character(), echo = c("none", "output", "all") ) { - model <- set_default(model, "gpt-4.1") + model <- set_default(model, "gpt-5") echo <- check_echo(echo) provider <- ProviderOpenAIResponses( @@ -56,12 +56,11 @@ chat_openai_responses <- function( chat_openai_responses_test <- function( system_prompt = "Be terse.", ..., - model = "gpt-4.1-nano", + model = "gpt-5-nano", params = NULL, echo = "none" ) { params <- params %||% params() - params$temperature <- params$temperature %||% 0 chat_openai_responses( system_prompt = system_prompt, diff --git a/R/provider-openai.R b/R/provider-openai.R index 5b7d1c1e..e7eac242 100644 --- a/R/provider-openai.R +++ b/R/provider-openai.R @@ -16,7 +16,7 @@ NULL #' @param system_prompt A system prompt to set the behavior of the assistant. #' @param base_url The base URL to the endpoint; the default uses OpenAI. #' @param api_key `r api_key_param("OPENAI_API_KEY")` -#' @param model `r param_model("gpt-4.1", "openai")` +#' @param model `r param_model("gpt-5", "openai")` #' @param params Common model parameters, usually created by [params()]. #' @param seed Optional integer seed that ChatGPT uses to try and make output #' more reproducible. @@ -56,7 +56,7 @@ chat_openai <- function( api_headers = character(), echo = c("none", "output", "all") ) { - model <- set_default(model, "gpt-4.1") + model <- set_default(model, "gpt-5") echo <- check_echo(echo) params <- params %||% params() @@ -83,13 +83,12 @@ chat_openai <- function( chat_openai_test <- function( system_prompt = "Be terse.", ..., - model = "gpt-4.1-nano", + model = "gpt-5-nano", params = NULL, echo = "none" ) { params <- params %||% params() params$seed <- params$seed %||% 1014 - params$temperature <- params$temperature %||% 0 chat_openai( system_prompt = system_prompt, diff --git a/R/provider-openrouter.R b/R/provider-openrouter.R index 03143595..e5a16eb8 100644 --- a/R/provider-openrouter.R +++ b/R/provider-openrouter.R @@ -12,7 +12,7 @@ NULL #' @export #' @family chatbots #' @param api_key `r api_key_param("OPENROUTER_API_KEY")` -#' @param model `r param_model("gpt-4o")` +#' @param model `r param_model("gpt-5")` #' @param params Common model parameters, usually created by [params()]. #' @inheritParams chat_openai #' @inherit chat_openai return @@ -31,7 +31,7 @@ chat_openrouter <- function( echo = c("none", "output", "all"), api_headers = character() ) { - model <- set_default(model, "gpt-4o") + model <- set_default(model, "gpt-5") echo <- check_echo(echo) params <- params %||% params() diff --git a/R/provider-portkey.R b/R/provider-portkey.R index cec95f43..6bbfd0fc 100644 --- a/R/provider-portkey.R +++ b/R/provider-portkey.R @@ -11,7 +11,7 @@ #' #' @family chatbots #' @param api_key `r api_key_param("PORTKEY_API_KEY")` -#' @param model `r param_model("gpt-4o", "openai")` +#' @param model `r param_model("gpt-5", "openai")` #' @param virtual_key A virtual identifier storing LLM provider's API key. See #' [documentation](https://portkey.ai/docs/product/ai-gateway/virtual-keys). #' Can be read from the `PORTKEY_VIRTUAL_KEY` environment variable. @@ -34,7 +34,7 @@ chat_portkey <- function( echo = NULL, api_headers = character() ) { - model <- set_default(model, "gpt-4o") + model <- set_default(model, "gpt-5") echo <- check_echo(echo) params <- params %||% params() @@ -53,7 +53,7 @@ chat_portkey <- function( chat_portkey_test <- function( ..., - model = "gpt-4o-mini", + model = "gpt-5-nano", params = NULL, echo = "none" ) { diff --git a/README.Rmd b/README.Rmd index 13359a0c..dc05c139 100644 --- a/README.Rmd +++ b/README.Rmd @@ -67,7 +67,7 @@ If you're using ellmer inside an organisation, you may have internal policies th If you're using ellmer for your own exploration, you'll have a lot more freedom, so we have a few recommendations to help you get started: -- `chat_openai()` or `chat_anthropic()` are good places to start. `chat_openai()` defaults to **GPT-4.1**, but you can use `model = "gpt-4-1-nano"` for a cheaper, faster model, or `model = "o3"` for more complex reasoning. `chat_anthropic()` is also good; it defaults to **Claude 4.0 Sonnet**, which we have found to be particularly good at writing R code. +- `chat_openai()` or `chat_anthropic()` are good places to start. `chat_openai()` defaults to **GPT-5**, but you can use `model = "gpt-5-mini"` or `model = "gpt-5-nano"` for a cheaper, faster models. `chat_anthropic()` is also good; it defaults to **Claude 4.5 Sonnet**, which we have found to be particularly good at writing R code. - `chat_google_gemini()` is a strong model with generous free tier (with the downside that [your data is used](https://ai.google.dev/gemini-api/terms#unpaid-services) to improve the model), making it a great place to start if you don't want to spend any money. @@ -88,7 +88,7 @@ You can work with ellmer in several different ways, depending on whether you are ```{r} library(ellmer) -chat <- chat_openai("Be terse", model = "gpt-4o-mini") +chat <- chat_openai("Be terse", model = "gpt-5-mini") ``` Chat objects are stateful [R6 objects](https://r6.r-lib.org): they retain the context of the conversation, so each new query builds on the previous ones. You call their methods with `$`. @@ -141,7 +141,7 @@ In most circumstances, ellmer will stream the output to the console. You can tak ```{r} my_function <- function() { - chat <- chat_openai("Be terse", model = "gpt-4o-mini", echo = "none") + chat <- chat_openai("Be terse", model = "gpt-5-mini", echo = "none") chat$chat("What is 6 times 7?") } str(my_function()) diff --git a/inst/_vcr/Chat.yml b/inst/_vcr/Chat.yml index f5c9f1ff..631fca05 100644 --- a/inst/_vcr/Chat.yml +++ b/inst/_vcr/Chat.yml @@ -4,49 +4,75 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Tell - me a funny joke"}]}],"model":"gpt-4.1","stream":false}' + me a funny joke"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 957e057da976465a-DFW + cf-ray: 9929a5401bf54684-DFW content-encoding: gzip content-type: application/json - date: Mon, 30 Jun 2025 13:31:00 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '573' + date: Wed, 22 Oct 2025 14:22:19 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '7118' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=e6gPMVgbrpavLPk_.XGTnd7ElQ8kqD1E05h9p_y2TBQ-1751290260-1.0.1.1-t7ipbvU9cJp4hOx.tF6k9vR2Jepd8aCgL6oIS13NQvkADB4l.qCX2s6YBeRxr8ZOaICb.N03o6QTFZ7YdQcGO5OXBhuwlk9hcNUlUeLpn60; - path=/; expires=Mon, 30-Jun-25 14:01:00 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=X_RkDKlZ.qr9T8nCP9XJdygp6T4IWSHMCt8MFatmaPE-1761142939-1.0.1.1-TImfGQj5lnKN1Huyn_8iGifa_8BIDS.DSkrLR8YqRWMuipihpRSPiMGPmlKb3h8ZjTZnmhISCsQUZegaAI3.eAFa.CMBuhC8xN8FQuo6JPg; + path=/; expires=Wed, 22-Oct-25 14:52:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=KVovGQ_hPREc2.b8pIgl2_ljuKKH6_BtUYVNTlcU6Y8-1751290260775-0.0.1.1-604800000; + - _cfuvid=H9JyKJBbah0Awase4Bke.UjX_hRA8p9CXEFVMHksKqw-1761142939720-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '598' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999993' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '7187' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999993' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_38460279f1c66c165964bf1e1d81bd0b + x-request-id: req_180b6bb547da4b2ea0e3bf72f4831e3b body: - string: "{\n \"id\": \"chatcmpl-Bo8t24UnWlODRFRkAtA0Ftj8NXidq\",\n \"object\": - \"chat.completion\",\n \"created\": 1751290260,\n \"model\": \"gpt-4.1-2025-04-14\",\n - \ \"choices\": [\n {\n \"index\": 0,\n \"message\": {\n \"role\": - \"assistant\",\n \"content\": \"Why did the scarecrow win an award? - \ \\nBecause he was outstanding in his field! \U0001F33E\U0001F604\",\n \"refusal\": - null,\n \"annotations\": []\n },\n \"logprobs\": null,\n - \ \"finish_reason\": \"stop\"\n }\n ],\n \"usage\": {\n \"prompt_tokens\": - 12,\n \"completion_tokens\": 22,\n \"total_tokens\": 34,\n \"prompt_tokens_details\": - {\n \"cached_tokens\": 0,\n \"audio_tokens\": 0\n },\n \"completion_tokens_details\": - {\n \"reasoning_tokens\": 0,\n \"audio_tokens\": 0,\n \"accepted_prediction_tokens\": - 0,\n \"rejected_prediction_tokens\": 0\n }\n },\n \"service_tier\": - \"default\",\n \"system_fingerprint\": \"fp_51e1070cf2\"\n}\n" - recorded_at: 2025-06-30 13:31:00 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: | + { + "id": "chatcmpl-CTU16Q7rORMrPJFZtZu2jfr70CyXI", + "object": "chat.completion", + "created": 1761142932, + "model": "gpt-5-2025-08-07", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "I ordered a chicken and an egg from Amazon. I’ll let you know.", + "refusal": null, + "annotations": [] + }, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 11, + "completion_tokens": 409, + "total_tokens": 420, + "prompt_tokens_details": { + "cached_tokens": 0, + "audio_tokens": 0 + }, + "completion_tokens_details": { + "reasoning_tokens": 384, + "audio_tokens": 0, + "accepted_prediction_tokens": 0, + "rejected_prediction_tokens": 0 + } + }, + "service_tier": "default", + "system_fingerprint": null + } + recorded_at: 2025-10-22 14:22:19 +recorded_with: VCR-vcr/2.0.0 diff --git a/inst/_vcr/chat_anthropic.yml b/inst/_vcr/chat_anthropic.yml index 3fcaeacb..afd10e49 100644 --- a/inst/_vcr/chat_anthropic.yml +++ b/inst/_vcr/chat_anthropic.yml @@ -3,45 +3,49 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":[{"type":"text","text":"Tell + string: '{"model":"claude-sonnet-4-5-20250929","messages":[{"role":"user","content":[{"type":"text","text":"Tell me three jokes about statisticians"}]}],"stream":false,"max_tokens":4096}' response: status: 200 headers: - date: Mon, 30 Jun 2025 21:18:27 GMT + date: Wed, 22 Oct 2025 14:22:31 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-30T21:18:23Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-30T21:18:28Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-30T21:18:22Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-30T21:18:23Z' - request-id: req_011CQf6toLGXDAC6KPibEKRT + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:22:25Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:22:31Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:22:22Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:22:25Z' + request-id: req_011CUNPPHrDwM9yRySBcbY2m strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '8920' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9580b21bcc8af04c-DFW - content-encoding: gzip + cf-ray: 9929a57da9a3f789-DFW body: - string: '{"id":"msg_011F6wTy7HaMgbfgxR3dWcXY","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"Here - are three jokes about statisticians:\n\n1. **The Drowning Statistician**\nA - statistician can have his head in an oven and his feet in ice, and he''ll - say that on average, he feels fine.\n\n2. **The Hiring Process**\nHow do you - tell the difference between an introverted statistician and an extroverted - statistician? The introverted one looks at his own shoes when talking to you. - The extroverted one looks at *your* shoes.\n\n3. **The Wedding Anniversary**\nA - statistician''s wife is having a baby. The statistician is pacing in the hospital - corridor when the nurse comes out and says, \"Congratulations! You''re the - father of beautiful twins!\" The statistician replies, \"Well, I suppose that''s - close to the national average.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":14,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":179,"service_tier":"standard"}}' - recorded_at: 2025-06-30 21:18:27 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_019gN6fbk8SjfXkKHKBgZPsA","type":"message","role":"assistant","content":[{"type":"text","text":"# + Three Statistician Jokes\n\n**1. The Optimist and the Pessimist**\nA statistician + told her friend: \"I never fly with just one plane ticket anymore—I always + book two flights!\" Her friend asked why, and she explained: \"Well, the odds + of there being a bomb on a plane are 1 in a million, but the odds of there + being TWO bombs on the same plane are 1 in a billion. Much safer!\"\n\n**2. + The Cold Statistician**\nThree statisticians go hunting. They spot a deer. + The first statistician shoots and misses one meter to the left. The second + statistician shoots and misses one meter to the right. The third statistician + jumps up and down shouting, \"We got it! We got it!\"\n\n**3. The Average + Problem**\nA statistician drowned crossing a river that was, on average, only + three feet deep.\n\n---\n\n*These jokes capture the classic stereotype of + statisticians being overly focused on averages, probabilities, and theoretical + calculations while sometimes missing practical reality!*"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":14,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":237,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:22:31 +recorded_with: VCR-vcr/2.0.0 diff --git a/inst/_vcr/chat_openai.yml b/inst/_vcr/chat_openai.yml index 6f88685a..721fa920 100644 --- a/inst/_vcr/chat_openai.yml +++ b/inst/_vcr/chat_openai.yml @@ -5,168 +5,172 @@ http_interactions: body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n What is the difference between a tibble and a data frame?\n Answer with a bulleted - list\n"}]}],"model":"gpt-4.1","stream":false}' + list\n"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9580b1812d3f4799-DFW + cf-ray: 9929a5e3cead4684-DFW content-encoding: gzip content-type: application/json - date: Mon, 30 Jun 2025 21:18:04 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '6825' + date: Wed, 22 Oct 2025 14:23:08 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '29564' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=_kgOzIXje3RMgf9ZRJJwneN7i9QH6YZg5cY1Osa4Mww-1751318284-1.0.1.1-Np0H1G6A9SRMRX_jYsXdpwBbFPrfNyW3AvM6sskZ72EakZu6iL3K0roRxKm9weWNwgBF.WKxAYzDCKVJ5dg.ePjEkcI.tFt9mpJqgMRa8F0; - path=/; expires=Mon, 30-Jun-25 21:48:04 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=J6SqA8hPKKDLmcnq7JALav10jEpIJOSW0wWL.GagG6I-1761142988-1.0.1.1-mR2VpezEMsDbz3n4UGR3nS3ujeN4p6rwAqQBPQ8f_F8UZsme21fFjhwPe9T_dmhtqcuJwwQvp0Fau9HZg76tMuE0T6STF6uQLc6Zy_6u1g4; + path=/; expires=Wed, 22-Oct-25 14:53:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=yLQNOT2LHa2PGRy5Bnv4W40z4UlLALg7_dyaKCZJtjg-1751318284297-0.0.1.1-604800000; + - _cfuvid=fpeT0u.vWks_R7.88qlLNXILhb4CIFsu.to37Nv1xL0-1761142988316-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '6828' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999974' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '29589' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999975' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_3813583f1f50004bf907f11ec098e2f0 + x-request-id: req_3bfc39012ff34595a260ab68e62b316e body: string: | { - "id": "chatcmpl-BoGAvD8wIK38xco8XQvNOm5ZC72RS", + "id": "chatcmpl-CTU1W6UBqaKY2YqL3qlOTCBifYlMq", "object": "chat.completion", - "created": 1751318277, - "model": "gpt-4.1-2025-04-14", + "created": 1761142958, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "- **Printing behavior**: \n - Tibbles print a preview (first 10 rows and columns that fit on screen), whereas data frames print ALL data unless told otherwise.\n\n- **Data type preservation:** \n - Tibbles never convert strings to factors by default, whereas data.frames (in base R <4.0) automatically convert strings to factors unless instructed not to.\n\n- **Subsetting output:** \n - Tibbles always return another tibble when subsetting with `[ ]`, while data frames may simplify the output (e.g., as a vector) depending on usage.\n\n- **Column name handling:** \n - Tibbles allow non-syntactic column names (e.g., names with spaces or special characters) without backticks, whereas data frames require syntactic names or backticks.\n\n- **Partial matching:** \n - Tibbles do **not** support partial column name matching, while data frames do.\n\n- **Enhanced printing:** \n - Tibbles display data types next to column names when printed; data frames do not.\n\n- **Creation:** \n - Tibbles are created with `tibble()` or `as_tibble()`, while data frames use `data.frame()`.\n\n- **Row names:** \n - Tibbles do not support row names; data frames do.\n\n- **Package:** \n - Tibbles are part of the tidyverse (`tibble` package); data frames are a base R structure.", + "content": "- Class/relationship: A tibble is a modern subclass of data.frame (class c(\"tbl_df\",\"tbl\",\"data.frame\")), so it works in most places a data frame does.\n- Printing: Tibbles print a preview (first rows, fits screen) and show column types; data frames print all rows/columns by default and don’t show types.\n- Subsetting/type stability: x[, j] on a tibble always returns a tibble (no drop); data frames can drop to a vector unless drop=FALSE. Tibbles never do partial name matching with $; data frames may.\n- Column names: Tibbles never alter names, and allow non‑syntactic and duplicate names; data.frame by default makes names syntactic and unique (check.names=TRUE).\n- Row names: Tibbles don’t support row names (always NULL); data frames do.\n- Type conversion on creation: Tibble() never converts character strings to factors; data.frame() may depending on stringsAsFactors (FALSE by default since R 4.0, historically TRUE).\n- Size/recycling rules: Tibbles are stricter (primarily recycle length-1; otherwise error with clear messages); data frames are more permissive in some recycling cases.\n- List columns: Both can store lists, but tibbles emphasize and print list-columns more clearly.\n- Error messages: Tibbles provide more informative, tidyverse-style errors; data frames follow base R conventions.\n- Compatibility/performance: Tibbles integrate tightly with tidyverse; data frames are base R’s default and may be slightly faster/lighter for some base operations.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 30, - "completion_tokens": 303, - "total_tokens": 333, + "prompt_tokens": 29, + "completion_tokens": 1879, + "total_tokens": 1908, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1536, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-06-30 21:18:04 + recorded_at: 2025-10-22 14:23:08 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n What is the difference between a tibble and a data frame?\n Answer with a bulleted - list\n"}]},{"role":"assistant","content":[{"type":"text","text":"- **Printing - behavior**: \n - Tibbles print a preview (first 10 rows and columns that - fit on screen), whereas data frames print ALL data unless told otherwise.\n\n- - **Data type preservation:** \n - Tibbles never convert strings to factors - by default, whereas data.frames (in base R <4.0) automatically convert strings - to factors unless instructed not to.\n\n- **Subsetting output:** \n - Tibbles - always return another tibble when subsetting with `[ ]`, while data frames - may simplify the output (e.g., as a vector) depending on usage.\n\n- **Column - name handling:** \n - Tibbles allow non-syntactic column names (e.g., names - with spaces or special characters) without backticks, whereas data frames - require syntactic names or backticks.\n\n- **Partial matching:** \n - Tibbles - do **not** support partial column name matching, while data frames do.\n\n- - **Enhanced printing:** \n - Tibbles display data types next to column names - when printed; data frames do not.\n\n- **Creation:** \n - Tibbles are created - with `tibble()` or `as_tibble()`, while data frames use `data.frame()`.\n\n- - **Row names:** \n - Tibbles do not support row names; data frames do.\n\n- - **Package:** \n - Tibbles are part of the tidyverse (`tibble` package); - data frames are a base R structure."}]},{"role":"user","content":[{"type":"text","text":"Tell - me three funny jokes about statisticians"}]}],"model":"gpt-4.1","stream":false}' + list\n"}]},{"role":"assistant","content":[{"type":"text","text":"- Class/relationship: + A tibble is a modern subclass of data.frame (class c(\"tbl_df\",\"tbl\",\"data.frame\")), + so it works in most places a data frame does.\n- Printing: Tibbles print a + preview (first rows, fits screen) and show column types; data frames print + all rows/columns by default and don’t show types.\n- Subsetting/type stability: + x[, j] on a tibble always returns a tibble (no drop); data frames can drop + to a vector unless drop=FALSE. Tibbles never do partial name matching with + $; data frames may.\n- Column names: Tibbles never alter names, and allow + non‑syntactic and duplicate names; data.frame by default makes names syntactic + and unique (check.names=TRUE).\n- Row names: Tibbles don’t support row names + (always NULL); data frames do.\n- Type conversion on creation: Tibble() never + converts character strings to factors; data.frame() may depending on stringsAsFactors + (FALSE by default since R 4.0, historically TRUE).\n- Size/recycling rules: + Tibbles are stricter (primarily recycle length-1; otherwise error with clear + messages); data frames are more permissive in some recycling cases.\n- List + columns: Both can store lists, but tibbles emphasize and print list-columns + more clearly.\n- Error messages: Tibbles provide more informative, tidyverse-style + errors; data frames follow base R conventions.\n- Compatibility/performance: + Tibbles integrate tightly with tidyverse; data frames are base R’s default + and may be slightly faster/lighter for some base operations."}]},{"role":"user","content":[{"type":"text","text":"Tell + me three funny jokes about statisticians"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9580b1adfdb74799-DFW + cf-ray: 9929a69e0abc4684-DFW content-encoding: gzip content-type: application/json - date: Mon, 30 Jun 2025 21:18:06 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1747' + date: Wed, 22 Oct 2025 14:23:23 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '15300' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=y5PiSFtfw5yYQDtwMGL_HJhBgSJTGI.jI.wAlW2oxTM-1751318286-1.0.1.1-IGGUmC4cn41xb3bXQ4lw9D9HITVs_bKW2v1CSzfxI9cWILLjKzyyhNlYj6cUej2dXQ_9ECrF6TQzOqaCwUFBeqwBXzYAPoLho2fBpb.WYDU; - path=/; expires=Mon, 30-Jun-25 21:48:06 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=1LMzsxgFeE86xn5fhv5K9S8rzr8ByjcOHIXm561Nlko-1761143003-1.0.1.1-YhYlxqvmMii0YloYJGSXU4mv6e.khsZhL9.V_Xj.LrJ46DZzYXJmQbHgcsH2aYU0XahKtFLFI4EdcmAHN7cqzG7sEpoLHRDfFfIR0YZprag; + path=/; expires=Wed, 22-Oct-25 14:53:23 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=5dX1.413RO0cRtQvMvlvfR.SVzBjqC4Tz5indfiUIqk-1751318286278-0.0.1.1-604800000; + - _cfuvid=HvpLDb0H1CWcMW4PGXtglZWF3NFliq8mdSziK8XAxOA-1761143003844-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1751' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999646' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '15322' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999592' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e0ae123b8d9ec07b60e2c8ae93b4d57b + x-request-id: req_a07d1df965c743fe8633aebb5834daf9 body: string: | { - "id": "chatcmpl-BoGB2GINW8ZriXgkEUHDWZAl3fV96", + "id": "chatcmpl-CTU20t5oYqZrU3sNiuSa5MtcE8klz", "object": "chat.completion", - "created": 1751318284, - "model": "gpt-4.1-2025-04-14", + "created": 1761142988, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Sure! Here are three funny jokes about statisticians:\n\n1. **Why did the statistician bring a ladder to the bar?** \n Because he heard the drinks were on the house!\n\n2. **How do you tell the difference between a statistician and an accountant?** \n Ask them to calculate the average salary: the accountant will give you the mean, the statistician will ask “what do you want it to be?”\n\n3. **Why do statisticians love the jungle?** \n Because of all the *sample* trees!", + "content": "- How many statisticians does it take to change a light bulb? One to change it and one to test whether the change was significant.\n- I told a chi-squared joke at a party—no one laughed. Apparently the expected counts were too low.\n- Statistician pickup line: “Are you a p-value? Because every time I see you, I want to reject the null.”", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 349, - "completion_tokens": 112, - "total_tokens": 461, + "prompt_tokens": 381, + "completion_tokens": 1048, + "total_tokens": 1429, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 960, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-06-30 21:18:06 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:23:23 +recorded_with: VCR-vcr/2.0.0 diff --git a/inst/_vcr/chat_openai_responses.yml b/inst/_vcr/chat_openai_responses.yml index 4794c86c..ff4b079c 100644 --- a/inst/_vcr/chat_openai_responses.yml +++ b/inst/_vcr/chat_openai_responses.yml @@ -5,43 +5,37 @@ http_interactions: body: string: '{"input":[{"role":"user","content":[{"type":"input_text","text":"\n What is the difference between a tibble and a data frame?\n Answer with a bulleted - list\n"}]}],"model":"gpt-4.1","stream":false,"store":false}' + list\n"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9901137e8f956c68-DFW + cf-ray: 9929a7012cf54684-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 16:12:26 GMT + date: Wed, 22 Oct 2025 14:23:48 GMT openai-organization: posit-esfrkf - openai-processing-ms: '14827' + openai-processing-ms: '24389' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=dN0pWP6cTampuP8LAqHmuOUhOVN6PBbUo.9X8U.smuo-1760717546-1.0.1.1-dPo4inYlK2TAV8khxXydTQhxTIloo40X.YJ1hA8vWzo9xaRu0sEBGV212BAzopB5Ob2C0X1iLxG50_AviLfSwLw0tAhBiY1xhzTiWPs7O6Y; - path=/; expires=Fri, 17-Oct-25 16:42:26 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ti5.fQdQX7CM6IvYbaP.TczcXJIIb6OVTWh_hOG3z3A-1761143028-1.0.1.1-iQUeK0sGi2K_dl_7HokXCJIjc0_njjuMq6kTVAy6TKOkUkiPktOfEIuJkBm_1ZsdOKWYbeMDMPPpxAI01YlpcGsoBSyYKS1i7mr7heO1keI; + path=/; expires=Wed, 22-Oct-25 14:53:48 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=hX8_em3frN46LDaIZ8hAQazx1vXDB9GT.YbQnFyLI3k-1760717546844-0.0.1.1-604800000; + - _cfuvid=HW.QwatxTL9fpuM_eAqo3zoAJhUZr8U6qEMh5Fpfu1w-1761143028801-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '14833' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999951' - x-ratelimit-reset-requests: 6ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_ebd3d4d11e3f473eb4cd79f6f4455466 + x-envoy-upstream-service-time: '24393' + x-request-id: req_316b1165609d481484369e140c2b817d body: string: |- { - "id": "resp_0e507d7f03a61fcb0168f26adc03dc8197931a9b9c176e66e6", + "id": "resp_00a4aed1a1e9c6de0168f8e8dc68f08197b089a3802f536fbb", "object": "response", - "created_at": 1760717532, + "created_at": 1761143004, "status": "completed", "background": false, "billing": { @@ -52,10 +46,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-2025-04-14", + "model": "gpt-5-2025-08-07", "output": [ { - "id": "msg_0e507d7f03a61fcb0168f26addb5408197924298990429438b", + "id": "rs_00a4aed1a1e9c6de0168f8e8dcf5d48197a379e1550f6c763d", + "type": "reasoning", + "encrypted_content": "gAAAAABo-Oj09zohuUTJqmfG6jVV1xDiFrpVgC7AQJ-a1O8CLBvrGInzrT9cvAyYDNAIUDWWkby2U6ZEwblpKJbTf1IKWJ969ki7znt9wN9YRqP6paPgTR5akXxZNcj50s1dEI-v8YSwynNWnkYTQPITbVEDA0ea_GlIUFNvLEUS44w44Xvhdek-nCXSDDtwLBcs10lkEW39fkXGyvVHwYiVvGj2ldSNxaFk2nE7m_Tb1jY3_Kb2Obo6oORUM7kZIOPm3iKu0NsBysU_RzxYdXWTmONoSCR4MXH5YFmG9r6Vb7FzOS3rKnD5gOj7ErGquTGqlVbNOoLZhzbQi_QHUz2LwZUf7Pltoe-0Pxj79u9CvRpyo-UGAJ9tMEXU2iZaqsS_EUfZHsedwuF8RfriAm1xMWFD4g7zG6qZZgP6aK7_Shj_o5H_dTOhmyfGS48tC6jSfeOqsU__QUQ43xLORwKlFrWkmgcEB-Z16V-TPPUjDCsN73t_xAw6cS2tYsCeDgvmHtW-IQ3o76yyH9oJG1lOLI0szTG0wRMTkBGW58f4wtdUgTEp182FfHLKK4uqmpS91qHd19R2MGWZbNEEBvH7BaRM72s6kVu-uuezq10C7zg-HmqZrgahF2wj3DUWJVfgWSt3LPz-41TgKwYV-WptsTt6K0OVBoqXpre_BC9IxACXnP1xZolS-seIT91LbchPwFY8KeJe8Wh18C_QXSt5Ps8hJ_3uWn9nKjFwe-hU3jK6fUN-W73sG5GpmP3FUP4annWH7UMxWGeqwRMy41IB_QPpofFW3GiyuHC408GO5xK9WQwyowi5o12y9xRChNb6Avn0N2UC49FL1nlnYIwkgspGNVEo0QCKrJvU8bC-xTBkGUyupwVQ8I6AQnQoStQ_wrOkV3mKHMRYYyOrpFhs88DUSe5e7h473KTTpzEKQw40KpJOhyttFuA0dq04cQ57elae9jWnfCsKHBeoMQ35x3MzWhge1oYaqfGVkc8L0GHQjrSVy2ON6vBXANr2K3f-BngeA8fbdYc-P1tdX8Vc4CxvooZtCK3Mv7Lm8S35QUY-YJ9xwrmfHaV3Tp_Mx7SMVHcHyrix8VBGZeI0QTVg4T2-kBnjfy9ZvBjzGTgGIIjP95LfIPgwEDFJW8-Zhs9LG7FfuBgdMz_1akCSfiTr6kIB9oAaT5GSC97J-Sj_5cTBISPgflCviWqV58FibpRSNWTO74vQOVMs3mWRm0onPP-5zWF8TKmTKZle_KtsI570e1DRQzHCW2LD259DdGyyyrvbJR2x8PpxeMiCVDBJS70gQOfWtqdpoZMlWVaoy2zcrFkmo8l3wTx2-qt_sDqOMbBM5TCyGLzxo40r8apfpYL1hxK266aLKlhOQ4R79DwSBU2gOok9b5qsG_EP5N7PFOFbdkSUr0cRLeKpb7pV1gUlRqP0D4N0wY4bsL7cWFO-WJJwamNlcL15NlS_5fZ-_jqt3mJxpMU8Rc45EHqfUj3fU1dySoECxICGc3kEXw9WqGUo6pX7gw9q3Y5v6gRyGJ_7QL5p9xo_gUFKWThSmcLUbUY0r67xKrzgV4pC8R4aXWV27wb0LRh-xPB9XaDrNKIZjFCZl60DzuhHwGt40DI91dJ2nObfpVvHzncOiO8ZUQSws9kKSaWhOmhojTgZK3r3-1V62-AVDcqx4UKGQvljSAH7DrI9leuOLXhkJVO4y8uW3NCbitTYvrXSVKvcICgUyDLZs5knMyfQ0UfV6tsO8nHuzfOCuAffO5Rw8tZeV7D-i0sFh3_onImxKll5BqTuvXEA5jmBLvPhYrnwaI4u9DGgN9ls7I9Qb6m4NRK4gVhZbzuZPZkKlRzzhjeagpWopPk72PT_zV3-seQBGNyH3K6uWVvABx8iTXdrJSdCpxdeEoFZx_mM8FAkVPcnXgEP7nh-hX4xZWmvxDV1uNdRNQ2oYETkHoLqTc0nbRfmnMS7ckhitRKJA61yYr97dw3C7Ifg4xuy2O5LB-CCXHzu4cJkS7_aP9tLjmxRBN5pbj3cGpTtoi_gyfGdeGRY86NIdGFdkcCoZvE12UY66fcFGIZ04MgQryFY7tBhXR3zAJSE7hd9IJDQSZ0hWUmgDOP4EfYrcHgpAeFS1tfUqzC_bJpdQgUq8ZKCuB2YtL6JuQnsZTGI03L9Aj69InmyRX7k6_NoD6JQ_xhwQedF3oEpgl1dP9KfUzUH9XPz38HGjBuceNjt--o1V7fsolHqlqm9zzG_NAUntixOf1FYMCkLBPHGR0Wquy0Z_t-QkxZ6a44T-YFHKGdrp3n0dKxE0sE-KTLiwmzWi5q3o0ekAwSlXxj_JMW3m51qKS5h1Q6o_q6x9o29unzSzXoSe3uZ2JvLUiHp8K3d8sZ8OCb_JVQyjTPlbNdT9axLoXk5Hx4gI2Hmn1Bqsuph32zNjQ6ZFm-yid_9fvyGoQ280kVi-KLjAGQGxMbDcYwUjNj9CWsDoWWOp-XxJ9NerbdLObNObcfBPXCL_tUQK42Wx5Ap0nTMMdkNDQEWiOkIX0HpMB22N9g-E4h2esApLnqDqwUUwn-Zeif6HtwaRYnQk3CqCGdOcBgmRlVX5RH7Vcxtrex44UT4rSOCg7hfKgFG-E2MC9wD55rrywNBb3c2AZsievtOnsREieoz91FSnFFRe1hmTkXcohsoKJcjG7H1AI7_p3fWoNJOZdu-OAOCGIhHUAzkghwwewzfju4WhgpI5Y6baAXunkrNAEYyy9niO86cuzvQo9EEMgUkSl01D1EkA8DHcHpc-YVhphjD8iVfNZGYks3KnKkaI19c9lnC9YUn1aSbnqcK6PihVvVB01ZCJY-RHzZppi1bnu-pHKZz2e90Qnk9KsPZ9dSU0Ia0YsBMGL8cQoLbDVUOa-FEtkE15rJy2edUthZCxFRWYKF6RlXoXG7XhvsDdjJgvczkUX5B8VZ76xmi1fFKjTO2Ndc-8RGRBMUecRjkupFLt6jFD1qKJYsGzsWmnxhka5kZ7mNuOJjbn7YsAqUXDi3IDdBcrQo9t8h6QQ-rO77JLLrMDBF3iK5WBz4mA5YhVwynMU6Gg25rSmyt9aPGMxkK1pl8m0Fl6j_4HjEJIHYNsvv4J9jK57r0pha2k-hddK9iOUW2yk7d17A8eeXW4KeqLXDUlRPdbxcLWOxQWv3hYPqu6jHycNTlf8_SMCHt4JRZ3L2NDDGwUuwdFpxSGoJtz2Z6yJc2NVaqQ3FnEvSscjuNMlthYEju1TevK3YDMQVC-zsQE-cB1YWfq046LfyFTgSMVV_RQqTumVu5OI5RxYquAU4Nr92oUHeNEKa5ulHKEZKPmVm_u-842gxPB7exY1wqiuDcAWRDzLhK605DjddI-_1Q_UbJPCGeqJNwUC4chOki4w4pgaMJglb_ifxDdCJJ5n4ETUD3DfDTwyB8VzfsOdLb-T47fKN_w7CeOmx_EFeycfmgt5DfaEZdvpcsSDmWqyOT0m2P0kTkYSFDbFcHpfsWyhWdqFjBKgemDMfy4WvdO_YB36SoNVIk6HJJBgKtPyjuVS0IWqSdlDMmm26A2lMTmy-3aor9xsTRsktjbMofOaVk7-5Qcc9WBA_Ee_DsQQTr-56RddwNayOUyVmnrsELmNM4_NpcMC5WgCGM6dCCk9gzEOBmpecRzLaauKJWiau2rhrnFj9zOtqeZmH1c7EEBH2-Y19x1Ng6jAUSWwy_slSdv41bvxKJUlLe5e7XRByQV2ZIZtOnXStkzXnv4K_cnoWyn6mYMgPdKx5qAmXS1BIEkmie3StHrkpc8J92KrVH2cOT3HwxSqBvRvd-A5jHcgQFamTYg_gQoCYFd8beOR7VGVRIKQ8Cf5HmfaLvnlUc10JOXhsjpcgwRK2V5lfbHmW9dB-OojlwmRIKYmyzkJOL7ojs63bGSnfSB_KtTnHesJsYFxL1tyte3Yf0AwI5seySUQ-qu0h-aIS-XMew_OtzVHt7yP8FM0Mq-ozv9MObFZbEO51UsKZHf85bY5J4trA9zXt232PhHlLlUdAx7tQ8xfoI2DH0DCKKytRLbe0a9h5kD4EYloqH7liP0ePQgKO2nJy8afFfdp_MvwGkqagOi-mnR8UHDmP9XcT5NgazVj9f1C3e5ZoCV3OZZp2b3FlkTsOVbnhQQ4UfMpprDPWXaB_3oSJPUFTl7UJAsN1WUadzS9FFs5vOUmwF_qZ0HdAs8W4lfEShBypPkXsvBrAXdkVpFKCE87zqjRF4A10tmgF1-jfOKYdGTuka-tFScl6LJc3InB3jbCr0cc3vKrAAZOVR9pleERo3vXbK7dnXw8fvsmMnFWg8c8V8oDXMw6dCZHDe1Hn9Q5AwTupk1x2jYJqBYDLBwpXUl-eDOw2FIokkS6bCBG8YQP558-VellY7IHVOOR-DKFwVsSM9xcnRojrvGzFqdYux6v2UkmOaElphsKHP1agsFhtjp3CwSRg4LId7L0Im-8cIYEV1TGdmxSSaZBwQw_7c1RA_MPz4uMKjEvk3pxXR8peXPrEGxYUYYi400oBWXhTHM3SDjIT18q9PDBxaXWBK207R5o4D9U25h35vV6FMmp98ZYSpDk5YVQh5Tn2NbHCtebk392EcxvmHVsjmoh9utjHumm8eKsc2YJhn4zyKTsVM9scedqzfkBMHXR7Qs09TH8HcDTnARmyKHT9UwcAHjhiOV4FmOZJ6zCyFZpU93urNX4jH80TclLHP9U1IMyb06vL9DMnEBS0YYRi5UsYZZn_L-YJu1wzvugjBVYmeaE3pXTZwlAR3UXMVOh-9-TqT_FaVAgh8oMwVhKlTh6rfaYE9hDMhpxPe3qwctDfQeCsyK0HzAvVTYtFV4_5ax7CC72OTpgtO7kbmpHvoIaX7qxK9MoOAdYXIktJByo8nFu8Jk6QZ6e91ANRZqfsUUvozIXF_fD27i8sSs-vgvHoX6qUi2U0Wyb5Uu_0glzZlAA3H5zk2_ZACVLJV3-ObnIJcWwxQCb7vu6DdHInuzvHKyi982zbMcfgkz-G9l9sB_utcNla2e6L3lUL2Rtkp2jlAx6unfaTMTEyQ7VXzX9-s1tgVajDEUzHY5MKlKWOewUd2DskjTlqsgwadDkLiXmqFk73X2NF4roGoa6Ndf12A3ayTCHSTYK76zGsk75h5blJyQiod4sX0dTNV1YiVA4DS2tShAbVXJnVjGJ3JW6KxZls0EhZlWhJqhmeOIqGsTOkqYJ09IzYTysTeUcHzCaYom4TRxmFrpk9KgyunjnU54qOOq7EINl5Rm3tkYAQF7LFjeNtecDGzqy1jzBmwIj8sL00AS1CR72YOAUzYiHjVdB2cOSKGaJsOiD4PUY_bxVC4ZMGHakNHRuyH-jpVqq19w8-413T0h8blAr8-iCp7Z_8hSDZOu1CXi9ScN-P65aiNbVX377tip9C4zuGt8pgHJ3Kh1Kc29RcQKp3zowPUsM9IGvEJWc0t3PESkciaiCbQqfvEPR15PwKlisr9xQIH4HcfD4bJ0Hp4A-Z_4fw3t9UB6y24BZSTBWxkstBD-iLdCNmI9A2UHxOKVL-QWlmw-ShWkjfvur2J3Ebohi1hgYIEBoDQJ6cRBCXf1QXW4y8lqFSMyUTaREJ0v89WWMVjaL8dA5EeRsRVjLuk35zyz7oswzly89kPp8b1RKmUeb-GUrmPeFoDSoWrt7h9D-nSFyQrXnuqAFgOdMYasRv2hj5MGVLouweBjkFgKHri3C7mGjJB9W-7fHlIWgI4daT3q61ftDKOHiubmtWhiDHFh9t-jbH6M0lM8Np2kSf2EcmNsRrCziu8esKDskPMooIeucprNkxbcbEsjPqn3-t_ADswMKmqCVAmqeqAvOZwH-CKBAt_nusAIQWe3psi2WbyGOGc8cfYvrGlMlSR3si2xiqLd9MG7Uu4pUyXln582Tbz6PL8iQWFHMlws5jK-RTrluRqv65N3XO2n4D7W7nNnezMQr4v0XjmnUn47oAA7M6ShWCKC9jxSUigm_UmGNhRCBHO99wnPfqQKlcluN3We9S6Ji6yy96txgZ22x2YzSQFfMVIzPfsN69qhgrbpjne8lXuMQeHlDuX-z2ok_gcAZA6S886JU59V9HTx62ndSdKD_6STfWZstv8qGOUbad8DViZB303LKVLldyrkOGTw6eeH-7mBo5VKH4UeQP3FUAdbYM3NXPZH4tZWsIbo3uBhLcokikmUWErQ2JIkXFC5s7I4wh_9HHuQCrqDSsXRlx18wq3lE7xAjzxqpd0p2_S0CRxCACzoVh-A7StaGzu5M7I8J-xNnCrN-71zRnICGNNRVtIHqSgal9aOyJ1CjhlOj7uPCfBFfW5jDcp83bS5UXNhJgWmDO5X_-Nt-0Xe29GDywxkSyh6m7b8opn8xiFx-Q8xzSOlQ2sgZw9fQE6Cstwu7bwnLMWfF2IQf8aHr3X3LLgsD9KFwsuDEx7CnGTyxTO1cu0h28DA9i6UfsAnGlqvVuukn5SsfGbofFDITO8TDVZjsJ-4MFukmU-Au9YG9rsXsIhOiTCRL7QvPrUlEuO_AsfN0THLXQJ_IF07DZovjg2eKlrmy-FtbQssmmPKbykTP3yYDjQJpp7kHngTIz4JPjstH65L-XFhRVoOlXghPHbLstZ0g_emLeiRLqQYfi46srIIiWDTS6pxVrB2Xp4P5PkraS2hHT9uBX8a_UXB0Rwh-7-h8sWN502G0bBw6o6SEIm3paJ4yTT2yOZffNOuYnZnb5CihLr283x9ZkeaC8IYsEeuM_p0QEz8cF8JafhhL8-NblPHK6FfYzSrCeEcYZWG6Yl2i3LnIX6Uiex4XLb0n6pDSCaktMN_0rcoLk9lwUfLDXobS7Bmr6rCINLPEpD3R-Es7xkGE8sNAi2Tpl5OnP2q7UKPmQhHqh5riJXC4OZCIwPlDfatTXpyxxaqdeFQlIeA5d9ua3IOSzKziER4xo_DKqIdtsxTKZT-g-KJdBjwzki6slonnNCGnbaZwlV9664zsH5c6zb9o4Zv5A4JT8woFlS3Ldl-PWGLKKBOLGPgEWnVaOOmrX1yLX0hY6_oqsCTlq03qvQaAFvsROSM972s2x8zFa2h0LfAEkp5gpcPcBNDw0z61CIxboEKHhAtIm-72BDYBJ3CzYvy34zmAvCyby90nmKIw8j2AjrH-KEkO96vTS1wt4vUPfTQuNNsIgpts-OQR5uDYfLPhCOPYuTVRryU9wJ3WZs-JQzLgU-q4PlfjTA81knFO4ymFtl1QAqqCCKXXQEfoei4Pm026Ov8LxX16sRVHI1CT6mGfCvRLHn3LAYbPATAfAOdQwztX4JSRO4oy84G9s6NG9trIgAxwQUSZaIS1azVF5kYQ0zkS-crpbVL82GT7V4KVW972xfX-ff29261DQ00u5r3LImgi_L53LV5N2tvwn9V32DxHeRdU6r3BHFj9WAQETJx_Cn27o_H7Xv15bKG8mFGXcC-ngqo2SY3B3XXJBHFWN1BE3GQUdXb0a9961mziQ8ekYkIGbrBSvzZODw2Zj3MgyGhbKMvj5YlRPxbPWRxYEZelZhy-HCUHFZdFuHFRy-obIIOI0lUpAVl7j71L7AGaP-MxBSpCD-Iel3h8A_fdJTq4BSk4l9XflHgwHCf7Gy2ghkKvtdzFL6HV1IqqQrXzwMI2dlifq_Ui-NTUiYT7O_irGtfyJDdE12QTS7SSoie2qnAI9YwuXQScUTewZ_RjzvfOhdZzVTBwlD0Ht7oPloR3JHzRXqx0CF0DZXVPjJ0DkWNR4fZ0mT_oe0A2ZjKYttbq_TB-up6hQnqDK_CiJjOdKlEIbktV1_q5fq6iYM8sGmOTIdvESGGiClfcxHIpWDTsC4TsyGLeO9cKWt-UgYVVPJHCHXiaHYho61q6hXN9untJsfL6jHkcXQOPZ1GKyENrPcH0mdwUmraQAWZ1GU-iXWwgs9y8zIN8OJL2Bfhi29c4gE2C2Phsnfrp8CvN0NH9dCT-hgvz_2ZrecOBtwu4ncnHkbVh8hHRANo-6ync9Hb-2sw3bWWkDOPAWBDgteyqgCV7I5g8Wr0gNV19TR9XvzVBaK0Lm_nJwr7p7W1TxRehylqqzIBJl9ZyzCYe5UGqL8eSAguY5SDC-6InbnLmZF-tR18ValWQF0iWjpE0txzbP7Laj23OPBJBY_GdJp1UTOTQkM43n2kyP82X794piqQ6Rx7edPk-Gv3Lny27XmcLe5V6qPq9nyAwXx1yhaRVJZxvXvTjaYLUv6GjAyZWct8MDirBGz7lL11hew--fbidsYDjvHJ2x7XJU4voNFALVQObpFBO4Rj0k3aouwXcf92nXmFmcUs7vCBHT8ZI09Nba7XOvv3udfk3sfmscw2GODYrHi6rqAwMvN-tM6i7mYIauNQOmZQwDOtlL58hFzjZIHTWohZvrXviRtqcfBV7shKDeexWh09B68w-f8QsSd2HS2r5SXxkAqPD8P3YmhK2oaPL3_LR7UWy1Z03obCwFlyQxQBSeGBMVqd4M8U9o2_bSTa2zl5le1hgjpwJR5F6XRDTT6jm3O5Ni5fEUa9udoLXUkxd-2qOGtw3dMzqM35pGwx31wjL5bBQW8kh3DiJeF6neQitmjAYfFRNoPmo_ZR5OWVkjc0tNqXd5Mtf_8se_AgCeuJtIowVMNcqe6S0i4e13woyQc6WQCle-7qq6b5Dou-4ggYhFDbe5z6sZuMhtuJDl0og-ELCPoCGJ4WCZnmI27IE-koD5LhRf95Nbj51NYW7zI9H_vPdcMZWCKYL4DMR9-6Vm_CeMqpKo8qEdSu0hiUi9Z_ab6idrb1rxJisqDvHWRmSuPPRzNxDgOYJFl3WnkADMe1fZCvTrO9dz2qKkztZSV5xEoCvxAlSpflKWE4QHCEG_H3p2Kk0uqmB7bzxZ8wdHxEbL9AgShrPiuwQL1BKHwWLgvxXGoJ72K-B313VOpvMax8wxI0bm_XE_N-nbtHjJ9Bpn5UkJsacfKGcSvfFJaS0q2d01IBbSnvmLqsXUZchb2l81cX-C_VRDP1zzBN8HwuTLqhpGL3349_Pn9wXWuBlgxJym-K92D_7mpSnWwVjcAJCke0TZE05h1cCmNVsZjF4z8THgicsDxCsHiPAv3DPU0TMm_kcyzzunN2-FpCdz9MIC0XkuajoEDHVHnU1sfGtekypbqOwKBU__doY1kPP2CqtojVOzaP0r6sN5LI9VcOl2suKoUOgitey1hJ9kmlqeAOZdW_PBLIBEr7fzr2UZJ8xTxvQGpSwt4hNR3OxhIUoOvSLc8XvsPEiT9I3EpqYp-UJg0xDbKtVOVTcMGVbtN5o1lr66mMQ4bIPbGOCH4CyQ_1FPeX3HyeIBRNBYoVP82EfgnY_ypFwXEmDM6Cp-F6P8wgL7-14ybAFUDCm6GORtTN8pmewOtWWdp_llKfCpOnAHnZ9aIFSD32GbBhjQG5HE41dYSyQ9vfVmsw-0gwUR0_uHr3sB_WKNkjgvA-z89pptqd2HjaIKXQ8gB8VlMH5OxF-2r96lvGbJIhqZsQygsetjukhTAPYOHVHBATeq02mAWytlBWvzay1KWPUeVZFhNYx1XpL7JGXJJCfVmsybTcPSUh4djxU-oM-gidPoEsvlB5rr6LxYHw206Bw0AMSqRrxNKYq0MsxLDjNp-dFh4gS3pCQUvNK-A7wxhqnM2SX9b-HyZwJXeyktmmsuPbkXEVXOOwB4S5I_7Qi9mhz949noalCd1WTNG4Q_BSCdh_PrcIe9HjTyMNeX56hhzs2mAUCb8j51y4Bd8TJDeEkq-a0Wy70bPxmaFqdHvIOx13JwjHIJomzjuFKg_UZqo-UI0C-vnxS3hc6H8Uf60814KSiZr", + "summary": [] + }, + { + "id": "msg_00a4aed1a1e9c6de0168f8e8f00cfc8197a01e626cd525a94c", "type": "message", "status": "completed", "content": [ @@ -63,7 +63,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "- **Printing behavior**: \n - **Data frame:** Prints the entire dataset, which can be overwhelming for large datasets. \n - **Tibble:** Prints only the first 10 rows and as many columns as fit on the screen, providing a cleaner, more readable output.\n\n- **Column types**: \n - **Data frame:** Converts character vectors to factors by default (unless `stringsAsFactors = FALSE` is set). \n - **Tibble:** Never changes column types automatically; character vectors remain as characters.\n\n- **Subsetting**: \n - **Data frame:** Returns a vector when selecting a single column using single brackets (e.g., `df[, 1]`). \n - **Tibble:** Always returns a tibble, even when selecting a single column.\n\n- **Partial matching**: \n - **Data frame:** Allows partial matching of column names, which may cause unexpected behavior. \n - **Tibble:** Never does partial matching of column names; always requires exact matches.\n\n- **Row names**: \n - **Data frame:** Supports row names. \n - **Tibble:** Does not use row names.\n\n- **Performance**: \n - **Data frame:** Base R structure, can be slower for certain operations with large datasets. \n - **Tibble:** Optimized for modern workflows (though both are similar for most basic uses).\n\n- **Package implementation**: \n - **Data frame:** Base R object. \n - **Tibble:** Comes from the `tibble` package, part of the tidyverse.\n\n- **Creating new columns**: \n - **Data frame:** Can create new columns by reference. \n - **Tibble:** Creating new columns must be done using functions like `mutate()`. \n\n- **Error messages**: \n - **Data frame:** Sometimes gives less informative error messages. \n - **Tibble:** Offers more user-friendly and clear error messages.\n\nIn summary, **tibbles** are a modern reimagining of **data frames** designed for the tidyverse with enhanced usability, stricter behavior, and more predictable outputs." + "text": "- Class and origin: A tibble is a modern reimagining of a data.frame (inherits from data.frame, classes: c(\"tbl_df\", \"tbl\", \"data.frame\")) with stricter, more predictable behavior.\n- Printing: Tibbles show only the first rows and columns that fit, include column types, and never print row names; data.frames print all columns and can print many rows, with no type summary.\n- Row names: Tibbles do not use row names (they\u2019re dropped or can be stored in a column); data.frames support row names.\n- Column name handling: Tibbles allow non-syntactic names and can maintain duplicates, with explicit \u201cname repair\u201d options; data.frames also allow these but without standardized repair behavior.\n- Type conversion on creation: Tibbles never convert character to factor; data.frames historically converted (stringsAsFactors=TRUE before R 4.0.0; now default FALSE).\n- Subsetting with [: tibble[, j] always returns a tibble (no drop argument needed); data.frame[, j] can return a vector by default unless drop=FALSE.\n- Subsetting with $ and [[:\n - Tibbles never do partial matching; [[ errors on unknown columns; $ returns NULL for unknown columns without partial matching.\n - data.frame $ can do partial matching; [[ by default uses exact=TRUE but can be used with partial matching if exact=FALSE.\n- Recycling and size checks: Tibbles are strict\u2014column assignment requires length 1 or exactly n rows; otherwise error. data.frames are more permissive and may recycle (sometimes with a warning).\n- Column types and list-columns: Both support list-columns, but tibbles emphasize stable types and won\u2019t silently change types during common operations.\n- Performance and ecosystem: Tibbles add safety checks and nicer display (slightly more overhead) and integrate tightly with the tidyverse; data.frames are base R\u2019s minimal, faster-by-default structure with broader legacy expectations (e.g., row names)." } ], "role": "assistant" @@ -73,7 +73,7 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, @@ -92,89 +92,83 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 30, + "input_tokens": 29, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 444, + "output_tokens": 1893, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 1472 }, - "total_tokens": 474 + "total_tokens": 1922 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 16:12:26 + recorded_at: 2025-10-22 14:23:48 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"user","content":[{"type":"input_text","text":"\n What is the difference between a tibble and a data frame?\n Answer with a bulleted - list\n"}]},{"role":"assistant","content":[{"type":"output_text","text":"- - **Printing behavior**: \n - **Data frame:** Prints the entire dataset, which - can be overwhelming for large datasets. \n - **Tibble:** Prints only the - first 10 rows and as many columns as fit on the screen, providing a cleaner, - more readable output.\n\n- **Column types**: \n - **Data frame:** Converts - character vectors to factors by default (unless `stringsAsFactors = FALSE` - is set). \n - **Tibble:** Never changes column types automatically; character - vectors remain as characters.\n\n- **Subsetting**: \n - **Data frame:** - Returns a vector when selecting a single column using single brackets (e.g., - `df[, 1]`). \n - **Tibble:** Always returns a tibble, even when selecting - a single column.\n\n- **Partial matching**: \n - **Data frame:** Allows - partial matching of column names, which may cause unexpected behavior. \n - - **Tibble:** Never does partial matching of column names; always requires exact - matches.\n\n- **Row names**: \n - **Data frame:** Supports row names. \n - - **Tibble:** Does not use row names.\n\n- **Performance**: \n - **Data frame:** - Base R structure, can be slower for certain operations with large datasets. \n - - **Tibble:** Optimized for modern workflows (though both are similar for most - basic uses).\n\n- **Package implementation**: \n - **Data frame:** Base - R object. \n - **Tibble:** Comes from the `tibble` package, part of the - tidyverse.\n\n- **Creating new columns**: \n - **Data frame:** Can create - new columns by reference. \n - **Tibble:** Creating new columns must be - done using functions like `mutate()`. \n\n- **Error messages**: \n - **Data - frame:** Sometimes gives less informative error messages. \n - **Tibble:** - Offers more user-friendly and clear error messages.\n\nIn summary, **tibbles** - are a modern reimagining of **data frames** designed for the tidyverse with - enhanced usability, stricter behavior, and more predictable outputs."}]},{"role":"user","content":[{"type":"input_text","text":"Tell - me three funny jokes about statisticians"}]}],"model":"gpt-4.1","stream":false,"store":false}' + list\n"}]},{"id":"rs_00a4aed1a1e9c6de0168f8e8dcf5d48197a379e1550f6c763d","type":"reasoning","encrypted_content":"gAAAAABo-Oj09zohuUTJqmfG6jVV1xDiFrpVgC7AQJ-a1O8CLBvrGInzrT9cvAyYDNAIUDWWkby2U6ZEwblpKJbTf1IKWJ969ki7znt9wN9YRqP6paPgTR5akXxZNcj50s1dEI-v8YSwynNWnkYTQPITbVEDA0ea_GlIUFNvLEUS44w44Xvhdek-nCXSDDtwLBcs10lkEW39fkXGyvVHwYiVvGj2ldSNxaFk2nE7m_Tb1jY3_Kb2Obo6oORUM7kZIOPm3iKu0NsBysU_RzxYdXWTmONoSCR4MXH5YFmG9r6Vb7FzOS3rKnD5gOj7ErGquTGqlVbNOoLZhzbQi_QHUz2LwZUf7Pltoe-0Pxj79u9CvRpyo-UGAJ9tMEXU2iZaqsS_EUfZHsedwuF8RfriAm1xMWFD4g7zG6qZZgP6aK7_Shj_o5H_dTOhmyfGS48tC6jSfeOqsU__QUQ43xLORwKlFrWkmgcEB-Z16V-TPPUjDCsN73t_xAw6cS2tYsCeDgvmHtW-IQ3o76yyH9oJG1lOLI0szTG0wRMTkBGW58f4wtdUgTEp182FfHLKK4uqmpS91qHd19R2MGWZbNEEBvH7BaRM72s6kVu-uuezq10C7zg-HmqZrgahF2wj3DUWJVfgWSt3LPz-41TgKwYV-WptsTt6K0OVBoqXpre_BC9IxACXnP1xZolS-seIT91LbchPwFY8KeJe8Wh18C_QXSt5Ps8hJ_3uWn9nKjFwe-hU3jK6fUN-W73sG5GpmP3FUP4annWH7UMxWGeqwRMy41IB_QPpofFW3GiyuHC408GO5xK9WQwyowi5o12y9xRChNb6Avn0N2UC49FL1nlnYIwkgspGNVEo0QCKrJvU8bC-xTBkGUyupwVQ8I6AQnQoStQ_wrOkV3mKHMRYYyOrpFhs88DUSe5e7h473KTTpzEKQw40KpJOhyttFuA0dq04cQ57elae9jWnfCsKHBeoMQ35x3MzWhge1oYaqfGVkc8L0GHQjrSVy2ON6vBXANr2K3f-BngeA8fbdYc-P1tdX8Vc4CxvooZtCK3Mv7Lm8S35QUY-YJ9xwrmfHaV3Tp_Mx7SMVHcHyrix8VBGZeI0QTVg4T2-kBnjfy9ZvBjzGTgGIIjP95LfIPgwEDFJW8-Zhs9LG7FfuBgdMz_1akCSfiTr6kIB9oAaT5GSC97J-Sj_5cTBISPgflCviWqV58FibpRSNWTO74vQOVMs3mWRm0onPP-5zWF8TKmTKZle_KtsI570e1DRQzHCW2LD259DdGyyyrvbJR2x8PpxeMiCVDBJS70gQOfWtqdpoZMlWVaoy2zcrFkmo8l3wTx2-qt_sDqOMbBM5TCyGLzxo40r8apfpYL1hxK266aLKlhOQ4R79DwSBU2gOok9b5qsG_EP5N7PFOFbdkSUr0cRLeKpb7pV1gUlRqP0D4N0wY4bsL7cWFO-WJJwamNlcL15NlS_5fZ-_jqt3mJxpMU8Rc45EHqfUj3fU1dySoECxICGc3kEXw9WqGUo6pX7gw9q3Y5v6gRyGJ_7QL5p9xo_gUFKWThSmcLUbUY0r67xKrzgV4pC8R4aXWV27wb0LRh-xPB9XaDrNKIZjFCZl60DzuhHwGt40DI91dJ2nObfpVvHzncOiO8ZUQSws9kKSaWhOmhojTgZK3r3-1V62-AVDcqx4UKGQvljSAH7DrI9leuOLXhkJVO4y8uW3NCbitTYvrXSVKvcICgUyDLZs5knMyfQ0UfV6tsO8nHuzfOCuAffO5Rw8tZeV7D-i0sFh3_onImxKll5BqTuvXEA5jmBLvPhYrnwaI4u9DGgN9ls7I9Qb6m4NRK4gVhZbzuZPZkKlRzzhjeagpWopPk72PT_zV3-seQBGNyH3K6uWVvABx8iTXdrJSdCpxdeEoFZx_mM8FAkVPcnXgEP7nh-hX4xZWmvxDV1uNdRNQ2oYETkHoLqTc0nbRfmnMS7ckhitRKJA61yYr97dw3C7Ifg4xuy2O5LB-CCXHzu4cJkS7_aP9tLjmxRBN5pbj3cGpTtoi_gyfGdeGRY86NIdGFdkcCoZvE12UY66fcFGIZ04MgQryFY7tBhXR3zAJSE7hd9IJDQSZ0hWUmgDOP4EfYrcHgpAeFS1tfUqzC_bJpdQgUq8ZKCuB2YtL6JuQnsZTGI03L9Aj69InmyRX7k6_NoD6JQ_xhwQedF3oEpgl1dP9KfUzUH9XPz38HGjBuceNjt--o1V7fsolHqlqm9zzG_NAUntixOf1FYMCkLBPHGR0Wquy0Z_t-QkxZ6a44T-YFHKGdrp3n0dKxE0sE-KTLiwmzWi5q3o0ekAwSlXxj_JMW3m51qKS5h1Q6o_q6x9o29unzSzXoSe3uZ2JvLUiHp8K3d8sZ8OCb_JVQyjTPlbNdT9axLoXk5Hx4gI2Hmn1Bqsuph32zNjQ6ZFm-yid_9fvyGoQ280kVi-KLjAGQGxMbDcYwUjNj9CWsDoWWOp-XxJ9NerbdLObNObcfBPXCL_tUQK42Wx5Ap0nTMMdkNDQEWiOkIX0HpMB22N9g-E4h2esApLnqDqwUUwn-Zeif6HtwaRYnQk3CqCGdOcBgmRlVX5RH7Vcxtrex44UT4rSOCg7hfKgFG-E2MC9wD55rrywNBb3c2AZsievtOnsREieoz91FSnFFRe1hmTkXcohsoKJcjG7H1AI7_p3fWoNJOZdu-OAOCGIhHUAzkghwwewzfju4WhgpI5Y6baAXunkrNAEYyy9niO86cuzvQo9EEMgUkSl01D1EkA8DHcHpc-YVhphjD8iVfNZGYks3KnKkaI19c9lnC9YUn1aSbnqcK6PihVvVB01ZCJY-RHzZppi1bnu-pHKZz2e90Qnk9KsPZ9dSU0Ia0YsBMGL8cQoLbDVUOa-FEtkE15rJy2edUthZCxFRWYKF6RlXoXG7XhvsDdjJgvczkUX5B8VZ76xmi1fFKjTO2Ndc-8RGRBMUecRjkupFLt6jFD1qKJYsGzsWmnxhka5kZ7mNuOJjbn7YsAqUXDi3IDdBcrQo9t8h6QQ-rO77JLLrMDBF3iK5WBz4mA5YhVwynMU6Gg25rSmyt9aPGMxkK1pl8m0Fl6j_4HjEJIHYNsvv4J9jK57r0pha2k-hddK9iOUW2yk7d17A8eeXW4KeqLXDUlRPdbxcLWOxQWv3hYPqu6jHycNTlf8_SMCHt4JRZ3L2NDDGwUuwdFpxSGoJtz2Z6yJc2NVaqQ3FnEvSscjuNMlthYEju1TevK3YDMQVC-zsQE-cB1YWfq046LfyFTgSMVV_RQqTumVu5OI5RxYquAU4Nr92oUHeNEKa5ulHKEZKPmVm_u-842gxPB7exY1wqiuDcAWRDzLhK605DjddI-_1Q_UbJPCGeqJNwUC4chOki4w4pgaMJglb_ifxDdCJJ5n4ETUD3DfDTwyB8VzfsOdLb-T47fKN_w7CeOmx_EFeycfmgt5DfaEZdvpcsSDmWqyOT0m2P0kTkYSFDbFcHpfsWyhWdqFjBKgemDMfy4WvdO_YB36SoNVIk6HJJBgKtPyjuVS0IWqSdlDMmm26A2lMTmy-3aor9xsTRsktjbMofOaVk7-5Qcc9WBA_Ee_DsQQTr-56RddwNayOUyVmnrsELmNM4_NpcMC5WgCGM6dCCk9gzEOBmpecRzLaauKJWiau2rhrnFj9zOtqeZmH1c7EEBH2-Y19x1Ng6jAUSWwy_slSdv41bvxKJUlLe5e7XRByQV2ZIZtOnXStkzXnv4K_cnoWyn6mYMgPdKx5qAmXS1BIEkmie3StHrkpc8J92KrVH2cOT3HwxSqBvRvd-A5jHcgQFamTYg_gQoCYFd8beOR7VGVRIKQ8Cf5HmfaLvnlUc10JOXhsjpcgwRK2V5lfbHmW9dB-OojlwmRIKYmyzkJOL7ojs63bGSnfSB_KtTnHesJsYFxL1tyte3Yf0AwI5seySUQ-qu0h-aIS-XMew_OtzVHt7yP8FM0Mq-ozv9MObFZbEO51UsKZHf85bY5J4trA9zXt232PhHlLlUdAx7tQ8xfoI2DH0DCKKytRLbe0a9h5kD4EYloqH7liP0ePQgKO2nJy8afFfdp_MvwGkqagOi-mnR8UHDmP9XcT5NgazVj9f1C3e5ZoCV3OZZp2b3FlkTsOVbnhQQ4UfMpprDPWXaB_3oSJPUFTl7UJAsN1WUadzS9FFs5vOUmwF_qZ0HdAs8W4lfEShBypPkXsvBrAXdkVpFKCE87zqjRF4A10tmgF1-jfOKYdGTuka-tFScl6LJc3InB3jbCr0cc3vKrAAZOVR9pleERo3vXbK7dnXw8fvsmMnFWg8c8V8oDXMw6dCZHDe1Hn9Q5AwTupk1x2jYJqBYDLBwpXUl-eDOw2FIokkS6bCBG8YQP558-VellY7IHVOOR-DKFwVsSM9xcnRojrvGzFqdYux6v2UkmOaElphsKHP1agsFhtjp3CwSRg4LId7L0Im-8cIYEV1TGdmxSSaZBwQw_7c1RA_MPz4uMKjEvk3pxXR8peXPrEGxYUYYi400oBWXhTHM3SDjIT18q9PDBxaXWBK207R5o4D9U25h35vV6FMmp98ZYSpDk5YVQh5Tn2NbHCtebk392EcxvmHVsjmoh9utjHumm8eKsc2YJhn4zyKTsVM9scedqzfkBMHXR7Qs09TH8HcDTnARmyKHT9UwcAHjhiOV4FmOZJ6zCyFZpU93urNX4jH80TclLHP9U1IMyb06vL9DMnEBS0YYRi5UsYZZn_L-YJu1wzvugjBVYmeaE3pXTZwlAR3UXMVOh-9-TqT_FaVAgh8oMwVhKlTh6rfaYE9hDMhpxPe3qwctDfQeCsyK0HzAvVTYtFV4_5ax7CC72OTpgtO7kbmpHvoIaX7qxK9MoOAdYXIktJByo8nFu8Jk6QZ6e91ANRZqfsUUvozIXF_fD27i8sSs-vgvHoX6qUi2U0Wyb5Uu_0glzZlAA3H5zk2_ZACVLJV3-ObnIJcWwxQCb7vu6DdHInuzvHKyi982zbMcfgkz-G9l9sB_utcNla2e6L3lUL2Rtkp2jlAx6unfaTMTEyQ7VXzX9-s1tgVajDEUzHY5MKlKWOewUd2DskjTlqsgwadDkLiXmqFk73X2NF4roGoa6Ndf12A3ayTCHSTYK76zGsk75h5blJyQiod4sX0dTNV1YiVA4DS2tShAbVXJnVjGJ3JW6KxZls0EhZlWhJqhmeOIqGsTOkqYJ09IzYTysTeUcHzCaYom4TRxmFrpk9KgyunjnU54qOOq7EINl5Rm3tkYAQF7LFjeNtecDGzqy1jzBmwIj8sL00AS1CR72YOAUzYiHjVdB2cOSKGaJsOiD4PUY_bxVC4ZMGHakNHRuyH-jpVqq19w8-413T0h8blAr8-iCp7Z_8hSDZOu1CXi9ScN-P65aiNbVX377tip9C4zuGt8pgHJ3Kh1Kc29RcQKp3zowPUsM9IGvEJWc0t3PESkciaiCbQqfvEPR15PwKlisr9xQIH4HcfD4bJ0Hp4A-Z_4fw3t9UB6y24BZSTBWxkstBD-iLdCNmI9A2UHxOKVL-QWlmw-ShWkjfvur2J3Ebohi1hgYIEBoDQJ6cRBCXf1QXW4y8lqFSMyUTaREJ0v89WWMVjaL8dA5EeRsRVjLuk35zyz7oswzly89kPp8b1RKmUeb-GUrmPeFoDSoWrt7h9D-nSFyQrXnuqAFgOdMYasRv2hj5MGVLouweBjkFgKHri3C7mGjJB9W-7fHlIWgI4daT3q61ftDKOHiubmtWhiDHFh9t-jbH6M0lM8Np2kSf2EcmNsRrCziu8esKDskPMooIeucprNkxbcbEsjPqn3-t_ADswMKmqCVAmqeqAvOZwH-CKBAt_nusAIQWe3psi2WbyGOGc8cfYvrGlMlSR3si2xiqLd9MG7Uu4pUyXln582Tbz6PL8iQWFHMlws5jK-RTrluRqv65N3XO2n4D7W7nNnezMQr4v0XjmnUn47oAA7M6ShWCKC9jxSUigm_UmGNhRCBHO99wnPfqQKlcluN3We9S6Ji6yy96txgZ22x2YzSQFfMVIzPfsN69qhgrbpjne8lXuMQeHlDuX-z2ok_gcAZA6S886JU59V9HTx62ndSdKD_6STfWZstv8qGOUbad8DViZB303LKVLldyrkOGTw6eeH-7mBo5VKH4UeQP3FUAdbYM3NXPZH4tZWsIbo3uBhLcokikmUWErQ2JIkXFC5s7I4wh_9HHuQCrqDSsXRlx18wq3lE7xAjzxqpd0p2_S0CRxCACzoVh-A7StaGzu5M7I8J-xNnCrN-71zRnICGNNRVtIHqSgal9aOyJ1CjhlOj7uPCfBFfW5jDcp83bS5UXNhJgWmDO5X_-Nt-0Xe29GDywxkSyh6m7b8opn8xiFx-Q8xzSOlQ2sgZw9fQE6Cstwu7bwnLMWfF2IQf8aHr3X3LLgsD9KFwsuDEx7CnGTyxTO1cu0h28DA9i6UfsAnGlqvVuukn5SsfGbofFDITO8TDVZjsJ-4MFukmU-Au9YG9rsXsIhOiTCRL7QvPrUlEuO_AsfN0THLXQJ_IF07DZovjg2eKlrmy-FtbQssmmPKbykTP3yYDjQJpp7kHngTIz4JPjstH65L-XFhRVoOlXghPHbLstZ0g_emLeiRLqQYfi46srIIiWDTS6pxVrB2Xp4P5PkraS2hHT9uBX8a_UXB0Rwh-7-h8sWN502G0bBw6o6SEIm3paJ4yTT2yOZffNOuYnZnb5CihLr283x9ZkeaC8IYsEeuM_p0QEz8cF8JafhhL8-NblPHK6FfYzSrCeEcYZWG6Yl2i3LnIX6Uiex4XLb0n6pDSCaktMN_0rcoLk9lwUfLDXobS7Bmr6rCINLPEpD3R-Es7xkGE8sNAi2Tpl5OnP2q7UKPmQhHqh5riJXC4OZCIwPlDfatTXpyxxaqdeFQlIeA5d9ua3IOSzKziER4xo_DKqIdtsxTKZT-g-KJdBjwzki6slonnNCGnbaZwlV9664zsH5c6zb9o4Zv5A4JT8woFlS3Ldl-PWGLKKBOLGPgEWnVaOOmrX1yLX0hY6_oqsCTlq03qvQaAFvsROSM972s2x8zFa2h0LfAEkp5gpcPcBNDw0z61CIxboEKHhAtIm-72BDYBJ3CzYvy34zmAvCyby90nmKIw8j2AjrH-KEkO96vTS1wt4vUPfTQuNNsIgpts-OQR5uDYfLPhCOPYuTVRryU9wJ3WZs-JQzLgU-q4PlfjTA81knFO4ymFtl1QAqqCCKXXQEfoei4Pm026Ov8LxX16sRVHI1CT6mGfCvRLHn3LAYbPATAfAOdQwztX4JSRO4oy84G9s6NG9trIgAxwQUSZaIS1azVF5kYQ0zkS-crpbVL82GT7V4KVW972xfX-ff29261DQ00u5r3LImgi_L53LV5N2tvwn9V32DxHeRdU6r3BHFj9WAQETJx_Cn27o_H7Xv15bKG8mFGXcC-ngqo2SY3B3XXJBHFWN1BE3GQUdXb0a9961mziQ8ekYkIGbrBSvzZODw2Zj3MgyGhbKMvj5YlRPxbPWRxYEZelZhy-HCUHFZdFuHFRy-obIIOI0lUpAVl7j71L7AGaP-MxBSpCD-Iel3h8A_fdJTq4BSk4l9XflHgwHCf7Gy2ghkKvtdzFL6HV1IqqQrXzwMI2dlifq_Ui-NTUiYT7O_irGtfyJDdE12QTS7SSoie2qnAI9YwuXQScUTewZ_RjzvfOhdZzVTBwlD0Ht7oPloR3JHzRXqx0CF0DZXVPjJ0DkWNR4fZ0mT_oe0A2ZjKYttbq_TB-up6hQnqDK_CiJjOdKlEIbktV1_q5fq6iYM8sGmOTIdvESGGiClfcxHIpWDTsC4TsyGLeO9cKWt-UgYVVPJHCHXiaHYho61q6hXN9untJsfL6jHkcXQOPZ1GKyENrPcH0mdwUmraQAWZ1GU-iXWwgs9y8zIN8OJL2Bfhi29c4gE2C2Phsnfrp8CvN0NH9dCT-hgvz_2ZrecOBtwu4ncnHkbVh8hHRANo-6ync9Hb-2sw3bWWkDOPAWBDgteyqgCV7I5g8Wr0gNV19TR9XvzVBaK0Lm_nJwr7p7W1TxRehylqqzIBJl9ZyzCYe5UGqL8eSAguY5SDC-6InbnLmZF-tR18ValWQF0iWjpE0txzbP7Laj23OPBJBY_GdJp1UTOTQkM43n2kyP82X794piqQ6Rx7edPk-Gv3Lny27XmcLe5V6qPq9nyAwXx1yhaRVJZxvXvTjaYLUv6GjAyZWct8MDirBGz7lL11hew--fbidsYDjvHJ2x7XJU4voNFALVQObpFBO4Rj0k3aouwXcf92nXmFmcUs7vCBHT8ZI09Nba7XOvv3udfk3sfmscw2GODYrHi6rqAwMvN-tM6i7mYIauNQOmZQwDOtlL58hFzjZIHTWohZvrXviRtqcfBV7shKDeexWh09B68w-f8QsSd2HS2r5SXxkAqPD8P3YmhK2oaPL3_LR7UWy1Z03obCwFlyQxQBSeGBMVqd4M8U9o2_bSTa2zl5le1hgjpwJR5F6XRDTT6jm3O5Ni5fEUa9udoLXUkxd-2qOGtw3dMzqM35pGwx31wjL5bBQW8kh3DiJeF6neQitmjAYfFRNoPmo_ZR5OWVkjc0tNqXd5Mtf_8se_AgCeuJtIowVMNcqe6S0i4e13woyQc6WQCle-7qq6b5Dou-4ggYhFDbe5z6sZuMhtuJDl0og-ELCPoCGJ4WCZnmI27IE-koD5LhRf95Nbj51NYW7zI9H_vPdcMZWCKYL4DMR9-6Vm_CeMqpKo8qEdSu0hiUi9Z_ab6idrb1rxJisqDvHWRmSuPPRzNxDgOYJFl3WnkADMe1fZCvTrO9dz2qKkztZSV5xEoCvxAlSpflKWE4QHCEG_H3p2Kk0uqmB7bzxZ8wdHxEbL9AgShrPiuwQL1BKHwWLgvxXGoJ72K-B313VOpvMax8wxI0bm_XE_N-nbtHjJ9Bpn5UkJsacfKGcSvfFJaS0q2d01IBbSnvmLqsXUZchb2l81cX-C_VRDP1zzBN8HwuTLqhpGL3349_Pn9wXWuBlgxJym-K92D_7mpSnWwVjcAJCke0TZE05h1cCmNVsZjF4z8THgicsDxCsHiPAv3DPU0TMm_kcyzzunN2-FpCdz9MIC0XkuajoEDHVHnU1sfGtekypbqOwKBU__doY1kPP2CqtojVOzaP0r6sN5LI9VcOl2suKoUOgitey1hJ9kmlqeAOZdW_PBLIBEr7fzr2UZJ8xTxvQGpSwt4hNR3OxhIUoOvSLc8XvsPEiT9I3EpqYp-UJg0xDbKtVOVTcMGVbtN5o1lr66mMQ4bIPbGOCH4CyQ_1FPeX3HyeIBRNBYoVP82EfgnY_ypFwXEmDM6Cp-F6P8wgL7-14ybAFUDCm6GORtTN8pmewOtWWdp_llKfCpOnAHnZ9aIFSD32GbBhjQG5HE41dYSyQ9vfVmsw-0gwUR0_uHr3sB_WKNkjgvA-z89pptqd2HjaIKXQ8gB8VlMH5OxF-2r96lvGbJIhqZsQygsetjukhTAPYOHVHBATeq02mAWytlBWvzay1KWPUeVZFhNYx1XpL7JGXJJCfVmsybTcPSUh4djxU-oM-gidPoEsvlB5rr6LxYHw206Bw0AMSqRrxNKYq0MsxLDjNp-dFh4gS3pCQUvNK-A7wxhqnM2SX9b-HyZwJXeyktmmsuPbkXEVXOOwB4S5I_7Qi9mhz949noalCd1WTNG4Q_BSCdh_PrcIe9HjTyMNeX56hhzs2mAUCb8j51y4Bd8TJDeEkq-a0Wy70bPxmaFqdHvIOx13JwjHIJomzjuFKg_UZqo-UI0C-vnxS3hc6H8Uf60814KSiZr","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"- + Class and origin: A tibble is a modern reimagining of a data.frame (inherits + from data.frame, classes: c(\"tbl_df\", \"tbl\", \"data.frame\")) with stricter, + more predictable behavior.\n- Printing: Tibbles show only the first rows and + columns that fit, include column types, and never print row names; data.frames + print all columns and can print many rows, with no type summary.\n- Row names: + Tibbles do not use row names (they’re dropped or can be stored in a column); + data.frames support row names.\n- Column name handling: Tibbles allow non-syntactic + names and can maintain duplicates, with explicit “name repair” options; data.frames + also allow these but without standardized repair behavior.\n- Type conversion + on creation: Tibbles never convert character to factor; data.frames historically + converted (stringsAsFactors=TRUE before R 4.0.0; now default FALSE).\n- Subsetting + with [: tibble[, j] always returns a tibble (no drop argument needed); data.frame[, + j] can return a vector by default unless drop=FALSE.\n- Subsetting with $ + and [[:\n - Tibbles never do partial matching; [[ errors on unknown columns; + $ returns NULL for unknown columns without partial matching.\n - data.frame + $ can do partial matching; [[ by default uses exact=TRUE but can be used with + partial matching if exact=FALSE.\n- Recycling and size checks: Tibbles are + strict—column assignment requires length 1 or exactly n rows; otherwise error. + data.frames are more permissive and may recycle (sometimes with a warning).\n- + Column types and list-columns: Both support list-columns, but tibbles emphasize + stable types and won’t silently change types during common operations.\n- + Performance and ecosystem: Tibbles add safety checks and nicer display (slightly + more overhead) and integrate tightly with the tidyverse; data.frames are base + R’s minimal, faster-by-default structure with broader legacy expectations + (e.g., row names)."}]},{"role":"user","content":[{"type":"input_text","text":"Tell + me three funny jokes about statisticians"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990113dd0a986c68-DFW + cf-ray: 9929a79b2d8d4684-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 16:12:33 GMT + date: Wed, 22 Oct 2025 14:24:05 GMT openai-organization: posit-esfrkf - openai-processing-ms: '6541' + openai-processing-ms: '16944' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CV9kTBintBAjseCO5FpENxxzuKxEe7LKb0PqUnZKKbU-1760717553-1.0.1.1-exRJ_MJOp7R2hreY0GVEyLXpCGc4y0ZzVqfOCjaKJ5_LOYxKmLQN1hnDfl1bArIMypp_H5fBh.b5EVsEgGsgil3Mr3WfOV0aBFKba1HqOrg; - path=/; expires=Fri, 17-Oct-25 16:42:33 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=hwsB8L_27zUmAeLSQFOJ.bWNZO4Z.ZJOc..6Q0ArofE-1761143045-1.0.1.1-.kg9VbX2QqK3onNBSpwSIRGeT0UYkY.85bVqMiqXi0q5EQhYk1E3h5LY.NO0.I_pOxFOUW35DCPcd5AxFrn.qOYxcno_bnbdKTVZfXF_3iw; + path=/; expires=Wed, 22-Oct-25 14:54:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=zPEkX90VzOSJT2H4DyIVBAzEbKWEDQj0957JKbUOJE4-1760717553648-0.0.1.1-604800000; + - _cfuvid=uRMFv2HT4POCHrZeFUVagiX0_biHMzeJTlZNRJ.eNDY-1761143045987-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '6546' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999492' - x-ratelimit-reset-requests: 6ms - x-ratelimit-reset-tokens: 1ms - x-request-id: req_5c02b7012ca14c7c89272b4b26b765d4 + x-envoy-upstream-service-time: '16951' + x-request-id: req_7d0eac7e6eaa4cae98fdd3d07a4522c7 body: string: |- { - "id": "resp_027cfa413c86401b0168f26aeb1a1c8194ba14bd75068f6e91", + "id": "resp_00a4aed1a1e9c6de0168f8e8f50e888197aa1ee4470a3a4bb7", "object": "response", - "created_at": 1760717547, + "created_at": 1761143029, "status": "completed", "background": false, "billing": { @@ -185,10 +179,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-2025-04-14", + "model": "gpt-5-2025-08-07", "output": [ { - "id": "msg_027cfa413c86401b0168f26aec61fc8194b745b1aa653339ac", + "id": "rs_00a4aed1a1e9c6de0168f8e8f5e43c8197b98945bd458c7b51", + "type": "reasoning", + "encrypted_content": "gAAAAABo-OkFYg7JY_HgfyObWD9hsSHz_49mGcIpDScXFgN1PVZbb76dnMe1Sm1DinjZD60LgYIQ13hHSFtYqTIxubPO5oNvVbDs0Et3RqWotW2NPUT4CrwxblCbFuDAIe925BVJjdWgD53hoBLra-253228s8aO7n4-y422lRxvrxdbUXzSLXplfrQVkPdI56nzgHM6KKVqsjKBQ9MDs5y99a-LRThHgLo9M6KMpTbZzOf_qLEBhNdqMKqbo49RhyXod6w0QU5GNG2l75rNen3vXR8JnkmtIU1I9UC-q4CpEhd2CGHgm2lmLXf1x887ezilKKsoh5PL87gixC9Uaz_4xieO1FRL2bXyApdNcEtLASiJH_c0IQPgbzDHRSd_62ClmyUmKoCilLMfU7qXV8YbosgP-r88Kk47uCq2PZ-OSkdeJEgMrF4cqUA0WkYyDGmKJa3rlvuCX6JBqiCkMoldcOfwEuZcat2otr0jCwljcpfL56c5IJTTWP0bOBBlLzG94bRXxZ5ljfO88SmP5v4RMzHy5wWgSZ9N2IwX2GzxQKcN7P7gbAk_G-G2PBHjnMI0eiI5ud4phWtlRpcbAyQHdjshwXSPwsXoZfZk6LatXMKGlTxYUXb8X9TR4t5AIO5fuy-_XGxpg_m7k8sQISO2rHCkgauM3XCkrdxHqPwbiLav9PoPw_IgLNggamJSR3uXnNfs5e_qi6iYNU42IsM1Y9IntQEilC-u1Q9zk7ueRQw6GoLrLAhmi77IfC3APekzkp8a6T3qH8ISdEU7JZic5n9CuAxRj7qFI2G0s1CEcSpkAmwqRuiX51JbfYWLmi0X-jOglw_phShHnTIWg8er8yqCcVfoI_o9hF1hg3w6208hBa-xTEp_3dw9GNxDejoexmLmwh_2BUf61fmFJKACrBNy-DyZ9keW-e15BOBRZOQD9owtILs_1vSmrkZRVSx7RQisvnF5b6BxJCXINMErbp7IBRCIgaZIcEpuN_G-ng5Y3YMQ3_KtFINo5R0uu0r20lH2pbi3IBfGKmnpQP0qGWDj4_XqHE0shBIVeUisVW6K1gW_QunbsIn-Ez23BBmQ3tHIkuPhNvXd7zGGl2rXqegG0kc_xuAlUV27c4xupRKnHHA6PpRfXChkTVEA3GWsjo1FqGJM7fih-bKAjWUAc4k3ZIIMpTo6x9svH02WUeucfY9lGObv4e5P01vWkrY-2gYzlNi7ZPLo_uHzrj8fQxZMBGCLTLiouX6T5GGLJgYpg2gEQJjzgv31Jgmi5ys444AeIjvry59PoombFoCcdrcBJbR1sJCziHJvTm7OWq4DgMpFDv9icVddOrLrF_Q6r0W0SaHm4ofKS-fNrAvFruEt41fclwZkq6Ljjd9x3q_OIfT7ul5ovY0SOvZU8PZT0B8e-pPq6R-kbvO9YzfQPST9uZ8RUxs2TlwTZbNO-PZsQLT8IeHJthRE3Q73d4nxqu-KYM4Xov-YZihsKVfx7K_fRSCiy3w2HLzeCmQAQEoRde561ZOpEcCKN3PC5R2JimLKFjldAX_rKry-49m80AGoV2dw3i72T9Ego71XulDhZZUdyiiK_mhI5eGKy3MtQJADdGJPpeiWPkI7QkoXirgeX5fvjfasJsu-DUyvBmwcMSCDIpmaRAFwtI5Lg0VmQaULL-B-R1PaDD88NtXfpL-BWI-RlXg5wZ0KCAATgV_LjfAzUqifGNgRsWySgH29dG6Q_fHW9lkf1hbvFrNtbTzvLBGDLcyeLaKX6EPQe1JiqqkhgjQXKDpPQNIcxMpLkU8dIKVG8U7gfwQVFzwpBFycpPsw8qTujTzkMK-3bnHaLHnCGWbX2UcmRL8FozhAiQMIfwtD3Y483z8W3L83gq1HAaTR9_eNvjP80HU4T6SHCoT-KYHFbnX03xCDsJZsvUKUDLScEgqF8iecEI1xQGiptn6ACqonlU2rHSC_D8ghydypEMPRaDV9TSnNQFnedGLzgRmOeFTY1jcJz9ZEUZmKaOU6VhmWdhuiVA9bNxt6dhswJw6RR_0tDY7R5f2TKniN2glzpT50mpwMycYNMzUWxKoXGvNeucORyyHJw3l3pZIvVNANfbBg0jfT73AnoXailEN_hoULlpcHthOVIPVSOPirhIem1OtdKiOyrukVOviJnStnNo4_DaM6pITyuQST-Y5Ox6WbweCRsKgJccStOuPnZguTgI3M3ohfnM03XC3yCORW9Ug0Uf1c8Tk0Y7MutqOjm0C-xQcA1MrV5TshprNyVZIhY5EXYtsUmYsLKwjumQihjaspEJWeFUwRWKi901OR9c3Cp8_RyqLraJ0PSUFE_EnOOAIIfTXY7xLSHk-Vd1dLAUC98urMkA7DtHz--2ZMZqbJ7UHeCwukhmWT3tI64CcFXbLa72hjcCK1cTiGPIwIOghJDqZWZGaDYYQ2wJbOLd7V2iaEQJmnCBqLPI3rFE3jSHXkfrRUAXitMJjbNcJb_v3XJ4RAhY5eFdKyPLbDkgzkTZA47tyegvhgQ3eltC9Cyz7DaqzeoydiUT3HO2VvQ_rM-fDtiqY0XKbFPbPETXYlbGaa5XhKkOcSAk647OjvGwktBNgQ47_d5L9aVmMJT-dkhZ-dOyiaJRH1cX2Xt2twyjf_ypwKaM3PachWoxUomhJ-hiSi91QiK4lLr4jxz6uTteGZs0WXsAWZbDAK1E2O3xsanW45RbUUwRa3naI5Wdk6gMEC7WYQ3TCQ7Sj-BVJE7vkpZQ-twfqvXke1kCopzdoWgrJuVoXNCs2sjOVlfyrJnkreSBQUjffExzn6h_HUB-iPAT_jvBWhRBazjPLZ1luGZlQd3rSIsFimE-DdKhjKN2-4JZKcbJDMmrb95YS4cdAomitw3BWh72HKyGb7ni5vvDCUrfkZZDHx5_Wwsv1dM4olBaaHKtaU_OLmaUTZzogHZ1_6XOzvmKmeel2ClUSkeTDexMrH3df2vMrZXt4qma7YoDy37fU6nlzJ4ibeqg4Zw10mvgDRomzTqAefYDCwJDhZcITSZsD1z4vR_BB2LE2E8mGkze1KGKB08x6RcP2BI1xnIbnMiilGGcB0OEvj7JJnpoSSyJW8GQ9LpikLzmCitaBs70APi-SEcg22cqUvLkiICaw0nHo-X08bfsqHt6HmCj7UfZoP69Yzgfpw_-ZoTCcNxeosBqxKvxY0vtfBLUGCpNXfA0OUNaTh1wlXAp3FA6NxkxUagcw35Fu1rLI84HK2IEcPo_RwOs3SwWuxfpNXvhuRvxx3lJdY_oU57KFcFQ5-2npVtp9vrMoV9D5TkwPP8-9rl1wpfV-IGVrYqDfagVKGMwJVQERuJjkHuASDnvGRwINIGW4oORytrKcaTW62EDc9F5OImAMUXsuiBW4fUt2Rj5j1_sMLcs4cllGvB_I6zgAnBKi4ccQ_o4i4cmj45XWCxcRLmM0YOwgBMpi-wmyS2w0zq5M1B-shRVUk-7Eg0B6CNbDXvBNhf12UreQFgDfDIyEcNbW7h5ulyfQY1dij8fSeMYfS6uu6om8WDx9yTpWnVhDW6wf44g47OjPBVLLRetZr24BqzTIlBpXzOi1bEE-p85u4cRjbT_fCXRzDhls6VksYLbk03jN-hR_f6RUvndUNHIHSG_zdcY7v9By7vMhXERezfT4bXrkkGeUfLpng2K0QTpsvIYBWESiVCfrImKad3mzpvbjvBbHV3QSlwZSm5mzb6Vosktgp_CK8dmVPfaMu3P16raDEfQAMXW6k_howABxvhdaIh03L9lU7lmP3vGkA7n3QpW44G_kDKvRGISeko43XOEwKIDnKb94D3xLRdjgdRWaRnaPsTqhr_8p8wNcNl68HpvlgqSo-Z3VyMOjv3B-kj2271BtYvKBhWV_a-GW_500uhGYhn3EGQ9Ledh2kSwo0lMjCi3189qht37wQszMzvBcvP2kORm27k9D0H-_7uKq36g3ENXniCNmmLhgG_xOkurabhH6JW-VGA5mdsV4r1rEZD4kzE3bXNJq0jglfdQtPbfU8XYMgz3ZY0gSIg34LnpAy5SLZ2bwFCuBzii_VjonZuyAyfO-rPHCVIkoUITIRypqCk9IinKtHA7ogU6OyVz2AqqGj9Iuxnc57Fu0hgrpTn16oyguF1SFQLpGFvAc-dt4Z5y4r3aO2CJExZ4ObfhUMa0d9e1k3tpsKKaeUZBH91ifGTeycnA8zYwc1A2m7yxJ1EkyHthpL_-Y-9DMAZzpOgujip1IssWfv0z3AN3XGWWgVmMsGGP93J2LlH0YBOTWGkH5NAFCR9HUkejmYfhWXZhP0a81aaCxGY7HzpLWTrHiMvUiz65wCzJkIsGwT2-T0ARaXiF3pjM5_C35jYkJEihzZDy6IC3gDkjkOVX3H50HVY898nNHM6UQWmgqnB5GH_CvlgWIYUYekPjNue5pjp7rWCt45G8V8E9Z3MbPNMrMW_UfzGhLJGNxxUlsVW10Le8wlVUsOikKpfvfB1Ux5PrjqjpyOuUh829ZxfxrC6y8yQJ9Qu-GqTZ2BOED3Zssia86uojII9utZVe9pUSNOZ5erXOCskXrUYg0NMTHYQ2QbXq7PFjavvtA-PsrcdwsQRVEYpGitYkAfsV4J8lJmG6nEagZI9rAcRY5nVZoGhE0QfRm1QKY-hn2GkSN7RwDtm7D-VZsBo6ZunQOcsnm625jrtQd3BrAN1prTvl6afawLD_VK8mN1UbWKnHpL7v_SxvKdKopMaxjwXfRQPghAV4Ji9kcSnwQktgWgmt6AJkHho6MMOWdRcskinhWk4DEsRN6RXt0U4X-IwnsJ3VGYz9zl3HyQlBLp9cbDraSO7nUidM0HOjGLslk1VlfB7sZivTNF-KRh9zMGlZ5Lvcwl-F6byPQ_d5TqqUWYn1iSgAgM7CeYe-qWB8OGgd4WA0-C4qKMIorilUNZ6jF0XdiD8n9QAFfBIZRMBy7vmRzjbMVHgPuB3ZXXtdFmT5Yta6T03YM1OOBjB8GKKP9b3izNFsMIYSLpqFeFipcFapehmG8yGNHJ9Om7EKLtS9wqfw-VRZpx4rt4QwCz5t5d4uzEGTzQvIt075nwVP3Z4W2Bdc7dwSYreADbA6EKM8_mxmVAWhy1jqmVZSC5PxV2-htLpU8fHPHk-pSIM-527gapkHd68Dl1NfJOJtI1f4oB8pyD6bg_RNElX_3XbVs-s3IKEHcjF25rRK1WNf7rOYrXrjxT1OANZ92V0w2krJ7guVHRzI55jDmWnirXCoJT9apObH9xkMnAcVO9PIrwpP3lM2mM_Q2KekCyvxu6lH85bTsLOaaan1vC15XdahDzVX1w0TOI1cchNDs3h6TgNWcauCLpgsqN5p4=", + "summary": [] + }, + { + "id": "msg_00a4aed1a1e9c6de0168f8e90544b08197b4d3954086150cbf", "type": "message", "status": "completed", "content": [ @@ -196,7 +196,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "Sure! Here are three funny jokes about statisticians:\n\n1. \n**Why did the statistician drown while crossing a river?** \nBecause it was, on average, three feet deep!\n\n2. \n**How do you tell the difference between a statistician and a mortician?** \nThe statistician is the one who buries the results that can\u2019t be explained!\n\n3. \n**Why did the statistician bring a ladder to the bar?** \nBecause he heard the drinks were on the house\u2026 but wanted to check the confidence interval first!" + "text": "- An engineer, a physicist, and a statistician go deer hunting. The engineer misses 1 meter to the left, the physicist misses 1 meter to the right, and the statistician shouts, \u201cWe got it!\u201d\n- I have a joke about p-values, but sadly it wasn\u2019t significant.\n- A statistician can have one foot in ice water and the other in boiling water and say, \u201cOn average, I feel fine.\u201d" } ], "role": "assistant" @@ -206,7 +206,7 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, @@ -225,18 +225,18 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 489, + "input_tokens": 462, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 115, + "output_tokens": 803, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 704 }, - "total_tokens": 604 + "total_tokens": 1265 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 16:12:33 + recorded_at: 2025-10-22 14:24:05 recorded_with: VCR-vcr/2.0.0 diff --git a/inst/_vcr/parallel_chat.yml b/inst/_vcr/parallel_chat.yml index cdb5b5e0..7e7d62c7 100644 --- a/inst/_vcr/parallel_chat.yml +++ b/inst/_vcr/parallel_chat.yml @@ -4,62 +4,62 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What''s - the capital of Canada?"}]}],"model":"gpt-4.1","stream":false}' + the capital of Canada?"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96126178aaea5116-MSP + cf-ray: 9929a82f4fa94684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:40 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '342' + date: Wed, 22 Oct 2025 14:24:14 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2052' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=cRWT89qdOpvExvWeoH.iMRVeQRUrLfkVvT9S2fn3jtk-1752845920-1.0.1.1-Wm8qVLDiKLeWGN8l2P2lm2GW1aeweh.g4zOCj5xRUf1cFiusin8BW4pntVnjmeeFdmfPaCzE.wQb0N0qxN8hQznUpfjvTycggDAP2lvBW.o; - path=/; expires=Fri, 18-Jul-25 14:08:40 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ebgyzb_Ocp_IRg.kqtQbbXoYvRfpbQwyXrYar.NxFKY-1761143054-1.0.1.1-3GCAfv_cHmUgCNUSICYyvLkHVA3c3MlAVh1GR99xcVpIR.qoxeDCBMhHLaIR_9KYvVA7c3d2D9i55y_Eb5wdGpRmass.zdEIi7OZM3ZCq7E; + path=/; expires=Wed, 22-Oct-25 14:54:14 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=Zt9LW39staBQWebU.PFluRJeVtzA7PgsjPx1RjKWW48-1752845920553-0.0.1.1-604800000; + - _cfuvid=TI8K34RYkPmsSEVQzDY_LjKtUKTWbWuaKJTPs0GPuS8-1761143054821-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '348' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999989' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '2090' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999990' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_362ae2c3698f579a0e7385252d7ae17f + x-request-id: req_d0a32fb28e6c473aa4c5141a77522b65 body: string: | { - "id": "chatcmpl-BufaKjyRJMPCX9JwgqqQ0zkLHBv3x", + "id": "chatcmpl-CTU32gMFs1fIW0u4x09M3kPFwn6hm", "object": "chat.completion", - "created": 1752845920, - "model": "gpt-4.1-2025-04-14", + "created": 1761143052, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The capital of Canada is **Ottawa**.", + "content": "Ottawa.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 13, - "completion_tokens": 10, - "total_tokens": 23, + "prompt_tokens": 12, + "completion_tokens": 12, + "total_tokens": 24, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -74,67 +74,67 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:40 + recorded_at: 2025-10-22 14:24:14 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand?"}]}],"model":"gpt-4.1","stream":false}' + the capital of New Zealand?"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612617bcfac5116-MSP + cf-ray: 9929a83cdfd54684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:41 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '316' + date: Wed, 22 Oct 2025 14:24:17 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2179' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=uduBY.5C.QpHzizgPYcC_t8q8B_KG8Mat9dyJ_Oyyzs-1752845921-1.0.1.1-UeUlSvby7k5MnO.KZZxgKG3HbTDWEwE7oCdx5BMl56X7zuS2ivPDgUUu_zvvp4OBxw5zte3UzTEE__gWcfqFLCBF.y1LBU6lz9Zx93cGWsc; - path=/; expires=Fri, 18-Jul-25 14:08:41 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=cnt3T5feKv9rEn.NDL7rtodsPHwsOEtacE76Y.XOD1w-1761143057-1.0.1.1-_5zomulst9bS_k57KJZ0ElN0j2m2JfULFrxAz9m64yMIKX4s4nSxwtd0YuOPSXTj1o_KdS._5kFdD30d2NZtcElSmPaqnUWFpm91N_1Bhrg; + path=/; expires=Wed, 22-Oct-25 14:54:17 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=pxh_0FigglkXdrUi6L5thWfMjqbDLttRQYfb5.4zsdg-1752845921033-0.0.1.1-604800000; + - _cfuvid=99u9nBvKBWX_cDpLrpMVjm1PllzM4VxqeEhE2AZmj2A-1761143057114-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '321' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999989' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '2201' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999988' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_74234e4bca1dc5c91f65e64ffcf9e904 + x-request-id: req_98d52ee4b1c843628e81f3a4a8a79a5c body: string: | { - "id": "chatcmpl-BufaKFVI5b1IMv80ucQoeOxSM4SAF", + "id": "chatcmpl-CTU35tIdb7NUT86co7xfVAxI7H1ug", "object": "chat.completion", - "created": 1752845920, - "model": "gpt-4.1-2025-04-14", + "created": 1761143055, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The capital of New Zealand is **Wellington**.", + "content": "Wellington.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 14, - "completion_tokens": 11, + "prompt_tokens": 13, + "completion_tokens": 12, "total_tokens": 25, "prompt_tokens_details": { "cached_tokens": 0, @@ -150,74 +150,74 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:40 + recorded_at: 2025-10-22 14:24:17 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What''s - the capital of Jamaica?"}]}],"model":"gpt-4.1","stream":false}' + the capital of Jamaica?"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612617ebbc35116-MSP + cf-ray: 9929a84b19b84684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:41 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '301' + date: Wed, 22 Oct 2025 14:24:20 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2843' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=s7n8cgeWWDRaRJjft.eej1tW9iUcDMtYwoLzTV8W..8-1752845921-1.0.1.1-ZnCtPWGKUUGxLzqzWSG87GybhAFQNg22dTiAIrapF0NrQXudL4O6RGjr0tjKTeWLpk1n_8A66P.krmTmWl5uHMTbz7hB46CYR5iPD1c0FZg; - path=/; expires=Fri, 18-Jul-25 14:08:41 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=k9SbXORtyEVTr39cYbhWkAL_pZfB98yojYP4AqEHlFU-1761143060-1.0.1.1-Fxb0UmUYZE2uszlRoDhGIkFhv1g.D_hKLmBH7YmLvEb4CwIakUvY3HjD6SUSq4bu22DjqGmEtGCW2sTqXxT_FUBbwFdgOOpYynwO0L6PSaQ; + path=/; expires=Wed, 22-Oct-25 14:54:20 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=d97tc136aYD2Z4lwkEeTsKM1R1QQovqSGVIiLW1tb_8-1752845921481-0.0.1.1-604800000; + - _cfuvid=HQPx8cnMvlttd20FuQAcKEeXF9FQbOc0T_FP6VNrnPc-1761143060066-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '309' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999989' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '2886' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999990' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_03056943131fde793a1104ffa8d18aef + x-request-id: req_33ce26aadf2a4df9998159f908815815 body: string: | { - "id": "chatcmpl-BufaLdKcbTSZgs9F9fTMWgJRu6lgs", + "id": "chatcmpl-CTU37rfZFnilpTit2TVwcCWmGLHAI", "object": "chat.completion", - "created": 1752845921, - "model": "gpt-4.1-2025-04-14", + "created": 1761143057, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The capital of Jamaica is **Kingston**.", + "content": "Kingston.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 13, - "completion_tokens": 10, - "total_tokens": 23, + "prompt_tokens": 12, + "completion_tokens": 76, + "total_tokens": 88, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -226,74 +226,74 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:41 + recorded_at: 2025-10-22 14:24:20 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What''s - the capital of United States?"}]}],"model":"gpt-4.1","stream":false}' + the capital of United States?"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612618178975116-MSP + cf-ray: 9929a85da95e4684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:42 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '416' + date: Wed, 22 Oct 2025 14:24:23 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3523' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=Z3yZR44LDONhL93SRwTayJ89uqLgXpoc7dNfCW_JGiM-1752845922-1.0.1.1-kBB9HLWpYTE2yXjCantAn6MsXlG9Y.VmRYzRzj5DQC9KeHmo2CJaTrL6x41LMI6Emu8AX1C4KaOmuOtZHZyPvjD9TqAWCymtFvlNQ2Dc9WE; - path=/; expires=Fri, 18-Jul-25 14:08:42 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=V0ESDetlaHtKo7n23ZKAJvRBN4.o.boWooRdhKbuhWg-1761143063-1.0.1.1-Qnz_yyt0lRm0nQGbtpaMqcT7gYQ8V8QcXFNscUcijn4x5pmFuwEH.tzBOIK5kK8VJGxz1CpM5_8aPYfexjqpf5F4ZOwg4zx4_IGPj0fYsVs; + path=/; expires=Wed, 22-Oct-25 14:54:23 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=x3c4vygLBHAlQS5P1xS_WaETv9Tt_evPo.RDxNNRZ_A-1752845922027-0.0.1.1-604800000; + - _cfuvid=0qEchJuqfhZEcAE.QJUtsGk1gdlhR23wecS6r1hKodo-1761143063708-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '423' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999989' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3567' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999989' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_469ba3a40f7450c5fad22d443206fd47 + x-request-id: req_291339f3cd9a43659d5286efc00a8812 body: string: | { - "id": "chatcmpl-BufaLUMZDWbPN9uF4Gd0cJF1ugY3e", + "id": "chatcmpl-CTU3AtO7kFs88CmwrHJ9p9gLyadCF", "object": "chat.completion", - "created": 1752845921, - "model": "gpt-4.1-2025-04-14", + "created": 1761143060, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The capital of the United States is Washington, D.C.", + "content": "Washington, D.C.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 14, - "completion_tokens": 12, - "total_tokens": 26, + "prompt_tokens": 13, + "completion_tokens": 142, + "total_tokens": 155, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -302,51 +302,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:41 + recorded_at: 2025-10-22 14:24:23 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"I go - by Alex. 42 years on this planet and counting."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + by Alex. 42 years on this planet and counting."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96126186b9045116-MSP + cf-ray: 9929a8758e4a4684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:42 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '335' + date: Wed, 22 Oct 2025 14:24:54 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '30448' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=tiW.UGnZBTg7W0e_BjN8DDfo2xeetDSfwpbSnC.jWUY-1752845922-1.0.1.1-veubl_TuSM2Ja30TKc1O_n8Ii.EFZn6l27c85.fV2JndPIezcEdCIltO6IY.YfFIG4fG91THKifSjKf.xsjO.SBdZMNZW49Z5H4TvSrbA1E; - path=/; expires=Fri, 18-Jul-25 14:08:42 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=eP.ZM8.liAfXbvkE.1tiPjH4fR_48XY9k7cnlWQhBu0-1761143094-1.0.1.1-QXDZ2.BmPa5DWGAdS7q_GkI4XsAffk9W4KUnp18IGHmWjVECvRcW0Yznhm8rdQoC4BRHYcg42HSaoraayCVTifOlVc7I8PwW.8HF571jLXA; + path=/; expires=Wed, 22-Oct-25 14:54:54 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=gH5fG.WqlPmPXhKxgy1tOihcF0D4sjs5_OvLAHRvyko-1752845922786-0.0.1.1-604800000; + - _cfuvid=M9wR.woNevmlByCrgXtyCJmoCC.r025I6IdcCq28HC8-1761143094625-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '342' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '30659' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999984' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_5e28c94b72af16a83dd0b07acf5f4b94 + x-request-id: req_83a269fd1af2450f9f8622f7d2bd0eb5 body: string: | { - "id": "chatcmpl-BufaMQy9rqsuxlLPBGe6LtVuinyzV", + "id": "chatcmpl-CTU3Eb42f68dHgtsXxQg19W4tvHu6", "object": "chat.completion", - "created": 1752845922, - "model": "gpt-4.1-2025-04-14", + "created": 1761143064, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -356,20 +357,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 9, - "total_tokens": 76, + "prompt_tokens": 62, + "completion_tokens": 2262, + "total_tokens": 2324, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2240, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -378,51 +378,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:42 + recorded_at: 2025-10-22 14:24:54 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Pleased - to meet you! I''m Jamal, age 27."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + to meet you! I''m Jamal, age 27."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612618a0dbc5116-MSP + cf-ray: 9929a935dae64684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:43 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '302' + date: Wed, 22 Oct 2025 14:25:05 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '10135' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=YLPNvorlHCd9w8yLnrn8tx1eq.H83VTuFFmwuzGG6i8-1752845923-1.0.1.1-img9QFH1N8nqC69MzmVbwvzmhf0GSmGwHr3ii1tQI93KZrLvzZnISO9gbRZ1tHSU.102Ynm28m4plZr.0rdO_ZQMCKNWbvLR8cARxQ_blSI; - path=/; expires=Fri, 18-Jul-25 14:08:43 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=mHEZwaR0EyQpohbUX1DItPYO4VQV3FNK_tyS3NJFCDQ-1761143105-1.0.1.1-Zko7VXFXFhhSnWUeL3GJsiaLM_VNXRDUV8nLGv2Qq5M5H2Q14D_uHce1INvIDJ2xgw3gGGt2DPRAJ2mBgrPhFLWWNKnA7gRJ6fuyjnhIAQ8; + path=/; expires=Wed, 22-Oct-25 14:55:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=q7jZQdPBky7zN7HgVot9I52lpgn7TfBbTS7E6Q5JCYQ-1752845923285-0.0.1.1-604800000; + - _cfuvid=NZu7FIwkpU0dHP3a2UxXpv5KzMbhuRut_c7TFuQuadg-1761143105094-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '306' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999988' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '10312' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999988' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_5e62418cea3f6219cdf534412a886552 + x-request-id: req_81a6d6e9dbf24683893d59505567f6a8 body: string: | { - "id": "chatcmpl-BufaNIIh7BEPkRU6HbOVWJbbzT0Uf", + "id": "chatcmpl-CTU3iR0lwv4HfNLnKwEE8TZ8EwRKb", "object": "chat.completion", - "created": 1752845923, - "model": "gpt-4.1-2025-04-14", + "created": 1761143094, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -432,20 +433,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 10, - "total_tokens": 77, + "prompt_tokens": 62, + "completion_tokens": 663, + "total_tokens": 725, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 640, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -454,51 +454,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:43 + recorded_at: 2025-10-22 14:25:05 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"They - call me Li Wei. Nineteen years young."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + call me Li Wei. Nineteen years young."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612618cc9345116-MSP + cf-ray: 9929a977ccce4684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:43 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '352' + date: Wed, 22 Oct 2025 14:25:27 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '22599' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=Mdz.83WFOeS1q4lQTgecWPRrgJwlLF_xz5.13NBvC.4-1752845923-1.0.1.1-wJgDmfElDz8UczhiSj7z65dp.IPdNoT7hExMYFMwBddExKy8LKNTrNb.JXT7.RE6u4vUNYpZHJmopJ_uRqC2khqB5qgpeHgJfYkVEieKBlg; - path=/; expires=Fri, 18-Jul-25 14:08:43 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=0B2GOIwxv5Fzf_hG2l.Fthc.7B0Z0Aqked56Z6lCMQU-1761143127-1.0.1.1-dm9exJBq8uzn1elPcvUvmpbt8d1QjnZqrubt.0JlCgx2u321lQG2SfwhRZEa6vlUgBHvOys4ysj4pnC8yfiMdq4HlyDYOLt.l1NlR8LpanA; + path=/; expires=Wed, 22-Oct-25 14:55:27 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=u3_O2hVZrqRCr8rmGUr0b2ZJrvdtAVf0NYIuUBol4yI-1752845923762-0.0.1.1-604800000; + - _cfuvid=BIcVV3EPD3VhuT7F.y4WOjFD8OPGZgrZOeREfLWkdbk-1761143127940-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '357' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999987' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '22645' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999986' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_fb8d9790b26381fb541d5b8fb3896fff + x-request-id: req_f60a2aaa899b498cabe209f8e425d257 body: string: | { - "id": "chatcmpl-BufaNvMRM3WSbUh7aQWz9lgc5wdno", + "id": "chatcmpl-CTU3tczsplSO0CtKOhWoN3iqJtPAw", "object": "chat.completion", - "created": 1752845923, - "model": "gpt-4.1-2025-04-14", + "created": 1761143105, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -508,20 +509,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 65, - "completion_tokens": 10, - "total_tokens": 75, + "prompt_tokens": 60, + "completion_tokens": 1303, + "total_tokens": 1363, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1280, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -530,51 +530,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:43 + recorded_at: 2025-10-22 14:25:27 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Fatima - here. Just celebrated my 35th birthday last week."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + here. Just celebrated my 35th birthday last week."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 961261905e2b5116-MSP + cf-ray: 9929aa05fdf74684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:44 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '293' + date: Wed, 22 Oct 2025 14:25:47 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '18880' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=c4d.WzirzJLUogaKTuwuT4w5PURiYyTyWKVEBv4tbfg-1752845924-1.0.1.1-tW7m0iKt26Xy9Vf5r9zOnoYthz3fwjUJc0RPBQ5WOX04KQOeGCMry8InzHw9xWCDquIE7mQuhh1sQcT4AJPRLwmoQvtUZfvUbqAQOMTiJ.A; - path=/; expires=Fri, 18-Jul-25 14:08:44 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=piZLq9H5o_EzJvzlmUDfTamG9fGS41Ss0duZlllyQaM-1761143147-1.0.1.1-94CP5KYKan3GKKSVDhNS3C6Lv_4rg5Dulv8_PHtk7j9BejpHl4sXjl0jRHNvYUn7GRAQkr1dvB2RB3mIaSxXJ7X2M1DYIaWuh3..4BRq9ZQ; + path=/; expires=Wed, 22-Oct-25 14:55:47 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=2obg7ZjGYdoHuc8uacE7l4TLmJNw2r1__XUmS5HASCs-1752845924284-0.0.1.1-604800000; + - _cfuvid=TckhglgZA.rgyi7tNcuOejzZFF5DIRN2otlsdEXEpOc-1761143147039-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '295' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '18943' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999984' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_69be9c659d907c6a91ebe413315850bb + x-request-id: req_63027fa9030b48e788153b21139201e0 body: string: | { - "id": "chatcmpl-BufaOqSY4FKxsw2GYM7nXHssKBiHG", + "id": "chatcmpl-CTU4GIgNq2FV6fq5yRlbqLwpEbNJB", "object": "chat.completion", - "created": 1752845924, - "model": "gpt-4.1-2025-04-14", + "created": 1761143128, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -584,20 +585,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 10, - "total_tokens": 77, + "prompt_tokens": 62, + "completion_tokens": 1175, + "total_tokens": 1237, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1152, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -606,51 +606,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:44 + recorded_at: 2025-10-22 14:25:47 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"The name''s - Robert - 51 years old and proud of it."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + Robert - 51 years old and proud of it."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9612619309f95116-MSP + cf-ray: 9929aa7d9e6d4684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:44 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '543' + date: Wed, 22 Oct 2025 14:26:02 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '15634' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=kd3COfkKNRtOzhSpeQLsea5GXuT67h1yxxQ2PwJevBE-1752845924-1.0.1.1-kDuZbZSsoEsv2pKj5t_nRrIdFltUe5DYjXybFehgD6GaJ1TUGKRApvUZcysqnV2RHEA8Ly7icM2AqKPS18BSQS.TyqriFIPdFDQzwyGgLOg; - path=/; expires=Fri, 18-Jul-25 14:08:44 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=6PoixRxttxo9LjiRT7uI8_FjNvrOBX_zlN7XuLVC5_w-1761143162-1.0.1.1-1F6jW8BLHZUq4lxQkgZZ3mI2x53LEjs6OcbAVQo5Nq7..DqPrYlVqy36eBUk..93qn.74qo6orALJbYUYwIRO2I5xlM4dFjR1f4wsxGnaLk; + path=/; expires=Wed, 22-Oct-25 14:56:02 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=tA5lTw4KB8o.4bPWAxv6R.hu94BVRJMD1.Vsfumi2e4-1752845924973-0.0.1.1-604800000; + - _cfuvid=8LLWsFP4amzt8JSf9Si0plwq6wtTwhfh8wtXTKaffnU-1761143162987-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '569' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '15686' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999985' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d73d9172aec4cb2053d5e3abcd6f2092 + x-request-id: req_cf72591029494c6cafa45929e53c2e8b body: string: | { - "id": "chatcmpl-BufaODdmBgslvMRd5Y9YeKWMA1rAC", + "id": "chatcmpl-CTU4ZrAMRmDxPjqmbjB8rJvU5652z", "object": "chat.completion", - "created": 1752845924, - "model": "gpt-4.1-2025-04-14", + "created": 1761143147, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -660,20 +661,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 9, - "total_tokens": 76, + "prompt_tokens": 62, + "completion_tokens": 854, + "total_tokens": 916, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 832, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -682,51 +682,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:44 + recorded_at: 2025-10-22 14:26:02 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Kwame - here - just hit the big 5-0 this year."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + here - just hit the big 5-0 this year."}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 961261975fd35116-MSP + cf-ray: 9929aae0ff764684-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:38:45 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '277' + date: Wed, 22 Oct 2025 14:26:22 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '19020' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=lOWDPXI_TbWTAgB9iO3kYq_b.A6BWbMGxU3tA0wUtwc-1752845925-1.0.1.1-VCdqQncua72S34zNFytqUThIcUgjkxYwm2pbQ9_EX1OpjTIqcwKu3ziJ4l_1cQGAWazJdUUN0HU0v.Ltx4u6_fNZ7llqfRJEcoXfzY6OYLU; - path=/; expires=Fri, 18-Jul-25 14:08:45 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=z49Y76X4H9ikjearex1UD6mA2zCOmY3j14cgTURy1VQ-1761143182-1.0.1.1-imkF_dDGXreEAtEb8DMOFR.XMyjG4UAfXuehm6N7RLFhhw7spG_locN8lYoujvc8Q8CEyQCWnf8jGTr1er.WwAVTQMM3g1obvwJcCeFWnBM; + path=/; expires=Wed, 22-Oct-25 14:56:22 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=nE1J7sQVC9b4g0u2ankwCqvwdGESOIe1IrdmDtZPS1o-1752845925376-0.0.1.1-604800000; + - _cfuvid=oECsIh4DZp6QVxMS8lD893549nQ4S3ctPNCIhqsNIDM-1761143182145-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '279' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999986' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '19067' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999986' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_8405feb15143b9a5671c4785594ce988 + x-request-id: req_1cf6746c89e046fe8e9a5db0c258fea0 body: string: | { - "id": "chatcmpl-BufaPHHJJAsGecF6UVegme9aNuHEt", + "id": "chatcmpl-CTU4pj04rUkf2I116aL9GkXIa3NBJ", "object": "chat.completion", - "created": 1752845925, - "model": "gpt-4.1-2025-04-14", + "created": 1761143163, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -736,20 +737,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 68, - "completion_tokens": 10, - "total_tokens": 78, + "prompt_tokens": 63, + "completion_tokens": 1431, + "total_tokens": 1494, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1408, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -758,5 +758,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:38:45 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:26:22 +recorded_with: VCR-vcr/2.0.0 diff --git a/inst/_vcr/tool.yml b/inst/_vcr/tool.yml index 8d93acae..3f9a8f61 100644 --- a/inst/_vcr/tool.yml +++ b/inst/_vcr/tool.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Give - me five numbers from a random normal distribution."}]}],"model":"gpt-4.1","stream":false,"tools":[{"type":"function","function":{"name":"rnorm","description":"Draw + me five numbers from a random normal distribution."}]}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"rnorm","description":"Draw numbers from a random normal distribution","strict":true,"parameters":{"type":"object","description":"","properties":{"n":{"type":"integer","description":"The number of observations. Must be a positive integer."},"mean":{"type":"number","description":"The mean value of the distribution."},"sd":{"type":"number","description":"The @@ -15,37 +15,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e647d5b6e6725-DFW + cf-ray: 9929ab5dbee34684-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:12:04 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '336' + date: Wed, 22 Oct 2025 14:26:28 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5531' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CmIZYeMKV9dpAXAUYRl6qpHF1CrC3fPppXWEbl50jbA-1751461924-1.0.1.1-WS34kRE8n8AkFwXpuCqlmzmnZpJSiHXmJBdDc3Gz_RvuGM90KilKBS7UDRaFR._1oLfp4nA2OhKDwavdolnGQbYJ9GfAR62ECYslI5U07eY; - path=/; expires=Wed, 02-Jul-25 13:42:04 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=uvYWB_My5aaiL.BaVBI0lvfLvvfhaUrK6o3ed0u5ycE-1761143188-1.0.1.1-vflKNOKf3f_OI0m.quKPGwl_x3LmcQjAISLWh7YIucRfu1ywn9BNbu5E_nlu8H_qp4jUCRIXD8GH6DdvUM_eIpc0Ug3umDsM1t9P9_xamR8; + path=/; expires=Wed, 22-Oct-25 14:56:28 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=Cp_ckh6UPIkEmwVCopmH.eCiAxXuRViq9oMs6.C_zy0-1751461924168-0.0.1.1-604800000; + - _cfuvid=ec390JM3P4MhVXaoPLfRFwWgkFd0oL.wB1Yc1v60ZwA-1761143188618-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '339' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '5578' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999984' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_59bc8eff1a09f9d397fec73e0c44cdf3 + x-request-id: req_1f22e9a5d30a4e45aa3681b1622c7319 body: string: | { - "id": "chatcmpl-BorXnt5IcOMDPFPkXls4D1DdFdpQX", + "id": "chatcmpl-CTU594Uqdj9yjYHnQpzcuLO7aPYzN", "object": "chat.completion", - "created": 1751461923, - "model": "gpt-4.1-2025-04-14", + "created": 1761143183, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -54,7 +56,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_i23r8dfi9bjtZStFRX69Zz40", + "id": "call_e2iTSHmno0TFe7LoLs9xGMc7", "type": "function", "function": { "name": "rnorm", @@ -65,35 +67,34 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 96, - "completion_tokens": 22, - "total_tokens": 118, + "prompt_tokens": 177, + "completion_tokens": 223, + "total_tokens": 400, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:12:04 + recorded_at: 2025-10-22 14:26:28 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Give - me five numbers from a random normal distribution."}]},{"role":"assistant","tool_calls":[{"id":"call_i23r8dfi9bjtZStFRX69Zz40","function":{"name":"rnorm","arguments":"{\"n\":[5],\"mean\":[0],\"sd\":[1]}"},"type":"function"}]},{"role":"tool","content":"[1.1484,-1.8218,-0.2473,-0.2442,-0.2827]","tool_call_id":"call_i23r8dfi9bjtZStFRX69Zz40"}],"model":"gpt-4.1","stream":false,"tools":[{"type":"function","function":{"name":"rnorm","description":"Draw + me five numbers from a random normal distribution."}]},{"role":"assistant","tool_calls":[{"id":"call_e2iTSHmno0TFe7LoLs9xGMc7","function":{"name":"rnorm","arguments":"{\"n\":[5],\"mean\":[0],\"sd\":[1]}"},"type":"function"}]},{"role":"tool","content":"[1.1484,-1.8218,-0.2473,-0.2442,-0.2827]","tool_call_id":"call_e2iTSHmno0TFe7LoLs9xGMc7"}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"rnorm","description":"Draw numbers from a random normal distribution","strict":true,"parameters":{"type":"object","description":"","properties":{"n":{"type":"integer","description":"The number of observations. Must be a positive integer."},"mean":{"type":"number","description":"The mean value of the distribution."},"sd":{"type":"number","description":"The @@ -104,67 +105,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e64831a676725-DFW + cf-ray: 9929ab821d294684-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:12:05 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1054' + date: Wed, 22 Oct 2025 14:26:34 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5956' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=aEfmPK3Po4SnthJrkVOZktZnTZlLK7Uz6Ja3OQP2A.o-1751461925-1.0.1.1-ps10IGtWxBhpa40ayJ_gm7XFY.C7hrO7D2AH4nsQp8T0d2P1I8lhctCH54L3FP9d4RSC9PQFHBSfYAtrFTAs2wb0NUK9aRnuL5Ha5QkwA74; - path=/; expires=Wed, 02-Jul-25 13:42:05 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=.9ozIDJnRi9dtLCAIa3QuH0ptFktJKrpIeAbd9QXc.k-1761143194-1.0.1.1-NNO6SnEofI__ijteItRMltvRsvCpUyai5aSE0bCPKDSO3dLJvGUYJ7K0MwZwoVNGKFEVVfjCfD4jW.CdEXLQ2CXmarJfbb7R3CnVmZ8r1fk; + path=/; expires=Wed, 22-Oct-25 14:56:34 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=759_OKaH6DmB8WoeaqkKEd9_Rl2TUcHPXptF.5ED2y8-1751461925513-0.0.1.1-604800000; + - _cfuvid=kBo_98RS6iFKL45f.e4M9rkrVXAezBSoDiYXEMcy8P8-1761143194965-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1057' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999972' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '6102' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999972' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_55d6ce689956fea108280435a4dc8f9c + x-request-id: req_98b0f16d91a84ff381c87be514fbd3d2 body: string: | { - "id": "chatcmpl-BorXoZ3YUaEwN0daZoEvRNhhxMBxN", + "id": "chatcmpl-CTU5FhTL0J9Gg65PrcjpwPaz9e8e7", "object": "chat.completion", - "created": 1751461924, - "model": "gpt-4.1-2025-04-14", + "created": 1761143189, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Here are five numbers from a random normal distribution (mean = 0, standard deviation = 1):\n\n1. 1.1484\n2. -1.8218\n3. -0.2473\n4. -0.2442\n5. -0.2827", + "content": "1.1484, -1.8218, -0.2473, -0.2442, -0.2827", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 152, - "completion_tokens": 61, - "total_tokens": 213, + "prompt_tokens": 239, + "completion_tokens": 357, + "total_tokens": 596, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:12:05 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:26:34 +recorded_with: VCR-vcr/2.0.0 diff --git a/man/batch_chat.Rd b/man/batch_chat.Rd index dd2960b3..135e49e1 100644 --- a/man/batch_chat.Rd +++ b/man/batch_chat.Rd @@ -102,7 +102,7 @@ but if you have ideas, please let me know! } \examples{ \dontshow{if (has_credentials("openai")) withAutoprint(\{ # examplesIf} -chat <- chat_openai(model = "gpt-4.1-nano") +chat <- chat_openai(model = "gpt-5-nano") # Chat ---------------------------------------------------------------------- diff --git a/man/chat_anthropic.Rd b/man/chat_anthropic.Rd index 3b45630c..cc787af2 100644 --- a/man/chat_anthropic.Rd +++ b/man/chat_anthropic.Rd @@ -44,7 +44,7 @@ models_anthropic( \item{max_tokens}{Maximum number of tokens to generate before stopping.} -\item{model}{The model to use for the chat (defaults to "claude-sonnet-4-20250514"). +\item{model}{The model to use for the chat (defaults to "claude-sonnet-4-5-20250929"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use. Use \code{models_anthropic()} to see all options.} diff --git a/man/chat_azure_openai.Rd b/man/chat_azure_openai.Rd index 89f3df58..816ba9dd 100644 --- a/man/chat_azure_openai.Rd +++ b/man/chat_azure_openai.Rd @@ -90,7 +90,7 @@ package. } \examples{ \dontrun{ -chat <- chat_azure_openai(model = "gpt-4o-mini") +chat <- chat_azure_openai(model = "gpt-5-nano") chat$chat("Tell me three jokes about statisticians") } } diff --git a/man/chat_github.Rd b/man/chat_github.Rd index 9b5ca041..fdd88e36 100644 --- a/man/chat_github.Rd +++ b/man/chat_github.Rd @@ -30,7 +30,7 @@ You generally should not supply this directly, but instead set the \code{GITHUB_ The best place to set this is in \code{.Renviron}, which you can easily edit by calling \code{usethis::edit_r_environ()}.} -\item{model}{The model to use for the chat (defaults to "gpt-4o"). +\item{model}{The model to use for the chat (defaults to "gpt-5"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use.} \item{params}{Common model parameters, usually created by \code{\link[=params]{params()}}.} diff --git a/man/chat_openai.Rd b/man/chat_openai.Rd index 04b2328f..e5f28950 100644 --- a/man/chat_openai.Rd +++ b/man/chat_openai.Rd @@ -30,7 +30,7 @@ You generally should not supply this directly, but instead set the \code{OPENAI_ The best place to set this is in \code{.Renviron}, which you can easily edit by calling \code{usethis::edit_r_environ()}.} -\item{model}{The model to use for the chat (defaults to "gpt-4.1"). +\item{model}{The model to use for the chat (defaults to "gpt-5"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use. Use \code{models_openai()} to see all options.} diff --git a/man/chat_openai_responses.Rd b/man/chat_openai_responses.Rd index 3da36fed..2f63be8f 100644 --- a/man/chat_openai_responses.Rd +++ b/man/chat_openai_responses.Rd @@ -26,7 +26,7 @@ You generally should not supply this directly, but instead set the \code{OPENAI_ The best place to set this is in \code{.Renviron}, which you can easily edit by calling \code{usethis::edit_r_environ()}.} -\item{model}{The model to use for the chat (defaults to "gpt-4.1"). +\item{model}{The model to use for the chat (defaults to "gpt-5"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use. Use \code{models_openai()} to see all options.} diff --git a/man/chat_openrouter.Rd b/man/chat_openrouter.Rd index 2a97cd1e..23c397b6 100644 --- a/man/chat_openrouter.Rd +++ b/man/chat_openrouter.Rd @@ -24,7 +24,7 @@ You generally should not supply this directly, but instead set the \code{OPENROU The best place to set this is in \code{.Renviron}, which you can easily edit by calling \code{usethis::edit_r_environ()}.} -\item{model}{The model to use for the chat (defaults to "gpt-4o"). +\item{model}{The model to use for the chat (defaults to "gpt-5"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use.} \item{seed}{Optional integer seed that ChatGPT uses to try and make output diff --git a/man/chat_portkey.Rd b/man/chat_portkey.Rd index f5c9ddcb..389ec7fc 100644 --- a/man/chat_portkey.Rd +++ b/man/chat_portkey.Rd @@ -38,7 +38,7 @@ which you can easily edit by calling \code{usethis::edit_r_environ()}.} \href{https://portkey.ai/docs/product/ai-gateway/virtual-keys}{documentation}. Can be read from the \code{PORTKEY_VIRTUAL_KEY} environment variable.} -\item{model}{The model to use for the chat (defaults to "gpt-4o"). +\item{model}{The model to use for the chat (defaults to "gpt-5"). We regularly update the default, so we strongly recommend explicitly specifying a model for anything other than casual use. Use \code{models_openai()} to see all options.} diff --git a/tests/testthat/_snaps/batch-chat.md b/tests/testthat/_snaps/batch-chat.md index da7ceff8..0011bb2f 100644 --- a/tests/testthat/_snaps/batch-chat.md +++ b/tests/testthat/_snaps/batch-chat.md @@ -24,7 +24,7 @@ . <- batch_chat(chat, prompts, path, ignore_hash = TRUE) Condition Warning in `batch_chat()`: - ! prompts and user_turns don't match stored values. + ! provider, prompts, and user_turns don't match stored values. # informative error for bad inputs diff --git a/tests/testthat/_snaps/chat.md b/tests/testthat/_snaps/chat.md index 18c11bcb..6507d131 100644 --- a/tests/testthat/_snaps/chat.md +++ b/tests/testthat/_snaps/chat.md @@ -19,7 +19,7 @@ Code chat Output - + -- system [0] ------------------------------------------------------------------ Be terse. -- user [15] ------------------------------------------------------------------- diff --git a/tests/testthat/_snaps/provider-anthropic.md b/tests/testthat/_snaps/provider-anthropic.md index 729bbb00..4ec9a06c 100644 --- a/tests/testthat/_snaps/provider-anthropic.md +++ b/tests/testthat/_snaps/provider-anthropic.md @@ -3,7 +3,7 @@ Code . <- chat_anthropic() Message - Using model = "claude-sonnet-4-20250514". + Using model = "claude-sonnet-4-5-20250929". # max_tokens is deprecated diff --git a/tests/testthat/_snaps/provider-openai-responses.md b/tests/testthat/_snaps/provider-openai-responses.md index 26e2978c..34049af1 100644 --- a/tests/testthat/_snaps/provider-openai-responses.md +++ b/tests/testthat/_snaps/provider-openai-responses.md @@ -3,5 +3,5 @@ Code . <- chat_openai_responses() Message - Using model = "gpt-4.1". + Using model = "gpt-5". diff --git a/tests/testthat/_snaps/provider-openai.md b/tests/testthat/_snaps/provider-openai.md index 78b3be54..107da726 100644 --- a/tests/testthat/_snaps/provider-openai.md +++ b/tests/testthat/_snaps/provider-openai.md @@ -3,7 +3,7 @@ Code . <- chat_openai() Message - Using model = "gpt-4.1". + Using model = "gpt-5". # as_json specialised for OpenAI diff --git a/tests/testthat/_vcr/anthropic-batch.yml b/tests/testthat/_vcr/anthropic-batch.yml index e31965ae..30d59016 100644 --- a/tests/testthat/_vcr/anthropic-batch.yml +++ b/tests/testthat/_vcr/anthropic-batch.yml @@ -3,36 +3,37 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Be as terse as possible; + string: '{"model":"claude-haiku-4-5-20251001","system":"Be as terse as possible; no punctuation","messages":[{"role":"user","content":[{"type":"text","text":"What is 1 + 1?"}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 13:59:56 GMT + date: Wed, 22 Oct 2025 14:06:27 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T13:59:56Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T13:59:56Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T13:59:55Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T13:59:56Z' - request-id: req_011CQgRGUkHczGrxEbYt3hXq + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:27Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:27Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:26Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:27Z' + request-id: req_011CUNNAoPFx1fdQiXZGMUjS strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1285' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95866d35693af061-DFW - content-encoding: gzip + cf-ray: 99298e254bc5d925-DFW body: - string: '{"id":"msg_013mceer45yfi8dveJvQ5ZYp","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"2"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":26,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5,"service_tier":"standard"}}' - recorded_at: 2025-07-01 13:59:56 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01BgtB9MKQGE11VbLWjBLps5","type":"message","role":"assistant","content":[{"type":"text","text":"2"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":26,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:27 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-images.yml b/tests/testthat/_vcr/anthropic-images.yml index 6002ee90..a61ca819 100644 --- a/tests/testthat/_vcr/anthropic-images.yml +++ b/tests/testthat/_vcr/anthropic-images.yml @@ -3,81 +3,90 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"What''s + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"What''s in this image? (Be sure to mention the outside shape)"},{"type":"image","source":{"type":"base64","media_type":"image/png","data":"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"}}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 19:40:22 GMT + date: Wed, 22 Oct 2025 14:06:42 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T19:40:20Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T19:40:22Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T19:40:19Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T19:40:20Z' - request-id: req_011CQgsE4XEbcTvn8gLQMnux + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:39Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:42Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:39Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:39Z' + request-id: req_011CUNNBk5qxnnfV2yGySEva strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '3691' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95885fdcbc892d2d-DFW - content-encoding: gzip + cf-ray: 99298e750865d925-DFW body: - string: '{"id":"msg_01FYnxufsZbTotKf6PQhyy7r","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"This - image is contained within a hexagonal shape with a navy blue background. It - features a baseball-themed design with \"httr2\" text in white and a red silhouette - of a baseball batter in a follow-through swing pose. The design appears to - be a logo or emblem, possibly for a programming package or baseball-related - software, given the \"httr2\" text which is styled like a classic baseball - team script."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":168,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":93,"service_tier":"standard"}}' - recorded_at: 2025-07-01 19:40:22 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01WKLk3XBth4C3by2D5whNUq","type":"message","role":"assistant","content":[{"type":"text","text":"# + Image Description\n\nThis image contains a **hexagon** (six-sided polygon) + as its outside shape, colored in dark navy blue.\n\nInside the hexagon, there + is:\n\n- **\"htt2\"** text in white, italicized script font in the upper left + portion\n- A **red silhouette of a baseball player** in a batting stance, + positioned on the right side\n- A **white curved line** (resembling a swoosh + or motion line) flowing from the text toward the player\n- A small **circular + badge** in the lower left corner with \"OPEN\" text (in red and white)\n\nThe + overall design appears to be a logo or emblem, likely for a baseball-related + application, website, or organization called \"htt2.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":168,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":168,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:42 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"What''s + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"What''s in this image? (Be sure to mention the outside shape)"},{"type":"image","source":{"type":"url","url":"https://httr2.r-lib.org/logo.png"}}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 19:40:26 GMT + date: Wed, 22 Oct 2025 14:06:46 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T19:40:23Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T19:40:26Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T19:40:22Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T19:40:23Z' - request-id: req_011CQgsEJJTZsrUW2ajopnNJ + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:43Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:46Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:42Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:43Z' + request-id: req_011CUNNC2hiunvzKqRgWVUHG strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '3688' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95885ff08b202d2d-DFW - content-encoding: gzip + cf-ray: 99298e8d98ebd925-DFW body: - string: '{"id":"msg_01YMAUYPrG5vh62gCLZDm86k","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"This - is a hexagonal logo or badge design featuring a baseball player silhouette - in red against a navy blue background. The silhouette shows a batter in a - follow-through swing pose. The text \"hit-2\" appears in white script lettering - above the player silhouette. The design has a clean, modern sports aesthetic - that would work well for a baseball-related brand or organization."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":115,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":85,"service_tier":"standard"}}' - recorded_at: 2025-07-01 19:40:26 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01EMXJUAgfXWuh8jkQH7aiak","type":"message","role":"assistant","content":[{"type":"text","text":"# + Image Description\n\nThis image features a **hexagonal** (six-sided) shape + with a dark navy blue background. \n\nInside the hexagon, there is:\n\n- **\"htr.2\"** + text in white script/cursive font in the upper left\n- A **red silhouette + of a baseball player** in a batting stance, positioned prominently in the + center-right\n- A **white swoosh or motion line** extending from behind the + player\n- A small **red circular icon** (possibly a baseball) in the lower + left area\n\nThe overall design has a modern, sporty aesthetic with a clean + color scheme of navy blue, red, and white. It appears to be a logo or emblem, + possibly for a baseball team, league, or sports-related brand or application."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":115,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":172,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:46 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-list-models.yml b/tests/testthat/_vcr/anthropic-list-models.yml index fef9cdc9..45d76334 100644 --- a/tests/testthat/_vcr/anthropic-list-models.yml +++ b/tests/testthat/_vcr/anthropic-list-models.yml @@ -5,19 +5,23 @@ http_interactions: response: status: 200 headers: - date: Tue, 01 Jul 2025 14:00:02 GMT + date: Wed, 22 Oct 2025 14:06:28 GMT content-type: application/json - request-id: req_011CQgRH5DTgCCdQD2JwZbk1 + content-encoding: gzip + request-id: req_011CUNNAzhtcdPGTWw4xhHpJ strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '28' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95866d6998dcf061-DFW - content-encoding: gzip + cf-ray: 99298e35cc5dd925-DFW body: - string: '{"data":[{"type":"model","id":"claude-opus-4-20250514","display_name":"Claude + string: '{"data":[{"type":"model","id":"claude-haiku-4-5-20251001","display_name":"Claude + Haiku 4.5","created_at":"2025-10-15T00:00:00Z"},{"type":"model","id":"claude-sonnet-4-5-20250929","display_name":"Claude + Sonnet 4.5","created_at":"2025-09-29T00:00:00Z"},{"type":"model","id":"claude-opus-4-1-20250805","display_name":"Claude + Opus 4.1","created_at":"2025-08-05T00:00:00Z"},{"type":"model","id":"claude-opus-4-20250514","display_name":"Claude Opus 4","created_at":"2025-05-22T00:00:00Z"},{"type":"model","id":"claude-sonnet-4-20250514","display_name":"Claude Sonnet 4","created_at":"2025-05-22T00:00:00Z"},{"type":"model","id":"claude-3-7-sonnet-20250219","display_name":"Claude Sonnet 3.7","created_at":"2025-02-24T00:00:00Z"},{"type":"model","id":"claude-3-5-sonnet-20241022","display_name":"Claude @@ -25,9 +29,6 @@ http_interactions: Haiku 3.5","created_at":"2024-10-22T00:00:00Z"},{"type":"model","id":"claude-3-5-sonnet-20240620","display_name":"Claude Sonnet 3.5 (Old)","created_at":"2024-06-20T00:00:00Z"},{"type":"model","id":"claude-3-haiku-20240307","display_name":"Claude Haiku 3","created_at":"2024-03-07T00:00:00Z"},{"type":"model","id":"claude-3-opus-20240229","display_name":"Claude - Opus 3","created_at":"2024-02-29T00:00:00Z"},{"type":"model","id":"claude-3-sonnet-20240229","display_name":"Claude - Sonnet 3","created_at":"2024-02-29T00:00:00Z"},{"type":"model","id":"claude-2.1","display_name":"Claude - 2.1","created_at":"2023-11-21T00:00:00Z"},{"type":"model","id":"claude-2.0","display_name":"Claude - 2.0","created_at":"2023-07-11T00:00:00Z"}],"has_more":false,"first_id":"claude-opus-4-20250514","last_id":"claude-2.0"}' - recorded_at: 2025-07-01 14:00:02 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + Opus 3","created_at":"2024-02-29T00:00:00Z"}],"has_more":false,"first_id":"claude-haiku-4-5-20251001","last_id":"claude-3-opus-20240229"}' + recorded_at: 2025-10-22 14:06:28 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-pdfs.yml b/tests/testthat/_vcr/anthropic-pdfs.yml index b68ea4b7..0c2eea43 100644 --- a/tests/testthat/_vcr/anthropic-pdfs.yml +++ b/tests/testthat/_vcr/anthropic-pdfs.yml @@ -3,117 +3,120 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"What''s + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"What''s the title of this document?"},{"type":"document","source":{"type":"base64","media_type":"application/pdf","data":"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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 19:40:30 GMT + date: Wed, 22 Oct 2025 14:06:48 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T19:40:30Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T19:40:30Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T19:40:29Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T19:40:30Z' - request-id: req_011CQgsEknAfD5prgLaU6gYG + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '3999000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:48Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:48Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:46Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4799000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:48Z' + request-id: req_011CUNNCKFdhKXb4KKTaemhd strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1792' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 958860146d542d2d-DFW - content-encoding: gzip + cf-ray: 99298ea5ce09d925-DFW body: - string: '{"id":"msg_01HvVv5jn72WWq3UAb8ayPud","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"The - title of this document is \"Apples are tasty\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1639,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":17,"service_tier":"standard"}}' - recorded_at: 2025-07-01 19:40:30 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01Xj2MTu6vhoehiXv3f6pjAe","type":"message","role":"assistant","content":[{"type":"text","text":"The + title of this document is **\"Apples are tasty\"** by Hadley Wickham."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1639,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":27,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:48 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"What''s + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"What''s the title of this document?"},{"type":"document","source":{"type":"base64","media_type":"application/pdf","data":"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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAgMAowIDAgMCAwIDI1OCAwIDAgMCA2MTEgMCAzODkgNTM3IDM1MiAwIDAgMCAwIDUxOSBdID4+CmVuZG9iagoyMCAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9GbGFncyAzMiAvRm9udEJCb3gKWy0xMDE4IC00ODEgMTQzNyAxMTQxXSAvSXRhbGljQW5nbGUgMCAvQXNjZW50IDk3NSAvRGVzY2VudCAtMjE3IC9DYXBIZWlnaHQKNzE0IC9TdGVtViAxNTcgL0xlYWRpbmcgMjkgL1hIZWlnaHQgNTE3IC9TdGVtSCAxMzIgL0F2Z1dpZHRoIDQ3OCAvTWF4V2lkdGgKMTUwMCAvRm9udEZpbGUyIDIxIDAgUiA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL0xlbmd0aDEgMzY1MiAvTGVuZ3RoIDIxMjQgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBrVdtbJtXFT73vv5IHMf2G38m/sj7+o3txHZiJ46d5mOpkzlRu1Ysa9dibwtt2rhroGnLSMYmMVGJVR0RRBP7MaGtGxL82BBIRirFy4+2PxCCCmkVvyoUUMUfxn4yKkHb2Dz3tRs1o0xVtdc6955z7r3nnvPccz+88tJqmax0jiTKH19eOEv6Z7qF6o/HX15RdJH4s6h3nTj74nJT/gGRoffFU6+eaMjm3xKZAifLC4sNme6hzp2EoiGzYdQ9J5dXXmnIpkuok6fOHG+2m38B2be88EpzftqErJxeWC43+tt8ov/ZM99aacjtt1DvOvtSudmfFSHfbbQ9UDLwbTRFXNc1yhBBNPTqGtEO+pPr0odH7BO3Waf0idBffvLf+0X911v98j1Trdt40bCKfq1NO/oY6eN6jILGTbR/23hRWNnxtVXJlWAbZCAHeRLsKskUo27qog6ATRRIXAWXpMgOjZN6dvShq2SjNDop5N0eZqdhSuzQOCi+wxBtkAsT+xNValdmXlvyFapkSUDLEIBVeCU1mCtgemGqE760UUfiCkb1UBCTyWSBTFcwJAPrKlQ2vQOHFCY/OeEPOmyQEWNkzET3Z4JzLlqm8/RDeheROmhf3UZGbqPrXCY0rdA36HVap+/SRTTL9aeonRvJxq+TDCvJfVVqnSv+irH1UpXVz1cLFPwIyEtHvtZfJZZUlJmlQoUdhcCTUMRVcFJSma1IkdkDRa2krClrexfXlFnl5MJixRDRazSU10oppUIHi0sony2qlXzJv82WS6Ux2DEIOxiC7mslWPh60wJqXZXaQidjcp9SkaJzxWeKlXMFfyVfKPlVVZmpXJsrVq4V/GqphF6mbU/hsViChs9m+GyKo72lYeUgbMBEaW1N2ITEo2rl2tqafw2R6BpNrTJqKhCp6CNFZqosP1cUTXlN9QuFpmoq/CgVYLs1ue9gcQaeqMITy/9ASoUHIG3bdhR9rXCvTYe0/UuC1PYokNofCVLHtqc7IJXhs0NA2vFwSLUvAHQb4fxDED7XQPjcQxB27kDY9cUIu7f9hpMeeOvWEfZ+SQj7HgXhzkdCuGvb0x0I++Fzl0A4sI1w3l+h7aQFwuc+l7L0f3P4cSEPPgA5+xfJzINz/Jf1O3ySFFCQcRrjxynHzlOOd0I+SiZuros7geEnPiuZcKLhpKLnmhpd/ZhF4zZ5zMEYJjWHGnaYMDYlE2ozteDku/9ZdMZDHpqly8zKetnvOOdv8JuSDae5TBL7GxcnuxkBq7LqlFWZXah9wnzP11L8SI3481t7+W8AWv0Oiks4byUc+hHCsZfCqQZqTW3os0riOHdswCoOd7ljND3oZxmnxDIjqjfD/jPPn/t57Z/v7WJtuZ/WbjMXM9XusMtbufffh01xuSr1z7iPO3ER5AmmXIn04JSEe6yF2DyYEdLuM3kwBFWOxsE5J6XMUIi7ZZfHqw2wmI1p4QGeHZ40xYYHuBY2mb02yWyT3K4QzwxN8mxaShYOJWJz0/EWy5sGIwu/kI7k0/7uwd35yXSA2TtVZzxt2Gj1d4dlR7fXZvMpcnzAY2QnhqZ75TZlNFX7TMs7rJ3tWqAjOtabHA3LFpPV6/H67cae+FJLq8kgSRa5y+XsspsCsV5xdXMKIr4exNeCm3D3BpbIRQKyVgfuoxu4EsWFKhQKMLQj5wRvBy9eEIJn6NgJCm6mB5kmgvaY1ZyI0MYbseVGNBF8lP3o76zN3x8ezvyFrRoCu49Njy/MRiOFY08UvxN6zTyZmMizMXs07N315sTpw5n43sWxicU9sbl5X2JSpAujMZS/19faL5IDaQcHJExu3MTKM6w6pdKDTjkjj63z61s5fQkRY66+jxcQoxP3/dUqJZEaXnLro71i9I1GyiTBK5sIb3PKSH9GtJ+C+PyUH6HaAYOd+kCjoL2gEmgJ9Cro+6Afgz4EfQT6A6h9vkrCei+s92LGPszoRQI2tHFo4yl47UZTBA8UEUoEuBLeI4IXOesDTxgiBlsoomdvpJFFyBkkl8vGmZzJZkJMT6FmYmlZNh5OB9utwZQWToVEXbu5zrueSY8eGg0ExopPpOe6+Hygf6JbmRgIBlMT3d0T/QH2wdbs7Wgs+dTR4ZHy/oFofFpgnkPxPWDnpsENFA3M3YiLIwIuImCIwIb8EV7b4LULvE33FSuBhIerHm82KhLCrGVz6zY1F2sPWGSbfygZtnBu3Lr7D22iv0virxsdwT7fUUzCRF6ye5h3lJYFKAzmNyiE95yYJoT5g6C2zQ28+XAg6rj2IgHcWD/RkoZ3acii5/gm8jjbzN0sPNTwUBVmNDSaQIRBghc5PKKFkMPYjwAzNiDd9z8zIN3PaG+ICeDFdv7ZBZ548nB/8tB0X2BgvDs01h9weAPW6C7pgqFv8ul4fC4fEw37D3X4Vbs7FnJ+MDwT75DjM5meQdVlNlvtPqfDaZGCfendUYc9kh8Kp7qdZoeiODvtZotb1UM31e+yA/wnSMGDYuNx3Xmx8bgI4EZjE3puNNdCvGZFdE5EasCpJ3gDOhI6WlHbUdsBjRG89wb2S1Zza+6MrB9EuZGsvlmzWLpP1w8f7uofV93JDovH2uM7yY3vvHOk9nEs3dXKpdOc+3oYHSFWv4v9Jd69biwP3i+w7QSJ/WhEbhiw75ieD0anJuHn9LhdJrMpGnOLvM2x7M23vslX3/61yR9wx12ehGfvgTyfqb3HjtX8dtkblZiBr3IJmYjQ9a/+Lg01uM+VbZAlPPsLtIeepoN0iA7TV+kFaBn+FiBR8JmAI02Jbzqxp3zq5fLK0vGFr5RXy/3TZ04t0n8BcHfSQQplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvQUFBQUFDK0hlbHZldGljYU5ldWUgL0ZvbnREZXNjcmlwdG9yCjIyIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIgMTIxIC9XaWR0aHMgWyAyNzgKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2NDggMAowIDAgNjExIDAgMCA3MjIgMjU5IDAgMCAwIDAgNzIyIDc2MCAwIDAgMCAwIDU3NCAwIDAgOTI2IDAgMCAwIDAgMCAwIDAgMCAwCjUzNyA1OTMgNTM3IDU5MyA1MzcgMjk2IDAgNTU2IDIyMiAwIDUxOSAyMjIgODUzIDU1NiA1NzQgNTkzIDAgMzMzIDUwMCAzMTUKNTU2IDAgMCA1MTggNTAwIF0gPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL0FBQUFBQytIZWx2ZXRpY2FOZXVlIC9GbGFncyAzMiAvRm9udEJCb3gKWy05NTEgLTQ4MSAxOTg3IDEwNzddIC9JdGFsaWNBbmdsZSAwIC9Bc2NlbnQgOTUyIC9EZXNjZW50IC0yMTMgL0NhcEhlaWdodAo3MTQgL1N0ZW1WIDk1IC9MZWFkaW5nIDI4IC9YSGVpZ2h0IDUxNyAvU3RlbUggODAgL0F2Z1dpZHRoIDQ0NyAvTWF4V2lkdGggMjIyNQovRm9udEZpbGUyIDIzIDAgUiA+PgplbmRvYmoKMjMgMCBvYmoKPDwgL0xlbmd0aDEgNzYwOCAvTGVuZ3RoIDQxNjYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB5Vl9bFvXdb/38vtDlCh+i5RE6omkRFKkKJof+qYsUZasSlFsM6bsyIotK5aLuDYSN026LfDQxUmFrXULtFvSoCsSbO3QtVC2NZHZbTGabW3TBjA6LAEyoRg2bNiKIAiCtBvSitrvvPdIS1oWBEX+GLBHnXfPve/ec889X/fcq6sPfnKNWdk1pmHF1UtnrzD50a+j+PHqw1eDSp1/A6X3/isXLqn1W4xpey488Oj9St3wCGOuv1hfO3teqbNfocyto0Gp80Mou9cvXUU/enT/jte1By6vqt8N9P3wpbOPqPOzbdSDnzh7aQ0lnvYbePVcufzQVbnK2hMoz195cE3tzyuozyvf9rw58CCbZEJuU94dDFVtj9xC3wHvPObVrjSP/JzbNcQXe2HyPirYT/+pz/6r2Vqn4WVtFlWTSkceo9najbOA8Xl8v2Z4majse4JbzBnnVYwQzB3nL0G8YyzP4qyTOdAxEGcv4cvR/U1VpsXPH99iPFj6rYveqS1mRgWjGHPS3xw7BdS+O8QsQses4hVmx+fE3BYzLVae5/xzS1t89/GtKdZ+E9xqVs70gVQiGCxdnNrk96EiEmiIhYBpEsHpTU14+lhFWgpuBDdmz28Ep4PrZ89vasNyiQ9rG0up4CY7XrmI94lKaLO45G+ga0tLQ6CjJToYgu4bS6DwcZUCSrkptYNOusRccFMTWazcXdm8NuXfLE4t+UOhYGnz1mJl89aUP7S0hF76BqfgmJav8GwAz/oYvhsVKsdBAySWNjaIJmoiEtq8tbHh38BK5BYptMWZ2oCVUh9NuLTFi4sV+lSUQn5qkEJSCHwsTYG2KTF3vFICJyHixPw/RMqm9ojU0mAUfa1gzyKLtOkjEqntw4i0+UOJtKXB6T6R2sFzC4m09f1FKn2AQBsSLr6PhK8pEr72PhJ27JOw84Ml7GrwDSbd4NYlS9jzEUnY+2Ek7PtQEm5rcLpPwn7w3EYSDjQkXPRvsobRQsLXDpgs+19t+NcVefsekfN3WYa7Ebrc7DiBeHL3PbHKFsRP2ALXsGMo58V/sYgYY0LzVcQWH+sWd7NJteymkvegPcGK7KesJAysRKWmzIrUhnFyfz7PRjFXJx9mJrldz0yoGxG3uBolrUzP/hr1IKLZwbiJZvmhWK1R8Q8utOpnnVzqmaHR3YgYWH/MMmKpV/eUVtbEbKyZtTA7Wlvl8OxkLuZmHuZlPrS1MT8LsHZ5TAcCOD0z+D3MbrBb7B2e5DP8SdEjFsSTmi9qY9pndEO6Z3Vv6Yv6j+uf0b9gWDT8gbFgvG2smZ41vWueMl8xvwEKgmUY5z8WP8A6DWyN9guEuBTiOcDYgph3G5C6iY6ad9HachN7A2GmbYYgXqog9qb81GgeW1IbdNSgY1pq0GIAZsEAHTDsQ+/2p3nIHnLYQ3b+VO1VnsnULoind74kntoZFN+HJo7vfoJ9j11GNtBXxQsKAEdWcMIABnBjSFVlRVrtrYPgQWG2P513Zdw2YXCN8VF+fJjrbB770KHLl60Bv0c/YD82uEa0QY5oa5i/KiuWaGtaWBXtXJ6ItciUsscv4yHOd9/D6wb2OA2zsDDm00IwOoAJbDDIjEiwFtpjsWSw1J/284xDwzP5kCfDf/io+NQ3az87u8iTCxdr/8GjfL725/y5ndzrr4MmzboA+mPALSxTlU2FCJqwVu1t8KWV+aKZsJOqMxkxE+FG8Ao5Zuu/Bf527TJ/qPZ7/HPilZ3c4n8u/ssiBqpz/I48x5EqJlJkagHTepWUHvNZAALy1aE03sZKyQQMAC6vuMrMkAHNa5bnzUCDGbuE98IKf2RlpfYkTcqP1G6KV0ivNO8xTPW8LDvPPnkrNFmK+M/Yj63QSFkcGIP8SVyXeZ3bO6YKURvl6Q3EH8AMXs0pskKZvzq/iswYNEEcw7NlndA8GU78Snz+lOCfXD8lFI7F6M7LmP+vxCTJSrDI7tviJ+If4YFR9qMt1gPivYAezOjEjE7gbHvCD9ExeCdjEUAOMA24B3A/4GHAdcCXAX8MeAHwd4Cm5Qkd+wcg/woQy6AMqh3bWMc2PrwBfn8GEMsgbwLiA/QCBgGzgCXARcCjgM8CngL8CeAm4IeApmVYTDOGkZaaoV5JVa9EGjs0JjIDHcLltAmpKymizg7Ux0T2UBJ1m3g8MHJmYuLMSKBersTvuVYuX7snXi/5Wu7iiUzmxMVcvZx9Yn10dP2JWZRjY+tPYFEcEmRiFPozsOhe/cl6IoNTPIYMjhSpua3YQCYbcr298tbO34pP71wXn14kw+Xk/povglYzy+7Rs4lUALDAAynuclnXcmyXMZva1p8OOSSN+nNk8BN//9LKF8RXL3xN/O7ZF1f/SDwHxX9bHJMhJyo73wD33bs/F2ZhZ/3sML+X4uF3WQGG38S8wGLAEJAhXg+Y192mUDBhx6oKsIUCbKEAWyjAFgqwhQJsoQBbKDAj6f1xIF8CkN4LCIZBxNGbCOQUTT2o96vYFkuDbhoLjGGOqUacDVNYDTNjI84KasApotFgpAYjNVSheMHCEMcWC4N2AIEXLHwWyFNUWQbTRiBeQA+gAJgBVADrgEcARvAZBgedsE8BGkmiYYf+khBBEt6RxLkhyY4ATgIuAD4FkNd6HciXAWK5inUpnFRZusHTKNQe1ktdkayNkzFmYZz5MY1ii3qDNKaRTdXudGcG8lGbzlU3VmF2R0NRaTknjSf9HenxkDTeH3CFep25GU1ZdI/MJ6RSocvgtDRvtBwaHEq22/3dzthIpFU0hWOxcEtXPpooSK16g6HJ5w10tep7B/sP97aaOwt9tV90BHTft1oMJmc46GpvNXqk3laYEpiehE30wQ69LMG+tcWSMDwvPpCbeSEhippUalHS9pAEboPUqM2NNjfabMB9ipf74OW+upf7gPrg5T54uQ9e7oOX++DlPni5DwrzQWE+eLkPXu6Dl/vg5QplCZQlin8M7HSo+0MHvN4BlRJrDiVOZzMdkGbd0SFcO1dDAEmd5DxZFrbeZMoxvDTc3jG8NJI75RJ8uKV7OJEYi7baIyPx3tGog4J0ydPZaozNnsvnz80lonFuqY1GZgpdodyRSPd0viuYK5HvkQ/x9+BDEnu0CkuyyOwEWuSoGYCnBOApAXhKAJ4SgKcE4CkBeEoAUTMAwwkgagYQNQOImoF61AwgapLpIsZ5kCfRCj3yFhaScYooDEJvQencRpaRSWoorimmk8tLdywtM+Dmf1jRRYbnE6P3jnZ0jp4eXn3IdtJ4ZLxnqNveEh5L5op8JTmZcMXn1oaGzk5H1u8bORzMTnVHZwtdOcUmKE7YYBMO2MR3t1gflEDpGrHlAgt9gK7bAOj+o9sv3KCq7HuwKuBezODFDITHgMfARZx1MZfs+dSaoJ3cheZmeCwxR/tCu7ovtMNC8gf2BR3tkftFl3E91tI9Et9rDPyGbDNJ516bqR2whTeQCfzC0+kwxmWLOZqIxKdlfyLZaWAfZtjB6SquFBAFwZoTrLlUvyIZOgEcq6LMz4rSmpL3t+7GOtoQeWlgGwZykCGco3M3DSAbCCmBxKMqPx/KKZudi1wix79ee124I9lQMBv1nDhhKeViYz2tnH9GuPKnS9mliW7ROXZ6rHKVH+rI9ng80dy3MwOB1GhXar0y2DNzbnj4/ExPRdmneC/OLh521949T8meifsmGCaVTtIGhzZo7cSt/cCSqZPmtmJCusbeKGUP5WC0nmwS0VLfziXXavn8+a5OS5vF2mmdnj3Jq7VpXp2b6fJqtEe12onx+TnywyJeb8JG29jdVbyUiEXCsqk+SVGpDUARjErFnuSYQnySyCmeKImXAwN9oHono5JNx+1CbqUmEQguxbIjMhhNF8r22FTGk+7rNguKHLxbGk54C/21Z/mJWGkgYHaFvNyO2EoR42nwSOcPTEYJRF2NAhxRTCWV6klyOrmDsgxO0S0rtXPM/nS5LM6try/v/BIXUiABmsIAmnJOfSffpXXK8idKUAioGdX1HMgVs3lHRpOXDPZSefH5B7ZffRBS3Mn9zdHaO3z2L/+Zf12ZQ+X7g3LbUpkGghU8sj40Lth9jL24306atic0bAVJBl8G8vk6EqwjmzKC4Ea7CvX9PDYgue9KHQnWkU0Z2WL+bUoAm1iLHAs0kGEPZNmDRfeSJcitfrQm5AwD8rABfPgcUfUdwUdKtB0YRnhQtcd6wCC1wyyRUtYNQG8gAzVI2WK5OZQNt4fdpvLMeGfUbSz7+sajmXJby0L/pSEhdDu/5Ieb+2Id9s6Yr/YtfnhkprUz5gX2Gz2D3fZkrL+n8rGGzGDDdvhWaa/M9tswrc4FNinQudXVqZreb8FKtnnAbmWG91jtQ1mFwwMmewbHGSU/bAM//9/OB4/5EsOh0HDCVy9PBYtnRseWi8FgcXls9EwxyEVqdqCtbWA2lZpNt7WlZ1OD52Z7e2fPDQ6uzsZis6tQDOVSw8il7DDS/4u5FMXmO/nT3rxKPaccyKWyul8vl9IhIpr3J1PTB7dPxf5HETjmhQMhWz5PKdcUZO9NsPcm5fxLFwdKjDZRVLRn5MwuG0Gylx0tOxMzmdKpTtmm/21gPhc4JUbG8S8UzjqRp70GXQyxb9IVA9Gu4lyi7MZBhPs08KAcKdIp+YSaRu6KNF45oaaxHaQRTdLIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdNy7mpR98IYSheA7h1GtrGz59TdPIeJw9iuaBugA0g9s1MOI8hYpDtKiCZxaFCyWM+dhE9bP+RepTPBQjx613i0PTUa7Bjp73QGow5Xb5dblDVdg0cTXaW8NDBXmRvwhhPOtnTU+1z/ZG9rc2QsFR4IOXFMcLS7nb5mvckZ8qXGw812qRAdKHTaXV0hb2eL3uyJQmy44ePt4muIUchmDu5geuiJ9EV3V7SjebBm0h3tao18oBlnXVovZWdaNTvTogNDRx1KF8XerOSSXBk7zkLDPCsfm6DpF8qViq09FZqIOn023QWh+8pX5movdie8pjmNubWZTyATINUWoes3sT16KReg60aazorpDvKrnFgoyRby0VrhupEZ1LMCI/yESNAtVAg5o+wHkSxhdLGQy2dc/M29ucDgCT9MsLat5AH8TO1PkQf4+/rpkkiV4Q74syBPVe6dzNiPaDYtfFKDHgYYIlm6gkEemkzeI2/TUelH37tw48alH/zZ/b/9m5d4S+3t117jnre+8x30Ne6m5XW72XXIO067At1a2umsjENw4/DsogbXngb1GlNPp2kTVGLH9DchOfUUbIWArODVilOwFadgK07BVpyCrTgFW+unYCsOMxiBU7BTpdCf1tlwLolEsx0cUhrnGrqYyHBLc7sUDzR32Czt5jbJJL163++LL5wqRQ6FmrW6BZ3B5zkpRG0JqQfUIj+7z7ABBTvwDqKuQb5vZ904CcYRZ9PomYeXTyEzmgavM3DWOfYx3D3exRbZ3binO87KOIedxAXAaXavTI/jFhq5Hh49mGcT9EzGZ9YeeHjt6sXVswtr+I8t+29Q7uggCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUQrSGVsdmV0aWNhTmV1ZSAvRm9udERlc2NyaXB0b3IKMjQgMCBSIC9Ub1VuaWNvZGUgMjUgMCBSIC9GaXJzdENoYXIgMzMgL0xhc3RDaGFyIDMzIC9XaWR0aHMgWyAyNzggXSA+PgplbmRvYmoKMjUgMCBvYmoKPDwgL0xlbmd0aCAyMjIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBXZC9bsQgEIR7nmLLS3ECX42QootOcpEfxckDYFhbSPGC1rjw2weIc5FSbMHMfDCsvPZPPYUM8o2jGzDDFMgzrnFjhzDiHEh0F/DB5ePUNLfYJGSBh33NuPQ0RdBaAMj3gqyZdzg9+jjiQ9Ve2SMHmuH0eR2aMmwpfeGClEEJY8DjVK57tunFLgiyoefeFz/k/Vyov8THnhBKo0J0P5Vc9Lgm65AtzSi0UkbfbkYg+X/WAYzTkbx0RtdRStmW/3UqWr94r+Q25tKm7aEVrQUC4X1VKab6YJtvfCZwQQplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL0FBQUFBRCtIZWx2ZXRpY2FOZXVlIC9GbGFncyA0IC9Gb250QkJveApbLTk1MSAtNDgxIDE5ODcgMTA3N10gL0l0YWxpY0FuZ2xlIDAgL0FzY2VudCA5NTIgL0Rlc2NlbnQgLTIxMyAvQ2FwSGVpZ2h0CjcxNCAvU3RlbVYgOTUgL0xlYWRpbmcgMjggL1hIZWlnaHQgNTE3IC9TdGVtSCA4MCAvQXZnV2lkdGggNDQ3IC9NYXhXaWR0aCAyMjI1Ci9Gb250RmlsZTIgMjYgMCBSID4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoMSAxNzg4IC9MZW5ndGggODQ1IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Aa1VTUzTUBz/v7b7AKYyvkSK2mZCiBvZFD+iMWbEjqBEM8VD60FYoMIMA4LD6EGzi5cejBcPGo8ePNaLKVxY4kFjNPHg0RiPHo3BmzB/r20apkiI4XXv/T/fv7/3y+t/5YVFk2JUIZGyE6XCPLkj9B2ia+J2WfFs9gKy88b8VMm3q0RS39TM3RueHW6DfDRtFiY9m35BnpiGw7PZMchD06XyHc8OfYOMzsxN+PFwDHa4VLjjv58+w1ZmCyXTyw9/guybn7tV9u3nkJn5BdPPZzrsi15sw8qgCxTF5MNbD3BF6nM9PI75436nNLbnzE8WFzkuenVunAv68rU//uv8+sHIa+k4zAa/grtHdGpJ6o6+RLwSec2r1A3BobYkW8YOgTqSbAX0nqWTlKSD1IrE7iStIHKh3rVMEh456RBTcveKnZpDjTCwi6iN/0boGtR47TQ1CSGKCe8ojnBqxKGGvP6SsYeGw2oPHI32LwGtOHa9H6VSipIrajYbhyGk4DisQhNTypAt9gxd0ROGYinW+UlLGVKmC5O21ONKBEzLSCs2jepFrFd11c4acqCahnEadSReB1uQbhmocNOvAOm60mtICqVGFFvszeuXdbuiyXZWM2RVVXJ2Na/bVU1WDQNZ4QApEPPje5gjwBw+jHjUqzKKGihhWBavCUvoVe2qZckWTuJ6EqrDyHfgpDxH7Mk5LJvXeSibUGXuSKgJFTgMDbUbUiOjeg5IVI6k8S9KSdtAaVMAFLkxwGtyKd21Q5Tu3g6le7ZFaXOAtI7SODA3c0pbNqc0sQWhAcPZTRiueAxXNmG4tY7htq0Zbg9wA2QH0La7DO/dIYY7t8Pwvm0x3BUgrWNYBuYuznB3wHBWtim4tGC48seVpX/e4f+lfP8GytkqDbAOdA/evbxuFaMwOj+RGniIhvHwBjlAjL0X3qJtRcjkvQyfXxq9BjPajO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"The - title of this document is \"Apples are tasty\""}]},{"role":"user","content":[{"type":"text","text":"What + title of this document is **\"Apples are tasty\"** by Hadley Wickham."}]},{"role":"user","content":[{"type":"text","text":"What apple is not tasty?"}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 19:40:33 GMT + date: Wed, 22 Oct 2025 14:06:50 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T19:40:32Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T19:40:33Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T19:40:31Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T19:40:32Z' - request-id: req_011CQgsEvsPXwg2cKcHSPQkc + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '3999000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:49Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:50Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:48Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4799000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:49Z' + request-id: req_011CUNNCTdfX1B3ypmK4VxPW strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1867' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 958860265afc2d2d-DFW - content-encoding: gzip + cf-ray: 99298eb20a63d925-DFW body: - string: '{"id":"msg_01Qet3RsGhjgWcdF6RAPZN44","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"According - to the document, Red Delicious apples are NOT delicious. The author specifically - states \"Except for red delicious, that is. They are NOT delicious.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1666,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":40,"service_tier":"standard"}}' - recorded_at: 2025-07-01 19:40:33 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01PVd2WUGUwtC7PGB2MV64mS","type":"message","role":"assistant","content":[{"type":"text","text":"According + to the document, **red delicious** apples are not tasty. The author states: + \"Except for red delicious, that is. They are NOT delicious.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1676,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":41,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:50 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"What''s + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"What''s the title of this document?"},{"type":"document","source":{"type":"base64","media_type":"application/pdf","data":"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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"The - title of this document is \"Apples are tasty\""}]},{"role":"user","content":[{"type":"text","text":"What + title of this document is **\"Apples are tasty\"** by Hadley Wickham."}]},{"role":"user","content":[{"type":"text","text":"What apple is not tasty?"}]},{"role":"assistant","content":[{"type":"text","text":"According - to the document, Red Delicious apples are NOT delicious. The author specifically - states \"Except for red delicious, that is. They are NOT delicious.\""}]},{"role":"user","content":[{"type":"text","text":"What + to the document, **red delicious** apples are not tasty. The author states: + \"Except for red delicious, that is. They are NOT delicious.\""}]},{"role":"user","content":[{"type":"text","text":"What apple is not tasty?"}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 19:40:34 GMT + date: Wed, 22 Oct 2025 14:06:51 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '79000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T19:40:34Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T19:40:34Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T19:40:33Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '95000' - anthropic-ratelimit-tokens-reset: '2025-07-01T19:40:34Z' - request-id: req_011CQgsF6ZYUy2oAPb1sKw9U + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '3999000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:51Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:51Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:50Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4799000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:51Z' + request-id: req_011CUNNCcYChE2pCdh2Xr62N strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '936' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 958860348e952d2d-DFW - content-encoding: gzip + cf-ray: 99298ebeff2cd925-DFW body: - string: '{"id":"msg_0137rbEwt1dE29JXbcp1gj9J","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"According - to the document, Red Delicious apples are NOT delicious. The author specifically - states \"Except for red delicious, that is. They are NOT delicious.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1716,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":40,"service_tier":"standard"}}' - recorded_at: 2025-07-01 19:40:34 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_017xfkjB7uH9Zuc87DdbYbbc","type":"message","role":"assistant","content":[{"type":"text","text":"According + to the document, **red delicious** apples are not tasty. The author explicitly + states: \"Except for red delicious, that is. They are NOT delicious.\""}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":1727,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":42,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:51 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-standard-params.yml b/tests/testthat/_vcr/anthropic-standard-params.yml index 4e0e8a7b..42f777da 100644 --- a/tests/testthat/_vcr/anthropic-standard-params.yml +++ b/tests/testthat/_vcr/anthropic-standard-params.yml @@ -3,36 +3,37 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"Repeat + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"Repeat after the following phrase: Dogs are cool"}]}],"stream":false,"stop_sequences":["cool"],"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 14:00:21 GMT + date: Wed, 22 Oct 2025 14:06:29 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T14:00:19Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T14:00:21Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T14:00:19Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T14:00:19Z' - request-id: req_011CQgRJH8bb78X4D4Kw4EF9 + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:29Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:29Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:29Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:29Z' + request-id: req_011CUNNB1TnKXczYcK1pEMKe strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '930' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95866dcfa93bf061-DFW - content-encoding: gzip + cf-ray: 99298e37086ed925-DFW body: - string: '{"id":"msg_01MFxeRaj3NfjC7sV8uM432t","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Dogs - are "}],"stop_reason":"stop_sequence","stop_sequence":"cool","usage":{"input_tokens":17,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":3,"service_tier":"standard"}}' - recorded_at: 2025-07-01 14:00:21 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01Uyo12F953mp64KrfDr9cYm","type":"message","role":"assistant","content":[{"type":"text","text":"Dogs + are "}],"stop_reason":"stop_sequence","stop_sequence":"cool","usage":{"input_tokens":17,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:29 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-structured-data.yml b/tests/testthat/_vcr/anthropic-structured-data.yml index b2ae659a..89e6b093 100644 --- a/tests/testthat/_vcr/anthropic-structured-data.yml +++ b/tests/testthat/_vcr/anthropic-structured-data.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"\n # + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"\n # Apples are tasty\n By Hadley Wickham\n\n Apples are delicious and tasty and I like to eat them.\n Except for red delicious, that is. They are NOT delicious.\n "}]}],"stream":false,"tools":[{"name":"_structured_tool_call","description":"Extract @@ -13,39 +13,39 @@ http_interactions: response: status: 200 headers: - date: Wed, 08 Oct 2025 20:00:32 GMT + date: Wed, 22 Oct 2025 14:06:37 GMT content-type: application/json content-encoding: gzip - anthropic-ratelimit-input-tokens-limit: '160000' - anthropic-ratelimit-input-tokens-remaining: '160000' - anthropic-ratelimit-input-tokens-reset: '2025-10-08T20:00:31Z' - anthropic-ratelimit-output-tokens-limit: '32000' - anthropic-ratelimit-output-tokens-remaining: '32000' - anthropic-ratelimit-output-tokens-reset: '2025-10-08T20:00:32Z' - anthropic-ratelimit-requests-limit: '2000' - anthropic-ratelimit-requests-remaining: '1999' - anthropic-ratelimit-requests-reset: '2025-10-08T20:00:31Z' - anthropic-ratelimit-tokens-limit: '192000' - anthropic-ratelimit-tokens-remaining: '192000' - anthropic-ratelimit-tokens-reset: '2025-10-08T20:00:31Z' - request-id: req_011CTvKr47vAzDKP7jaJYANL + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:37Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:37Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:36Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:37Z' + request-id: req_011CUNNBYX5QfjsRyDLPZhnt strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - x-envoy-upstream-service-time: '986' + x-envoy-upstream-service-time: '973' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 98b83993ab04f04c-DFW + cf-ray: 99298e646be6d925-DFW body: - string: '{"model":"claude-3-5-sonnet-20241022","id":"msg_01YNGYBsMpzeZPu6vvPdUJDb","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_015qPr1LDGU1uRZt6mX2SuJA","name":"_structured_tool_call","input":{"data":{"title":"Apples - are tasty","author":"Hadley Wickham"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":518,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":54,"service_tier":"standard"}}' - recorded_at: 2025-10-08 20:00:32 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_013v8jFaJXcTFVw7FHwRCjHx","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01TGexzDLUipuFPneBje1XJo","name":"_structured_tool_call","input":{"data":{"title":"Apples + are tasty","author":"Hadley Wickham"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":792,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":60,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:37 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"\n # + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"\n # Apples are tasty\n By Hadley Wickham\n\n Apples are delicious and tasty and I like to eat them.\n Except for red delicious, that is. They are NOT delicious.\n "}]},{"role":"assistant","content":[{"type":"text","text":"{\"title\":\"Apples @@ -59,32 +59,32 @@ http_interactions: response: status: 200 headers: - date: Wed, 08 Oct 2025 20:00:33 GMT + date: Wed, 22 Oct 2025 14:06:38 GMT content-type: application/json content-encoding: gzip - anthropic-ratelimit-input-tokens-limit: '160000' - anthropic-ratelimit-input-tokens-remaining: '160000' - anthropic-ratelimit-input-tokens-reset: '2025-10-08T20:00:33Z' - anthropic-ratelimit-output-tokens-limit: '32000' - anthropic-ratelimit-output-tokens-remaining: '32000' - anthropic-ratelimit-output-tokens-reset: '2025-10-08T20:00:33Z' - anthropic-ratelimit-requests-limit: '2000' - anthropic-ratelimit-requests-remaining: '1999' - anthropic-ratelimit-requests-reset: '2025-10-08T20:00:32Z' - anthropic-ratelimit-tokens-limit: '192000' - anthropic-ratelimit-tokens-remaining: '192000' - anthropic-ratelimit-tokens-reset: '2025-10-08T20:00:33Z' - request-id: req_011CTvKr9BWqFCyiQU8NLHm9 + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:38Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:38Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:37Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:38Z' + request-id: req_011CUNNBdTEwriFtEajrm41o strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - x-envoy-upstream-service-time: '961' + x-envoy-upstream-service-time: '1319' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 98b8399b1a97f04c-DFW + cf-ray: 99298e6b7cb4d925-DFW body: - string: '{"model":"claude-3-5-sonnet-20241022","id":"msg_01RiGa8GtP8DzDvUiWAoG3eU","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01ErkaCC2S34Kwr5k7YTeTL4","name":"_structured_tool_call","input":{"data":{"title":"Apples - are tasty","author":"Hadley Wickham"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":600,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":51,"service_tier":"standard"}}' - recorded_at: 2025-10-08 20:00:33 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_015x8aXpTi8uQvFQPSVhBwsR","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_0118DQzR7VfCQGyUb3hCoR3H","name":"_structured_tool_call","input":{"data":{"title":"Apples + are tasty","author":"Hadley Wickham"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":874,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":54,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:38 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-tool.yml b/tests/testthat/_vcr/anthropic-tool.yml index ca957fa9..f763576f 100644 --- a/tests/testthat/_vcr/anthropic-tool.yml +++ b/tests/testthat/_vcr/anthropic-tool.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Always use a tool to + string: '{"model":"claude-haiku-4-5-20251001","system":"Always use a tool to answer. Reply with ''It is ____.''.","messages":[{"role":"user","content":[{"type":"text","text":"What''s the current date in Y-M-D format?"}]}],"stream":false,"tools":[{"name":"current_date","description":"Return the current date","input_schema":{"type":"object","description":"","additionalProperties":false}},{"name":"current_month","description":"Return @@ -11,81 +11,80 @@ http_interactions: response: status: 200 headers: - date: Tue, 01 Jul 2025 21:44:47 GMT + date: Wed, 22 Oct 2025 14:06:31 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:47Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:47Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:46Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:47Z' - request-id: req_011CQh2iU59yw612RjF8hbQn + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:31Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:31Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:30Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:31Z' + request-id: req_011CUNNB6F1zwC4f5DdUgohP strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1619' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95891627ec3d49fe-DFW - content-encoding: gzip + cf-ray: 99298e3e0922d925-DFW body: - string: '{"id":"msg_01NEhhzZKtxnizmgzpBVBdqe","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Let - me check the current date using the available tool."},{"type":"tool_use","id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","name":"current_date","input":{}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":442,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":48,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:47 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01EJVuNzb4MJbdP5p1VDt2TH","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01BW69saFoE9ooYerHnnZ4Up","name":"current_date","input":{}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":625,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":37,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:31 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Always use a tool to + string: '{"model":"claude-haiku-4-5-20251001","system":"Always use a tool to answer. Reply with ''It is ____.''.","messages":[{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the current date using the available tool."},{"type":"tool_use","id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","content":"2024-01-01","is_error":false}]}],"stream":false,"tools":[{"name":"current_date","description":"Return + the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_01BW69saFoE9ooYerHnnZ4Up","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01BW69saFoE9ooYerHnnZ4Up","content":"2024-01-01","is_error":false}]}],"stream":false,"tools":[{"name":"current_date","description":"Return the current date","input_schema":{"type":"object","description":"","additionalProperties":false}},{"name":"current_month","description":"Return the full name of the current month","input_schema":{"type":"object","description":"","additionalProperties":false}}],"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 21:44:48 GMT + date: Wed, 22 Oct 2025 14:06:32 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:48Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:48Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:48Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:48Z' - request-id: req_011CQh2ic582YruN7uAEKBjA + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:32Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:32Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:32Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:32Z' + request-id: req_011CUNNBEDFPzgx9wopg8i1H strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '909' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 958916339ca849fe-DFW - content-encoding: gzip + cf-ray: 99298e499850d925-DFW body: - string: '{"id":"msg_01RJzT5Goa3suGmBHBhspP1H","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"It - is 2024-01-01."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":507,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":14,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:48 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01Ux7CnANHQtQGZGsZ6vb2au","type":"message","role":"assistant","content":[{"type":"text","text":"It + is 2024-01-01."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":680,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":13,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:32 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Always use a tool to + string: '{"model":"claude-haiku-4-5-20251001","system":"Always use a tool to answer. Reply with ''It is ____.''.","messages":[{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the current date using the available tool."},{"type":"tool_use","id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","content":"2024-01-01","is_error":false}]},{"role":"assistant","content":[{"type":"text","text":"It + the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_01BW69saFoE9ooYerHnnZ4Up","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01BW69saFoE9ooYerHnnZ4Up","content":"2024-01-01","is_error":false}]},{"role":"assistant","content":[{"type":"text","text":"It is 2024-01-01."}]},{"role":"user","content":[{"type":"text","text":"What month is it? Provide the full name"}]}],"stream":false,"tools":[{"name":"current_date","description":"Return the current date","input_schema":{"type":"object","description":"","additionalProperties":false}},{"name":"current_month","description":"Return @@ -93,286 +92,73 @@ http_interactions: response: status: 200 headers: - date: Tue, 01 Jul 2025 21:44:50 GMT + date: Wed, 22 Oct 2025 14:06:34 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:50Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:50Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:49Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:50Z' - request-id: req_011CQh2igMLvKCuYocMsJzdN + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:33Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:33Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:33Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:33Z' + request-id: req_011CUNNBJirkRRhHsppw29W5 strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '998' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95891639e98649fe-DFW - content-encoding: gzip + cf-ray: 99298e503f12d925-DFW body: - string: '{"id":"msg_01WC1mqJwXGoJjXHH7MfVerN","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Let - me check the current month using the available tool."},{"type":"tool_use","id":"toolu_01FNVPzgLUWaDhYa2GGcYqPD","name":"current_month","input":{}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":534,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":48,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:50 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01LNHJWkAwoc1wT57oHTWYTG","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01CnhXrZiKdxYrMPD5UnpEBX","name":"current_month","input":{}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":706,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":37,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:34 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Always use a tool to + string: '{"model":"claude-haiku-4-5-20251001","system":"Always use a tool to answer. Reply with ''It is ____.''.","messages":[{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the current date using the available tool."},{"type":"tool_use","id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_014LzzHvhWJvEtpX4QNVL2o8","content":"2024-01-01","is_error":false}]},{"role":"assistant","content":[{"type":"text","text":"It + the current date in Y-M-D format?"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_01BW69saFoE9ooYerHnnZ4Up","name":"current_date","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01BW69saFoE9ooYerHnnZ4Up","content":"2024-01-01","is_error":false}]},{"role":"assistant","content":[{"type":"text","text":"It is 2024-01-01."}]},{"role":"user","content":[{"type":"text","text":"What month - is it? Provide the full name"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the current month using the available tool."},{"type":"tool_use","id":"toolu_01FNVPzgLUWaDhYa2GGcYqPD","name":"current_month","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01FNVPzgLUWaDhYa2GGcYqPD","content":"February","is_error":false}]}],"stream":false,"tools":[{"name":"current_date","description":"Return + is it? Provide the full name"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_01CnhXrZiKdxYrMPD5UnpEBX","name":"current_month","input":{}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01CnhXrZiKdxYrMPD5UnpEBX","content":"February","is_error":false}]}],"stream":false,"tools":[{"name":"current_date","description":"Return the current date","input_schema":{"type":"object","description":"","additionalProperties":false}},{"name":"current_month","description":"Return the full name of the current month","input_schema":{"type":"object","description":"","additionalProperties":false}}],"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 21:44:51 GMT - content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:51Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:51Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:50Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:51Z' - request-id: req_011CQh2ip6g177FDeNXkyrxB - strict-transport-security: max-age=31536000; includeSubDomains; preload - anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - via: 1.1 google - cf-cache-status: DYNAMIC - x-robots-tag: none - server: cloudflare - cf-ray: 958916453f3d49fe-DFW - content-encoding: gzip - body: - string: '{"id":"msg_01FgqAUj1cmEh5EWfHPLan4A","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"It - is February."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":594,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":8,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:51 -- request: - method: POST - uri: https://api.anthropic.com/v1/messages - body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Be very terse, not even - punctuation.","messages":[{"role":"user","content":[{"type":"text","text":"\n What - are Joe and Hadley''s favourite colours?\n Answer like name1: colour1, - name2: colour2\n "}]}],"stream":false,"tools":[{"name":"favourite_color","description":"Returns - a person''s favourite colour","input_schema":{"type":"object","description":"","properties":{"person":{"type":"string","description":"Name - of a person"}},"required":["person"],"additionalProperties":false}}],"temperature":0,"max_tokens":4096}' - response: - status: 200 - headers: - date: Tue, 01 Jul 2025 21:44:53 GMT - content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:52Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:53Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:52Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:52Z' - request-id: req_011CQh2ivAoQ8KtsXJvDWAH5 - strict-transport-security: max-age=31536000; includeSubDomains; preload - anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - via: 1.1 google - cf-cache-status: DYNAMIC - x-robots-tag: none - server: cloudflare - cf-ray: 9589164d8c9d49fe-DFW - content-encoding: gzip - body: - string: '{"id":"msg_019eymqDCASu6ceW63NZS2B9","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"tool_use","id":"toolu_019a2YSawvRQTPUfpXf8QMS8","name":"favourite_color","input":{"person":"Joe"}},{"type":"tool_use","id":"toolu_01V4j3fVrrGJWAaGHkvhTqB5","name":"favourite_color","input":{"person":"Hadley"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":436,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":91,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:53 -- request: - method: POST - uri: https://api.anthropic.com/v1/messages - body: - string: '{"model":"claude-3-5-sonnet-latest","system":"Be very terse, not even - punctuation.","messages":[{"role":"user","content":[{"type":"text","text":"\n What - are Joe and Hadley''s favourite colours?\n Answer like name1: colour1, - name2: colour2\n "}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_019a2YSawvRQTPUfpXf8QMS8","name":"favourite_color","input":{"person":"Joe"}},{"type":"tool_use","id":"toolu_01V4j3fVrrGJWAaGHkvhTqB5","name":"favourite_color","input":{"person":"Hadley"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_019a2YSawvRQTPUfpXf8QMS8","content":"sage - green","is_error":false},{"type":"tool_result","tool_use_id":"toolu_01V4j3fVrrGJWAaGHkvhTqB5","content":"red","is_error":false}]}],"stream":false,"tools":[{"name":"favourite_color","description":"Returns - a person''s favourite colour","input_schema":{"type":"object","description":"","properties":{"person":{"type":"string","description":"Name - of a person"}},"required":["person"],"additionalProperties":false}}],"temperature":0,"max_tokens":4096}' - response: - status: 200 - headers: - date: Tue, 01 Jul 2025 21:44:54 GMT - content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:54Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:54Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:54Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:54Z' - request-id: req_011CQh2j3yM76y2Gfj65XihG - strict-transport-security: max-age=31536000; includeSubDomains; preload - anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - via: 1.1 google - cf-cache-status: DYNAMIC - x-robots-tag: none - server: cloudflare - cf-ray: 958916596fba49fe-DFW - content-encoding: gzip - body: - string: '{"id":"msg_01Ed4mbfM7p7Mwc1t1RJYSh9","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Joe: - sage green Hadley: red"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":593,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":13,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:54 -- request: - method: POST - uri: https://api.anthropic.com/v1/messages - body: - string: '{"model":"claude-3-5-sonnet-latest","system":"\n Use provided tool - calls to find the weather forecast and suitable\n equipment for a variety - of weather conditions.\n\n In your response, be very terse and omit punctuation.\n ","messages":[{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]}],"stream":false,"tools":[{"name":"forecast","description":"Gets - the weather forecast for a city","input_schema":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}},{"name":"equipment","description":"Gets - the equipment needed for a weather condition","input_schema":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}],"temperature":0,"max_tokens":4096}' - response: - status: 200 - headers: - date: Tue, 01 Jul 2025 21:44:57 GMT + date: Wed, 22 Oct 2025 14:06:36 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:57Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:57Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:55Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:57Z' - request-id: req_011CQh2j8o4kedC8gkEGtBHu - strict-transport-security: max-age=31536000; includeSubDomains; preload - anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - via: 1.1 google - cf-cache-status: DYNAMIC - x-robots-tag: none - server: cloudflare - cf-ray: 9589165ea8cb49fe-DFW content-encoding: gzip - body: - string: '{"id":"msg_0186oa2iaxvM3pDJQKaeLd6j","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Let - me check the forecast for New York and suggest equipment"},{"type":"tool_use","id":"toolu_01EWhQHrpV8ERbxYNxyQwKXS","name":"forecast","input":{"city":"New - York"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":511,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":64,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:57 -- request: - method: POST - uri: https://api.anthropic.com/v1/messages - body: - string: '{"model":"claude-3-5-sonnet-latest","system":"\n Use provided tool - calls to find the weather forecast and suitable\n equipment for a variety - of weather conditions.\n\n In your response, be very terse and omit punctuation.\n ","messages":[{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the forecast for New York and suggest equipment"},{"type":"tool_use","id":"toolu_01EWhQHrpV8ERbxYNxyQwKXS","name":"forecast","input":{"city":"New - York"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01EWhQHrpV8ERbxYNxyQwKXS","content":"rainy","is_error":false}]}],"stream":false,"tools":[{"name":"forecast","description":"Gets - the weather forecast for a city","input_schema":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}},{"name":"equipment","description":"Gets - the equipment needed for a weather condition","input_schema":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}],"temperature":0,"max_tokens":4096}' - response: - status: 200 - headers: - date: Tue, 01 Jul 2025 21:44:59 GMT - content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:44:58Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:44:59Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:58Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:44:58Z' - request-id: req_011CQh2jMBSwDRMyWzZnRas6 + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:35Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:35Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:34Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:35Z' + request-id: req_011CUNNBQQv7SvYhZLHe2CeR strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1757' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 958916726f6549fe-DFW - content-encoding: gzip - body: - string: '{"id":"msg_01AFt64FxiTvzuoiEsbGVeWs","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"Let - me check what equipment you need for rainy conditions"},{"type":"tool_use","id":"toolu_01E1WVeL8e9sf9qPMjvXDtuS","name":"equipment","input":{"weather":"rainy"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":588,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":65,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:44:59 -- request: - method: POST - uri: https://api.anthropic.com/v1/messages - body: - string: '{"model":"claude-3-5-sonnet-latest","system":"\n Use provided tool - calls to find the weather forecast and suitable\n equipment for a variety - of weather conditions.\n\n In your response, be very terse and omit punctuation.\n ","messages":[{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check the forecast for New York and suggest equipment"},{"type":"tool_use","id":"toolu_01EWhQHrpV8ERbxYNxyQwKXS","name":"forecast","input":{"city":"New - York"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01EWhQHrpV8ERbxYNxyQwKXS","content":"rainy","is_error":false}]},{"role":"assistant","content":[{"type":"text","text":"Let - me check what equipment you need for rainy conditions"},{"type":"tool_use","id":"toolu_01E1WVeL8e9sf9qPMjvXDtuS","name":"equipment","input":{"weather":"rainy"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_01E1WVeL8e9sf9qPMjvXDtuS","content":"umbrella","is_error":false}]}],"stream":false,"tools":[{"name":"forecast","description":"Gets - the weather forecast for a city","input_schema":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}},{"name":"equipment","description":"Gets - the equipment needed for a weather condition","input_schema":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}],"temperature":0,"max_tokens":4096}' - response: - status: 200 - headers: - date: Tue, 01 Jul 2025 21:45:00 GMT - content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:45:00Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:45:00Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:44:59Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:45:00Z' - request-id: req_011CQh2jUDrx9K7XjDPAmxGt - strict-transport-security: max-age=31536000; includeSubDomains; preload - anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e - via: 1.1 google - cf-cache-status: DYNAMIC - x-robots-tag: none - server: cloudflare - cf-ray: 9589167cdb7d49fe-DFW - content-encoding: gzip + cf-ray: 99298e587be0d925-DFW body: - string: '{"id":"msg_01X6VcLUvGiNUsJKFcssKB8b","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"For - New York this weekend you should bring an umbrella since rain is expected"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":666,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":19,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:45:00 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01PcDFzr8XGp2n7f7GwBHC9K","type":"message","role":"assistant","content":[{"type":"text","text":"It + is February."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":756,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":7,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:36 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/anthropic-whitespace.yml b/tests/testthat/_vcr/anthropic-whitespace.yml index 424c00f6..3b34e58f 100644 --- a/tests/testthat/_vcr/anthropic-whitespace.yml +++ b/tests/testthat/_vcr/anthropic-whitespace.yml @@ -3,72 +3,74 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"Respond + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"Respond with only two blank lines"}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 21:47:03 GMT + date: Wed, 22 Oct 2025 14:06:53 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:47:03Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:47:03Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:47:02Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:47:03Z' - request-id: req_011CQh2tXrtiXoGgYmvNDM5X + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:52Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:53Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:52Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:52Z' + request-id: req_011CUNNChT8EaRuvh6JYRioP strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '2006' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9589197d48ac49fe-DFW - content-encoding: gzip + cf-ray: 99298ec5f844d925-DFW body: - string: '{"id":"msg_0134FYZBUriV7gNtsceSqGGw","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"\n"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":14,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":4,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:47:03 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01FHbN8WRUzzwjkUjHH5fLwD","type":"message","role":"assistant","content":[{"type":"text","text":"\n"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":14,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":4,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:53 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-3-5-sonnet-latest","messages":[{"role":"user","content":[{"type":"text","text":"Respond + string: '{"model":"claude-haiku-4-5-20251001","messages":[{"role":"user","content":[{"type":"text","text":"Respond with only two blank lines"}]},{"role":"assistant","content":[{"type":"text","text":"[empty string]"}]},{"role":"user","content":[{"type":"text","text":"What''s 1+1? Just give me the number"}]}],"stream":false,"temperature":0,"max_tokens":4096}' response: status: 200 headers: - date: Tue, 01 Jul 2025 21:47:04 GMT + date: Wed, 22 Oct 2025 14:06:55 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '80000' - anthropic-ratelimit-input-tokens-remaining: '80000' - anthropic-ratelimit-input-tokens-reset: '2025-07-01T21:47:04Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-07-01T21:47:04Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-01T21:47:03Z' - anthropic-ratelimit-tokens-limit: '96000' - anthropic-ratelimit-tokens-remaining: '96000' - anthropic-ratelimit-tokens-reset: '2025-07-01T21:47:04Z' - request-id: req_011CQh2tczTqehAXrK23FY4M + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:06:55Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:06:55Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:06:54Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:06:55Z' + request-id: req_011CUNNCrtQMsBgLPdwioed5 strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1206' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 95891984dbe349fe-DFW - content-encoding: gzip + cf-ray: 99298ed3caa3d925-DFW body: - string: '{"id":"msg_01QcTNMaw9AnPa6de4F9vDT7","type":"message","role":"assistant","model":"claude-3-5-sonnet-20241022","content":[{"type":"text","text":"2"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":36,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":5,"service_tier":"standard"}}' - recorded_at: 2025-07-01 21:47:04 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_012Dp2YgpKFXtKniMhrAJcqs","type":"message","role":"assistant","content":[{"type":"text","text":"2"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":36,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:06:55 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-duration.yml b/tests/testthat/_vcr/chat-duration.yml index bfbb4f66..0c4f6a15 100644 --- a/tests/testthat/_vcr/chat-duration.yml +++ b/tests/testthat/_vcr/chat-duration.yml @@ -4,46 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - 1 + 1?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + 1 + 1?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9923d3e4fc17d2e5-ORD + cf-ray: 993402c7fe8c1376-DFW content-encoding: gzip content-type: application/json - date: Tue, 21 Oct 2025 21:25:28 GMT + date: Thu, 23 Oct 2025 20:33:43 GMT openai-organization: posit-esfrkf - openai-processing-ms: '193' - openai-project: proj_KTxPJ5EAugIeuZGL0lAI1H9t + openai-processing-ms: '2112' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=.wFb4XiU0UbrdwPEAgPYQ1Vf6cRV.bCrhYevpVEzx8A-1761081928-1.0.1.1-UH5LuyWhU6s9CoyJvlV97NsxTbYlNzZaswyGslQapqZPOYMQzpzLlo.UKP3lcftxN1HOlaXs9JK0rweyRLnSv8aH5y1vSF0eFeGuFy9gn0I; - path=/; expires=Tue, 21-Oct-25 21:55:28 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=H81bGyYninK_XWbIJIS9w0NunX0xR__z6dMK0xE2t6I-1761251623-1.0.1.1-UCO4RLOV7icFaLhM__w24e56DQNgNauaHlq8k.BLA47Hiir7Ec1tlbScHElT5ebU50TCh1kjo4k.EtUjK6p2OOBUEWZLN8auEGEVHMODZbo; + path=/; expires=Thu, 23-Oct-25 21:03:43 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=y_PiKNccmHl.bzeCGXH68SZ3JTsH_49Nn2WEZQWVrr0-1761081928751-0.0.1.1-604800000; + - _cfuvid=VSHnMcqs5cFCFg9CEducduTlOSgpwmVE8K7.WbcPTaI-1761251623303-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '212' + x-envoy-upstream-service-time: '2154' x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999992' + x-ratelimit-remaining-tokens: '179999994' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_a43efb089c984ef7b45544eb92f5f498 + x-request-id: req_af89bcac311d4963a614a9fa6f40a5b5 body: string: | { - "id": "chatcmpl-CTE9ACC1xHIh9dwXPoal7TJyURmVf", + "id": "chatcmpl-CTwI9R7R0I02rNzBcmNb87d2mWzu3", "object": "chat.completion", - "created": 1761081928, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251621, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -53,27 +53,26 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 1, - "total_tokens": 22, + "prompt_tokens": 20, + "completion_tokens": 74, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_950f36939b" + "system_fingerprint": null } - recorded_at: 2025-10-21 21:25:28 + recorded_at: 2025-10-23 20:33:43 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-callbacks.yml b/tests/testthat/_vcr/chat-tools-callbacks.yml index d6bc34f2..fea1e9e5 100644 --- a/tests/testthat/_vcr/chat-tools-callbacks.yml +++ b/tests/testthat/_vcr/chat-tools-callbacks.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe and Hadley''s favorite colors?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + are Joe and Hadley''s favorite colors?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -13,37 +13,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79ee4eef22e18-DFW + cf-ray: 993404ee19011376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:17:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '560' + date: Thu, 23 Oct 2025 20:35:13 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3720' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=NTumqhrZVaGtiw5T6HG_NeLxYgbu_4yV3NbP30SUfns-1751894232-1.0.1.1-Tm1VICTk6F4rs7f3..vWS7uBbKY.Z7u12uGR2ZR0QCVMGSfTGoaUyHMwrsmtK.pe4ixhQ59uIC_PBmsbc14WSVKFdoRhHzp0RzF26s39dis; - path=/; expires=Mon, 07-Jul-25 13:47:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=dWT368FBKHDxsZWgNpom50oEJEXyruY8ocJgq6AOe60-1761251713-1.0.1.1-MTnaRjJ2Lv9bWCZqvYV.PbtC5tA5dCgIvDGQ29k70099sWAJLFGBFBpLqwcgx1oXxgtxjzsO5OTgd6NCHSNe5MlbAU.H3j3nlxT34q6y_1g; + path=/; expires=Thu, 23-Oct-25 21:05:13 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=e5wdTWTz.E9Xh3PS4PLfjfANK.bumTBlTk7ohkTrB4c-1751894232433-0.0.1.1-604800000; + - _cfuvid=4QuBRSHS72Zd1KwMwglREGEOFoIj3DmSkCeAW5O1jkg-1761251713165-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '564' + x-envoy-upstream-service-time: '4006' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999984' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d3642c763e2aede6ab58f48a77c18de5 + x-request-id: req_5a00d92f25cd4ad7bd4814acbc8c667f body: string: | { - "id": "chatcmpl-Bqg0Vh4RQit4GLSBlPUwpZ3yvl2Fb", + "id": "chatcmpl-CTwJZJ6wbQ4y28YFhFNYOTs6DefEw", "object": "chat.completion", - "created": 1751894231, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251709, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -52,7 +54,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_bEj83efeM32lV6czfoYOCbiL", + "id": "call_4eVgb3gAamTYDxWlhXnagAEy", "type": "function", "function": { "name": "user_favorite_color", @@ -60,7 +62,7 @@ http_interactions: } }, { - "id": "call_q5IcmtmRdgyYt4MWOHB2Dy3x", + "id": "call_sew6Wcw4og5iBYzNDfHzNCSz", "type": "function", "function": { "name": "user_favorite_color", @@ -71,35 +73,34 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 63, - "completion_tokens": 49, - "total_tokens": 112, + "prompt_tokens": 147, + "completion_tokens": 186, + "total_tokens": 333, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:17:12 + recorded_at: 2025-10-23 20:35:13 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe and Hadley''s favorite colors?"}]},{"role":"assistant","tool_calls":[{"id":"call_bEj83efeM32lV6czfoYOCbiL","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_q5IcmtmRdgyYt4MWOHB2Dy3x","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"blue","tool_call_id":"call_bEj83efeM32lV6czfoYOCbiL"},{"role":"tool","content":"red","tool_call_id":"call_q5IcmtmRdgyYt4MWOHB2Dy3x"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + are Joe and Hadley''s favorite colors?"}]},{"role":"assistant","tool_calls":[{"id":"call_4eVgb3gAamTYDxWlhXnagAEy","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_sew6Wcw4og5iBYzNDfHzNCSz","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"blue","tool_call_id":"call_4eVgb3gAamTYDxWlhXnagAEy"},{"role":"tool","content":"red","tool_call_id":"call_sew6Wcw4og5iBYzNDfHzNCSz"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -108,67 +109,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79ee9cbc12e18-DFW + cf-ray: 993405086c771376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:17:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '308' + date: Thu, 23 Oct 2025 20:35:16 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3375' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=W.ZUZCrscHEwJ68v3afhSCs3kXK7t8l0CHeAdnI9LLI-1751894232-1.0.1.1-c3esJYBJkEElQ0es3aKzbib_IC9wqPXadVQxq53Gk2I094n0EAxwlSZ8_ftwG3HAfZ.Se8zRkvsLKtdOuT_00UgxPj7UftBJdniHMXXCUOU; - path=/; expires=Mon, 07-Jul-25 13:47:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=vheBCRxSRyVDrVJFZmIl0e6neWAt3cr3Fhxt_miegSA-1761251716-1.0.1.1-ahZoHaInqFdodSLQijBEodvSl3S.BYU5Wxmpg.qDzzU2enj1K5LARfAlRaYBRQnIkjEo7gayfdCRJ512w2uwcV4NdCujqvenT_fWZXZXVdg; + path=/; expires=Thu, 23-Oct-25 21:05:16 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=nCC395Ah1Phf6Wj4mOjtqolQRIZTAlMKW_yDMAbK23I-1751894232974-0.0.1.1-604800000; + - _cfuvid=E.1_bz4jL.LmNbu_OLFMAzmtsp5ai4icvH.ESZtKVHo-1761251716783-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '312' + x-envoy-upstream-service-time: '3395' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999978' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_8ff238b3e226044c1492a39f5fb37e14 + x-request-id: req_d836eb14ce5a45d1807424094a0c6400 body: string: | { - "id": "chatcmpl-Bqg0WeFnpsXOpAlQ0tA97OPJYWQxA", + "id": "chatcmpl-CTwJdD9lwGCfbdTJVI2R7kTpbLK8o", "object": "chat.completion", - "created": 1751894232, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251713, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Joe's favorite color is blue, and Hadley's favorite color is red.", + "content": "Joe: blue\nHadley: red", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 130, - "completion_tokens": 16, - "total_tokens": 146, + "prompt_tokens": 220, + "completion_tokens": 209, + "total_tokens": 429, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:17:12 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-23 20:35:16 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-failure.yml b/tests/testthat/_vcr/chat-tools-failure.yml index e7fa99f2..b88250dc 100644 --- a/tests/testthat/_vcr/chat-tools-failure.yml +++ b/tests/testthat/_vcr/chat-tools-failure.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe, Hadley, Simon, and Tom''s favorite colors?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + are Joe, Hadley, Simon, and Tom''s favorite colors?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -13,37 +13,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79eb92d482e18-DFW + cf-ray: 9934039e0bf41376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:17:06 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1191' + date: Thu, 23 Oct 2025 20:34:19 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3746' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=6Tof9nlHwXJtt7FusjKzwwrx2ML.6Jl0A3W3kkZfBXM-1751894226-1.0.1.1-_GWEDka8jE_T.bGzAA1xaup0ilD_EJD.A8TmLKTLaRcYm_U1flAKNkca0TqEOc_xEGvtYEi5HEkUPefxn7ytYkV_bCqe7GurhtIXN9QXPh0; - path=/; expires=Mon, 07-Jul-25 13:47:06 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=irz_Fp0qZtTrV7Yf_UDE_yjBrsWy6wcgcW..l.NX5p4-1761251659-1.0.1.1-daulBCfka_Uiu44Lw_MiJgrp_D82hFT0ez7d9HUTTIntJwPUs61dYRDsqihpr.Ag_G74G9ZlEL6KQ5mvyi_0ApkHxoEYGk45skNC71VeawY; + path=/; expires=Thu, 23-Oct-25 21:04:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=TwLbKNqTIS0S7zfeWqTccTIb15yugxacdk8TSaTR2yE-1751894226089-0.0.1.1-604800000; + - _cfuvid=AtDNuxBBfPt81uSVlLrJ3ioX39pKD8SjojJvLU0lW1Q-1761251659198-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1195' + x-envoy-upstream-service-time: '3795' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999981' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_0fa95f8be8cbdddbd36037697bbe3bda + x-request-id: req_0d8aca75313c4b2381c5c58d714dc4cb body: string: | { - "id": "chatcmpl-Bqg0OAvPRC9KtTrLB9BOhSqh8TOrY", + "id": "chatcmpl-CTwIhJJDgJ1OtxlAJNl0czwcnMVJ5", "object": "chat.completion", - "created": 1751894224, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251655, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -52,7 +54,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_poEvQqTJ3YQHNFRGk4xjXOmI", + "id": "call_0pUKkEerwPzTTLboETzYRnNJ", "type": "function", "function": { "name": "user_favorite_color", @@ -60,7 +62,7 @@ http_interactions: } }, { - "id": "call_hdVkgzKIx1CeyBVIbb1SIcIJ", + "id": "call_PYO8PBtxq8dfGwUFgdTUW4c9", "type": "function", "function": { "name": "user_favorite_color", @@ -68,7 +70,7 @@ http_interactions: } }, { - "id": "call_NhbuUoByzviZvMzHXcNfcOBn", + "id": "call_bvuxxQ8eGFnqgYJeM0xYhBjf", "type": "function", "function": { "name": "user_favorite_color", @@ -76,7 +78,7 @@ http_interactions: } }, { - "id": "call_4aOjglUM5sRbL19LVf0bPVDK", + "id": "call_vJHybxnQtukl0ty7OIdkNwh7", "type": "function", "function": { "name": "user_favorite_color", @@ -87,39 +89,38 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 69, - "completion_tokens": 81, - "total_tokens": 150, + "prompt_tokens": 153, + "completion_tokens": 282, + "total_tokens": 435, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:17:06 + recorded_at: 2025-10-23 20:34:19 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe, Hadley, Simon, and Tom''s favorite colors?"}]},{"role":"assistant","tool_calls":[{"id":"call_poEvQqTJ3YQHNFRGk4xjXOmI","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_hdVkgzKIx1CeyBVIbb1SIcIJ","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"},{"id":"call_NhbuUoByzviZvMzHXcNfcOBn","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Simon\"]}"},"type":"function"},{"id":"call_4aOjglUM5sRbL19LVf0bPVDK","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Tom\"]}"},"type":"function"}]},{"role":"tool","content":"Tool - calling failed with error User denied tool request","tool_call_id":"call_poEvQqTJ3YQHNFRGk4xjXOmI"},{"role":"tool","content":"Tool - calling failed with error User denied tool request","tool_call_id":"call_hdVkgzKIx1CeyBVIbb1SIcIJ"},{"role":"tool","content":"Tool - calling failed with error User denied tool request","tool_call_id":"call_NhbuUoByzviZvMzHXcNfcOBn"},{"role":"tool","content":"Tool - calling failed with error User denied tool request","tool_call_id":"call_4aOjglUM5sRbL19LVf0bPVDK"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + are Joe, Hadley, Simon, and Tom''s favorite colors?"}]},{"role":"assistant","tool_calls":[{"id":"call_0pUKkEerwPzTTLboETzYRnNJ","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_PYO8PBtxq8dfGwUFgdTUW4c9","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"},{"id":"call_bvuxxQ8eGFnqgYJeM0xYhBjf","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Simon\"]}"},"type":"function"},{"id":"call_vJHybxnQtukl0ty7OIdkNwh7","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Tom\"]}"},"type":"function"}]},{"role":"tool","content":"Tool + calling failed with error User denied tool request","tool_call_id":"call_0pUKkEerwPzTTLboETzYRnNJ"},{"role":"tool","content":"Tool + calling failed with error User denied tool request","tool_call_id":"call_PYO8PBtxq8dfGwUFgdTUW4c9"},{"role":"tool","content":"Tool + calling failed with error User denied tool request","tool_call_id":"call_bvuxxQ8eGFnqgYJeM0xYhBjf"},{"role":"tool","content":"Tool + calling failed with error User denied tool request","tool_call_id":"call_vJHybxnQtukl0ty7OIdkNwh7"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -128,67 +129,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79ec24f8c2e18-DFW + cf-ray: 993403b70c351376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:17:06 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '343' + date: Thu, 23 Oct 2025 20:34:28 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '8839' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=63Aw8ujyD60GvCZVJ.gHeyae.eCd.YIWmJYWyJlEYw0-1751894226-1.0.1.1-eDNX7T8Zf4kgzc8b_smVW5wbBPY44bb9KLV8LFWDrStI_GwC6nqemvW.pmEE8lzQ2f8COi.OnTKPb9MdgXPedMZvcoDAqDM3FTLf.AaJdhw; - path=/; expires=Mon, 07-Jul-25 13:47:06 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ybTQJRZ2sl8kY83UCsgS2szAWabKoUgk7mNYqA5BJvo-1761251668-1.0.1.1-AIEnsKt2JNc9EMBpGj7FfIplqKG3OyHPTtIjiZkVXy2Z3X_TvTkgT4.LMuxHW8ZGCKdXPpNpxnMMusrUyJY_ZsGxECDhUyBY6s08qbSBPkI; + path=/; expires=Thu, 23-Oct-25 21:04:28 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=hFUb7XIW2Z6yE458w2JoU0GfHvLjFUxcV5uj5C0tuRo-1751894226958-0.0.1.1-604800000; + - _cfuvid=Jqa51f5ajVaspqLT7jWVnIl2WBYcKgHQCORSb.EvwWE-1761251668411-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '538' + x-envoy-upstream-service-time: '9001' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999921' + x-ratelimit-remaining-tokens: '179999922' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_09d71ca64366f8eddd2233bb425e2196 + x-request-id: req_746807618d4c4e92a9205b417dba43b6 body: string: | { - "id": "chatcmpl-Bqg0QMmL5NT3ahNBf5piu394xvIv2", + "id": "chatcmpl-CTwIlFYgoVcqXawYjBHtmCDNnOeDu", "object": "chat.completion", - "created": 1751894226, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251659, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "I am unable to access their favorite colors at this time.", + "content": "I can’t access that data—the tool request was denied. I don’t have Joe, Hadley, Simon, and Tom’s favorite colors.\n\nOptions:\n- authorize access or provide the colors, and I’ll answer.\n- tell me it’s a fictional scenario and I can generate plausible colors.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 208, - "completion_tokens": 13, - "total_tokens": 221, + "prompt_tokens": 298, + "completion_tokens": 709, + "total_tokens": 1007, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 640, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:17:06 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-23 20:34:28 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-parallel.yml b/tests/testthat/_vcr/chat-tools-parallel.yml index 4111b044..f26b4fdf 100644 --- a/tests/testthat/_vcr/chat-tools-parallel.yml +++ b/tests/testthat/_vcr/chat-tools-parallel.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Roll - two dice and compute the total."}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls + two dice and compute the total."}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls a six-sided die","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -12,37 +12,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79a8829c42e18-DFW + cf-ray: 99340325ac261376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:14:13 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '420' + date: Thu, 23 Oct 2025 20:34:00 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4652' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=v2j43mzoDZKlFAO_JLwdnWPtOKkM3uQD547XbJUz20U-1751894053-1.0.1.1-YFGm2FPmb5b39iK8XVM4wsNeYZe6v_ZSK08QaXM4h1Mk.OFYCF.ewcgAugQdHIr3pvxtHFFGvG9yfNB5hLeNyiJEMOrdnvNh151kiwzFnv4; - path=/; expires=Mon, 07-Jul-25 13:44:13 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=72GzgYOY4HGlFco58qXhwE3PTis8cRK3P7RBy5eyjWs-1761251640-1.0.1.1-TZD7_mfKuKGnESxEeRhqP4FbvYZSZRHCroAB92LdYHdLpmaVlKig7RFS1BJ_C_Nvx5GNGOJmNYEux9rKSxTqpSBTowNHcxcNSsTkEA.9YYk; + path=/; expires=Thu, 23-Oct-25 21:04:00 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=09OPAMOg_dujsBDzX7yFnYqGwwcwqGD0Dsp9MKx6hyE-1751894053654-0.0.1.1-604800000; + - _cfuvid=70ydj4IPYtNICxyv90g82LhTyC7HnPFKJzNO.QlemiA-1761251640870-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '428' + x-envoy-upstream-service-time: '4704' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999985' + x-ratelimit-remaining-tokens: '179999985' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e75466b2be88f02aa708aacba427e266 + x-request-id: req_184ca14bd926413b99c4de332c86f69f body: string: | { - "id": "chatcmpl-BqfxdcOf7NPiOpq9gbP386uSoL2Ze", + "id": "chatcmpl-CTwIOmovLu9YFsRnLDOkVzzXvUPe7", "object": "chat.completion", - "created": 1751894053, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251636, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,7 +53,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_M5esoj3nN2wx3WH6q7nY13Me", + "id": "call_UH0RLzhSzplLh7BOat1tb0Fb", "type": "function", "function": { "name": "dice", @@ -59,7 +61,7 @@ http_interactions: } }, { - "id": "call_VbyRnuMtTx8LKnqkA9raPilC", + "id": "call_ELUyhJeqRess1nE1lALooPT5", "type": "function", "function": { "name": "dice", @@ -70,35 +72,34 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 47, - "completion_tokens": 39, - "total_tokens": 86, + "prompt_tokens": 131, + "completion_tokens": 304, + "total_tokens": 435, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:14:13 + recorded_at: 2025-10-23 20:34:00 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Roll - two dice and compute the total."}]},{"role":"assistant","tool_calls":[{"id":"call_M5esoj3nN2wx3WH6q7nY13Me","function":{"name":"dice","arguments":"{}"},"type":"function"},{"id":"call_VbyRnuMtTx8LKnqkA9raPilC","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_M5esoj3nN2wx3WH6q7nY13Me"},{"role":"tool","content":"5","tool_call_id":"call_VbyRnuMtTx8LKnqkA9raPilC"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls + two dice and compute the total."}]},{"role":"assistant","tool_calls":[{"id":"call_UH0RLzhSzplLh7BOat1tb0Fb","function":{"name":"dice","arguments":"{}"},"type":"function"},{"id":"call_ELUyhJeqRess1nE1lALooPT5","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_UH0RLzhSzplLh7BOat1tb0Fb"},{"role":"tool","content":"5","tool_call_id":"call_ELUyhJeqRess1nE1lALooPT5"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls a six-sided die","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -106,67 +107,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79a8c9eae2e18-DFW + cf-ray: 99340344691c1376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:14:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '272' + date: Thu, 23 Oct 2025 20:34:04 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3394' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=ZlvPhn1RO4sQnsRdTXD2MWLxiw.gIfbkfX_y03UheB0-1751894054-1.0.1.1-z1HuiU.W9B.ml7eJjKikhsLFOV9rtcIAAQMD1C_OorPoG7A49Bq_S3v85J7ySGMR12uRrBnJ2JBJmCfsYcGQ1CMSqF9Sifzqx_kHFe6LHsw; - path=/; expires=Mon, 07-Jul-25 13:44:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=gQ5DpyOG98vSIimwa4pkUz6E8QVJu3BKvJFHqWGm5lE-1761251644-1.0.1.1-MYMsk925awI0hY8W.CwzBWqhxJv0_3bPvDg5SESaRUga.fEhQY0eAYxvwUifASHFjPodSj405l0HIqezvf8_g.HR1kcZ86DVizLsSECf7Es; + path=/; expires=Thu, 23-Oct-25 21:04:04 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=s1j0t9W7hYHb9bt_wEBLkvbepiUB1f6hU.A2miad1rc-1751894054211-0.0.1.1-604800000; + - _cfuvid=JFWLS_SMhS5kAgufwLNv0xkT1J5NfTqGIrCSvj_89hA-1761251644495-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '283' + x-envoy-upstream-service-time: '3436' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_a06126a0bd66bbcbb8c4659c4d94edc1 + x-request-id: req_c4e678c7e6a7414eb458e8adfaa9c43f body: string: | { - "id": "chatcmpl-Bqfxd1CuHuIAgdPvAnJnepePLFegM", + "id": "chatcmpl-CTwITAsdIaduvHZXXiK5VFZby4JX9", "object": "chat.completion", - "created": 1751894053, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251641, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The total is 7.", + "content": "Dice: 2 and 5. Total: 7.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 102, - "completion_tokens": 7, - "total_tokens": 109, + "prompt_tokens": 192, + "completion_tokens": 150, + "total_tokens": 342, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:14:14 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-23 20:34:04 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-reject-callback.yml b/tests/testthat/_vcr/chat-tools-reject-callback.yml index 4ee36a57..1fc3d925 100644 --- a/tests/testthat/_vcr/chat-tools-reject-callback.yml +++ b/tests/testthat/_vcr/chat-tools-reject-callback.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + ____ Hadley ____''. Use ''unknown'' if you don''t know."}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -14,37 +14,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b7a866c9a12e18-DFW + cf-ray: 993403f079ea1376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:23:41 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '506' + date: Thu, 23 Oct 2025 20:34:34 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '6089' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=w3ALz4wTufZ0wAPRTbIVPsz7mvninGUMOL7KULhK5MU-1751894621-1.0.1.1-olksw_mcc.aWQ5Hu3fVnqxHxArG.NvxTim04hQj3Zwg3tezmdqx09_44Z9EVRK41OQm355S6B6xfKuPumotnxItd.QlFe8I.7bFrwG9rKag; - path=/; expires=Mon, 07-Jul-25 13:53:41 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=JEDyXbjjUeYALpeq33RGYv7l8.ncF3aDM5OLZjISmks-1761251674-1.0.1.1-ESmvApXiWvQTdcz76kSBIC18m.GQlXnp5EPD9jt.8UGhR81J6jLDxqHb5qPFZfeYYcTNcFJa7yRcAtYFIvcGimRg6wR0sqGYax3tLFLwRlk; + path=/; expires=Thu, 23-Oct-25 21:04:34 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=WgBLD.FIUewNToPj1B7Owphv0sfnmVbq_6ga9gtBvFU-1751894621799-0.0.1.1-604800000; + - _cfuvid=0UpTf7hZf.ybM3A.Lb9v9kPeolh_pe7yyzKw1EHCMao-1761251674707-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '509' + x-envoy-upstream-service-time: '6110' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999968' + x-ratelimit-remaining-tokens: '179999970' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_9900df3dbab44e3c8f37629360910b13 + x-request-id: req_ab43a85a0e0e4b7aa7e3136c5a42bebc body: string: | { - "id": "chatcmpl-Bqg6nS0d8tcPbDRLRdMrPi7Bx9Gn1", + "id": "chatcmpl-CTwIu3Oi12Lw7zTiHUH3fFl4ocDsD", "object": "chat.completion", - "created": 1751894621, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251668, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -53,7 +55,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_6KJBuAWWogwBSRihEXPnDlYe", + "id": "call_Xogr1NJWgnlWgNdZfoAkxm7z", "type": "function", "function": { "name": "user_favorite_color", @@ -61,7 +63,7 @@ http_interactions: } }, { - "id": "call_66j0PK7hVi3Tg5HBeIhjtLUY", + "id": "call_xIlIMhtX7JmT4LPAtOf4jJfA", "type": "function", "function": { "name": "user_favorite_color", @@ -72,37 +74,36 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 80, - "completion_tokens": 49, - "total_tokens": 129, + "prompt_tokens": 164, + "completion_tokens": 442, + "total_tokens": 606, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:23:41 + recorded_at: 2025-10-23 20:34:34 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]},{"role":"assistant","tool_calls":[{"id":"call_6KJBuAWWogwBSRihEXPnDlYe","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_66j0PK7hVi3Tg5HBeIhjtLUY","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"Tool - calling failed with error Tool call rejected. Joe denied the request.","tool_call_id":"call_6KJBuAWWogwBSRihEXPnDlYe"},{"role":"tool","content":"red","tool_call_id":"call_66j0PK7hVi3Tg5HBeIhjtLUY"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + ____ Hadley ____''. Use ''unknown'' if you don''t know."}]},{"role":"assistant","tool_calls":[{"id":"call_Xogr1NJWgnlWgNdZfoAkxm7z","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_xIlIMhtX7JmT4LPAtOf4jJfA","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"Tool + calling failed with error Tool call rejected. Joe denied the request.","tool_call_id":"call_Xogr1NJWgnlWgNdZfoAkxm7z"},{"role":"tool","content":"red","tool_call_id":"call_xIlIMhtX7JmT4LPAtOf4jJfA"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -111,37 +112,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b7a86b6e562e18-DFW + cf-ray: 99340417fe361376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:23:42 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '195' + date: Thu, 23 Oct 2025 20:34:39 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4157' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=A8muGROcbuj90jnFrJSiEQNgS.88w3z7cbsZrqRfU3s-1751894622-1.0.1.1-U1WGAEQxMauSN6RtQpkYLWCyJ0j0N6b2fTo_C5oyroi5oLPdlqU6e0fRBVrxn7_8oVwGgWMXIO7ltNCWUhaDRHh11kG863gy6doQDBdT_jM; - path=/; expires=Mon, 07-Jul-25 13:53:42 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=YEHGIF.hKvCiE4OV8vJGIB86lxc1Bl3BcuFS80DNbE0-1761251679-1.0.1.1-Q316A6tWUSceXj0ByOMsNQYUcGeiydFRe3Pdt5RxyqWyHQyuuwqo_kci32EP46C8SjFs5SKMKFCQgOAE1YES0RZ48395S7UuABfDe1NHYmM; + path=/; expires=Thu, 23-Oct-25 21:04:39 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=auTQlNkpN96UXOnH.OiiDr61Y6yn1H5e_3_NFcT.8_Q-1751894622248-0.0.1.1-604800000; + - _cfuvid=Qy5IkSiSomw7Y39M8AtomId.ewrrc95qOFeY9DiW4KM-1761251679139-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '202' + x-envoy-upstream-service-time: '4230' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999945' + x-ratelimit-remaining-tokens: '179999946' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c855862b5c5955c244ec17ec45cc8381 + x-request-id: req_e7c713e82fd74824ad26a80b7aeb05c6 body: string: | { - "id": "chatcmpl-Bqg6o7Qu9yO3sxTFouf8kdrqc9hMq", + "id": "chatcmpl-CTwJ183ObckYTPYnx40BAHkgSvGko", "object": "chat.completion", - "created": 1751894622, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251675, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -151,27 +154,26 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 159, - "completion_tokens": 6, - "total_tokens": 165, + "prompt_tokens": 249, + "completion_tokens": 334, + "total_tokens": 583, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:23:42 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-23 20:34:39 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-reject-tool-function.yml b/tests/testthat/_vcr/chat-tools-reject-tool-function.yml index 31767b00..0987f09f 100644 --- a/tests/testthat/_vcr/chat-tools-reject-tool-function.yml +++ b/tests/testthat/_vcr/chat-tools-reject-tool-function.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + ____ Hadley ____''. Use ''unknown'' if you don''t know."}]}],"model":"gpt-5-mini","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -14,37 +14,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b7a86e39242e18-DFW + cf-ray: 993b498bb9592cb5-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:23:42 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '477' + date: Fri, 24 Oct 2025 17:45:26 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4170' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=tnHf1EJjUnGxL06twfPBnIEiONDSOMFaPdPtoTDxjmA-1751894622-1.0.1.1-Zp3K9jfatrws8aOco6okBhX1JRSqI.j3yoWC2iSzn0OSj3CMYkLpnkWeEdF8YivBcUqlu_ipgxC0xD1Pky5x7P8c2rFtf7J8AGoG99sXLSc; - path=/; expires=Mon, 07-Jul-25 13:53:42 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=GPRtojoei8A1opA8tHYBfkaTjMShVYZ8OEuwD9PGh84-1761327926-1.0.1.1-aIxHbv.QMxGtq5Mj014sBaWQhWJb.U5n0QIFhmmDjFTG44oZsy_AlsghWnV9CXVDFZm6RCz5YSsANBtJnvHqVFfdsxLNVImIDu9vg.HNG9U; + path=/; expires=Fri, 24-Oct-25 18:15:26 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=uI5wNkD690ptSvZ_PCD421tHHSqNQaDLIIQGpPB8aTI-1751894622954-0.0.1.1-604800000; + - _cfuvid=jrTd8TzCFRLCrcSCoYtjgJxq1VESnuSmRIZrptW8awo-1761327926682-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '481' + x-envoy-upstream-service-time: '5324' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999968' + x-ratelimit-remaining-tokens: '179999970' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_08e6d7e8d9bc1907609dfa4afafd7b5d + x-request-id: req_80c74ba7da324b9caac52d821241282f body: string: | { - "id": "chatcmpl-Bqg6otUgnu2uamBcDjI5s80Iz0iKV", + "id": "chatcmpl-CUG8oQke44ClUYRh53ASTBut2NNoB", "object": "chat.completion", - "created": 1751894622, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761327922, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -53,7 +55,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_N6oKGEAH8w2dFE0aTMnHXGCr", + "id": "call_7zArqsyZOLeCysSK2tFtuhKJ", "type": "function", "function": { "name": "user_favorite_color", @@ -61,7 +63,7 @@ http_interactions: } }, { - "id": "call_PDBfG6XJWry22ll9rNKkFqmI", + "id": "call_mx3SybfCzk9pGzSd7zPEcD2j", "type": "function", "function": { "name": "user_favorite_color", @@ -72,38 +74,37 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 80, - "completion_tokens": 49, - "total_tokens": 129, + "prompt_tokens": 164, + "completion_tokens": 186, + "total_tokens": 350, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:23:42 + recorded_at: 2025-10-24 17:45:26 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]},{"role":"assistant","tool_calls":[{"id":"call_N6oKGEAH8w2dFE0aTMnHXGCr","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_PDBfG6XJWry22ll9rNKkFqmI","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"Tool + ____ Hadley ____''. Use ''unknown'' if you don''t know."}]},{"role":"assistant","tool_calls":[{"id":"call_7zArqsyZOLeCysSK2tFtuhKJ","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_mx3SybfCzk9pGzSd7zPEcD2j","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"Tool calling failed with error Tool call rejected. The user has chosen to disallow - the tool call.","tool_call_id":"call_N6oKGEAH8w2dFE0aTMnHXGCr"},{"role":"tool","content":"red","tool_call_id":"call_PDBfG6XJWry22ll9rNKkFqmI"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find + the tool call.","tool_call_id":"call_7zArqsyZOLeCysSK2tFtuhKJ"},{"role":"tool","content":"red","tool_call_id":"call_mx3SybfCzk9pGzSd7zPEcD2j"}],"model":"gpt-5-mini","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s name"}},"required":["user"],"additionalProperties":false}}}]}' response: @@ -112,37 +113,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b7a8726d812e18-DFW + cf-ray: 993b49b6de282cb5-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:23:43 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '213' + date: Fri, 24 Oct 2025 17:45:36 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '9157' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=GBwCSWgZ4aklOr3QeyBnvh.EhxF4X8nXuzfdgyDJk6g-1751894623-1.0.1.1-4BhoCdHMqBwg30ioEGqsedLo2fwor4jJ6EofC7PAX62hGELbuDw1Yn6X26CRVkHskhtOaINiIBe2UvWZmcx3kpRIw8Oiifvvs0NQK8OBTh0; - path=/; expires=Mon, 07-Jul-25 13:53:43 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ogF623cU3kqXI8Gqj89Z1jBumMnxhogAr8puz2WHHPw-1761327936-1.0.1.1-qjNabEO5V5FU1wfj.D4dN5UbHm23EwuTCLc3pYNHxGgiN6zG0Wr0ybPJAU_gnzAtTqE4pglv1D0mjaoUpQ0BuOuzQAkak_DjHFr6RnfDcM8; + path=/; expires=Fri, 24-Oct-25 18:15:36 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=eJwwBnOzxi9or6VqbL1lQBehiDMlcyizpuVsjUHrLaE-1751894623381-0.0.1.1-604800000; + - _cfuvid=omNEPMPB5_uwD8EqVDi38Jck_SGID.4nupGvEQBJBXU-1761327936165-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '217' + x-envoy-upstream-service-time: '9260' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999940' + x-ratelimit-remaining-tokens: '179999940' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c9a9dc29fc7601693dde838b074defc6 + x-request-id: req_7112f364c6b442fbb70fed2d4d0f2fd3 body: string: | { - "id": "chatcmpl-Bqg6pbXjHiDQ54yj1XBTyQMM6IU8c", + "id": "chatcmpl-CUG8tA9wVQ7Nbd2eMQMKkV0WVuwe0", "object": "chat.completion", - "created": 1751894623, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761327927, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -152,27 +155,26 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 165, - "completion_tokens": 6, - "total_tokens": 171, + "prompt_tokens": 255, + "completion_tokens": 334, + "total_tokens": 589, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:23:43 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-24 17:45:36 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/chat-tools-reject.yml b/tests/testthat/_vcr/chat-tools-reject.yml deleted file mode 100644 index 49e1a701..00000000 --- a/tests/testthat/_vcr/chat-tools-reject.yml +++ /dev/null @@ -1,177 +0,0 @@ -http_interactions: -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find - out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s - name"}},"required":["user"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 95b7a0d12bb82e18-DFW - content-encoding: gzip - content-type: application/json - date: Mon, 07 Jul 2025 13:18:31 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '610' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=yfGLSfNUbaxO51GFwt8Db.17gx6tvp7nnadQwnPdzbA-1751894311-1.0.1.1-3OYXVWWMcBZ4WquLW16lOE.Zsw2mQ6AytJOdoinS1mispCwTIGmelxwtAtswfuKgz36IH.qh4V0f3mo_mZxOjjc6Bhp0PuOrU1woWtlDZL8; - path=/; expires=Mon, 07-Jul-25 13:48:31 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=jbYxGrUfYJIKce5r5BrYOkWO1VeMhK.j8t7kWdi9Br0-1751894311287-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '613' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999967' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_86d51ce35c30471cf2f84e203aa3807d - body: - string: | - { - "id": "chatcmpl-Bqg1mqvMPqVGjGNBAE1Bjic1CPtFe", - "object": "chat.completion", - "created": 1751894310, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": null, - "tool_calls": [ - { - "id": "call_3pzX00q04YUjE5Sc9BddD8Sh", - "type": "function", - "function": { - "name": "user_favorite_color", - "arguments": "{\"user\": \"Joe\"}" - } - }, - { - "id": "call_pGDmB4dHNQhdO0FjBnAIa0cQ", - "type": "function", - "function": { - "name": "user_favorite_color", - "arguments": "{\"user\": \"Hadley\"}" - } - } - ], - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "tool_calls" - } - ], - "usage": { - "prompt_tokens": 80, - "completion_tokens": 49, - "total_tokens": 129, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" - } - recorded_at: 2025-07-07 13:18:31 -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What - are Joe and Hadley''s favorite colors?"},{"type":"text","text":"Write ''Joe - ____ Hadley ____''. Use ''unknown'' if you don''t know."}]},{"role":"assistant","tool_calls":[{"id":"call_3pzX00q04YUjE5Sc9BddD8Sh","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Joe\"]}"},"type":"function"},{"id":"call_pGDmB4dHNQhdO0FjBnAIa0cQ","function":{"name":"user_favorite_color","arguments":"{\"user\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"Tool - calling failed with error Tool call rejected. Joe denied the request.","tool_call_id":"call_3pzX00q04YUjE5Sc9BddD8Sh"},{"role":"tool","content":"red","tool_call_id":"call_pGDmB4dHNQhdO0FjBnAIa0cQ"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"user_favorite_color","description":"Find - out a user''s favorite color","strict":true,"parameters":{"type":"object","description":"","properties":{"user":{"type":"string","description":"User''s - name"}},"required":["user"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 95b7a0d689fa2e18-DFW - content-encoding: gzip - content-type: application/json - date: Mon, 07 Jul 2025 13:18:31 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '301' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=xU8zgTftaWVgUzQ_qcaw.TEkjGl0TH2BySpOTAB.yL8-1751894311-1.0.1.1-RNznLtzbeaGECQgRzlf_uox394LcJf_KQCEWzklQQvrpxEhWVlsXDMgu_3rRO447BtlfF1CyyHYq5OsZIFIfra6HOz_y2SJ0jJ2xr1Gs0FE; - path=/; expires=Mon, 07-Jul-25 13:48:31 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=GSn4814rQHv_5fUN5ge.QsKM5C92BX22saTEvuDZF6c-1751894311788-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '305' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999945' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_d43164ed320d5c9e513085475a703fb0 - body: - string: | - { - "id": "chatcmpl-Bqg1nO04QdCqnNEvO5810JQrH3BgA", - "object": "chat.completion", - "created": 1751894311, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": "Joe unknown Hadley red", - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "stop" - } - ], - "usage": { - "prompt_tokens": 159, - "completion_tokens": 6, - "total_tokens": 165, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" - } - recorded_at: 2025-07-07 13:18:31 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 diff --git a/tests/testthat/_vcr/chat-tools-sequential.yml b/tests/testthat/_vcr/chat-tools-sequential.yml index 5423b24c..014a57b1 100644 --- a/tests/testthat/_vcr/chat-tools-sequential.yml +++ b/tests/testthat/_vcr/chat-tools-sequential.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Which - clothes should I wear today? Roll a dice to decide."}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls + clothes should I wear today? Roll a dice to decide."}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls a dice","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"clothes","description":"Pick clothes to wear based on a dice roll","strict":true,"parameters":{"type":"object","description":"","properties":{"roll":{"type":"number","description":""}},"required":["roll"],"additionalProperties":false}}}]}' response: @@ -13,37 +13,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79a902abd2e18-DFW + cf-ray: 9934035af8571376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:14:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '213' + date: Thu, 23 Oct 2025 20:34:08 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3734' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=QePXxVc.ToDq3u2Sp.dCoB0hHg.HBJzu2dhoomcoTe4-1751894054-1.0.1.1-tGhGJLKNYZy0qbTVWTiaaFHesIMAEUfZbSotLFIBbgbDaD.KZFW1eL2XbxKrCPVoHenK0m6iOkhJRt4is4pHivVZ7LMoiDMHLfBTlVkKqYg; - path=/; expires=Mon, 07-Jul-25 13:44:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=9OtGrdE9bcyu9Np4BiFWxC.XRha56plHYNipvU9Rpgc-1761251648-1.0.1.1-7ts8Pe7nMz1h_lge0cHxkVjy.Y1yItJzagaEbMaEkOxjvldSlynLQ6twni7mVwF1PcXb.FujgtdjxpMx4of8ZJp0B2jvjERX6dWfuAfXvoc; + path=/; expires=Thu, 23-Oct-25 21:04:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=safvA5yBa3D6.IX8lu1FR.JQZgU9EVLXllnVMz6qI8U-1751894054688-0.0.1.1-604800000; + - _cfuvid=.AcAXAvKTZ1bKc9UQqumNZNhk_mP1vGWfyKLrxDAJoY-1761251648442-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '219' + x-envoy-upstream-service-time: '3770' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999979' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_672cab337d147e3b1156b4a7b1b79f11 + x-request-id: req_a591123eb7d3422dab10b9a7d2c96105 body: string: | { - "id": "chatcmpl-Bqfxe44yjgi1kLZp1M0gTBtInj4XR", + "id": "chatcmpl-CTwIWahSUW535AlYLhZ6ctyxB4kLv", "object": "chat.completion", - "created": 1751894054, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251644, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -52,7 +54,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_7Flzp02xN0TgqYw4EJtesFYf", + "id": "call_hCg3tXBCTrnf1Zzfe0HdwdWV", "type": "function", "function": { "name": "dice", @@ -63,35 +65,34 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 73, - "completion_tokens": 10, - "total_tokens": 83, + "prompt_tokens": 157, + "completion_tokens": 147, + "total_tokens": 304, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:14:14 + recorded_at: 2025-10-23 20:34:08 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Which - clothes should I wear today? Roll a dice to decide."}]},{"role":"assistant","tool_calls":[{"id":"call_7Flzp02xN0TgqYw4EJtesFYf","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_7Flzp02xN0TgqYw4EJtesFYf"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls + clothes should I wear today? Roll a dice to decide."}]},{"role":"assistant","tool_calls":[{"id":"call_hCg3tXBCTrnf1Zzfe0HdwdWV","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_hCg3tXBCTrnf1Zzfe0HdwdWV"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls a dice","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"clothes","description":"Pick clothes to wear based on a dice roll","strict":true,"parameters":{"type":"object","description":"","properties":{"roll":{"type":"number","description":""}},"required":["roll"],"additionalProperties":false}}}]}' response: @@ -100,37 +101,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79a92ce2f2e18-DFW + cf-ray: 99340373f81c1376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:14:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '296' + date: Thu, 23 Oct 2025 20:34:10 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1789' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=FEVw94Cged9MZ5XZc3b.cE7VOW9YEOCaW6Yg5mtFzgA-1751894055-1.0.1.1-cpkcu_pd_ejzNyRMVge8u03N7L0b9XrHg0DA8rLEzCgICZP5k4bO0gdIxA6_yXR0Jj7ItFuIAZUhGiw_eoau.M8532dZGSeKoW9punQ1zvI; - path=/; expires=Mon, 07-Jul-25 13:44:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=n9QpmLP5XlHNN45vmEqe8AaqrvcByAJXU7wbPc.7t1I-1761251650-1.0.1.1-RbRbg2HYl3Vh7nPtT1XvPu.Dg.8n2PVrRuekew5KLlBS5kudc2A.sAlxRJFwD0NhFmrLSwueOPikHknT6B83jH4AD_PVEFeOA.pKV6UadKk; + path=/; expires=Thu, 23-Oct-25 21:04:10 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=p3.XgcLMR5CL0Z5Le7u3HOiHuAaKMNVW9UXgCheG1W0-1751894055185-0.0.1.1-604800000; + - _cfuvid=dLYVZSUGC3tq0Q1JJ8SU7tg37exVjQFcOoUQWcvGy5s-1761251650514-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '299' + x-envoy-upstream-service-time: '1838' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999978' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_78649d279f043fbd0e861bb015e1bb11 + x-request-id: req_d7be843d45bd40d5a83726dffb846420 body: string: | { - "id": "chatcmpl-BqfxeefNss1b2FQoZy7XOhUbhWKAu", + "id": "chatcmpl-CTwIaPVZIFLxjcN0AjaJpLqnYolUs", "object": "chat.completion", - "created": 1751894054, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251648, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -139,7 +142,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_KWlmVYm3s8wK8gXgCN7nZm41", + "id": "call_zVwSq6gE8W8UlE1uWSohdHp4", "type": "function", "function": { "name": "clothes", @@ -150,14 +153,13 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 91, - "completion_tokens": 14, - "total_tokens": 105, + "prompt_tokens": 181, + "completion_tokens": 17, + "total_tokens": 198, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -170,15 +172,15 @@ http_interactions: } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:14:15 + recorded_at: 2025-10-23 20:34:10 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Which - clothes should I wear today? Roll a dice to decide."}]},{"role":"assistant","tool_calls":[{"id":"call_7Flzp02xN0TgqYw4EJtesFYf","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_7Flzp02xN0TgqYw4EJtesFYf"},{"role":"assistant","tool_calls":[{"id":"call_KWlmVYm3s8wK8gXgCN7nZm41","function":{"name":"clothes","arguments":"{\"roll\":[1]}"},"type":"function"}]},{"role":"tool","content":"Pants","tool_call_id":"call_KWlmVYm3s8wK8gXgCN7nZm41"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls + clothes should I wear today? Roll a dice to decide."}]},{"role":"assistant","tool_calls":[{"id":"call_hCg3tXBCTrnf1Zzfe0HdwdWV","function":{"name":"dice","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_hCg3tXBCTrnf1Zzfe0HdwdWV"},{"role":"assistant","tool_calls":[{"id":"call_zVwSq6gE8W8UlE1uWSohdHp4","function":{"name":"clothes","arguments":"{\"roll\":[1]}"},"type":"function"}]},{"role":"tool","content":"Pants","tool_call_id":"call_zVwSq6gE8W8UlE1uWSohdHp4"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"dice","description":"Rolls a dice","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"clothes","description":"Pick clothes to wear based on a dice roll","strict":true,"parameters":{"type":"object","description":"","properties":{"roll":{"type":"number","description":""}},"required":["roll"],"additionalProperties":false}}}]}' response: @@ -187,67 +189,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95b79a95a9702e18-DFW + cf-ray: 993403808d221376-DFW content-encoding: gzip content-type: application/json - date: Mon, 07 Jul 2025 13:14:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '350' + date: Thu, 23 Oct 2025 20:34:15 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4486' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=4fqOs9r3wrG795hBC_v7t2Z78_R6mIELevO33R0nJk0-1751894055-1.0.1.1-5fYhsjv8TNEslCT8kaxugYrtFqDxIL3tinnZgHGHUJo0nWe4KyJQhitr8v3AKemc22v4_HhtMtMyaCuuSPDLBqhInjL1DaxOB_lhmDde7VQ; - path=/; expires=Mon, 07-Jul-25 13:44:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=590B3gOjLRHpvy34Eqc_DjZ3ALN28s51qNdUdCYH7gk-1761251655-1.0.1.1-oXWVzDyYKKhDEQIPaHjTPRUrxMr6DlT3mZZCB1ELRI61SFFs27qppZkyMdS_1Py_5EmbUJ9OXzhbdINeb_NSBAL0wlA.4SL9PPSZo5JcL8E; + path=/; expires=Thu, 23-Oct-25 21:04:15 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=8W2sj7Pu4ZmukZJ2K8ujv5cM5hOHB1XziWB0GELBP8s-1751894055711-0.0.1.1-604800000; + - _cfuvid=C_2uvS_.VA0HspeAGoGuFHlfuM6D8WU2KKnZV20isx0-1761251655257-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '358' + x-envoy-upstream-service-time: '4566' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999974' + x-ratelimit-remaining-tokens: '179999976' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e8c48fb9fc7057311f3deea43449657d + x-request-id: req_8fcc56714f2c47ccad351561433ea228 body: string: | { - "id": "chatcmpl-Bqfxf2JkUmWavTyxPqY1QOMYMReKz", + "id": "chatcmpl-CTwIcHPMOTgIA0IGzHbfhx0pDWyhY", "object": "chat.completion", - "created": 1751894055, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251650, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "You should wear pants today.", + "content": "Roll result: 1 — Pants. Want me to roll for a top or shoes to complete the outfit?", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 115, - "completion_tokens": 7, - "total_tokens": 122, + "prompt_tokens": 211, + "completion_tokens": 351, + "total_tokens": 562, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": null } - recorded_at: 2025-07-07 13:14:15 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-23 20:34:15 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-image.yml b/tests/testthat/_vcr/openai-image.yml index c989be74..4443b9ef 100644 --- a/tests/testthat/_vcr/openai-image.yml +++ b/tests/testthat/_vcr/openai-image.yml @@ -4,53 +4,55 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - in this image? (Be sure to mention the outside shape)"},{"type":"image_url","image_url":{"url":"data:image/png;base64,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"}}]}],"model":"gpt-4.1-mini","seed":1014,"temperature":0,"stream":false}' + in this image? (Be sure to mention the outside shape)"},{"type":"image_url","image_url":{"url":"data:image/png;base64,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"}}]}],"model":"gpt-4.1-mini","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e894efc236b22-DFW + cf-ray: 992956213b543aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1021' + date: Wed, 22 Oct 2025 13:28:12 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1132' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=eHl1WzZxJjQ_TArA0URHZFa_QKc62Cjgr0jOSQj0RtA-1751463432-1.0.1.1-aAJnyWH9kbsdM0KvSVqWqGWIyMOrdQ_QxgwqnHiY7IsqLGOOka7N9O3WlZ7kO87YHl1UsCoI0CnJZ3BZvo5h5l2RXs.JunDG0krKniNrcqc; - path=/; expires=Wed, 02-Jul-25 14:07:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=SDCx22XLpaIW7yjM3kxUWb6e2JXUHdA_G8mvomuRVEs-1761139692-1.0.1.1-AWfRvOsam6JFbr0rJdM3_hS93fiqJph9yc1O5T6lXRZZiSKLqnS8uOsRAxX.iaEeN4t5Uw0rAx9XSYfXmvOctxWTfx2ggyi7xFF4XfMe1Bg; + path=/; expires=Wed, 22-Oct-25 13:58:12 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=ZSrHJkzlleDjxvD1ebyfTg9b5Ud1U0iqr.6RBtIicHc-1751463432599-0.0.1.1-604800000; + - _cfuvid=WIyKN1483jQipuKUmYLKXVAd7S6QNG1BWG2r6D9nw10-1761139692915-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '994' + x-envoy-upstream-service-time: '1161' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-input-images: '50000' x-ratelimit-limit-requests: '30000' x-ratelimit-limit-tokens: '150000000' x-ratelimit-remaining-input-images: '49999' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999213' + x-ratelimit-remaining-tokens: '149999212' x-ratelimit-reset-input-images: 1ms x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c8dc629d7d20af6b995f35084c356a71 + x-request-id: req_f25dfe02c02c4727a0fbc116803012d7 body: string: | { - "id": "chatcmpl-Borw7h9orcpkeue0pUs7YNS6TZUdt", + "id": "chatcmpl-CTTAp33ZrvMCREvefGpj0IJWJfW0B", "object": "chat.completion", - "created": 1751463431, + "created": 1761139691, "model": "gpt-4.1-mini-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The image is inside a hexagon shape. It features a red silhouette of a baseball player swinging a bat, with a red baseball nearby. The text \"htr2\" is written in white script above the player. The background is dark blue.", + "content": "The image features a navy blue hexagon as its outside shape. Inside the hexagon, there is an illustration of a red baseball player swinging a bat at a red baseball. Above the player, the white text \"htr2\" is written in a cursive style.", "refusal": null, "annotations": [] }, @@ -60,8 +62,8 @@ http_interactions: ], "usage": { "prompt_tokens": 208, - "completion_tokens": 50, - "total_tokens": 258, + "completion_tokens": 55, + "total_tokens": 263, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -74,61 +76,63 @@ http_interactions: } }, "service_tier": "default", - "system_fingerprint": "fp_6f2eabb9a5" + "system_fingerprint": "fp_c064fdde7c" } - recorded_at: 2025-07-02 13:37:12 + recorded_at: 2025-10-22 13:28:12 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - in this image? (Be sure to mention the outside shape)"},{"type":"image_url","image_url":{"url":"https://httr2.r-lib.org/logo.png"}}]}],"model":"gpt-4.1-mini","seed":1014,"temperature":0,"stream":false}' + in this image? (Be sure to mention the outside shape)"},{"type":"image_url","image_url":{"url":"https://httr2.r-lib.org/logo.png"}}]}],"model":"gpt-4.1-mini","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e8955fc186b22-DFW + cf-ray: 992956299a6f3aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1869' + date: Wed, 22 Oct 2025 13:28:15 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1917' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=nYGNJruDwzaIOscx0Cja1B56CVD.3Ovn5Ej6yvWt478-1751463434-1.0.1.1-3Wgv2sMfdKFlI3W5myUQZ0A50kI3ypdc9Sh5AWos2rd.dW3KpiV1B4CQh14k1zmFgh3ROmzBRy_STM4gY92jMwA2ahuIA4CrxDykRnYfCjg; - path=/; expires=Wed, 02-Jul-25 14:07:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=oq6aUtTK3a455FQkXbhOleICy3ZvjDHAeLM_VwAhPMQ-1761139695-1.0.1.1-jgxjihb7wV8rB_VZ5S_XEeaYnFgntzoIf7mJX8.RlBQqjwht71VcTfDn8DjpVN01JQL2UKNEozNNoi09FylC4gpJBitrBOzROP7KxDIGOWs; + path=/; expires=Wed, 22-Oct-25 13:58:15 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=RJjuLIlb.M1JtkSAC.N__kyf_hVIRaDwK7gztIxjk.0-1751463434574-0.0.1.1-604800000; + - _cfuvid=TZCiw2JdAHnt0mc40OBrHYpOGT8Hfp.T16fNfoo6FiY-1761139695049-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1536' + x-envoy-upstream-service-time: '1959' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-input-images: '50000' x-ratelimit-limit-requests: '30000' x-ratelimit-limit-tokens: '150000000' x-ratelimit-remaining-input-images: '49999' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999213' + x-ratelimit-remaining-tokens: '149999215' x-ratelimit-reset-input-images: 1ms x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e545377321b9da8830e8e17a2ba5d5c8 + x-request-id: req_f13cb4a7f6324112aa8635dc4ed9249d body: string: | { - "id": "chatcmpl-Borw9xBM9jiU5UwjLFULneAm5DKRT", + "id": "chatcmpl-CTTAry2ZqTGKAZcMXD25L8wUM0TIp", "object": "chat.completion", - "created": 1751463433, + "created": 1761139693, "model": "gpt-4.1-mini-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The image is inside a hexagon shape. It shows a red silhouette of a baseball player swinging a bat, with a small ball labeled \"www\" near the bat. Above the player, the text \"httr2\" is written in a stylized white font. The background is dark blue.", + "content": "The image is inside a hexagon shape. It features a stylized red silhouette of a baseball player swinging a bat, with the text \"httr2\" above the player in white script. There is also a small red baseball with \"www\" on it near the bat. The background is dark blue.", "refusal": null, "annotations": [] }, @@ -138,8 +142,8 @@ http_interactions: ], "usage": { "prompt_tokens": 146, - "completion_tokens": 60, - "total_tokens": 206, + "completion_tokens": 62, + "total_tokens": 208, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -152,7 +156,7 @@ http_interactions: } }, "service_tier": "default", - "system_fingerprint": "fp_6f2eabb9a5" + "system_fingerprint": "fp_4c2851f862" } - recorded_at: 2025-07-02 13:37:14 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 13:28:15 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-pdf.yml b/tests/testthat/_vcr/openai-pdf.yml index a127d7f9..e915e877 100644 --- a/tests/testthat/_vcr/openai-pdf.yml +++ b/tests/testthat/_vcr/openai-pdf.yml @@ -4,67 +4,68 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95fa9dc42f35f0a8-DFW + cf-ray: 99295636ece23aaf-DFW content-encoding: gzip content-type: application/json - date: Tue, 15 Jul 2025 16:25:32 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '571' + date: Wed, 22 Oct 2025 13:28:19 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4203' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=rPn.rglx9cj0yVlF4yuRVVHII80iiPCfznWbQeK8r18-1752596732-1.0.1.1-OMfsyfqmFVZlmVj9o_OSlD4NXpmOx8qDZ8QazQvwmK6pm_9UepTI61AdimYSfDVee1L91eCbGAdpj5EAyx_08zsYUGPE_kMShJfRVSFqX5k; - path=/; expires=Tue, 15-Jul-25 16:55:32 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=nIlyqEosvlDukh4hX4ZFWy4tYMDMw2uOZhqhK3I2cIQ-1761139699-1.0.1.1-XJXcxKyP6iN6.N1M9VDvZszw4h2VStNaRlJE1lk5qfCTXjVmnjUAnNGPp7KPXLT8Em_N8pEvsubBLcPvb1pZjd2Zj0k3c5taX76RWQwlESY; + path=/; expires=Wed, 22-Oct-25 13:58:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=oLaCryFYniBc9JFqa3KAOV7r9NzBkr5kssSpck0Vo5M-1752596732204-0.0.1.1-604800000; + - _cfuvid=b2cuViQWSv_WhEaW9bqHMjtm4K2WuQUIMEiffrbyZpQ-1761139699472-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '554' + x-envoy-upstream-service-time: '4234' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999221' + x-ratelimit-remaining-tokens: '179999220' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_b32f37f71807db63b1a63e20de8d39c5 + x-request-id: req_5a9b296190934264be7dd2b8b9bdc81b body: string: | { - "id": "chatcmpl-Btcl9Avi4ij3sLULhkvFI6NYijfRU", + "id": "chatcmpl-CTTAtorRmiwDpAIW2h17SgLRB6FWB", "object": "chat.completion", - "created": 1752596731, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139695, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The title of the document is \"Apples are tasty\" by Hadley Wickham.", + "content": "Apples are tasty. (page 1)", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 275, - "completion_tokens": 18, - "total_tokens": 293, + "prompt_tokens": 274, + "completion_tokens": 403, + "total_tokens": 677, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -73,75 +74,76 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-15 16:25:32 + recorded_at: 2025-10-22 13:28:19 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"The - title of the document is \"Apples are tasty\" by Hadley Wickham."}]},{"role":"user","content":[{"type":"text","text":"What - apple is not tasty?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"Apples + are tasty. (page 1)"}]},{"role":"user","content":[{"type":"text","text":"What + apple is not tasty?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95fa9dc99964f0a8-DFW + cf-ray: 992956530a193aaf-DFW content-encoding: gzip content-type: application/json - date: Tue, 15 Jul 2025 16:25:32 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '381' + date: Wed, 22 Oct 2025 13:28:25 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5889' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=qUEL9hxr4ynAOefjkCKUuSJuIx8ed0ypQtGGIOqEyUs-1752596732-1.0.1.1-MqUIXNqzgkRGreAyVAA06zCL8s_pw9fiasOCzRo5Tys_1mTLjojL26QIbmF5fXgGjBZEt_YFnOQSYFk73nGsLKrd74MdczRFLjsYpDlZVHw; - path=/; expires=Tue, 15-Jul-25 16:55:32 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=_VB6187p3aEumMZVJMT0Iie6stkfpybD_Vz9dHVopDE-1761139705-1.0.1.1-GIDgvwdKN8fT4EGGsvJ64aQQmPb7nvthWXfOuEBAjOSaY7d_BV5cS7Gi2teL6J.39LR4DIV_3_MzTcCuqKRG7MH0LI_tDGlskn5EL4qKbZo; + path=/; expires=Wed, 22-Oct-25 13:58:25 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=0PKHL0FrMuQJfWXJdAGEZpIFybOkcNCHrY6iOmy6zHU-1752596732850-0.0.1.1-604800000; + - _cfuvid=iQHbT0okrwG05cftCzqBTM8FQCS0G9xpB1xnIfVATpE-1761139705639-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '362' + x-envoy-upstream-service-time: '5915' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999196' + x-ratelimit-remaining-tokens: '179999205' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_8d0b7a538b90f99a7429ac560972e1bc + x-request-id: req_f4a431d9ad5e455ca5afdec4835449c6 body: string: | { - "id": "chatcmpl-BtclA1ON5oYeBw0evhEBdIHAg5GQl", + "id": "chatcmpl-CTTAxfw6RECwn9HkOzzf1NOv1W5oU", "object": "chat.completion", - "created": 1752596732, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139699, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Red Delicious apples are not tasty.", + "content": "Red Delicious.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 307, - "completion_tokens": 7, - "total_tokens": 314, + "prompt_tokens": 300, + "completion_tokens": 396, + "total_tokens": 696, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -150,77 +152,78 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-15 16:25:32 + recorded_at: 2025-10-22 13:28:25 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"The - title of the document is \"Apples are tasty\" by Hadley Wickham."}]},{"role":"user","content":[{"type":"text","text":"What + the title of this document?"},{"type":"file","file":{"filename":"apples.pdf","file_data":"data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0MTggPj4Kc3RyZWFtCngBnZLdS8MwFMXf81cc31aQNGnXrIEhuDlQwY9hwAfxoXYZq2v31Qruv/e26zb3oUzJQwK5ueeXc+4cfcwhaCnpoaU9LCyeMYHbzSXiHLJaeUwV5W22qUurk0BavU7ZCEO4j2i34d51b67o2cUFOlfdSkD5XARaa7Q8NMOAhyFUoLhu7ssRCRMguTk1KLFk+URpwf1QEFCGjoFfXoj1ZjK4xpScZojG5WyW2tyBeUfPsD7cp1k0qagu4+IjSo39LNCAs6Y7TUeH3AsJbVeLulQy9MXeXfdEZCkUV95+rxc0ooUDGaJhHbzC3BI+9f0XPtu3SQYel5os+zv/YS8leOAf9CqivFjuGfJ9HDwynJXjsGt4y+cqWOcq68hX24rVq3N9W+I6GqR2ieckHo+izGHkPQXv1wVnu2F81/aPh93UtTajmfpFm7JZTRU2EWFg0yROph85oskAq8+XpxukydiimMJGBYqRzTgcVuV5GmvzOKvfOpm19xnbWYHhdIH1RA22vOcERWRJzmFG5CZ9iVVTh/sHsy3j9RD+DN3/ArZS/GcKZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA0IDAgUiAvQ29udGVudHMgMyAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjQgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA1IDAgUiA+PiAvRm9udCA8PCAvVFQxIDYgMCBSCi9UVDIgNyAwIFIgL1RUMyA4IDAgUiA+PiA+PgplbmRvYmoKMTAgMCBvYmoKPDwgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0xlbmd0aCAyNjEyIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AZ2Wd1RT2RaHz703vdASIiAl9Bp6CSDSO0gVBFGJSYBQAoaEJnZEBUYUESlWZFTAAUeHImNFFAuDgmLXCfIQUMbBUURF5d2MawnvrTXz3pr9x1nf2ee319ln733XugBQ/IIEwnRYAYA0oVgU7uvBXBITy8T3AhgQAQ5YAcDhZmYER/hEAtT8vT2ZmahIxrP27i6AZLvbLL9QJnPW/3+RIjdDJAYACkXVNjx+JhflApRTs8UZMv8EyvSVKTKGMTIWoQmirCLjxK9s9qfmK7vJmJcm5KEaWc4ZvDSejLtQ3pol4aOMBKFcmCXgZ6N8B2W9VEmaAOX3KNPT+JxMADAUmV/M5yahbIkyRRQZ7onyAgAIlMQ5vHIOi/k5aJ4AeKZn5IoEiUliphHXmGnl6Mhm+vGzU/liMSuUw03hiHhMz/S0DI4wF4Cvb5ZFASVZbZloke2tHO3tWdbmaPm/2d8eflP9Pch6+1XxJuzPnkGMnlnfbOysL70WAPYkWpsds76VVQC0bQZA5eGsT+8gAPIFALTenPMehmxeksTiDCcLi+zsbHMBn2suK+g3+5+Cb8q/hjn3mcvu+1Y7phc/gSNJFTNlReWmp6ZLRMzMDA6Xz2T99xD/48A5ac3Jwyycn8AX8YXoVVHolAmEiWi7hTyBWJAuZAqEf9Xhfxg2JwcZfp1rFGh1XwB9hTlQuEkHyG89AEMjAyRuP3oCfetbEDEKyL68aK2Rr3OPMnr+5/ofC1yKbuFMQSJT5vYMj2RyJaIsGaPfhGzBAhKQB3SgCjSBLjACLGANHIAzcAPeIACEgEgQA5YDLkgCaUAEskE+2AAKQTHYAXaDanAA1IF60AROgjZwBlwEV8ANcAsMgEdACobBSzAB3oFpCILwEBWiQaqQFqQPmULWEBtaCHlDQVA4FAPFQ4mQEJJA+dAmqBgqg6qhQ1A99CN0GroIXYP6oAfQIDQG/QF9hBGYAtNhDdgAtoDZsDscCEfCy+BEeBWcBxfA2+FKuBY+DrfCF+Eb8AAshV/CkwhAyAgD0UZYCBvxREKQWCQBESFrkSKkAqlFmpAOpBu5jUiRceQDBoehYZgYFsYZ44dZjOFiVmHWYkow1ZhjmFZMF+Y2ZhAzgfmCpWLVsaZYJ6w/dgk2EZuNLcRWYI9gW7CXsQPYYew7HA7HwBniHHB+uBhcMm41rgS3D9eMu4Drww3hJvF4vCreFO+CD8Fz8GJ8Ib4Kfxx/Ht+PH8a/J5AJWgRrgg8hliAkbCRUEBoI5wj9hBHCNFGBqE90IoYQecRcYimxjthBvEkcJk6TFEmGJBdSJCmZtIFUSWoiXSY9Jr0hk8k6ZEdyGFlAXk+uJJ8gXyUPkj9QlCgmFE9KHEVC2U45SrlAeUB5Q6VSDahu1FiqmLqdWk+9RH1KfS9HkzOX85fjya2Tq5FrleuXeyVPlNeXd5dfLp8nXyF/Sv6m/LgCUcFAwVOBo7BWoUbhtMI9hUlFmqKVYohimmKJYoPiNcVRJbySgZK3Ek+pQOmw0iWlIRpC06V50ri0TbQ62mXaMB1HN6T705PpxfQf6L30CWUlZVvlKOUc5Rrls8pSBsIwYPgzUhmljJOMu4yP8zTmuc/jz9s2r2le/7wplfkqbip8lSKVZpUBlY+qTFVv1RTVnaptqk/UMGomamFq2Wr71S6rjc+nz3eez51fNP/k/IfqsLqJerj6avXD6j3qkxqaGr4aGRpVGpc0xjUZmm6ayZrlmuc0x7RoWgu1BFrlWue1XjCVme7MVGYls4s5oa2u7act0T6k3as9rWOos1hno06zzhNdki5bN0G3XLdTd0JPSy9YL1+vUe+hPlGfrZ+kv0e/W3/KwNAg2mCLQZvBqKGKob9hnmGj4WMjqpGr0SqjWqM7xjhjtnGK8T7jWyawiZ1JkkmNyU1T2NTeVGC6z7TPDGvmaCY0qzW7x6Kw3FlZrEbWoDnDPMh8o3mb+SsLPYtYi50W3RZfLO0sUy3rLB9ZKVkFWG206rD6w9rEmmtdY33HhmrjY7POpt3mta2pLd92v+19O5pdsN0Wu067z/YO9iL7JvsxBz2HeIe9DvfYdHYou4R91RHr6OG4zvGM4wcneyex00mn351ZzinODc6jCwwX8BfULRhy0XHhuBxykS5kLoxfeHCh1FXbleNa6/rMTdeN53bEbcTd2D3Z/bj7Kw9LD5FHi8eUp5PnGs8LXoiXr1eRV6+3kvdi72rvpz46Pok+jT4Tvna+q30v+GH9Av12+t3z1/Dn+tf7TwQ4BKwJ6AqkBEYEVgc+CzIJEgV1BMPBAcG7gh8v0l8kXNQWAkL8Q3aFPAk1DF0V+nMYLiw0rCbsebhVeH54dwQtYkVEQ8S7SI/I0shHi40WSxZ3RslHxUXVR01Fe0WXRUuXWCxZs+RGjFqMIKY9Fh8bFXskdnKp99LdS4fj7OIK4+4uM1yWs+zacrXlqcvPrpBfwVlxKh4bHx3fEP+JE8Kp5Uyu9F+5d+UE15O7h/uS58Yr543xXfhl/JEEl4SyhNFEl8RdiWNJrkkVSeMCT0G14HWyX/KB5KmUkJSjKTOp0anNaYS0+LTTQiVhirArXTM9J70vwzSjMEO6ymnV7lUTokDRkUwoc1lmu5iO/kz1SIwkmyWDWQuzarLeZ0dln8pRzBHm9OSa5G7LHcnzyft+NWY1d3Vnvnb+hvzBNe5rDq2F1q5c27lOd13BuuH1vuuPbSBtSNnwy0bLjWUb326K3tRRoFGwvmBos+/mxkK5QlHhvS3OWw5sxWwVbO3dZrOtatuXIl7R9WLL4oriTyXckuvfWX1X+d3M9oTtvaX2pft34HYId9zd6brzWJliWV7Z0K7gXa3lzPKi8re7V+y+VmFbcWAPaY9kj7QyqLK9Sq9qR9Wn6qTqgRqPmua96nu37Z3ax9vXv99tf9MBjQPFBz4eFBy8f8j3UGutQW3FYdzhrMPP66Lqur9nf19/RO1I8ZHPR4VHpcfCj3XVO9TXN6g3lDbCjZLGseNxx2/94PVDexOr6VAzo7n4BDghOfHix/gf754MPNl5in2q6Sf9n/a20FqKWqHW3NaJtqQ2aXtMe9/pgNOdHc4dLT+b/3z0jPaZmrPKZ0vPkc4VnJs5n3d+8kLGhfGLiReHOld0Prq05NKdrrCu3suBl69e8blyqdu9+/xVl6tnrjldO32dfb3thv2N1h67npZf7H5p6bXvbb3pcLP9luOtjr4Ffef6Xfsv3va6feWO/50bA4sG+u4uvnv/Xtw96X3e/dEHqQ9eP8x6OP1o/WPs46InCk8qnqo/rf3V+Ndmqb307KDXYM+ziGePhrhDL/+V+a9PwwXPqc8rRrRG6ketR8+M+YzderH0xfDLjJfT44W/Kf6295XRq59+d/u9Z2LJxPBr0euZP0reqL45+tb2bedk6OTTd2nvpqeK3qu+P/aB/aH7Y/THkensT/hPlZ+NP3d8CfzyeCZtZubf94Tz+wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKWyAvSUNDQmFzZWQgMTAgMCBSIF0KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RUcmVlUm9vdCAvSyAxMSAwIFIgL1BhcmVudFRyZWUgMTMgMCBSIC9JRFRyZWUgMTQgMCBSPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}}]},{"role":"assistant","content":[{"type":"text","text":"Apples + are tasty. (page 1)"}]},{"role":"user","content":[{"type":"text","text":"What apple is not tasty?"}]},{"role":"assistant","content":[{"type":"text","text":"Red - Delicious apples are not tasty."}]},{"role":"user","content":[{"type":"text","text":"What - apple is not tasty?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + Delicious."}]},{"role":"user","content":[{"type":"text","text":"What apple + is not tasty?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95fa9dcd7f92f0a8-DFW + cf-ray: 992956797e653aaf-DFW content-encoding: gzip content-type: application/json - date: Tue, 15 Jul 2025 16:25:33 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '250' + date: Wed, 22 Oct 2025 13:28:29 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3750' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=WES8tvY2y6cRfGMDjJ1CTB8p96oRivJJsg.8rnO7qvM-1752596733-1.0.1.1-ReMNerv50tsaiicSelwUB8Df2HBbDkxu9Qf6xf6kg_4WllzFhhw_rEXf.E2BjU484tO8_pdU3NHRzcIigT7uAdbFhNy2O5jKLWJTuqPOzes; - path=/; expires=Tue, 15-Jul-25 16:55:33 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=mPCbEWvRjws_ASBSL_E0LmZgK.5mOU1x1.SlFiewVTQ-1761139709-1.0.1.1-eZBrDly7.OxpvBg.Fnfi.NmfuNJM.E9_eXM_Dmih1HHn93Wtso179zv3lDxhTzqpKU2voaRAdwMd_9_sk7R0T0x5bdtLCzLmJbPzB_G8scs; + path=/; expires=Wed, 22-Oct-25 13:58:29 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=UGHVsCw13Zwgccn7jyjl4zJNE5ysDSKcburhbNpBj98-1752596733337-0.0.1.1-604800000; + - _cfuvid=TeGBlzSyUWxXZQZzRlciVOaMbAAGFPhHIlRBy4pEvv8-1761139709668-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '235' + x-envoy-upstream-service-time: '3793' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999180' + x-ratelimit-remaining-tokens: '179999196' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d7839002de37797b90e7f8bec180eb57 + x-request-id: req_efff3598285a95f28ad64571bd15e7fa body: string: | { - "id": "chatcmpl-BtclBO96qK2j23OHv4MLB8iKF7vxZ", + "id": "chatcmpl-CTTB4qHx23EkzXR8FfdoVcmt7L2Yd", "object": "chat.completion", - "created": 1752596733, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139706, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Red Delicious apples are not tasty.", + "content": "Red Delicious.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 328, - "completion_tokens": 7, - "total_tokens": 335, + "prompt_tokens": 319, + "completion_tokens": 204, + "total_tokens": 523, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -229,5 +232,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-15 16:25:33 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 13:28:29 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-tool.yml b/tests/testthat/_vcr/openai-tool.yml index d453056c..ee47a65d 100644 --- a/tests/testthat/_vcr/openai-tool.yml +++ b/tests/testthat/_vcr/openai-tool.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"messages":[{"role":"system","content":"Always use a tool to answer. Reply with ''It is ____.''."},{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return + the current date in Y-M-D format?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: @@ -14,37 +14,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e89d469dc6b22-DFW + cf-ray: 992958e22af13aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:34 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1135' + date: Wed, 22 Oct 2025 13:30:09 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4428' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=jswWuDoYa6FPfSnlw3U8ZObDKPAHwccInOC7WDrg5rE-1751463454-1.0.1.1-LHCg5GmMbIaEiB.c63z35T9uAnrBaC4ywT7Ur.gypmHBjyvRI4au4l2xsVwSoMOdfT_fMeYIgEDFxSUcbM7KDfEjTglYQKgQchAvxCGtQAU; - path=/; expires=Wed, 02-Jul-25 14:07:34 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=.yoLsF0Z1xgsjpQaE82p3hVtAIZk0bU8_eZsl8UH4P0-1761139809-1.0.1.1-pJpjgPI._9oN4NOxkhtDZyoo35mHruk0HRMJRy7saIKfH6ee62aqbvvHBA0enQ7IYBinq6X0shtKucVCJa96j6guGWaSSaMGlSjUCRnF.Ts; + path=/; expires=Wed, 22-Oct-25 14:00:09 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=nxjN3ySPWdQeQc0oFSQkZtkgQFMIfa0kLZeiLNEI0aA-1751463454074-0.0.1.1-604800000; + - _cfuvid=fkvTab6QPUXHc2ccZx_m.pZXLld2nHsbxkLx4H_ems8-1761139809031-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1142' + x-envoy-upstream-service-time: '4492' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999973' + x-ratelimit-remaining-tokens: '179999973' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_7f757f696265158c803a322e9a3380dc + x-request-id: req_a1812d5c91d84c6e98767da0f0967263 body: string: | { - "id": "chatcmpl-BorwTlmiApnAvDZBRH201XuaGnmg1", + "id": "chatcmpl-CTTCeaOyxTCXw5CrtqGxNqBGL4nuX", "object": "chat.completion", - "created": 1751463453, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139804, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -53,55 +55,46 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_vlIji1dMqD7l1jzUzCw9n9Lz", + "id": "call_p9n0ZjnRtpUWZV0VFHfMb3sI", "type": "function", "function": { "name": "current_date", "arguments": "{}" } - }, - { - "id": "call_yAWLxjHAClgeyETpOhsfWZrv", - "type": "function", - "function": { - "name": "current_month", - "arguments": "{}" - } } ], "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 78, - "completion_tokens": 39, - "total_tokens": 117, + "prompt_tokens": 162, + "completion_tokens": 339, + "total_tokens": 501, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:37:34 + recorded_at: 2025-10-22 13:30:09 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Always use a tool to answer. Reply with ''It is ____.''."},{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]},{"role":"assistant","tool_calls":[{"id":"call_vlIji1dMqD7l1jzUzCw9n9Lz","function":{"name":"current_date","arguments":"{}"},"type":"function"},{"id":"call_yAWLxjHAClgeyETpOhsfWZrv","function":{"name":"current_month","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2024-01-01","tool_call_id":"call_vlIji1dMqD7l1jzUzCw9n9Lz"},{"role":"tool","content":"February","tool_call_id":"call_yAWLxjHAClgeyETpOhsfWZrv"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return + the current date in Y-M-D format?"}]},{"role":"assistant","tool_calls":[{"id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI","function":{"name":"current_date","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2024-01-01","tool_call_id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: @@ -110,37 +103,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e89dc4a616b22-DFW + cf-ray: 992958ff68213aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:34 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '396' + date: Wed, 22 Oct 2025 13:30:12 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3110' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=B_Dxm1MGMU3wPRsCMIK8B5CYvYTng9yWcYGOmxnzPLE-1751463454-1.0.1.1-n2o9qDFn.uw2oeh.zrEzWckKQlnYj9DSLyVM9yz8mkrN7dBH9X4rWzZ17Z5_ZfwTGo3wLjL1Ur0HTmjSA5iJYOgGtOnNW4NM9b84EAutKkM; - path=/; expires=Wed, 02-Jul-25 14:07:34 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=op4eRTXlo9jjvAUhuno3COwqigxcq15HgpHgLEL2RIM-1761139812-1.0.1.1-kEEE9mMAuTtx.F0AY8QSNss_zE_Jl6z_p7_FOiGMjc0JT2qHTZpRuEV70CdrLwoc1LjunDIIcxwXyICNFe.rZmyqepzC.VqO6NhdTF1e6ic; + path=/; expires=Wed, 22-Oct-25 14:00:12 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=7Y9VaOvSSTeru58Aie_Vh_NyyClTKl7F_Ii5OVf9P8w-1751463454581-0.0.1.1-604800000; + - _cfuvid=cuB3Nvxs1SfkOwI3nPRYzpMimTzdmvnqu6hBHDqN_T4-1761139812485-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '401' + x-envoy-upstream-service-time: '3147' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999965' + x-ratelimit-remaining-tokens: '179999967' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_8b7d3cc0af953bd04e773a48c4a0bd2a + x-request-id: req_1c4c40bbccca4d779ee49be5ea487a9e body: string: | { - "id": "chatcmpl-BorwUvTLCciaL3eFxqt4hWPu660Ez", + "id": "chatcmpl-CTTCjzn2KADXzYwJPN5Ieq1OnAGXe", "object": "chat.completion", - "created": 1751463454, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139809, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -150,38 +145,37 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 138, - "completion_tokens": 11, - "total_tokens": 149, + "prompt_tokens": 192, + "completion_tokens": 275, + "total_tokens": 467, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:37:34 + recorded_at: 2025-10-22 13:30:12 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Always use a tool to answer. Reply with ''It is ____.''."},{"role":"user","content":[{"type":"text","text":"What''s - the current date in Y-M-D format?"}]},{"role":"assistant","tool_calls":[{"id":"call_vlIji1dMqD7l1jzUzCw9n9Lz","function":{"name":"current_date","arguments":"{}"},"type":"function"},{"id":"call_yAWLxjHAClgeyETpOhsfWZrv","function":{"name":"current_month","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2024-01-01","tool_call_id":"call_vlIji1dMqD7l1jzUzCw9n9Lz"},{"role":"tool","content":"February","tool_call_id":"call_yAWLxjHAClgeyETpOhsfWZrv"},{"role":"assistant","content":[{"type":"text","text":"It + the current date in Y-M-D format?"}]},{"role":"assistant","tool_calls":[{"id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI","function":{"name":"current_date","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2024-01-01","tool_call_id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI"},{"role":"assistant","content":[{"type":"text","text":"It is 2024-01-01."}]},{"role":"user","content":[{"type":"text","text":"What month - is it? Provide the full name"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return + is it? Provide the full name"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: @@ -190,115 +184,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e89dfddce6b22-DFW - content-encoding: gzip - content-type: application/json - date: Wed, 02 Jul 2025 13:37:35 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '299' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=Yjd2akMSlieXzmW4Rqu3UnO9Cx0ze50l6.FdDc8x_Xk-1751463455-1.0.1.1-36iYG5kQLL0ZvXv.T0cp43yIDozK8LZWzXy0Wgbt7w8V66C2iRXQQaAdHhLAQQnS3xCQG1yw9v3FXMQxbO2.IJyCeZrDq1OodufTNIo_VEY; - path=/; expires=Wed, 02-Jul-25 14:07:35 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=licBNkDfX6v7R7YrT3DGrJmQiXZkLctWfT1KXSFUC0g-1751463455068-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '303' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999949' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_f770217cdbdf97db5dffca61ea52f3cb - body: - string: | - { - "id": "chatcmpl-BorwUX6ebKKij7IjRUr6J2wpatr5S", - "object": "chat.completion", - "created": 1751463454, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": "It is February.", - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "stop" - } - ], - "usage": { - "prompt_tokens": 165, - "completion_tokens": 5, - "total_tokens": 170, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_f12167b370" - } - recorded_at: 2025-07-02 13:37:35 -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"Be very terse, not even punctuation."},{"role":"user","content":[{"type":"text","text":"\n What - are Joe and Hadley''s favourite colours?\n Answer like name1: colour1, - name2: colour2\n "}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"favourite_color","description":"Returns - a person''s favourite colour","strict":true,"parameters":{"type":"object","description":"","properties":{"person":{"type":"string","description":"Name - of a person"}},"required":["person"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 958e89e278626b22-DFW + cf-ray: 99295914cfb03aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:37 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1977' + date: Wed, 22 Oct 2025 13:30:16 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3846' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=hhsycTjAVDIY4zP8YtB8MDC6EdWXM4MIbIiqlv6tUec-1751463457-1.0.1.1-7MOLbssfhSOn1H2IxMkej.bjoGXXBEF7p6rn.bCZa9ETiviXBWlyLlJ0JbQ5moUKO0wt2Z_PBcJwCzb0XZ1UmM98gQpguCl4H7vjhIa0VXE; - path=/; expires=Wed, 02-Jul-25 14:07:37 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ES6.Lww3629BZzy14lxvdGjwp.8VlcT62G15VY4.XyM-1761139816-1.0.1.1-7jkx8Pyy6vrKSNAu5gDrobHne7dxjhzlmxHC7A100LxZNZZN_oQm_Zr3OWBj7qLfwXyhGkAfHWEs912bkeJtDfkv91odrmuptbHNtl.rtb8; + path=/; expires=Wed, 22-Oct-25 14:00:16 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=SH5eIjfUfrTC1mz94mMJV8SrK8Gp3rTGeC1GdkBw0Ek-1751463457188-0.0.1.1-604800000; + - _cfuvid=4C3hyJA7bWkgMyoWot4rU81K3Ukd.48dux5iEGgmjPE-1761139816568-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1987' + x-envoy-upstream-service-time: '3913' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999962' + x-ratelimit-remaining-tokens: '179999955' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_06a18b115f048116261cadb401257a50 + x-request-id: req_69ef5c30f84a4e8e872a10f049cc81fa body: string: | { - "id": "chatcmpl-BorwVgq8IgeVckSOLlkT3edzMn7Hd", + "id": "chatcmpl-CTTCmYWlYCCMW2CSjwOttaJWKRbLI", "object": "chat.completion", - "created": 1751463455, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139812, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -307,390 +225,118 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_xbBWDUDqR27VyWX9fnvW54Vu", - "type": "function", - "function": { - "name": "favourite_color", - "arguments": "{\"person\": \"Joe\"}" - } - }, - { - "id": "call_Q9ziY5LEUiVzAPg1VhDwu4Or", + "id": "call_1AmqUAp5o7GSglzIPuhjYFiu", "type": "function", "function": { - "name": "favourite_color", - "arguments": "{\"person\": \"Hadley\"}" - } - } - ], - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "tool_calls" - } - ], - "usage": { - "prompt_tokens": 84, - "completion_tokens": 47, - "total_tokens": 131, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" - } - recorded_at: 2025-07-02 13:37:37 -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"Be very terse, not even punctuation."},{"role":"user","content":[{"type":"text","text":"\n What - are Joe and Hadley''s favourite colours?\n Answer like name1: colour1, - name2: colour2\n "}]},{"role":"assistant","tool_calls":[{"id":"call_xbBWDUDqR27VyWX9fnvW54Vu","function":{"name":"favourite_color","arguments":"{\"person\":[\"Joe\"]}"},"type":"function"},{"id":"call_Q9ziY5LEUiVzAPg1VhDwu4Or","function":{"name":"favourite_color","arguments":"{\"person\":[\"Hadley\"]}"},"type":"function"}]},{"role":"tool","content":"sage - green","tool_call_id":"call_xbBWDUDqR27VyWX9fnvW54Vu"},{"role":"tool","content":"red","tool_call_id":"call_Q9ziY5LEUiVzAPg1VhDwu4Or"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"favourite_color","description":"Returns - a person''s favourite colour","strict":true,"parameters":{"type":"object","description":"","properties":{"person":{"type":"string","description":"Name - of a person"}},"required":["person"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 958e89efb9a86b22-DFW - content-encoding: gzip - content-type: application/json - date: Wed, 02 Jul 2025 13:37:38 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1163' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=TbRGD6u9GSVKMLFkDlGHhCWyT06tjKHKmbIObPIabdE-1751463458-1.0.1.1-RANQ2pQetVtrBlOFyyaiqlJ87fN8zlCudR9xZExuuYJtN6YOu_0AqJ2Rvt3_Xr5GZZz.0YZhpSDzKEBBRGh8la1GuFePxUFYqlcqgAoa9n8; - path=/; expires=Wed, 02-Jul-25 14:07:38 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=mgCoTP_J6J1Mxefm0NhMTDf5Vl.CQPfgIwRPVGPagxo-1751463458530-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '1172' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999957' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_ffe7b96e888be3da3becf5338d44179c - body: - string: | - { - "id": "chatcmpl-BorwXEi3j0HsD00n9XG7X2VOdLdQy", - "object": "chat.completion", - "created": 1751463457, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": "Joe: sage green Hadley: red", - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "stop" - } - ], - "usage": { - "prompt_tokens": 150, - "completion_tokens": 9, - "total_tokens": 159, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" - } - recorded_at: 2025-07-02 13:37:38 -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"\n Use provided tool calls - to find the weather forecast and suitable\n equipment for a variety of - weather conditions.\n\n In your response, be very terse and omit punctuation.\n "},{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"forecast","description":"Gets - the weather forecast for a city","strict":true,"parameters":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"equipment","description":"Gets - the equipment needed for a weather condition","strict":true,"parameters":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 958e89f83c9c6b22-DFW - content-encoding: gzip - content-type: application/json - date: Wed, 02 Jul 2025 13:37:39 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '528' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=ok5YkN5zZDlHEaYhRdB2TAzROpOMTrMa.SNLJnunZXI-1751463459-1.0.1.1-Gt4ALDAMMNgDkpE6KWx54VPAXUuO_IL_VBxrsKPa6RrwEUCHk7i4XP1zoMMY2upTOzFs.yUzXMJbwemLuzGFyI30Uq8NL28fU7rH3aw3nVE; - path=/; expires=Wed, 02-Jul-25 14:07:39 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=jZgkstg8ycmqtBKlSn9JVt6E1GOTiD_3t2QUmYCFuzg-1751463459173-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '537' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999940' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_c427254aa0ab1579ab26b8c8a32ca6d8 - body: - string: | - { - "id": "chatcmpl-BorwYac77JIImVvihX1LzWVKoakWD", - "object": "chat.completion", - "created": 1751463458, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": null, - "tool_calls": [ - { - "id": "call_MumGVlfJ2MvNxZk89QJNrYjN", - "type": "function", - "function": { - "name": "forecast", - "arguments": "{\"city\":\"New York\"}" - } - } - ], - "refusal": null, - "annotations": [] - }, - "logprobs": null, - "finish_reason": "tool_calls" - } - ], - "usage": { - "prompt_tokens": 120, - "completion_tokens": 15, - "total_tokens": 135, - "prompt_tokens_details": { - "cached_tokens": 0, - "audio_tokens": 0 - }, - "completion_tokens_details": { - "reasoning_tokens": 0, - "audio_tokens": 0, - "accepted_prediction_tokens": 0, - "rejected_prediction_tokens": 0 - } - }, - "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" - } - recorded_at: 2025-07-02 13:37:39 -- request: - method: POST - uri: https://api.openai.com/v1/chat/completions - body: - string: '{"messages":[{"role":"system","content":"\n Use provided tool calls - to find the weather forecast and suitable\n equipment for a variety of - weather conditions.\n\n In your response, be very terse and omit punctuation.\n "},{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]},{"role":"assistant","tool_calls":[{"id":"call_MumGVlfJ2MvNxZk89QJNrYjN","function":{"name":"forecast","arguments":"{\"city\":[\"New - York\"]}"},"type":"function"}]},{"role":"tool","content":"rainy","tool_call_id":"call_MumGVlfJ2MvNxZk89QJNrYjN"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"forecast","description":"Gets - the weather forecast for a city","strict":true,"parameters":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"equipment","description":"Gets - the equipment needed for a weather condition","strict":true,"parameters":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}}]}' - response: - status: 200 - headers: - access-control-expose-headers: X-Request-ID - alt-svc: h3=":443"; ma=86400 - cf-cache-status: DYNAMIC - cf-ray: 958e89fcda216b22-DFW - content-encoding: gzip - content-type: application/json - date: Wed, 02 Jul 2025 13:37:39 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '423' - openai-version: '2020-10-01' - server: cloudflare - set-cookie: - - __cf_bm=MTglp3ZBNrUl53imjAcNRkfJxYfAqWZOSnDJzMAQPX8-1751463459-1.0.1.1-jpksuAGzDU6FysuEdW3.f0JwsZt1HJuGL7fSyl_..bQAMCxkwacp4p70cRU06MnunVItQ9nu9k7CdA_L2m0vdLVRJ_JPyIGa8bNZ0qjyaCg; - path=/; expires=Wed, 02-Jul-25 14:07:39 GMT; domain=.api.openai.com; HttpOnly; - Secure; SameSite=None - - _cfuvid=GdSt988y9gtpcpqYR24jEYEyMP434XgYpvVj_PajEBI-1751463459812-0.0.1.1-604800000; - path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - strict-transport-security: max-age=31536000; includeSubDomains; preload - x-content-type-options: nosniff - x-envoy-upstream-service-time: '426' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999935' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_41a81d74b2ac3bb9b03e489dbd5807af - body: - string: | - { - "id": "chatcmpl-BorwZFbaYSdkbiUG8Njedb9L9r9UE", - "object": "chat.completion", - "created": 1751463459, - "model": "gpt-4.1-nano-2025-04-14", - "choices": [ - { - "index": 0, - "message": { - "role": "assistant", - "content": null, - "tool_calls": [ - { - "id": "call_i4vcABQKBawzonEzWEhJZItJ", - "type": "function", - "function": { - "name": "equipment", - "arguments": "{\"weather\":\"rainy\"}" + "name": "current_month", + "arguments": "{}" } } ], "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 145, - "completion_tokens": 15, - "total_tokens": 160, + "prompt_tokens": 221, + "completion_tokens": 339, + "total_tokens": 560, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:37:39 + recorded_at: 2025-10-22 13:30:16 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: - string: '{"messages":[{"role":"system","content":"\n Use provided tool calls - to find the weather forecast and suitable\n equipment for a variety of - weather conditions.\n\n In your response, be very terse and omit punctuation.\n "},{"role":"user","content":[{"type":"text","text":"What - should I pack for New York this weekend?"}]},{"role":"assistant","tool_calls":[{"id":"call_MumGVlfJ2MvNxZk89QJNrYjN","function":{"name":"forecast","arguments":"{\"city\":[\"New - York\"]}"},"type":"function"}]},{"role":"tool","content":"rainy","tool_call_id":"call_MumGVlfJ2MvNxZk89QJNrYjN"},{"role":"assistant","tool_calls":[{"id":"call_i4vcABQKBawzonEzWEhJZItJ","function":{"name":"equipment","arguments":"{\"weather\":[\"rainy\"]}"},"type":"function"}]},{"role":"tool","content":"umbrella","tool_call_id":"call_i4vcABQKBawzonEzWEhJZItJ"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"forecast","description":"Gets - the weather forecast for a city","strict":true,"parameters":{"type":"object","description":"","properties":{"city":{"type":"string","description":"City - name"}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"equipment","description":"Gets - the equipment needed for a weather condition","strict":true,"parameters":{"type":"object","description":"","properties":{"weather":{"type":"string","description":"Weather - condition"}},"required":["weather"],"additionalProperties":false}}}]}' + string: '{"messages":[{"role":"system","content":"Always use a tool to answer. + Reply with ''It is ____.''."},{"role":"user","content":[{"type":"text","text":"What''s + the current date in Y-M-D format?"}]},{"role":"assistant","tool_calls":[{"id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI","function":{"name":"current_date","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2024-01-01","tool_call_id":"call_p9n0ZjnRtpUWZV0VFHfMb3sI"},{"role":"assistant","content":[{"type":"text","text":"It + is 2024-01-01."}]},{"role":"user","content":[{"type":"text","text":"What month + is it? Provide the full name"}]},{"role":"assistant","tool_calls":[{"id":"call_1AmqUAp5o7GSglzIPuhjYFiu","function":{"name":"current_month","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"February","tool_call_id":"call_1AmqUAp5o7GSglzIPuhjYFiu"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"current_date","description":"Return + the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"current_month","description":"Return + the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e8a007e376b22-DFW + cf-ray: 9929592e9b7f3aaf-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:37:40 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '419' + date: Wed, 22 Oct 2025 13:30:20 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3557' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=cEtCcEisp9IM4SnVFHn3lKBbqUZnS0cOzn3sxZcLRNE-1751463460-1.0.1.1-36gIT49qoeGXZWlcgrq0NzgNyiqqUnVfdFkO467DoJb08g6EJq5fe4vqJw1nQw3rQYOqz.w1LXkhvJNjG9kwVWHiwnDnMiarAgv9R2xCV9Q; - path=/; expires=Wed, 02-Jul-25 14:07:40 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=Io.TpmqBkPk9PMxPnpD1n1LQSMpTa1LduHrcbKsJrK4-1761139820-1.0.1.1-Bi7JQqoRAWE9ZuFrbeZW8LEZ1cGb8Ew_z6BMhrnmt26UE.WZnGIGAqP74x16w.5h3tWmSRXcUmmVkVaJa7nXk1Tv18ZxP_imXjvZ0VVld_s; + path=/; expires=Wed, 22-Oct-25 14:00:20 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=zjGBSy6Dfx5oH7JcOgIKAfKDun3tjCyQM.Xrxa8ikx4-1751463460387-0.0.1.1-604800000; + - _cfuvid=uiBzGlB2vyS5rd_OZ7eL5oNfQIEyPm.d_2Vw8pTo.Qk-1761139820428-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '421' + x-envoy-upstream-service-time: '3646' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999931' + x-ratelimit-remaining-tokens: '179999949' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_6bbed560e0f4cfdfa3c74381f405bd61 + x-request-id: req_d96b3f5195a84082b6f9a8e83f9ebae3 body: string: | { - "id": "chatcmpl-BorwZwDKTVDDHsRr9dztA1ic05M0Z", + "id": "chatcmpl-CTTCrYUYelIZNg8wYVwj07uSaYLbB", "object": "chat.completion", - "created": 1751463459, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761139817, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Pack an umbrella for New York this weekend due to rainy weather.", + "content": "It is February.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 170, - "completion_tokens": 14, - "total_tokens": 184, + "prompt_tokens": 246, + "completion_tokens": 141, + "total_tokens": 387, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:37:40 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 13:30:20 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-v2-image.yml b/tests/testthat/_vcr/openai-v2-image.yml index a296006c..46901c51 100644 --- a/tests/testthat/_vcr/openai-v2-image.yml +++ b/tests/testthat/_vcr/openai-v2-image.yml @@ -5,43 +5,43 @@ http_interactions: body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Be terse."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - in this image? (Be sure to mention the outside shape)"}]},{"role":"user","content":[{"type":"input_image","image_url":"data:image/png;base64,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"}]}],"model":"gpt-4.1-mini","temperature":0,"stream":false,"store":false}' + in this image? (Be sure to mention the outside shape)"}]},{"role":"user","content":[{"type":"input_image","image_url":"data:image/png;base64,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"}]}],"model":"gpt-4.1-mini","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990045088f5d6701-DFW + cf-ray: 99295d933c6f3aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 13:51:16 GMT + date: Wed, 22 Oct 2025 13:33:19 GMT openai-organization: posit-esfrkf - openai-processing-ms: '1447' + openai-processing-ms: '2931' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=LnCjsj4qZ4gMbzqZGxl8lQMQB1sQjKuXPoqZbL2eGZQ-1760709076-1.0.1.1-Dd2UDSZVsOlYf.oMkV.P8HNUBHRNbGEDZTs459ExjjFu.g1Dc9_Jt365wHUffYewLgauoR2EgcvE1EFRpVw3ZZ.HPHsfKRBgfB5VnnoM5Z0; - path=/; expires=Fri, 17-Oct-25 14:21:16 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=HDfhnHBumQ1nReAhAmPbGBE1KEfjiarZk6xXO2aoFWs-1761139999-1.0.1.1-kJJtBoTlYpe_xg8blqkRG5Fz.B9aGXn2wNQbVTWnJMYPqehi0JGmNPAK0RhakFayes9ZO7X87Wz4LZS5gdLAx65j4WwxzNXr5CCENH1Xb3Q; + path=/; expires=Wed, 22-Oct-25 14:03:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=V71bSbfjeDc6Xscxc3QtPWeg7UdY3wTGSq_axKtEgnU-1760709076824-0.0.1.1-604800000; + - _cfuvid=aovJaApLUORAu60w9hqoZhB0ygloxJqmaJ61bnqzopM-1761139999659-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1449' + x-envoy-upstream-service-time: '2936' x-ratelimit-limit-requests: '30000' x-ratelimit-limit-tokens: '150000000' x-ratelimit-remaining-requests: '29999' x-ratelimit-remaining-tokens: '149999235' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_a0bbfebe96454ff3abbf0d3a14b8b270 + x-request-id: req_8079ccc50e9c4ae1aa7b910fb4912137 body: string: |- { - "id": "resp_0536070592f166590168f249d35f2c8196bc6df33cc21c10dd", + "id": "resp_01a4a3eb6df2c4170168f8dd1cbe9c81958fb483d21702a2f1", "object": "response", - "created_at": 1760709075, + "created_at": 1761139996, "status": "completed", "background": false, "billing": { @@ -55,7 +55,7 @@ http_interactions: "model": "gpt-4.1-mini-2025-04-14", "output": [ { - "id": "msg_0536070592f166590168f249d4362881968a7b03e28287443f", + "id": "msg_01a4a3eb6df2c4170168f8dd1e96388195bab55a6fd2d46611", "type": "message", "status": "completed", "content": [ @@ -63,7 +63,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "The image is inside a hexagon shape. It shows a red silhouette of a baseball player swinging a bat at a ball with \"www\" on it. Above the player is the text \"httr2\" in white script. The background is dark blue." + "text": "The image has a hexagonal shape. Inside, there is a red silhouette of a baseball player swinging a bat at a ball with \"www\" on it. Above the player, the text \"httr2\" is written in a white script font. The background is dark blue." } ], "role": "assistant" @@ -79,7 +79,7 @@ http_interactions: "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -96,59 +96,59 @@ http_interactions: "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 53, + "output_tokens": 58, "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 266 + "total_tokens": 271 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 13:51:16 + recorded_at: 2025-10-22 13:33:19 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Be terse."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - in this image? (Be sure to mention the outside shape)"}]},{"role":"user","content":[{"type":"input_image","image_url":"https://httr2.r-lib.org/logo.png"}]}],"model":"gpt-4.1-mini","temperature":0,"stream":false,"store":false}' + in this image? (Be sure to mention the outside shape)"}]},{"role":"user","content":[{"type":"input_image","image_url":"https://httr2.r-lib.org/logo.png"}]}],"model":"gpt-4.1-mini","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 99004512fd066701-DFW + cf-ray: 99295da6cad23aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 13:51:19 GMT + date: Wed, 22 Oct 2025 13:33:22 GMT openai-organization: posit-esfrkf - openai-processing-ms: '2463' + openai-processing-ms: '2232' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=zstCFZuPjdMCIgOFNbD9SDc6uae1bkdT9rOG8p38tpQ-1760709079-1.0.1.1-o3Ugp3K.pQeyZaLRTbHbnMNJjjnuExBjODdN2PJPucwI3lZLYXdiK_QWiq6PQ4VIZmVE9OJH2IC40Tc0d0ynRqjJ7S7FrFjmIYbWbdBdXno; - path=/; expires=Fri, 17-Oct-25 14:21:19 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=MUst5cmXW4j2s33jZMXkyL0Ml1dbm9P1BW0DlxHdKfI-1761140002-1.0.1.1-8nTJGBIrQnSEy3WBKkQUyVwnLWWRDcY6RM7LW8adLnXYZsAshLNuqOZwLfv6dHgzYwwF4nT16V_UBF3gh_X0SJNSgCCE4QCDP8sfh_h7lzQ; + path=/; expires=Wed, 22-Oct-25 14:03:22 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=ECv4QeTwc5zk.RxaoA9usK.vobi5j_E7fI_WB7SrRe0-1760709079482-0.0.1.1-604800000; + - _cfuvid=.2dRTc0QjM5rAUIuxLbh111IPMho4RKTMqHT4KfHBWI-1761140002105-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '2467' + x-envoy-upstream-service-time: '2241' x-ratelimit-limit-requests: '30000' x-ratelimit-limit-tokens: '150000000' x-ratelimit-remaining-requests: '29999' x-ratelimit-remaining-tokens: '149999235' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_269fc01b7e684bc482bfe1942d2e0d95 + x-request-id: req_f900184f6ca14c8e80bf875bac908154 body: string: |- { - "id": "resp_02e9a15a8a714ec70168f249d504f481908a5c88981d96359c", + "id": "resp_0bd859e528b13c4a0168f8dd1fdb00819396b6ae53377b7037", "object": "response", - "created_at": 1760709077, + "created_at": 1761140000, "status": "completed", "background": false, "billing": { @@ -162,7 +162,7 @@ http_interactions: "model": "gpt-4.1-mini-2025-04-14", "output": [ { - "id": "msg_02e9a15a8a714ec70168f249d684f88190956779cb7a36ba73", + "id": "msg_0bd859e528b13c4a0168f8dd2170788193816dfd77e979aea4", "type": "message", "status": "completed", "content": [ @@ -170,7 +170,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "The image is a hexagon with a navy blue background. Inside, there is a red silhouette of a baseball player swinging a bat. Above the player, the text \"httr2\" is written in white cursive. A small red baseball with \"www\" on it is near the bat." + "text": "The image is inside a hexagon. It shows a red silhouette of a baseball player swinging a bat toward a small red ball labeled \"www.\" Above the player is the text \"htr2\" in white cursive script. The background is dark blue." } ], "role": "assistant" @@ -186,7 +186,7 @@ http_interactions: "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -203,14 +203,14 @@ http_interactions: "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 61, + "output_tokens": 53, "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 212 + "total_tokens": 204 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 13:51:19 + recorded_at: 2025-10-22 13:33:22 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-v2-pdf.yml b/tests/testthat/_vcr/openai-v2-pdf.yml index 1c7f465e..f2a7d1ac 100644 --- a/tests/testthat/_vcr/openai-v2-pdf.yml +++ b/tests/testthat/_vcr/openai-v2-pdf.yml @@ -5,43 +5,37 @@ http_interactions: body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Be terse."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0MTggPj4Kc3RyZWFtCngBnZLdS8MwFMXf81cc31aQNGnXrIEhuDlQwY9hwAfxoXYZq2v31Qruv/e26zb3oUzJQwK5ueeXc+4cfcwhaCnpoaU9LCyeMYHbzSXiHLJaeUwV5W22qUurk0BavU7ZCEO4j2i34d51b67o2cUFOlfdSkD5XARaa7Q8NMOAhyFUoLhu7ssRCRMguTk1KLFk+URpwf1QEFCGjoFfXoj1ZjK4xpScZojG5WyW2tyBeUfPsD7cp1k0qagu4+IjSo39LNCAs6Y7TUeH3AsJbVeLulQy9MXeXfdEZCkUV95+rxc0ooUDGaJhHbzC3BI+9f0XPtu3SQYel5os+zv/YS8leOAf9CqivFjuGfJ9HDwynJXjsGt4y+cqWOcq68hX24rVq3N9W+I6GqR2ieckHo+izGHkPQXv1wVnu2F81/aPh93UtTajmfpFm7JZTRU2EWFg0yROph85oskAq8+XpxukydiimMJGBYqRzTgcVuV5GmvzOKvfOpm19xnbWYHhdIH1RA22vOcERWRJzmFG5CZ9iVVTh/sHsy3j9RD+DN3/ArZS/GcKZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA0IDAgUiAvQ29udGVudHMgMyAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjQgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA1IDAgUiA+PiAvRm9udCA8PCAvVFQxIDYgMCBSCi9UVDIgNyAwIFIgL1RUMyA4IDAgUiA+PiA+PgplbmRvYmoKMTAgMCBvYmoKPDwgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0xlbmd0aCAyNjEyIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AZ2Wd1RT2RaHz703vdASIiAl9Bp6CSDSO0gVBFGJSYBQAoaEJnZEBUYUESlWZFTAAUeHImNFFAuDgmLXCfIQUMbBUURF5d2MawnvrTXz3pr9x1nf2ee319ln733XugBQ/IIEwnRYAYA0oVgU7uvBXBITy8T3AhgQAQ5YAcDhZmYER/hEAtT8vT2ZmahIxrP27i6AZLvbLL9QJnPW/3+RIjdDJAYACkXVNjx+JhflApRTs8UZMv8EyvSVKTKGMTIWoQmirCLjxK9s9qfmK7vJmJcm5KEaWc4ZvDSejLtQ3pol4aOMBKFcmCXgZ6N8B2W9VEmaAOX3KNPT+JxMADAUmV/M5yahbIkyRRQZ7onyAgAIlMQ5vHIOi/k5aJ4AeKZn5IoEiUliphHXmGnl6Mhm+vGzU/liMSuUw03hiHhMz/S0DI4wF4Cvb5ZFASVZbZloke2tHO3tWdbmaPm/2d8eflP9Pch6+1XxJuzPnkGMnlnfbOysL70WAPYkWpsds76VVQC0bQZA5eGsT+8gAPIFALTenPMehmxeksTiDCcLi+zsbHMBn2suK+g3+5+Cb8q/hjn3mcvu+1Y7phc/gSNJFTNlReWmp6ZLRMzMDA6Xz2T99xD/48A5ac3Jwyycn8AX8YXoVVHolAmEiWi7hTyBWJAuZAqEf9Xhfxg2JwcZfp1rFGh1XwB9hTlQuEkHyG89AEMjAyRuP3oCfetbEDEKyL68aK2Rr3OPMnr+5/ofC1yKbuFMQSJT5vYMj2RyJaIsGaPfhGzBAhKQB3SgCjSBLjACLGANHIAzcAPeIACEgEgQA5YDLkgCaUAEskE+2AAKQTHYAXaDanAA1IF60AROgjZwBlwEV8ANcAsMgEdACobBSzAB3oFpCILwEBWiQaqQFqQPmULWEBtaCHlDQVA4FAPFQ4mQEJJA+dAmqBgqg6qhQ1A99CN0GroIXYP6oAfQIDQG/QF9hBGYAtNhDdgAtoDZsDscCEfCy+BEeBWcBxfA2+FKuBY+DrfCF+Eb8AAshV/CkwhAyAgD0UZYCBvxREKQWCQBESFrkSKkAqlFmpAOpBu5jUiRceQDBoehYZgYFsYZ44dZjOFiVmHWYkow1ZhjmFZMF+Y2ZhAzgfmCpWLVsaZYJ6w/dgk2EZuNLcRWYI9gW7CXsQPYYew7HA7HwBniHHB+uBhcMm41rgS3D9eMu4Drww3hJvF4vCreFO+CD8Fz8GJ8Ib4Kfxx/Ht+PH8a/J5AJWgRrgg8hliAkbCRUEBoI5wj9hBHCNFGBqE90IoYQecRcYimxjthBvEkcJk6TFEmGJBdSJCmZtIFUSWoiXSY9Jr0hk8k6ZEdyGFlAXk+uJJ8gXyUPkj9QlCgmFE9KHEVC2U45SrlAeUB5Q6VSDahu1FiqmLqdWk+9RH1KfS9HkzOX85fjya2Tq5FrleuXeyVPlNeXd5dfLp8nXyF/Sv6m/LgCUcFAwVOBo7BWoUbhtMI9hUlFmqKVYohimmKJYoPiNcVRJbySgZK3Ek+pQOmw0iWlIRpC06V50ri0TbQ62mXaMB1HN6T705PpxfQf6L30CWUlZVvlKOUc5Rrls8pSBsIwYPgzUhmljJOMu4yP8zTmuc/jz9s2r2le/7wplfkqbip8lSKVZpUBlY+qTFVv1RTVnaptqk/UMGomamFq2Wr71S6rjc+nz3eez51fNP/k/IfqsLqJerj6avXD6j3qkxqaGr4aGRpVGpc0xjUZmm6ayZrlmuc0x7RoWgu1BFrlWue1XjCVme7MVGYls4s5oa2u7act0T6k3as9rWOos1hno06zzhNdki5bN0G3XLdTd0JPSy9YL1+vUe+hPlGfrZ+kv0e/W3/KwNAg2mCLQZvBqKGKob9hnmGj4WMjqpGr0SqjWqM7xjhjtnGK8T7jWyawiZ1JkkmNyU1T2NTeVGC6z7TPDGvmaCY0qzW7x6Kw3FlZrEbWoDnDPMh8o3mb+SsLPYtYi50W3RZfLO0sUy3rLB9ZKVkFWG206rD6w9rEmmtdY33HhmrjY7POpt3mta2pLd92v+19O5pdsN0Wu067z/YO9iL7JvsxBz2HeIe9DvfYdHYou4R91RHr6OG4zvGM4wcneyex00mn351ZzinODc6jCwwX8BfULRhy0XHhuBxykS5kLoxfeHCh1FXbleNa6/rMTdeN53bEbcTd2D3Z/bj7Kw9LD5FHi8eUp5PnGs8LXoiXr1eRV6+3kvdi72rvpz46Pok+jT4Tvna+q30v+GH9Av12+t3z1/Dn+tf7TwQ4BKwJ6AqkBEYEVgc+CzIJEgV1BMPBAcG7gh8v0l8kXNQWAkL8Q3aFPAk1DF0V+nMYLiw0rCbsebhVeH54dwQtYkVEQ8S7SI/I0shHi40WSxZ3RslHxUXVR01Fe0WXRUuXWCxZs+RGjFqMIKY9Fh8bFXskdnKp99LdS4fj7OIK4+4uM1yWs+zacrXlqcvPrpBfwVlxKh4bHx3fEP+JE8Kp5Uyu9F+5d+UE15O7h/uS58Yr543xXfhl/JEEl4SyhNFEl8RdiWNJrkkVSeMCT0G14HWyX/KB5KmUkJSjKTOp0anNaYS0+LTTQiVhirArXTM9J70vwzSjMEO6ymnV7lUTokDRkUwoc1lmu5iO/kz1SIwkmyWDWQuzarLeZ0dln8pRzBHm9OSa5G7LHcnzyft+NWY1d3Vnvnb+hvzBNe5rDq2F1q5c27lOd13BuuH1vuuPbSBtSNnwy0bLjWUb326K3tRRoFGwvmBos+/mxkK5QlHhvS3OWw5sxWwVbO3dZrOtatuXIl7R9WLL4oriTyXckuvfWX1X+d3M9oTtvaX2pft34HYId9zd6brzWJliWV7Z0K7gXa3lzPKi8re7V+y+VmFbcWAPaY9kj7QyqLK9Sq9qR9Wn6qTqgRqPmua96nu37Z3ax9vXv99tf9MBjQPFBz4eFBy8f8j3UGutQW3FYdzhrMPP66Lqur9nf19/RO1I8ZHPR4VHpcfCj3XVO9TXN6g3lDbCjZLGseNxx2/94PVDexOr6VAzo7n4BDghOfHix/gf754MPNl5in2q6Sf9n/a20FqKWqHW3NaJtqQ2aXtMe9/pgNOdHc4dLT+b/3z0jPaZmrPKZ0vPkc4VnJs5n3d+8kLGhfGLiReHOld0Prq05NKdrrCu3suBl69e8blyqdu9+/xVl6tnrjldO32dfb3thv2N1h67npZf7H5p6bXvbb3pcLP9luOtjr4Ffef6Xfsv3va6feWO/50bA4sG+u4uvnv/Xtw96X3e/dEHqQ9eP8x6OP1o/WPs46InCk8qnqo/rf3V+Ndmqb307KDXYM+ziGePhrhDL/+V+a9PwwXPqc8rRrRG6ketR8+M+YzderH0xfDLjJfT44W/Kf6295XRq59+d/u9Z2LJxPBr0euZP0reqL45+tb2bedk6OTTd2nvpqeK3qu+P/aB/aH7Y/THkensT/hPlZ+NP3d8CfzyeCZtZubf94Tz+wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKWyAvSUNDQmFzZWQgMTAgMCBSIF0KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RUcmVlUm9vdCAvSyAxMSAwIFIgL1BhcmVudFRyZWUgMTMgMCBSIC9JRFRyZWUgMTQgMCBSPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"store":false}' + the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 99004523ba5d6701-DFW + cf-ray: 99295db61cd13aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 13:51:20 GMT + date: Wed, 22 Oct 2025 13:33:26 GMT openai-organization: posit-esfrkf - openai-processing-ms: '429' + openai-processing-ms: '3750' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=wri9t03Or0I0huQoTFWYgTZF4vm0_1iWAs1zZmoXewo-1760709080-1.0.1.1-u1mtfNpLhkr7f4zOnPA9sB0RdkLWIwA1cfx2.l1Xpl.Ns9M7hODL.iA2ka.5UtI4piAeulCHuRrFgQ0Wmj4rlAYbnN_E5V._xodBztoH2WU; - path=/; expires=Fri, 17-Oct-25 14:21:20 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=2eZc_YdGwyX6njTRA_k11Qd2rliJajibYtZ1twbP3OA-1761140006-1.0.1.1-0HSNLBmMMrdPj5GBsAzXG4byFnqdYcwclSB76RpCWwO.YVNepZGbNJXTHc5z2mSA9g.ZlYAoftrGNHwXi..1QNrUYzTuXhro8vGXlucYdpk; + path=/; expires=Wed, 22-Oct-25 14:03:26 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=hZ5qJ3LKeuXhhkI1t.6BMb9U4aBJqgRYhXCi7rhtrYY-1760709080119-0.0.1.1-604800000; + - _cfuvid=uSXjGTbr4RtdYyloYZSjrVzuiR8I9hI90SlydYBVbQA-1761140006058-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '432' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999917' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_cafa30d8b75047d9a3f156dfb6f970c6 + x-envoy-upstream-service-time: '3756' + x-request-id: req_c6bff3a00d364cc8a523a196ee8d1a2c body: string: |- { - "id": "resp_07ed7ef07296e4910168f249d7ad688195891857837cf9e9de", + "id": "resp_0c8ed9b4c0ead61e0168f8dd22503c81949bdb2151811ebda1", "object": "response", - "created_at": 1760709079, + "created_at": 1761140002, "status": "completed", "background": false, "billing": { @@ -52,10 +46,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "msg_07ed7ef07296e4910168f249d809908195b831b7afeb90ae94", + "id": "rs_0c8ed9b4c0ead61e0168f8dd2357e08194b33b16582fd894f1", + "type": "reasoning", + "encrypted_content": "gAAAAABo-N0mc_-Nf1ZbMUuSCc_Xx9gfAJe5QdNP44rvLL6EqdQkU_678i3uYk7SA7FdDk6IgL0JVP8XoV8XmC4M-oh3XdBuoCs_v5r_XDGc1U5bYN-uRnhdzZDXF1t_cEHmsK7T1_VbrSKQccYTOcMg8doyM2C7e3Le3_v_hFMEaCW2NvItsB4j-6bt5TyeIw3g989c1_chsIVQkFK6aGV6nUVcoIDDs4jIjLjw6EQsCRgONmFwc1VwwbXeJdhimDrJ7R2ChDajbnR-JIhlGR55SFTDKdzuuGq-q9jdUNAN0By3YyqAxCUpw2VwcRl06I3rdSRwqw__pUYFQF_NkM0mZNMEHFFEEi1PY45cLKLSpfuPMPfS3GbRlDbD877wQ9MoVkAYIzpIesNEE5TfC3PULyJuvYpOyvmofS7Pi-SBnKOycs5Pgc9q6KiqXmhzNfezD144me-ckix01pc9lKxL4y5W91eexzfZAq_6wUIpYKQapQgsP-dNLJAvMdVegxfN36rDse6cbPxe4jVbWlNth0vB2k27mJSrtBdtjf03THJTzMcxYluC0EWncJPOctmHutcJ3pPzRwWK94JgRXk-FbFz41xSMOR42pA11zYquCJPhkMrog97YAhBilYeI62CHdwjRzdk9V_ZCFinbSR5YbWrJdWSwDUFjIIbadOOO4ms7_Ogk3YVF_Whh6ukw9D-VpnBoCDMwX8n0gjDeDb_5JW6XzqxiPY5f4W9Up_e7Tx1o0Y6-D8XT1KKit48mw6aWb2AmjwRFYa5iN9E4iQBy5RaPhoihOHHqy0j6v21ZUA1X7r6qi-D3gDPiwPzrsUhvqhLdiYTDvhOKVIwwicrAcFj7RflC2SspOiwQ-pAmZM7-Qr9fkqU-Bzk1XbPiYaXTLRg2nVpHZ84kHQBsvRicZiuP6-EafrO9cBAt4f33zNLi3wYgipXUkX9UDdQJ6wljIHzQTSG4sHJeoHfJ6iO6a6Ol81IOdrvSSPp-peLbty_6G-o-O8qZJTMVTFVFPTov3eC7iP1NZLPI3PJa30RNXq_7ADgCkF4go0Z8ApgjDHVMbYW85ChaeqJ-iAr-fwVa8EqElCtRLEbfEQliabyXjNQ_r-aQXaAHO_yMbsiyLyxXcDWSmfY2cug5nKeN0WOehnggO1I0p9R1M4G1uWSJmGxvGhyJty361KORZc7NBLluz7AkO5moZ_kxjYbLJ1psD2MpZ3pV5kLE0mXH_Cosk4XUraYful24ypemkWVVvJbXBQ363ejWfbvSmg2XIBuFrByP__gV-tZXSLtD5-AsRm8uydhpMbjtkStJsZdU8bbfAGpkuoyNKLbtBFoQgp9Pj0o4VtAkA1VW1E1FM4e1thK90KxElooFC_PWF3kevg0eB4e8i3XOKKXkXJrhla3cApS1GwRawCZlUr3uPqeJ5QgQrXkwE8w_2wMyhhK9t3iL5Sq3OEVxHtYfhaV-ugT9iNdu5Ab3DD08iRRg6m8jbi0m9lAjUHYA5-wd-coIejyCLSAuzAKIIT-RghSUb4fmZazkHYcjUeaDmpF6R_QxnzugunHWSUt9YofNC0LQoAZ3ggulzfUgAP5i5APjbqbPpoyujs6o_mKEeL2GX4G_KD66guY4BjuK-M4TcnFuy1uiaqwhOqikoE-4kDdLr3Ij5OiGoelWfSFI0v6lzmQO_pXThusPIvCe0HhXc5zJjx4HPT-83sUdidSJQmxoWc1sgw7xBly8MD-RCkZStXGaWfnkjtb0DB-SkLFuCLc343A4ZvCnxpj7Q-iboCBlzXZx6c9KHZOtwuKJ0WewP4lZZnRWw1eMf0lGqnCE6APIMHZi-ylP4nrSc6dKOeaoRSv6jgK-Sd1ezUzT2qKWp3e-vvmcIm8CDYrtHeCtLL0ZOEg5MntO4j8jShf_GeZjrLseohL5GiBuAXxUdwDeVtx5bbXxgfAMEWqyK1Xj2d2OEMbnpNCs15SV8Cw_1ZQjmHrbAdUojnH2dOL9BYwkagtubFLmBYUpSzzIxdOg85xbT4GGUlgnOSo9abQFWHNXYaDOyIgqH7X1UtQizwH9XeK2ykTF5jiqzbqEwAjazO4BI98RybPqwyUISkIQEg6dh9VIMf14khVb3XhdZFRvYhv7w0WDBjFpTjbrS6aWxVzwErMNH3OQO4IwP0nK-xnIAbxCmX1j4gFonHk_G-Fj0c6pU0f9EdsGS-MjmZz2K196YGpllHPbRVe7no5hiPfUKul8jSUOkyDPDFtLXDahpQ05Zjn4Ny3uJgNxeMKTWZp6UhVrOqt71jK3XoyJJnWYlNVsxyTYGX7U4-JgPPnAjbZNunWyXOE8mH_D9GT35fLGaj4drzWJxVYSpSAwakLGf_mJLEldSMM5jOGT0hX1ptFC3kU-qV32EPrt35XMXBEQMLEF5sUdo_EXbTdN-dKq7PkfHur2IpEDTUDkoWfrDA_tdzWYsS4ZAhrLA4rlRCPdYdoI11VrJ1LhjRLvR7rbv5bfhjpPHzMhMYmWPJVQdizJb-EuFNMY9x6jqWLrqeQ3kGIPibOfeYxv3vH8etxMxdpbvG6wyRal2w9rxtCDxBPcsxaiL8lgdhygQOGI0-ltUpDlmxK6rS0hUEwFwfuUai4jOlr8fj5rIOBmQkuXAedTfS3irI0luBjX3Mx63RHWanjZ8_7hllUBcr_CLQjVJib4P3jNvsK", + "summary": [] + }, + { + "id": "msg_0c8ed9b4c0ead61e0168f8dd25d4488194a5925b88c9a3612c", "type": "message", "status": "completed", "content": [ @@ -63,7 +63,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "\"Apples are tasty\"" + "text": "Apples are tasty" } ], "role": "assistant" @@ -73,13 +73,13 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -92,65 +92,59 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 63, + "input_tokens": 62, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 7, + "output_tokens": 330, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 320 }, - "total_tokens": 70 + "total_tokens": 392 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 13:51:20 + recorded_at: 2025-10-22 13:33:26 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Be terse."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]},{"role":"assistant","content":[{"type":"output_text","text":"\"Apples - are tasty\""}]},{"role":"user","content":[{"type":"input_text","text":"What - apple is not tasty?"}]}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"store":false}' + the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0MTggPj4Kc3RyZWFtCngBnZLdS8MwFMXf81cc31aQNGnXrIEhuDlQwY9hwAfxoXYZq2v31Qruv/e26zb3oUzJQwK5ueeXc+4cfcwhaCnpoaU9LCyeMYHbzSXiHLJaeUwV5W22qUurk0BavU7ZCEO4j2i34d51b67o2cUFOlfdSkD5XARaa7Q8NMOAhyFUoLhu7ssRCRMguTk1KLFk+URpwf1QEFCGjoFfXoj1ZjK4xpScZojG5WyW2tyBeUfPsD7cp1k0qagu4+IjSo39LNCAs6Y7TUeH3AsJbVeLulQy9MXeXfdEZCkUV95+rxc0ooUDGaJhHbzC3BI+9f0XPtu3SQYel5os+zv/YS8leOAf9CqivFjuGfJ9HDwynJXjsGt4y+cqWOcq68hX24rVq3N9W+I6GqR2ieckHo+izGHkPQXv1wVnu2F81/aPh93UtTajmfpFm7JZTRU2EWFg0yROph85oskAq8+XpxukydiimMJGBYqRzTgcVuV5GmvzOKvfOpm19xnbWYHhdIH1RA22vOcERWRJzmFG5CZ9iVVTh/sHsy3j9RD+DN3/ArZS/GcKZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA0IDAgUiAvQ29udGVudHMgMyAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjQgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA1IDAgUiA+PiAvRm9udCA8PCAvVFQxIDYgMCBSCi9UVDIgNyAwIFIgL1RUMyA4IDAgUiA+PiA+PgplbmRvYmoKMTAgMCBvYmoKPDwgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0xlbmd0aCAyNjEyIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AZ2Wd1RT2RaHz703vdASIiAl9Bp6CSDSO0gVBFGJSYBQAoaEJnZEBUYUESlWZFTAAUeHImNFFAuDgmLXCfIQUMbBUURF5d2MawnvrTXz3pr9x1nf2ee319ln733XugBQ/IIEwnRYAYA0oVgU7uvBXBITy8T3AhgQAQ5YAcDhZmYER/hEAtT8vT2ZmahIxrP27i6AZLvbLL9QJnPW/3+RIjdDJAYACkXVNjx+JhflApRTs8UZMv8EyvSVKTKGMTIWoQmirCLjxK9s9qfmK7vJmJcm5KEaWc4ZvDSejLtQ3pol4aOMBKFcmCXgZ6N8B2W9VEmaAOX3KNPT+JxMADAUmV/M5yahbIkyRRQZ7onyAgAIlMQ5vHIOi/k5aJ4AeKZn5IoEiUliphHXmGnl6Mhm+vGzU/liMSuUw03hiHhMz/S0DI4wF4Cvb5ZFASVZbZloke2tHO3tWdbmaPm/2d8eflP9Pch6+1XxJuzPnkGMnlnfbOysL70WAPYkWpsds76VVQC0bQZA5eGsT+8gAPIFALTenPMehmxeksTiDCcLi+zsbHMBn2suK+g3+5+Cb8q/hjn3mcvu+1Y7phc/gSNJFTNlReWmp6ZLRMzMDA6Xz2T99xD/48A5ac3Jwyycn8AX8YXoVVHolAmEiWi7hTyBWJAuZAqEf9Xhfxg2JwcZfp1rFGh1XwB9hTlQuEkHyG89AEMjAyRuP3oCfetbEDEKyL68aK2Rr3OPMnr+5/ofC1yKbuFMQSJT5vYMj2RyJaIsGaPfhGzBAhKQB3SgCjSBLjACLGANHIAzcAPeIACEgEgQA5YDLkgCaUAEskE+2AAKQTHYAXaDanAA1IF60AROgjZwBlwEV8ANcAsMgEdACobBSzAB3oFpCILwEBWiQaqQFqQPmULWEBtaCHlDQVA4FAPFQ4mQEJJA+dAmqBgqg6qhQ1A99CN0GroIXYP6oAfQIDQG/QF9hBGYAtNhDdgAtoDZsDscCEfCy+BEeBWcBxfA2+FKuBY+DrfCF+Eb8AAshV/CkwhAyAgD0UZYCBvxREKQWCQBESFrkSKkAqlFmpAOpBu5jUiRceQDBoehYZgYFsYZ44dZjOFiVmHWYkow1ZhjmFZMF+Y2ZhAzgfmCpWLVsaZYJ6w/dgk2EZuNLcRWYI9gW7CXsQPYYew7HA7HwBniHHB+uBhcMm41rgS3D9eMu4Drww3hJvF4vCreFO+CD8Fz8GJ8Ib4Kfxx/Ht+PH8a/J5AJWgRrgg8hliAkbCRUEBoI5wj9hBHCNFGBqE90IoYQecRcYimxjthBvEkcJk6TFEmGJBdSJCmZtIFUSWoiXSY9Jr0hk8k6ZEdyGFlAXk+uJJ8gXyUPkj9QlCgmFE9KHEVC2U45SrlAeUB5Q6VSDahu1FiqmLqdWk+9RH1KfS9HkzOX85fjya2Tq5FrleuXeyVPlNeXd5dfLp8nXyF/Sv6m/LgCUcFAwVOBo7BWoUbhtMI9hUlFmqKVYohimmKJYoPiNcVRJbySgZK3Ek+pQOmw0iWlIRpC06V50ri0TbQ62mXaMB1HN6T705PpxfQf6L30CWUlZVvlKOUc5Rrls8pSBsIwYPgzUhmljJOMu4yP8zTmuc/jz9s2r2le/7wplfkqbip8lSKVZpUBlY+qTFVv1RTVnaptqk/UMGomamFq2Wr71S6rjc+nz3eez51fNP/k/IfqsLqJerj6avXD6j3qkxqaGr4aGRpVGpc0xjUZmm6ayZrlmuc0x7RoWgu1BFrlWue1XjCVme7MVGYls4s5oa2u7act0T6k3as9rWOos1hno06zzhNdki5bN0G3XLdTd0JPSy9YL1+vUe+hPlGfrZ+kv0e/W3/KwNAg2mCLQZvBqKGKob9hnmGj4WMjqpGr0SqjWqM7xjhjtnGK8T7jWyawiZ1JkkmNyU1T2NTeVGC6z7TPDGvmaCY0qzW7x6Kw3FlZrEbWoDnDPMh8o3mb+SsLPYtYi50W3RZfLO0sUy3rLB9ZKVkFWG206rD6w9rEmmtdY33HhmrjY7POpt3mta2pLd92v+19O5pdsN0Wu067z/YO9iL7JvsxBz2HeIe9DvfYdHYou4R91RHr6OG4zvGM4wcneyex00mn351ZzinODc6jCwwX8BfULRhy0XHhuBxykS5kLoxfeHCh1FXbleNa6/rMTdeN53bEbcTd2D3Z/bj7Kw9LD5FHi8eUp5PnGs8LXoiXr1eRV6+3kvdi72rvpz46Pok+jT4Tvna+q30v+GH9Av12+t3z1/Dn+tf7TwQ4BKwJ6AqkBEYEVgc+CzIJEgV1BMPBAcG7gh8v0l8kXNQWAkL8Q3aFPAk1DF0V+nMYLiw0rCbsebhVeH54dwQtYkVEQ8S7SI/I0shHi40WSxZ3RslHxUXVR01Fe0WXRUuXWCxZs+RGjFqMIKY9Fh8bFXskdnKp99LdS4fj7OIK4+4uM1yWs+zacrXlqcvPrpBfwVlxKh4bHx3fEP+JE8Kp5Uyu9F+5d+UE15O7h/uS58Yr543xXfhl/JEEl4SyhNFEl8RdiWNJrkkVSeMCT0G14HWyX/KB5KmUkJSjKTOp0anNaYS0+LTTQiVhirArXTM9J70vwzSjMEO6ymnV7lUTokDRkUwoc1lmu5iO/kz1SIwkmyWDWQuzarLeZ0dln8pRzBHm9OSa5G7LHcnzyft+NWY1d3Vnvnb+hvzBNe5rDq2F1q5c27lOd13BuuH1vuuPbSBtSNnwy0bLjWUb326K3tRRoFGwvmBos+/mxkK5QlHhvS3OWw5sxWwVbO3dZrOtatuXIl7R9WLL4oriTyXckuvfWX1X+d3M9oTtvaX2pft34HYId9zd6brzWJliWV7Z0K7gXa3lzPKi8re7V+y+VmFbcWAPaY9kj7QyqLK9Sq9qR9Wn6qTqgRqPmua96nu37Z3ax9vXv99tf9MBjQPFBz4eFBy8f8j3UGutQW3FYdzhrMPP66Lqur9nf19/RO1I8ZHPR4VHpcfCj3XVO9TXN6g3lDbCjZLGseNxx2/94PVDexOr6VAzo7n4BDghOfHix/gf754MPNl5in2q6Sf9n/a20FqKWqHW3NaJtqQ2aXtMe9/pgNOdHc4dLT+b/3z0jPaZmrPKZ0vPkc4VnJs5n3d+8kLGhfGLiReHOld0Prq05NKdrrCu3suBl69e8blyqdu9+/xVl6tnrjldO32dfb3thv2N1h67npZf7H5p6bXvbb3pcLP9luOtjr4Ffef6Xfsv3va6feWO/50bA4sG+u4uvnv/Xtw96X3e/dEHqQ9eP8x6OP1o/WPs46InCk8qnqo/rf3V+Ndmqb307KDXYM+ziGePhrhDL/+V+a9PwwXPqc8rRrRG6ketR8+M+YzderH0xfDLjJfT44W/Kf6295XRq59+d/u9Z2LJxPBr0euZP0reqL45+tb2bedk6OTTd2nvpqeK3qu+P/aB/aH7Y/THkensT/hPlZ+NP3d8CfzyeCZtZubf94Tz+wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKWyAvSUNDQmFzZWQgMTAgMCBSIF0KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RUcmVlUm9vdCAvSyAxMSAwIFIgL1BhcmVudFRyZWUgMTMgMCBSIC9JRFRyZWUgMTQgMCBSPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAgMAowIDAgMCAwIDI1OCAwIDAgMCA2MTEgMCAzODkgNTM3IDM1MiAwIDAgMCAwIDUxOSBdID4+CmVuZG9iagoyMCAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9GbGFncyAzMiAvRm9udEJCb3gKWy0xMDE4IC00ODEgMTQzNyAxMTQxXSAvSXRhbGljQW5nbGUgMCAvQXNjZW50IDk3NSAvRGVzY2VudCAtMjE3IC9DYXBIZWlnaHQKNzE0IC9TdGVtViAxNTcgL0xlYWRpbmcgMjkgL1hIZWlnaHQgNTE3IC9TdGVtSCAxMzIgL0F2Z1dpZHRoIDQ3OCAvTWF4V2lkdGgKMTUwMCAvRm9udEZpbGUyIDIxIDAgUiA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL0xlbmd0aDEgMzY1MiAvTGVuZ3RoIDIxMjQgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBrVdtbJtXFT73vv5IHMf2G38m/sj7+o3txHZiJ46d5mOpkzlRu1Ysa9dibwtt2rhroGnLSMYmMVGJVR0RRBP7MaGtGxL82BBIRirFy4+2PxCCCmkVvyoUUMUfxn4yKkHb2Dz3tRs1o0xVtdc6955z7r3nnvPccz+88tJqmax0jiTKH19eOEv6Z7qF6o/HX15RdJH4s6h3nTj74nJT/gGRoffFU6+eaMjm3xKZAifLC4sNme6hzp2EoiGzYdQ9J5dXXmnIpkuok6fOHG+2m38B2be88EpzftqErJxeWC43+tt8ov/ZM99aacjtt1DvOvtSudmfFSHfbbQ9UDLwbTRFXNc1yhBBNPTqGtEO+pPr0odH7BO3Waf0idBffvLf+0X911v98j1Trdt40bCKfq1NO/oY6eN6jILGTbR/23hRWNnxtVXJlWAbZCAHeRLsKskUo27qog6ATRRIXAWXpMgOjZN6dvShq2SjNDop5N0eZqdhSuzQOCi+wxBtkAsT+xNValdmXlvyFapkSUDLEIBVeCU1mCtgemGqE760UUfiCkb1UBCTyWSBTFcwJAPrKlQ2vQOHFCY/OeEPOmyQEWNkzET3Z4JzLlqm8/RDeheROmhf3UZGbqPrXCY0rdA36HVap+/SRTTL9aeonRvJxq+TDCvJfVVqnSv+irH1UpXVz1cLFPwIyEtHvtZfJZZUlJmlQoUdhcCTUMRVcFJSma1IkdkDRa2krClrexfXlFnl5MJixRDRazSU10oppUIHi0sony2qlXzJv82WS6Ux2DEIOxiC7mslWPh60wJqXZXaQidjcp9SkaJzxWeKlXMFfyVfKPlVVZmpXJsrVq4V/GqphF6mbU/hsViChs9m+GyKo72lYeUgbMBEaW1N2ITEo2rl2tqafw2R6BpNrTJqKhCp6CNFZqosP1cUTXlN9QuFpmoq/CgVYLs1ue9gcQaeqMITy/9ASoUHIG3bdhR9rXCvTYe0/UuC1PYokNofCVLHtqc7IJXhs0NA2vFwSLUvAHQb4fxDED7XQPjcQxB27kDY9cUIu7f9hpMeeOvWEfZ+SQj7HgXhzkdCuGvb0x0I++Fzl0A4sI1w3l+h7aQFwuc+l7L0f3P4cSEPPgA5+xfJzINz/Jf1O3ySFFCQcRrjxynHzlOOd0I+SiZuros7geEnPiuZcKLhpKLnmhpd/ZhF4zZ5zMEYJjWHGnaYMDYlE2ozteDku/9ZdMZDHpqly8zKetnvOOdv8JuSDae5TBL7GxcnuxkBq7LqlFWZXah9wnzP11L8SI3481t7+W8AWv0Oiks4byUc+hHCsZfCqQZqTW3os0riOHdswCoOd7ljND3oZxmnxDIjqjfD/jPPn/t57Z/v7WJtuZ/WbjMXM9XusMtbufffh01xuSr1z7iPO3ER5AmmXIn04JSEe6yF2DyYEdLuM3kwBFWOxsE5J6XMUIi7ZZfHqw2wmI1p4QGeHZ40xYYHuBY2mb02yWyT3K4QzwxN8mxaShYOJWJz0/EWy5sGIwu/kI7k0/7uwd35yXSA2TtVZzxt2Gj1d4dlR7fXZvMpcnzAY2QnhqZ75TZlNFX7TMs7rJ3tWqAjOtabHA3LFpPV6/H67cae+FJLq8kgSRa5y+XsspsCsV5xdXMKIr4exNeCm3D3BpbIRQKyVgfuoxu4EsWFKhQKMLQj5wRvBy9eEIJn6NgJCm6mB5kmgvaY1ZyI0MYbseVGNBF8lP3o76zN3x8ezvyFrRoCu49Njy/MRiOFY08UvxN6zTyZmMizMXs07N315sTpw5n43sWxicU9sbl5X2JSpAujMZS/19faL5IDaQcHJExu3MTKM6w6pdKDTjkjj63z61s5fQkRY66+jxcQoxP3/dUqJZEaXnLro71i9I1GyiTBK5sIb3PKSH9GtJ+C+PyUH6HaAYOd+kCjoL2gEmgJ9Cro+6Afgz4EfQT6A6h9vkrCei+s92LGPszoRQI2tHFo4yl47UZTBA8UEUoEuBLeI4IXOesDTxgiBlsoomdvpJFFyBkkl8vGmZzJZkJMT6FmYmlZNh5OB9utwZQWToVEXbu5zrueSY8eGg0ExopPpOe6+Hygf6JbmRgIBlMT3d0T/QH2wdbs7Wgs+dTR4ZHy/oFofFpgnkPxPWDnpsENFA3M3YiLIwIuImCIwIb8EV7b4LULvE33FSuBhIerHm82KhLCrGVz6zY1F2sPWGSbfygZtnBu3Lr7D22iv0virxsdwT7fUUzCRF6ye5h3lJYFKAzmNyiE95yYJoT5g6C2zQ28+XAg6rj2IgHcWD/RkoZ3acii5/gm8jjbzN0sPNTwUBVmNDSaQIRBghc5PKKFkMPYjwAzNiDd9z8zIN3PaG+ICeDFdv7ZBZ548nB/8tB0X2BgvDs01h9weAPW6C7pgqFv8ul4fC4fEw37D3X4Vbs7FnJ+MDwT75DjM5meQdVlNlvtPqfDaZGCfendUYc9kh8Kp7qdZoeiODvtZotb1UM31e+yA/wnSMGDYuNx3Xmx8bgI4EZjE3puNNdCvGZFdE5EasCpJ3gDOhI6WlHbUdsBjRG89wb2S1Zza+6MrB9EuZGsvlmzWLpP1w8f7uofV93JDovH2uM7yY3vvHOk9nEs3dXKpdOc+3oYHSFWv4v9Jd69biwP3i+w7QSJ/WhEbhiw75ieD0anJuHn9LhdJrMpGnOLvM2x7M23vslX3/61yR9wx12ehGfvgTyfqb3HjtX8dtkblZiBr3IJmYjQ9a/+Lg01uM+VbZAlPPsLtIeepoN0iA7TV+kFaBn+FiBR8JmAI02Jbzqxp3zq5fLK0vGFr5RXy/3TZ04t0n8BcHfSQQplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvQUFBQUFDK0hlbHZldGljYU5ldWUgL0ZvbnREZXNjcmlwdG9yCjIyIDAgUiAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcgL0ZpcnN0Q2hhciAzMiAvTGFzdENoYXIgMTIxIC9XaWR0aHMgWyAyNzgKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDI3OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2NDggMAowIDAgNjExIDAgMCA3MjIgMjU5IDAgMCAwIDAgNzIyIDc2MCAwIDAgMCAwIDU3NCAwIDAgOTI2IDAgMCAwIDAgMCAwIDAgMCAwCjUzNyA1OTMgNTM3IDU5MyA1MzcgMjk2IDAgNTU2IDIyMiAwIDUxOSAyMjIgODUzIDU1NiA1NzQgNTkzIDAgMzMzIDUwMCAzMTUKNTU2IDAgMCA1MTggNTAwIF0gPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL0FBQUFBQytIZWx2ZXRpY2FOZXVlIC9GbGFncyAzMiAvRm9udEJCb3gKWy05NTEgLTQ4MSAxOTg3IDEwNzddIC9JdGFsaWNBbmdsZSAwIC9Bc2NlbnQgOTUyIC9EZXNjZW50IC0yMTMgL0NhcEhlaWdodAo3MTQgL1N0ZW1WIDk1IC9MZWFkaW5nIDI4IC9YSGVpZ2h0IDUxNyAvU3RlbUggODAgL0F2Z1dpZHRoIDQ0NyAvTWF4V2lkdGggMjIyNQovRm9udEZpbGUyIDIzIDAgUiA+PgplbmRvYmoKMjMgMCBvYmoKPDwgL0xlbmd0aDEgNzYwOCAvTGVuZ3RoIDQxNjYgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB5Vl9bFvXdb/38vtDlCh+i5RE6omkRFKkKJof+qYsUZasSlFsM6bsyIotK5aLuDYSN026LfDQxUmFrXULtFvSoCsSbO3QtVC2NZHZbTGabW3TBjA6LAEyoRg2bNiKIAiCtBvSitrvvPdIS1oWBEX+GLBHnXfPve/ec889X/fcq6sPfnKNWdk1pmHF1UtnrzD50a+j+PHqw1eDSp1/A6X3/isXLqn1W4xpey488Oj9St3wCGOuv1hfO3teqbNfocyto0Gp80Mou9cvXUU/enT/jte1By6vqt8N9P3wpbOPqPOzbdSDnzh7aQ0lnvYbePVcufzQVbnK2hMoz195cE3tzyuozyvf9rw58CCbZEJuU94dDFVtj9xC3wHvPObVrjSP/JzbNcQXe2HyPirYT/+pz/6r2Vqn4WVtFlWTSkceo9najbOA8Xl8v2Z4majse4JbzBnnVYwQzB3nL0G8YyzP4qyTOdAxEGcv4cvR/U1VpsXPH99iPFj6rYveqS1mRgWjGHPS3xw7BdS+O8QsQses4hVmx+fE3BYzLVae5/xzS1t89/GtKdZ+E9xqVs70gVQiGCxdnNrk96EiEmiIhYBpEsHpTU14+lhFWgpuBDdmz28Ep4PrZ89vasNyiQ9rG0up4CY7XrmI94lKaLO45G+ga0tLQ6CjJToYgu4bS6DwcZUCSrkptYNOusRccFMTWazcXdm8NuXfLE4t+UOhYGnz1mJl89aUP7S0hF76BqfgmJav8GwAz/oYvhsVKsdBAySWNjaIJmoiEtq8tbHh38BK5BYptMWZ2oCVUh9NuLTFi4sV+lSUQn5qkEJSCHwsTYG2KTF3vFICJyHixPw/RMqm9ojU0mAUfa1gzyKLtOkjEqntw4i0+UOJtKXB6T6R2sFzC4m09f1FKn2AQBsSLr6PhK8pEr72PhJ27JOw84Ml7GrwDSbd4NYlS9jzEUnY+2Ek7PtQEm5rcLpPwn7w3EYSDjQkXPRvsobRQsLXDpgs+19t+NcVefsekfN3WYa7Ebrc7DiBeHL3PbHKFsRP2ALXsGMo58V/sYgYY0LzVcQWH+sWd7NJteymkvegPcGK7KesJAysRKWmzIrUhnFyfz7PRjFXJx9mJrldz0yoGxG3uBolrUzP/hr1IKLZwbiJZvmhWK1R8Q8utOpnnVzqmaHR3YgYWH/MMmKpV/eUVtbEbKyZtTA7Wlvl8OxkLuZmHuZlPrS1MT8LsHZ5TAcCOD0z+D3MbrBb7B2e5DP8SdEjFsSTmi9qY9pndEO6Z3Vv6Yv6j+uf0b9gWDT8gbFgvG2smZ41vWueMl8xvwEKgmUY5z8WP8A6DWyN9guEuBTiOcDYgph3G5C6iY6ad9HachN7A2GmbYYgXqog9qb81GgeW1IbdNSgY1pq0GIAZsEAHTDsQ+/2p3nIHnLYQ3b+VO1VnsnULoind74kntoZFN+HJo7vfoJ9j11GNtBXxQsKAEdWcMIABnBjSFVlRVrtrYPgQWG2P513Zdw2YXCN8VF+fJjrbB770KHLl60Bv0c/YD82uEa0QY5oa5i/KiuWaGtaWBXtXJ6ItciUsscv4yHOd9/D6wb2OA2zsDDm00IwOoAJbDDIjEiwFtpjsWSw1J/284xDwzP5kCfDf/io+NQ3az87u8iTCxdr/8GjfL725/y5ndzrr4MmzboA+mPALSxTlU2FCJqwVu1t8KWV+aKZsJOqMxkxE+FG8Ao5Zuu/Bf527TJ/qPZ7/HPilZ3c4n8u/ssiBqpz/I48x5EqJlJkagHTepWUHvNZAALy1aE03sZKyQQMAC6vuMrMkAHNa5bnzUCDGbuE98IKf2RlpfYkTcqP1G6KV0ivNO8xTPW8LDvPPnkrNFmK+M/Yj63QSFkcGIP8SVyXeZ3bO6YKURvl6Q3EH8AMXs0pskKZvzq/iswYNEEcw7NlndA8GU78Snz+lOCfXD8lFI7F6M7LmP+vxCTJSrDI7tviJ+If4YFR9qMt1gPivYAezOjEjE7gbHvCD9ExeCdjEUAOMA24B3A/4GHAdcCXAX8MeAHwd4Cm5Qkd+wcg/woQy6AMqh3bWMc2PrwBfn8GEMsgbwLiA/QCBgGzgCXARcCjgM8CngL8CeAm4IeApmVYTDOGkZaaoV5JVa9EGjs0JjIDHcLltAmpKymizg7Ux0T2UBJ1m3g8MHJmYuLMSKBersTvuVYuX7snXi/5Wu7iiUzmxMVcvZx9Yn10dP2JWZRjY+tPYFEcEmRiFPozsOhe/cl6IoNTPIYMjhSpua3YQCYbcr298tbO34pP71wXn14kw+Xk/povglYzy+7Rs4lUALDAAynuclnXcmyXMZva1p8OOSSN+nNk8BN//9LKF8RXL3xN/O7ZF1f/SDwHxX9bHJMhJyo73wD33bs/F2ZhZ/3sML+X4uF3WQGG38S8wGLAEJAhXg+Y192mUDBhx6oKsIUCbKEAWyjAFgqwhQJsoQBbKDAj6f1xIF8CkN4LCIZBxNGbCOQUTT2o96vYFkuDbhoLjGGOqUacDVNYDTNjI84KasApotFgpAYjNVSheMHCEMcWC4N2AIEXLHwWyFNUWQbTRiBeQA+gAJgBVADrgEcARvAZBgedsE8BGkmiYYf+khBBEt6RxLkhyY4ATgIuAD4FkNd6HciXAWK5inUpnFRZusHTKNQe1ktdkayNkzFmYZz5MY1ii3qDNKaRTdXudGcG8lGbzlU3VmF2R0NRaTknjSf9HenxkDTeH3CFep25GU1ZdI/MJ6RSocvgtDRvtBwaHEq22/3dzthIpFU0hWOxcEtXPpooSK16g6HJ5w10tep7B/sP97aaOwt9tV90BHTft1oMJmc46GpvNXqk3laYEpiehE30wQ69LMG+tcWSMDwvPpCbeSEhippUalHS9pAEboPUqM2NNjfabMB9ipf74OW+upf7gPrg5T54uQ9e7oOX++DlPni5DwrzQWE+eLkPXu6Dl/vg5QplCZQlin8M7HSo+0MHvN4BlRJrDiVOZzMdkGbd0SFcO1dDAEmd5DxZFrbeZMoxvDTc3jG8NJI75RJ8uKV7OJEYi7baIyPx3tGog4J0ydPZaozNnsvnz80lonFuqY1GZgpdodyRSPd0viuYK5HvkQ/x9+BDEnu0CkuyyOwEWuSoGYCnBOApAXhKAJ4SgKcE4CkBeEoAUTMAwwkgagYQNQOImoF61AwgapLpIsZ5kCfRCj3yFhaScYooDEJvQencRpaRSWoorimmk8tLdywtM+Dmf1jRRYbnE6P3jnZ0jp4eXn3IdtJ4ZLxnqNveEh5L5op8JTmZcMXn1oaGzk5H1u8bORzMTnVHZwtdOcUmKE7YYBMO2MR3t1gflEDpGrHlAgt9gK7bAOj+o9sv3KCq7HuwKuBezODFDITHgMfARZx1MZfs+dSaoJ3cheZmeCwxR/tCu7ovtMNC8gf2BR3tkftFl3E91tI9Et9rDPyGbDNJ516bqR2whTeQCfzC0+kwxmWLOZqIxKdlfyLZaWAfZtjB6SquFBAFwZoTrLlUvyIZOgEcq6LMz4rSmpL3t+7GOtoQeWlgGwZykCGco3M3DSAbCCmBxKMqPx/KKZudi1wix79ee124I9lQMBv1nDhhKeViYz2tnH9GuPKnS9mliW7ROXZ6rHKVH+rI9ng80dy3MwOB1GhXar0y2DNzbnj4/ExPRdmneC/OLh521949T8meifsmGCaVTtIGhzZo7cSt/cCSqZPmtmJCusbeKGUP5WC0nmwS0VLfziXXavn8+a5OS5vF2mmdnj3Jq7VpXp2b6fJqtEe12onx+TnywyJeb8JG29jdVbyUiEXCsqk+SVGpDUARjErFnuSYQnySyCmeKImXAwN9oHono5JNx+1CbqUmEQguxbIjMhhNF8r22FTGk+7rNguKHLxbGk54C/21Z/mJWGkgYHaFvNyO2EoR42nwSOcPTEYJRF2NAhxRTCWV6klyOrmDsgxO0S0rtXPM/nS5LM6try/v/BIXUiABmsIAmnJOfSffpXXK8idKUAioGdX1HMgVs3lHRpOXDPZSefH5B7ZffRBS3Mn9zdHaO3z2L/+Zf12ZQ+X7g3LbUpkGghU8sj40Lth9jL24306atic0bAVJBl8G8vk6EqwjmzKC4Ea7CvX9PDYgue9KHQnWkU0Z2WL+bUoAm1iLHAs0kGEPZNmDRfeSJcitfrQm5AwD8rABfPgcUfUdwUdKtB0YRnhQtcd6wCC1wyyRUtYNQG8gAzVI2WK5OZQNt4fdpvLMeGfUbSz7+sajmXJby0L/pSEhdDu/5Ieb+2Id9s6Yr/YtfnhkprUz5gX2Gz2D3fZkrL+n8rGGzGDDdvhWaa/M9tswrc4FNinQudXVqZreb8FKtnnAbmWG91jtQ1mFwwMmewbHGSU/bAM//9/OB4/5EsOh0HDCVy9PBYtnRseWi8FgcXls9EwxyEVqdqCtbWA2lZpNt7WlZ1OD52Z7e2fPDQ6uzsZis6tQDOVSw8il7DDS/4u5FMXmO/nT3rxKPaccyKWyul8vl9IhIpr3J1PTB7dPxf5HETjmhQMhWz5PKdcUZO9NsPcm5fxLFwdKjDZRVLRn5MwuG0Gylx0tOxMzmdKpTtmm/21gPhc4JUbG8S8UzjqRp70GXQyxb9IVA9Gu4lyi7MZBhPs08KAcKdIp+YSaRu6KNF45oaaxHaQRTdLIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdPIXdNy7mpR98IYSheA7h1GtrGz59TdPIeJw9iuaBugA0g9s1MOI8hYpDtKiCZxaFCyWM+dhE9bP+RepTPBQjx613i0PTUa7Bjp73QGow5Xb5dblDVdg0cTXaW8NDBXmRvwhhPOtnTU+1z/ZG9rc2QsFR4IOXFMcLS7nb5mvckZ8qXGw812qRAdKHTaXV0hb2eL3uyJQmy44ePt4muIUchmDu5geuiJ9EV3V7SjebBm0h3tao18oBlnXVovZWdaNTvTogNDRx1KF8XerOSSXBk7zkLDPCsfm6DpF8qViq09FZqIOn023QWh+8pX5movdie8pjmNubWZTyATINUWoes3sT16KReg60aazorpDvKrnFgoyRby0VrhupEZ1LMCI/yESNAtVAg5o+wHkSxhdLGQy2dc/M29ucDgCT9MsLat5AH8TO1PkQf4+/rpkkiV4Q74syBPVe6dzNiPaDYtfFKDHgYYIlm6gkEemkzeI2/TUelH37tw48alH/zZ/b/9m5d4S+3t117jnre+8x30Ne6m5XW72XXIO067At1a2umsjENw4/DsogbXngb1GlNPp2kTVGLH9DchOfUUbIWArODVilOwFadgK07BVpyCrTgFW+unYCsOMxiBU7BTpdCf1tlwLolEsx0cUhrnGrqYyHBLc7sUDzR32Czt5jbJJL163++LL5wqRQ6FmrW6BZ3B5zkpRG0JqQfUIj+7z7ABBTvwDqKuQb5vZ904CcYRZ9PomYeXTyEzmgavM3DWOfYx3D3exRbZ3binO87KOIedxAXAaXavTI/jFhq5Hh49mGcT9EzGZ9YeeHjt6sXVswtr+I8t+29Q7uggCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUQrSGVsdmV0aWNhTmV1ZSAvRm9udERlc2NyaXB0b3IKMjQgMCBSIC9Ub1VuaWNvZGUgMjUgMCBSIC9GaXJzdENoYXIgMzMgL0xhc3RDaGFyIDMzIC9XaWR0aHMgWyAyNzggXSA+PgplbmRvYmoKMjUgMCBvYmoKPDwgL0xlbmd0aCAyMjIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBXZC9bsQgEIR7nmLLS3ECX42QootOcpEfxckDYFhbSPGC1rjw2weIc5FSbMHMfDCsvPZPPYUM8o2jGzDDFMgzrnFjhzDiHEh0F/DB5ePUNLfYJGSBh33NuPQ0RdBaAMj3gqyZdzg9+jjiQ9Ve2SMHmuH0eR2aMmwpfeGClEEJY8DjVK57tunFLgiyoefeFz/k/Vyov8THnhBKo0J0P5Vc9Lgm65AtzSi0UkbfbkYg+X/WAYzTkbx0RtdRStmW/3UqWr94r+Q25tKm7aEVrQUC4X1VKab6YJtvfCZwQQplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL0FBQUFBRCtIZWx2ZXRpY2FOZXVlIC9GbGFncyA0IC9Gb250QkJveApbLTk1MSAtNDgxIDE5ODcgMTA3N10gL0l0YWxpY0FuZ2xlIDAgL0FzY2VudCA5NTIgL0Rlc2NlbnQgLTIxMyAvQ2FwSGVpZ2h0CjcxNCAvU3RlbVYgOTUgL0xlYWRpbmcgMjggL1hIZWlnaHQgNTE3IC9TdGVtSCA4MCAvQXZnV2lkdGggNDQ3IC9NYXhXaWR0aCAyMjI1Ci9Gb250RmlsZTIgMjYgMCBSID4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoMSAxNzg4IC9MZW5ndGggODQ1IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Aa1VTUzTUBz/v7b7AKYyvkSK2mZCiBvZFD+iMWbEjqBEM8VD60FYoMIMA4LD6EGzi5cejBcPGo8ePNaLKVxY4kFjNPHg0RiPHo3BmzB/r20apkiI4XXv/T/fv7/3y+t/5YVFk2JUIZGyE6XCPLkj9B2ia+J2WfFs9gKy88b8VMm3q0RS39TM3RueHW6DfDRtFiY9m35BnpiGw7PZMchD06XyHc8OfYOMzsxN+PFwDHa4VLjjv58+w1ZmCyXTyw9/guybn7tV9u3nkJn5BdPPZzrsi15sw8qgCxTF5MNbD3BF6nM9PI75436nNLbnzE8WFzkuenVunAv68rU//uv8+sHIa+k4zAa/grtHdGpJ6o6+RLwSec2r1A3BobYkW8YOgTqSbAX0nqWTlKSD1IrE7iStIHKh3rVMEh456RBTcveKnZpDjTCwi6iN/0boGtR47TQ1CSGKCe8ojnBqxKGGvP6SsYeGw2oPHI32LwGtOHa9H6VSipIrajYbhyGk4DisQhNTypAt9gxd0ROGYinW+UlLGVKmC5O21ONKBEzLSCs2jepFrFd11c4acqCahnEadSReB1uQbhmocNOvAOm60mtICqVGFFvszeuXdbuiyXZWM2RVVXJ2Na/bVU1WDQNZ4QApEPPje5gjwBw+jHjUqzKKGihhWBavCUvoVe2qZckWTuJ6EqrDyHfgpDxH7Mk5LJvXeSibUGXuSKgJFTgMDbUbUiOjeg5IVI6k8S9KSdtAaVMAFLkxwGtyKd21Q5Tu3g6le7ZFaXOAtI7SODA3c0pbNqc0sQWhAcPZTRiueAxXNmG4tY7htq0Zbg9wA2QH0La7DO/dIYY7t8Pwvm0x3BUgrWNYBuYuznB3wHBWtim4tGC48seVpX/e4f+lfP8GytkqDbAOdA/evbxuFaMwOj+RGniIhvHwBjlAjL0X3qJtRcjkvQyfXxq9BjPajO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]},{"id":"rs_0c8ed9b4c0ead61e0168f8dd2357e08194b33b16582fd894f1","type":"reasoning","encrypted_content":"gAAAAABo-N0mc_-Nf1ZbMUuSCc_Xx9gfAJe5QdNP44rvLL6EqdQkU_678i3uYk7SA7FdDk6IgL0JVP8XoV8XmC4M-oh3XdBuoCs_v5r_XDGc1U5bYN-uRnhdzZDXF1t_cEHmsK7T1_VbrSKQccYTOcMg8doyM2C7e3Le3_v_hFMEaCW2NvItsB4j-6bt5TyeIw3g989c1_chsIVQkFK6aGV6nUVcoIDDs4jIjLjw6EQsCRgONmFwc1VwwbXeJdhimDrJ7R2ChDajbnR-JIhlGR55SFTDKdzuuGq-q9jdUNAN0By3YyqAxCUpw2VwcRl06I3rdSRwqw__pUYFQF_NkM0mZNMEHFFEEi1PY45cLKLSpfuPMPfS3GbRlDbD877wQ9MoVkAYIzpIesNEE5TfC3PULyJuvYpOyvmofS7Pi-SBnKOycs5Pgc9q6KiqXmhzNfezD144me-ckix01pc9lKxL4y5W91eexzfZAq_6wUIpYKQapQgsP-dNLJAvMdVegxfN36rDse6cbPxe4jVbWlNth0vB2k27mJSrtBdtjf03THJTzMcxYluC0EWncJPOctmHutcJ3pPzRwWK94JgRXk-FbFz41xSMOR42pA11zYquCJPhkMrog97YAhBilYeI62CHdwjRzdk9V_ZCFinbSR5YbWrJdWSwDUFjIIbadOOO4ms7_Ogk3YVF_Whh6ukw9D-VpnBoCDMwX8n0gjDeDb_5JW6XzqxiPY5f4W9Up_e7Tx1o0Y6-D8XT1KKit48mw6aWb2AmjwRFYa5iN9E4iQBy5RaPhoihOHHqy0j6v21ZUA1X7r6qi-D3gDPiwPzrsUhvqhLdiYTDvhOKVIwwicrAcFj7RflC2SspOiwQ-pAmZM7-Qr9fkqU-Bzk1XbPiYaXTLRg2nVpHZ84kHQBsvRicZiuP6-EafrO9cBAt4f33zNLi3wYgipXUkX9UDdQJ6wljIHzQTSG4sHJeoHfJ6iO6a6Ol81IOdrvSSPp-peLbty_6G-o-O8qZJTMVTFVFPTov3eC7iP1NZLPI3PJa30RNXq_7ADgCkF4go0Z8ApgjDHVMbYW85ChaeqJ-iAr-fwVa8EqElCtRLEbfEQliabyXjNQ_r-aQXaAHO_yMbsiyLyxXcDWSmfY2cug5nKeN0WOehnggO1I0p9R1M4G1uWSJmGxvGhyJty361KORZc7NBLluz7AkO5moZ_kxjYbLJ1psD2MpZ3pV5kLE0mXH_Cosk4XUraYful24ypemkWVVvJbXBQ363ejWfbvSmg2XIBuFrByP__gV-tZXSLtD5-AsRm8uydhpMbjtkStJsZdU8bbfAGpkuoyNKLbtBFoQgp9Pj0o4VtAkA1VW1E1FM4e1thK90KxElooFC_PWF3kevg0eB4e8i3XOKKXkXJrhla3cApS1GwRawCZlUr3uPqeJ5QgQrXkwE8w_2wMyhhK9t3iL5Sq3OEVxHtYfhaV-ugT9iNdu5Ab3DD08iRRg6m8jbi0m9lAjUHYA5-wd-coIejyCLSAuzAKIIT-RghSUb4fmZazkHYcjUeaDmpF6R_QxnzugunHWSUt9YofNC0LQoAZ3ggulzfUgAP5i5APjbqbPpoyujs6o_mKEeL2GX4G_KD66guY4BjuK-M4TcnFuy1uiaqwhOqikoE-4kDdLr3Ij5OiGoelWfSFI0v6lzmQO_pXThusPIvCe0HhXc5zJjx4HPT-83sUdidSJQmxoWc1sgw7xBly8MD-RCkZStXGaWfnkjtb0DB-SkLFuCLc343A4ZvCnxpj7Q-iboCBlzXZx6c9KHZOtwuKJ0WewP4lZZnRWw1eMf0lGqnCE6APIMHZi-ylP4nrSc6dKOeaoRSv6jgK-Sd1ezUzT2qKWp3e-vvmcIm8CDYrtHeCtLL0ZOEg5MntO4j8jShf_GeZjrLseohL5GiBuAXxUdwDeVtx5bbXxgfAMEWqyK1Xj2d2OEMbnpNCs15SV8Cw_1ZQjmHrbAdUojnH2dOL9BYwkagtubFLmBYUpSzzIxdOg85xbT4GGUlgnOSo9abQFWHNXYaDOyIgqH7X1UtQizwH9XeK2ykTF5jiqzbqEwAjazO4BI98RybPqwyUISkIQEg6dh9VIMf14khVb3XhdZFRvYhv7w0WDBjFpTjbrS6aWxVzwErMNH3OQO4IwP0nK-xnIAbxCmX1j4gFonHk_G-Fj0c6pU0f9EdsGS-MjmZz2K196YGpllHPbRVe7no5hiPfUKul8jSUOkyDPDFtLXDahpQ05Zjn4Ny3uJgNxeMKTWZp6UhVrOqt71jK3XoyJJnWYlNVsxyTYGX7U4-JgPPnAjbZNunWyXOE8mH_D9GT35fLGaj4drzWJxVYSpSAwakLGf_mJLEldSMM5jOGT0hX1ptFC3kU-qV32EPrt35XMXBEQMLEF5sUdo_EXbTdN-dKq7PkfHur2IpEDTUDkoWfrDA_tdzWYsS4ZAhrLA4rlRCPdYdoI11VrJ1LhjRLvR7rbv5bfhjpPHzMhMYmWPJVQdizJb-EuFNMY9x6jqWLrqeQ3kGIPibOfeYxv3vH8etxMxdpbvG6wyRal2w9rxtCDxBPcsxaiL8lgdhygQOGI0-ltUpDlmxK6rS0hUEwFwfuUai4jOlr8fj5rIOBmQkuXAedTfS3irI0luBjX3Mx63RHWanjZ8_7hllUBcr_CLQjVJib4P3jNvsK","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"Apples + are tasty"}]},{"role":"user","content":[{"type":"input_text","text":"What + apple is not tasty?"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990045281a916701-DFW + cf-ray: 99295dcf488b3aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 13:51:21 GMT + date: Wed, 22 Oct 2025 13:33:35 GMT openai-organization: posit-esfrkf - openai-processing-ms: '838' + openai-processing-ms: '8634' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=bLepPrsPX2JRrpBfqogLnzAURT.PShyh3bbxFC9PAGM-1760709081-1.0.1.1-iV17L9Lep.4IiVxrRQ9LF43auzEescTxInxXzG_IT6kTRK_EwbXIqTSDofFFxmYQfzAPU_mppwA9uIPv_tZwIHCz7KDcsQ8lvQmTlhqSZak; - path=/; expires=Fri, 17-Oct-25 14:21:21 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=GnWLtTX19Q2TLYsGiZmnXPB3YOY6o5nJnFMAIOCz49U-1761140015-1.0.1.1-KiSjcXYo0TFUq2MJdAJ.KPfebxew2sq7x1gfa7BH5EXvPObdLrjo9kkYldCdYO1lyQ4Gi26inByOo_25uSI8cfv9iLcqmCnTEQwlcuwJj_8; + path=/; expires=Wed, 22-Oct-25 14:03:35 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=083PHm.qx.112qJ1Nv9AI8gQh9lMMUKY55z1VuefcPc-1760709081207-0.0.1.1-604800000; + - _cfuvid=Jn46oXRRa..CeheMhqyWHWL6gkw5P2vdjWb5V9XtX0g-1761140015017-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '843' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999897' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_95c602780420420fa16cdcf540d75b98 + x-envoy-upstream-service-time: '8651' + x-request-id: req_ca8ed6582f9241188ac444ee74fd8372 body: string: |- { - "id": "resp_09521272d54717080168f249d860988197be0cd810a56f9eb5", + "id": "resp_0c8ed9b4c0ead61e0168f8dd2679488194a0870dd9230a9842", "object": "response", - "created_at": 1760709080, + "created_at": 1761140011, "status": "completed", "background": false, "billing": { @@ -161,10 +155,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "msg_09521272d54717080168f249d91e108197956b7019865bd38b", + "id": "rs_0c8ed9b4c0ead61e0168f8dd2c49d08194b117e784a403774a", + "type": "reasoning", + "encrypted_content": "gAAAAABo-N0uuHqUxv-PNciYEvVmEFXZUql1CPSGA6a_CcBsAkO96SZUhhw_pn9pmBtFblRbf0JDyypLqp-EBFZl8_Avy0haCv9rijZP1tVWIsVB53-6nKkUOrFLuWw1sBqFxvqcaZH9wjvXSdwsYmsB2LWVmI97iWlUVCQhZ08UeXAK3hVfrU3N3LHm9YdorDpCDv11vq_sR9d7Fd6Go-0Ts4VY4xr5IGOxOv7MsXXXafrj27jdzv2pzZ8guqly7lUzbtMvI2y6xo728Vm0VBv9-BD7e3MmqpPbl7RdZVv1hyusClb_xh-BLH8w0gidBGNAB9V9aOsVG2-wKvN9uB49mg-I4M_-nA-vaz7s-QcoVKN4n1E0fbJnR5qK_Emthj3L1wlFbDwbcVmMBCLgSx-dBP_rtiUPr7Wv6UwxU9HKIeWVwnL-ywEpemokqmzgfDrb4DF1WNnECsXS4dPMX3CjYIPpuSQJWTW7KIYxMdJrOB0r-YaWmy7IieYGbBLxi8x7AkQ1LSoSx2IemO-jYW-XDwHmMNmazg-OUOJ46SAfitqK0OsWjYnKEXgi5Fts3y8KZCDm2tZ-Z03ncnw4xDSK-M6wrt7guQdXkXfotqAorGMmlWN3hCKguD5dngaGH0AbvkVozmk0v6DBrrwcmFdqaNqO3NfYjjnlNDtR-xKE0Q2ZoL0Nt1nwdp0MBtRVSq6-mJwkjfpQLul4RKvVNgTyOD_WySjG3N7AMwPPT9rGswXe_RPEDstTKJUxM2evN7i70sTWJyv7ujJUIqju6Z2iLajCKHl5NKP7st3FS8p4z8UWTZUezoGIQRU_pEtFknLU92hAfoB4MZb9t-QyxZlj5GQ9ECCW79lHJ6hhXH72U-a-hEIk_wjHl7y3J6lommSSwxH94BJMpyyAh_hU7PJ0F7vNvbfSt3T0qjgwCB04xfuBzJt0cfBA6CB75ZDGYEDaS6QuMy2B6Fg0-eqa-5Kkpe0T6updbZToLFJmdZD2tRNZPoy3sX1ZcfBxi3xBmrRBzebNRoZUhhOm9Zn2CRHQt9BOBwsXNu-gHUL0HUNPInxdmJuzFgFwTj-Nqz3LJ4F5aqO2YwPQp3nNPGPRrIDsN90DZ8kNsW2TnXfkgQpcyYc6rSHLPdQ10xuHYPziH0H5suxIvNZsc16_kjv3H9XQnRGLlrFACgHNIEqSpdg33aCiv9vHMCOvvtmqYuuIXPwOuFAskjs46OEDU71dTPJ3JfkdqgdmnbGjx3C6hK_sQJNPMFEXqON8CtzLkMbufcIsDdHnMEHUA0mYIjaWna1lpog8q6ttA13rH6HpNdzQy9LmPrehU73npNBao8xNTNaIDOYLvyBaSdqXClOtMXEZc2ifhsLYMNuezCuoOSMKDFmDZo52XbGz4yCLWthPs3rvYE4Rz0gHdhvoWBIut-06772c8uJO3PTBJGmmjsOcN35jwj9yJOHtkc-f-2q5VCO0ZVXQhjHg-naRPmZG9u7G5OxYCm-Ww1GwkKBJoxo3V80gurdm9yK9A4eci_7tul9BiASarZfYMMDs_BvUP2E5GDJJxi_c8PCjw3LOLzjWqSYgFT8SNQ2I3rBr7kngtC8r_qjXfPbPrYg-7Ca2iYok6XnHBjfoEAYFbRbjry4BTfDWJywgnQNOB26kWtXamG5HqyCXZh7lbs2p8XGcZb7GWEsNBiZzpQFfOFpa9CXpftJHtt7IEjXT7mP5F7-N8HHd--RBAZzhKVj0WYiajdVhbF5_jN1MvFPZxX1D2V26RXJdEKoWlXU5LaxebbuEOXbswO439FqzXuwLs_EMq-iKSAjXDPFXPF8JYRuOvAQ5eCwfbgGTYB-HEQ4wyp-VUp4qkgubi1KazZBLK4wpqS4mImS8K8qV_xjnIjoLpTpawSbCAO5_PHVXJh049xgLluzfR96AmDH5yXdQNNKzXTvXe-XJNlKUAJHDgAmM8J-ean86d6BLalZJsweeXMUaZcoPJfqchRerq3xvYni13HICTKjmLUt6lWd83tNkigdZbgx3Xz9wLlEPnKKTpPSkRkA_Hp-p4xOt6jHAyMWoSjpl4iRq_KoVWFeHCCsrNal-PnmB9Lk-sUCX3A-zwZyIBHmYpqOs74lpK84hf-0KVQa-pgq2_maHvcD-kBvd0_KRrUVbtBTbJ-X9Dm8vy4xN10SM0LYOT7LAbd3zaFtPVosbxLl8JINWj6H6_ZeY7lek08crRqbnvUdg1jw6edSkzyejqWvAPG8Q4fnP7IC185mDFcsPmtq-ntWY6zOVJ_NBkzT5t3XqZSJtwYmNYD16I4-rkOqHtl3WbqD4GI8qRDfOE9HYYMhxE5EKQtH3pCbeVwFzbTLkQ_ckcA7E0nmkTYo7Mx7BWbMlLOGFEKUagB-7PWrYmfZw5pDZODiyA3ZaeDqU2N-XAgd583sA74eBrQR5f72csZ5kYKJCmNnxNecpOqBYIMPWn17lSyjrmHjadQAsfDmI-cmmv4y_J8K0RDV4hTXigZhcCk0v92bcr_SF3cttb_kkAVcPDvtXkWgYOUcscQ0ekNc=", + "summary": [] + }, + { + "id": "msg_0c8ed9b4c0ead61e0168f8dd2ebb148194901915bef5425f6d", "type": "message", "status": "completed", "content": [ @@ -172,7 +172,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "Red Delicious" + "text": "Red Delicious." } ], "role": "assistant" @@ -182,13 +182,13 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -201,67 +201,61 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 83, + "input_tokens": 82, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 3, + "output_tokens": 265, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 256 }, - "total_tokens": 86 + "total_tokens": 347 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 13:51:21 + recorded_at: 2025-10-22 13:33:35 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Be terse."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,JVBERi0xLjMKJcTl8uXrp/Og0MTGCjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0MTggPj4Kc3RyZWFtCngBnZLdS8MwFMXf81cc31aQNGnXrIEhuDlQwY9hwAfxoXYZq2v31Qruv/e26zb3oUzJQwK5ueeXc+4cfcwhaCnpoaU9LCyeMYHbzSXiHLJaeUwV5W22qUurk0BavU7ZCEO4j2i34d51b67o2cUFOlfdSkD5XARaa7Q8NMOAhyFUoLhu7ssRCRMguTk1KLFk+URpwf1QEFCGjoFfXoj1ZjK4xpScZojG5WyW2tyBeUfPsD7cp1k0qagu4+IjSo39LNCAs6Y7TUeH3AsJbVeLulQy9MXeXfdEZCkUV95+rxc0ooUDGaJhHbzC3BI+9f0XPtu3SQYel5os+zv/YS8leOAf9CqivFjuGfJ9HDwynJXjsGt4y+cqWOcq68hX24rVq3N9W+I6GqR2ieckHo+izGHkPQXv1wVnu2F81/aPh93UtTajmfpFm7JZTRU2EWFg0yROph85oskAq8+XpxukydiimMJGBYqRzTgcVuV5GmvzOKvfOpm19xnbWYHhdIH1RA22vOcERWRJzmFG5CZ9iVVTh/sHsy3j9RD+DN3/ArZS/GcKZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8IC9UeXBlIC9QYWdlIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA0IDAgUiAvQ29udGVudHMgMyAwIFIgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KPj4KZW5kb2JqCjQgMCBvYmoKPDwgL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0gL0NvbG9yU3BhY2UgPDwgL0NzMSA1IDAgUiA+PiAvRm9udCA8PCAvVFQxIDYgMCBSCi9UVDIgNyAwIFIgL1RUMyA4IDAgUiA+PiA+PgplbmRvYmoKMTAgMCBvYmoKPDwgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0xlbmd0aCAyNjEyIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4AZ2Wd1RT2RaHz703vdASIiAl9Bp6CSDSO0gVBFGJSYBQAoaEJnZEBUYUESlWZFTAAUeHImNFFAuDgmLXCfIQUMbBUURF5d2MawnvrTXz3pr9x1nf2ee319ln733XugBQ/IIEwnRYAYA0oVgU7uvBXBITy8T3AhgQAQ5YAcDhZmYER/hEAtT8vT2ZmahIxrP27i6AZLvbLL9QJnPW/3+RIjdDJAYACkXVNjx+JhflApRTs8UZMv8EyvSVKTKGMTIWoQmirCLjxK9s9qfmK7vJmJcm5KEaWc4ZvDSejLtQ3pol4aOMBKFcmCXgZ6N8B2W9VEmaAOX3KNPT+JxMADAUmV/M5yahbIkyRRQZ7onyAgAIlMQ5vHIOi/k5aJ4AeKZn5IoEiUliphHXmGnl6Mhm+vGzU/liMSuUw03hiHhMz/S0DI4wF4Cvb5ZFASVZbZloke2tHO3tWdbmaPm/2d8eflP9Pch6+1XxJuzPnkGMnlnfbOysL70WAPYkWpsds76VVQC0bQZA5eGsT+8gAPIFALTenPMehmxeksTiDCcLi+zsbHMBn2suK+g3+5+Cb8q/hjn3mcvu+1Y7phc/gSNJFTNlReWmp6ZLRMzMDA6Xz2T99xD/48A5ac3Jwyycn8AX8YXoVVHolAmEiWi7hTyBWJAuZAqEf9Xhfxg2JwcZfp1rFGh1XwB9hTlQuEkHyG89AEMjAyRuP3oCfetbEDEKyL68aK2Rr3OPMnr+5/ofC1yKbuFMQSJT5vYMj2RyJaIsGaPfhGzBAhKQB3SgCjSBLjACLGANHIAzcAPeIACEgEgQA5YDLkgCaUAEskE+2AAKQTHYAXaDanAA1IF60AROgjZwBlwEV8ANcAsMgEdACobBSzAB3oFpCILwEBWiQaqQFqQPmULWEBtaCHlDQVA4FAPFQ4mQEJJA+dAmqBgqg6qhQ1A99CN0GroIXYP6oAfQIDQG/QF9hBGYAtNhDdgAtoDZsDscCEfCy+BEeBWcBxfA2+FKuBY+DrfCF+Eb8AAshV/CkwhAyAgD0UZYCBvxREKQWCQBESFrkSKkAqlFmpAOpBu5jUiRceQDBoehYZgYFsYZ44dZjOFiVmHWYkow1ZhjmFZMF+Y2ZhAzgfmCpWLVsaZYJ6w/dgk2EZuNLcRWYI9gW7CXsQPYYew7HA7HwBniHHB+uBhcMm41rgS3D9eMu4Drww3hJvF4vCreFO+CD8Fz8GJ8Ib4Kfxx/Ht+PH8a/J5AJWgRrgg8hliAkbCRUEBoI5wj9hBHCNFGBqE90IoYQecRcYimxjthBvEkcJk6TFEmGJBdSJCmZtIFUSWoiXSY9Jr0hk8k6ZEdyGFlAXk+uJJ8gXyUPkj9QlCgmFE9KHEVC2U45SrlAeUB5Q6VSDahu1FiqmLqdWk+9RH1KfS9HkzOX85fjya2Tq5FrleuXeyVPlNeXd5dfLp8nXyF/Sv6m/LgCUcFAwVOBo7BWoUbhtMI9hUlFmqKVYohimmKJYoPiNcVRJbySgZK3Ek+pQOmw0iWlIRpC06V50ri0TbQ62mXaMB1HN6T705PpxfQf6L30CWUlZVvlKOUc5Rrls8pSBsIwYPgzUhmljJOMu4yP8zTmuc/jz9s2r2le/7wplfkqbip8lSKVZpUBlY+qTFVv1RTVnaptqk/UMGomamFq2Wr71S6rjc+nz3eez51fNP/k/IfqsLqJerj6avXD6j3qkxqaGr4aGRpVGpc0xjUZmm6ayZrlmuc0x7RoWgu1BFrlWue1XjCVme7MVGYls4s5oa2u7act0T6k3as9rWOos1hno06zzhNdki5bN0G3XLdTd0JPSy9YL1+vUe+hPlGfrZ+kv0e/W3/KwNAg2mCLQZvBqKGKob9hnmGj4WMjqpGr0SqjWqM7xjhjtnGK8T7jWyawiZ1JkkmNyU1T2NTeVGC6z7TPDGvmaCY0qzW7x6Kw3FlZrEbWoDnDPMh8o3mb+SsLPYtYi50W3RZfLO0sUy3rLB9ZKVkFWG206rD6w9rEmmtdY33HhmrjY7POpt3mta2pLd92v+19O5pdsN0Wu067z/YO9iL7JvsxBz2HeIe9DvfYdHYou4R91RHr6OG4zvGM4wcneyex00mn351ZzinODc6jCwwX8BfULRhy0XHhuBxykS5kLoxfeHCh1FXbleNa6/rMTdeN53bEbcTd2D3Z/bj7Kw9LD5FHi8eUp5PnGs8LXoiXr1eRV6+3kvdi72rvpz46Pok+jT4Tvna+q30v+GH9Av12+t3z1/Dn+tf7TwQ4BKwJ6AqkBEYEVgc+CzIJEgV1BMPBAcG7gh8v0l8kXNQWAkL8Q3aFPAk1DF0V+nMYLiw0rCbsebhVeH54dwQtYkVEQ8S7SI/I0shHi40WSxZ3RslHxUXVR01Fe0WXRUuXWCxZs+RGjFqMIKY9Fh8bFXskdnKp99LdS4fj7OIK4+4uM1yWs+zacrXlqcvPrpBfwVlxKh4bHx3fEP+JE8Kp5Uyu9F+5d+UE15O7h/uS58Yr543xXfhl/JEEl4SyhNFEl8RdiWNJrkkVSeMCT0G14HWyX/KB5KmUkJSjKTOp0anNaYS0+LTTQiVhirArXTM9J70vwzSjMEO6ymnV7lUTokDRkUwoc1lmu5iO/kz1SIwkmyWDWQuzarLeZ0dln8pRzBHm9OSa5G7LHcnzyft+NWY1d3Vnvnb+hvzBNe5rDq2F1q5c27lOd13BuuH1vuuPbSBtSNnwy0bLjWUb326K3tRRoFGwvmBos+/mxkK5QlHhvS3OWw5sxWwVbO3dZrOtatuXIl7R9WLL4oriTyXckuvfWX1X+d3M9oTtvaX2pft34HYId9zd6brzWJliWV7Z0K7gXa3lzPKi8re7V+y+VmFbcWAPaY9kj7QyqLK9Sq9qR9Wn6qTqgRqPmua96nu37Z3ax9vXv99tf9MBjQPFBz4eFBy8f8j3UGutQW3FYdzhrMPP66Lqur9nf19/RO1I8ZHPR4VHpcfCj3XVO9TXN6g3lDbCjZLGseNxx2/94PVDexOr6VAzo7n4BDghOfHix/gf754MPNl5in2q6Sf9n/a20FqKWqHW3NaJtqQ2aXtMe9/pgNOdHc4dLT+b/3z0jPaZmrPKZ0vPkc4VnJs5n3d+8kLGhfGLiReHOld0Prq05NKdrrCu3suBl69e8blyqdu9+/xVl6tnrjldO32dfb3thv2N1h67npZf7H5p6bXvbb3pcLP9luOtjr4Ffef6Xfsv3va6feWO/50bA4sG+u4uvnv/Xtw96X3e/dEHqQ9eP8x6OP1o/WPs46InCk8qnqo/rf3V+Ndmqb307KDXYM+ziGePhrhDL/+V+a9PwwXPqc8rRrRG6ketR8+M+YzderH0xfDLjJfT44W/Kf6295XRq59+d/u9Z2LJxPBr0euZP0reqL45+tb2bedk6OTTd2nvpqeK3qu+P/aB/aH7Y/THkensT/hPlZ+NP3d8CfzyeCZtZubf94Tz+wplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKWyAvSUNDQmFzZWQgMTAgMCBSIF0KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RUcmVlUm9vdCAvSyAxMSAwIFIgL1BhcmVudFRyZWUgMTMgMCBSIC9JRFRyZWUgMTQgMCBSPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]},{"role":"assistant","content":[{"type":"output_text","text":"\"Apples - are tasty\""}]},{"role":"user","content":[{"type":"input_text","text":"What - apple is not tasty?"}]},{"role":"assistant","content":[{"type":"output_text","text":"Red - Delicious"}]},{"role":"user","content":[{"type":"input_text","text":"What - apple is not tasty?"}]}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"store":false}' + the title of this document?"}]},{"role":"user","content":[{"type":"input_file","filename":"apples.pdf","file_data":"data:application/pdf;base64,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IC9TIC9Eb2N1bWVudCAvUCAxMiAwIFIgL0sgWyAxNSAwIFIgMTYgMCBSIDE3IDAgUiAxOCAwIFIKXSAgPj4KZW5kb2JqCjE1IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9IIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMSAgPj4KZW5kb2JqCjE2IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMiAgPj4KZW5kb2JqCjE3IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgMyAgPj4KZW5kb2JqCjE4IDAgb2JqCjw8IC9UeXBlIC9TdHJ1Y3RFbGVtIC9TIC9QIC9QIDExIDAgUiAvUGcgMSAwIFIgL0sgNCAgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAxIC9LaWRzIFsgMSAwIFIgXSA+PgplbmRvYmoKMTkgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cgL1BhZ2VzIDIgMCBSIC9NYXJrSW5mbyA8PCAvTWFya2VkIHRydWUgPj4gL1N0cnVjdFRyZWVSb290CjEyIDAgUiA+PgplbmRvYmoKOSAwIG9iagpbIDEgMCBSICAvWFlaIDAgNzkyIDAgXQplbmRvYmoKNiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9BQUFBQUIrSGVsdmV0aWNhTmV1ZS1Cb2xkIC9Gb250RGVzY3JpcHRvcgoyMCAwIFIgL0VuY29kaW5nIC9NYWNSb21hbkVuY29kaW5nIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDEyMSAvV2lkdGhzIFsgMjc4CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2ODUgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NzQgMCAwIDAgNTc0IDAg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jO/xI2Z6CYniKrzNS+hbXGv4TGgwOR19IS1zZ+NZw3eEuCNEEndI2IC3YEMIGnrkauYIU+Nqa1yNsyfrH9jAwPqU8HTtsfBk7ZTwBhnuqD2jo572x4o4EyKLs8VMJjPoxhi1+KcM89Y5yIeWHDZnbpvl4kThkol/PfoN6L+nmgplbmRzdHJlYW0KZW5kb2JqCjI3IDAgb2JqCjw8IC9UaXRsZSAoYXBwbGVzKSAvUHJvZHVjZXIgKG1hY09TIFZlcnNpb24gMTUuMiBcKEJ1aWxkIDI0QzEwMVwpIFF1YXJ0eiBQREZDb250ZXh0KQovQ3JlYXRvciAoUGFnZXMpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNTAyMDYxNjAzNDFaMDAnMDAnKSAvTW9kRGF0ZSAoRDoyMDI1MDIwNjE2MDM0MVowMCcwMCcpCj4+CmVuZG9iagp4cmVmCjAgMjgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwNTEyIDAwMDAwIG4gCjAwMDAwMDM5NTggMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAowMDAwMDAwNjE2IDAwMDAwIG4gCjAwMDAwMDM0NDggMDAwMDAgbiAKMDAwMDAwNDE4MiAwMDAwMCBuIAowMDAwMDA3MDQ4IDAwMDAwIG4gCjAwMDAwMTE5ODUgMDAwMDAgbiAKMDAwMDAwNDE0MyAwMDAwMCBuIAowMDAwMDAwNzM1IDAwMDAwIG4gCjAwMDAwMDM1NzEgMDAwMDAgbiAKMDAwMDAwMzQ4NCAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzY3MCAwMDAwMCBuIAowMDAwMDAzNzQyIDAwMDAwIG4gCjAwMDAwMDM4MTQgMDAwMDAgbiAKMDAwMDAwMzg4NiAwMDAwMCBuIAowMDAwMDA0MDQxIDAwMDAwIG4gCjAwMDAwMDQ1NjIgMDAwMDAgbiAKMDAwMDAwNDgzNiAwMDAwMCBuIAowMDAwMDA3NDY1IDAwMDAwIG4gCjAwMDAwMDc3MzEgMDAwMDAgbiAKMDAwMDAxMjQ0OCAwMDAwMCBuIAowMDAwMDEyMTUzIDAwMDAwIG4gCjAwMDAwMTI3MTMgMDAwMDAgbiAKMDAwMDAxMzY0NSAwMDAwMCBuIAp0cmFpbGVyCjw8IC9TaXplIDI4IC9Sb290IDE5IDAgUiAvSW5mbyAyNyAwIFIgL0lEIFsgPGI2ZTBhMjA4YmMwOWEwNDQ0NjU3MmU0NGQ1ODViNDQwPgo8YjZlMGEyMDhiYzA5YTA0NDQ2NTcyZTQ0ZDU4NWI0NDA+IF0gPj4Kc3RhcnR4cmVmCjEzODQxCiUlRU9GCg=="}]},{"id":"rs_0c8ed9b4c0ead61e0168f8dd2357e08194b33b16582fd894f1","type":"reasoning","encrypted_content":"gAAAAABo-N0mc_-Nf1ZbMUuSCc_Xx9gfAJe5QdNP44rvLL6EqdQkU_678i3uYk7SA7FdDk6IgL0JVP8XoV8XmC4M-oh3XdBuoCs_v5r_XDGc1U5bYN-uRnhdzZDXF1t_cEHmsK7T1_VbrSKQccYTOcMg8doyM2C7e3Le3_v_hFMEaCW2NvItsB4j-6bt5TyeIw3g989c1_chsIVQkFK6aGV6nUVcoIDDs4jIjLjw6EQsCRgONmFwc1VwwbXeJdhimDrJ7R2ChDajbnR-JIhlGR55SFTDKdzuuGq-q9jdUNAN0By3YyqAxCUpw2VwcRl06I3rdSRwqw__pUYFQF_NkM0mZNMEHFFEEi1PY45cLKLSpfuPMPfS3GbRlDbD877wQ9MoVkAYIzpIesNEE5TfC3PULyJuvYpOyvmofS7Pi-SBnKOycs5Pgc9q6KiqXmhzNfezD144me-ckix01pc9lKxL4y5W91eexzfZAq_6wUIpYKQapQgsP-dNLJAvMdVegxfN36rDse6cbPxe4jVbWlNth0vB2k27mJSrtBdtjf03THJTzMcxYluC0EWncJPOctmHutcJ3pPzRwWK94JgRXk-FbFz41xSMOR42pA11zYquCJPhkMrog97YAhBilYeI62CHdwjRzdk9V_ZCFinbSR5YbWrJdWSwDUFjIIbadOOO4ms7_Ogk3YVF_Whh6ukw9D-VpnBoCDMwX8n0gjDeDb_5JW6XzqxiPY5f4W9Up_e7Tx1o0Y6-D8XT1KKit48mw6aWb2AmjwRFYa5iN9E4iQBy5RaPhoihOHHqy0j6v21ZUA1X7r6qi-D3gDPiwPzrsUhvqhLdiYTDvhOKVIwwicrAcFj7RflC2SspOiwQ-pAmZM7-Qr9fkqU-Bzk1XbPiYaXTLRg2nVpHZ84kHQBsvRicZiuP6-EafrO9cBAt4f33zNLi3wYgipXUkX9UDdQJ6wljIHzQTSG4sHJeoHfJ6iO6a6Ol81IOdrvSSPp-peLbty_6G-o-O8qZJTMVTFVFPTov3eC7iP1NZLPI3PJa30RNXq_7ADgCkF4go0Z8ApgjDHVMbYW85ChaeqJ-iAr-fwVa8EqElCtRLEbfEQliabyXjNQ_r-aQXaAHO_yMbsiyLyxXcDWSmfY2cug5nKeN0WOehnggO1I0p9R1M4G1uWSJmGxvGhyJty361KORZc7NBLluz7AkO5moZ_kxjYbLJ1psD2MpZ3pV5kLE0mXH_Cosk4XUraYful24ypemkWVVvJbXBQ363ejWfbvSmg2XIBuFrByP__gV-tZXSLtD5-AsRm8uydhpMbjtkStJsZdU8bbfAGpkuoyNKLbtBFoQgp9Pj0o4VtAkA1VW1E1FM4e1thK90KxElooFC_PWF3kevg0eB4e8i3XOKKXkXJrhla3cApS1GwRawCZlUr3uPqeJ5QgQrXkwE8w_2wMyhhK9t3iL5Sq3OEVxHtYfhaV-ugT9iNdu5Ab3DD08iRRg6m8jbi0m9lAjUHYA5-wd-coIejyCLSAuzAKIIT-RghSUb4fmZazkHYcjUeaDmpF6R_QxnzugunHWSUt9YofNC0LQoAZ3ggulzfUgAP5i5APjbqbPpoyujs6o_mKEeL2GX4G_KD66guY4BjuK-M4TcnFuy1uiaqwhOqikoE-4kDdLr3Ij5OiGoelWfSFI0v6lzmQO_pXThusPIvCe0HhXc5zJjx4HPT-83sUdidSJQmxoWc1sgw7xBly8MD-RCkZStXGaWfnkjtb0DB-SkLFuCLc343A4ZvCnxpj7Q-iboCBlzXZx6c9KHZOtwuKJ0WewP4lZZnRWw1eMf0lGqnCE6APIMHZi-ylP4nrSc6dKOeaoRSv6jgK-Sd1ezUzT2qKWp3e-vvmcIm8CDYrtHeCtLL0ZOEg5MntO4j8jShf_GeZjrLseohL5GiBuAXxUdwDeVtx5bbXxgfAMEWqyK1Xj2d2OEMbnpNCs15SV8Cw_1ZQjmHrbAdUojnH2dOL9BYwkagtubFLmBYUpSzzIxdOg85xbT4GGUlgnOSo9abQFWHNXYaDOyIgqH7X1UtQizwH9XeK2ykTF5jiqzbqEwAjazO4BI98RybPqwyUISkIQEg6dh9VIMf14khVb3XhdZFRvYhv7w0WDBjFpTjbrS6aWxVzwErMNH3OQO4IwP0nK-xnIAbxCmX1j4gFonHk_G-Fj0c6pU0f9EdsGS-MjmZz2K196YGpllHPbRVe7no5hiPfUKul8jSUOkyDPDFtLXDahpQ05Zjn4Ny3uJgNxeMKTWZp6UhVrOqt71jK3XoyJJnWYlNVsxyTYGX7U4-JgPPnAjbZNunWyXOE8mH_D9GT35fLGaj4drzWJxVYSpSAwakLGf_mJLEldSMM5jOGT0hX1ptFC3kU-qV32EPrt35XMXBEQMLEF5sUdo_EXbTdN-dKq7PkfHur2IpEDTUDkoWfrDA_tdzWYsS4ZAhrLA4rlRCPdYdoI11VrJ1LhjRLvR7rbv5bfhjpPHzMhMYmWPJVQdizJb-EuFNMY9x6jqWLrqeQ3kGIPibOfeYxv3vH8etxMxdpbvG6wyRal2w9rxtCDxBPcsxaiL8lgdhygQOGI0-ltUpDlmxK6rS0hUEwFwfuUai4jOlr8fj5rIOBmQkuXAedTfS3irI0luBjX3Mx63RHWanjZ8_7hllUBcr_CLQjVJib4P3jNvsK","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"Apples + are tasty"}]},{"role":"user","content":[{"type":"input_text","text":"What + apple is not tasty?"}]},{"id":"rs_0c8ed9b4c0ead61e0168f8dd2c49d08194b117e784a403774a","type":"reasoning","encrypted_content":"gAAAAABo-N0uuHqUxv-PNciYEvVmEFXZUql1CPSGA6a_CcBsAkO96SZUhhw_pn9pmBtFblRbf0JDyypLqp-EBFZl8_Avy0haCv9rijZP1tVWIsVB53-6nKkUOrFLuWw1sBqFxvqcaZH9wjvXSdwsYmsB2LWVmI97iWlUVCQhZ08UeXAK3hVfrU3N3LHm9YdorDpCDv11vq_sR9d7Fd6Go-0Ts4VY4xr5IGOxOv7MsXXXafrj27jdzv2pzZ8guqly7lUzbtMvI2y6xo728Vm0VBv9-BD7e3MmqpPbl7RdZVv1hyusClb_xh-BLH8w0gidBGNAB9V9aOsVG2-wKvN9uB49mg-I4M_-nA-vaz7s-QcoVKN4n1E0fbJnR5qK_Emthj3L1wlFbDwbcVmMBCLgSx-dBP_rtiUPr7Wv6UwxU9HKIeWVwnL-ywEpemokqmzgfDrb4DF1WNnECsXS4dPMX3CjYIPpuSQJWTW7KIYxMdJrOB0r-YaWmy7IieYGbBLxi8x7AkQ1LSoSx2IemO-jYW-XDwHmMNmazg-OUOJ46SAfitqK0OsWjYnKEXgi5Fts3y8KZCDm2tZ-Z03ncnw4xDSK-M6wrt7guQdXkXfotqAorGMmlWN3hCKguD5dngaGH0AbvkVozmk0v6DBrrwcmFdqaNqO3NfYjjnlNDtR-xKE0Q2ZoL0Nt1nwdp0MBtRVSq6-mJwkjfpQLul4RKvVNgTyOD_WySjG3N7AMwPPT9rGswXe_RPEDstTKJUxM2evN7i70sTWJyv7ujJUIqju6Z2iLajCKHl5NKP7st3FS8p4z8UWTZUezoGIQRU_pEtFknLU92hAfoB4MZb9t-QyxZlj5GQ9ECCW79lHJ6hhXH72U-a-hEIk_wjHl7y3J6lommSSwxH94BJMpyyAh_hU7PJ0F7vNvbfSt3T0qjgwCB04xfuBzJt0cfBA6CB75ZDGYEDaS6QuMy2B6Fg0-eqa-5Kkpe0T6updbZToLFJmdZD2tRNZPoy3sX1ZcfBxi3xBmrRBzebNRoZUhhOm9Zn2CRHQt9BOBwsXNu-gHUL0HUNPInxdmJuzFgFwTj-Nqz3LJ4F5aqO2YwPQp3nNPGPRrIDsN90DZ8kNsW2TnXfkgQpcyYc6rSHLPdQ10xuHYPziH0H5suxIvNZsc16_kjv3H9XQnRGLlrFACgHNIEqSpdg33aCiv9vHMCOvvtmqYuuIXPwOuFAskjs46OEDU71dTPJ3JfkdqgdmnbGjx3C6hK_sQJNPMFEXqON8CtzLkMbufcIsDdHnMEHUA0mYIjaWna1lpog8q6ttA13rH6HpNdzQy9LmPrehU73npNBao8xNTNaIDOYLvyBaSdqXClOtMXEZc2ifhsLYMNuezCuoOSMKDFmDZo52XbGz4yCLWthPs3rvYE4Rz0gHdhvoWBIut-06772c8uJO3PTBJGmmjsOcN35jwj9yJOHtkc-f-2q5VCO0ZVXQhjHg-naRPmZG9u7G5OxYCm-Ww1GwkKBJoxo3V80gurdm9yK9A4eci_7tul9BiASarZfYMMDs_BvUP2E5GDJJxi_c8PCjw3LOLzjWqSYgFT8SNQ2I3rBr7kngtC8r_qjXfPbPrYg-7Ca2iYok6XnHBjfoEAYFbRbjry4BTfDWJywgnQNOB26kWtXamG5HqyCXZh7lbs2p8XGcZb7GWEsNBiZzpQFfOFpa9CXpftJHtt7IEjXT7mP5F7-N8HHd--RBAZzhKVj0WYiajdVhbF5_jN1MvFPZxX1D2V26RXJdEKoWlXU5LaxebbuEOXbswO439FqzXuwLs_EMq-iKSAjXDPFXPF8JYRuOvAQ5eCwfbgGTYB-HEQ4wyp-VUp4qkgubi1KazZBLK4wpqS4mImS8K8qV_xjnIjoLpTpawSbCAO5_PHVXJh049xgLluzfR96AmDH5yXdQNNKzXTvXe-XJNlKUAJHDgAmM8J-ean86d6BLalZJsweeXMUaZcoPJfqchRerq3xvYni13HICTKjmLUt6lWd83tNkigdZbgx3Xz9wLlEPnKKTpPSkRkA_Hp-p4xOt6jHAyMWoSjpl4iRq_KoVWFeHCCsrNal-PnmB9Lk-sUCX3A-zwZyIBHmYpqOs74lpK84hf-0KVQa-pgq2_maHvcD-kBvd0_KRrUVbtBTbJ-X9Dm8vy4xN10SM0LYOT7LAbd3zaFtPVosbxLl8JINWj6H6_ZeY7lek08crRqbnvUdg1jw6edSkzyejqWvAPG8Q4fnP7IC185mDFcsPmtq-ntWY6zOVJ_NBkzT5t3XqZSJtwYmNYD16I4-rkOqHtl3WbqD4GI8qRDfOE9HYYMhxE5EKQtH3pCbeVwFzbTLkQ_ckcA7E0nmkTYo7Mx7BWbMlLOGFEKUagB-7PWrYmfZw5pDZODiyA3ZaeDqU2N-XAgd583sA74eBrQR5f72csZ5kYKJCmNnxNecpOqBYIMPWn17lSyjrmHjadQAsfDmI-cmmv4y_J8K0RDV4hTXigZhcCk0v92bcr_SF3cttb_kkAVcPDvtXkWgYOUcscQ0ekNc=","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"Red + Delicious."}]},{"role":"user","content":[{"type":"input_text","text":"What + apple is not tasty?"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"store":false}' response: status: 200 headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9900452e98376701-DFW + cf-ray: 99295e06ea133aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 13:51:22 GMT + date: Wed, 22 Oct 2025 13:33:39 GMT openai-organization: posit-esfrkf - openai-processing-ms: '722' + openai-processing-ms: '3902' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=KDQ8UN9qZlqpa8iBw_kBg3_XEAgM304UrCoSytm3NrU-1760709082-1.0.1.1-zBW1e9Ut.PeX.AN97t0jzYkXSd5g17RAA8XXbW4Ofp1SbplxkQjo6tHtwh8ilg6cBq_3MRUq.LXOefQgn0jPDnlAW4Ti1d9h18WpvbyAvfc; - path=/; expires=Fri, 17-Oct-25 14:21:22 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=e0gcjMeJ3UAxDL1LTTBTrxAr6IupqWx1T_crhhDi6pw-1761140019-1.0.1.1-HySVd14Wbz6vWAo2YAwkGS_OKjUflFaePeIjGMreAJGbsB1G6Hd84fxBfM3y5QtpJKnmhPe1gf0x4oTgLHgypV.tOHwhZdqdr3CS6z4u3nQ; + path=/; expires=Wed, 22-Oct-25 14:03:39 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=aOSTfu1r.zOnYskbpiNrzS_13hB8MfVTVYsxrap2_sg-1760709082145-0.0.1.1-604800000; + - _cfuvid=LKpDLosi3MSFTJCRhXg_0XYk9vz8CIeR7jNdjbjqxYA-1761140019158-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '727' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999882' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_9b23f28f464a4bcc8b308046ca221faa + x-envoy-upstream-service-time: '3913' + x-request-id: req_c474f8cf320440a49d3a91640bde9e44 body: string: |- { - "id": "resp_0133ad75380d00510168f249d96da48194ae38a17a736f77be", + "id": "resp_0c8ed9b4c0ead61e0168f8dd2f482c8194873da745d5218e02", "object": "response", - "created_at": 1760709081, + "created_at": 1761140016, "status": "completed", "background": false, "billing": { @@ -272,10 +266,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "msg_0133ad75380d00510168f249da12cc8194a87c170c154b3b97", + "id": "rs_0c8ed9b4c0ead61e0168f8dd30a0f08194a8af715c43d9f8e8", + "type": "reasoning", + "encrypted_content": "gAAAAABo-N0zcjaY7ewmxBoNfCvCjnxNOVmakY9zrTHrIFXenxcyH4a5dF1sKTdq95ungBhXha5gfXPWBxtTGuRMtl2wE1ekW8VZfsTLpbx2JmCwPWd2jA-SQvDhlSZsshWR-rYXIhw479ktxP9e1vTryqTmacWUilZVk6awGs_f4YCZgNF3SpUT0wAQr26BWgkkRf-eIsdLhUCCN5-t6W75klUHbXXHRnBzWgL7UpHYXNvT6b3F9i7pT8xn46Zuwagkjgn49iYoMMW-dBX0MLGzPsG2Q6xJ1QkHZxs7TfGEk7bSn_wpN0KVkEk9ONfAm3y55GJCodvK9W6WUJqviymZVD8ZyQ9vpAWwKMkD4GtFJL1qxJgKEh7UTNw374M8QmjF4wSvM9y4ZGDon1tbzY6MczhF_Ha5FE7ANGRfI7tCBtBHe-byP3KOyOdv0DZO552CoAxsi2M3LPLWNw4Yh4B4LXl6fYaw8kdKyTFfZaS5tH4EMOkVIAeVdvXmm84XiczgyazXLV1zrdBRY5EMonVqUIJJrqSeWl32ox6EnQCZ_PLnfRE60ArWLY4etlKXaZ8IqFGCKH7B9x8hUPInQKgoLHKFgRlbGFqGN_KjeiCjSJjQzLXRXB4BIm3SWSBR74EuvQF3cHE9Qpl5Q4jy4E4esD6UgPq_VSMLHywwtLFiz4wQyhOQjpYIdunyBoKr3jDScGfAlvhKEZUY0euk2L0vugVMKL3clSR4YOoOTuxu7mFG7ocJAmax86MV9MY1hqT14FQwxndcUAgjG0-SJdJUdoiuPOhSa9b1IVva4AWbHfRL5hacMvrYpgNuRwc_LOWa9sUjPNDV-FUG_SSnyJM6UcmhLB_95HmRwmpoaCmbM64lUnipFSbET43CPp7HhyyNOAZqkVxINbfBXECmichlYmNFKBeXzT1FSIoCu8dTDPW7ksQJpMQU4bTZPkp26pappDthCEBhSEb1790Y0ZhE_vRw7SiFzvkbj4Uq66SuGiChzrDrWVJkDAnLpAOWTlg3dHmflhLPTttpGvkGHDM53IaBbs8TcWDcG2admwnN9XuwsNpR0c9iOBEnMdUsI1QrbAHBXjp8qBP9tuEqh1V1wtTzZxMfpvou0HDfv-Z6QbDbknLox10dno4gQXfsKp7pck3Wn571jTM6ksM3urYGpXZx3kcl8B-nUu9RpnP7iLChFaDJs4TPyYlPMfgnnr2wdytgvUMYF0WBz5OljVySRnuTkEjEeTgajB34BjTge3rNVnGV_QIfdD2mNB6z5RT9WoR1gMDXFXT4Hd4rfqENEpk2bkgBTl1BC6-yRNzZ4SS7jYevig4u3bT2Q4bKWQbf-sQ3UtdrVmajB6GNuVISDuo5noeINWBhMg_XrRTgTfzb7y8xQR4AMnHplsuW5NtxbjP1T3Vb9yFcoDMhDsEReqenwB-s_dIuAsCWWoKnjvnG2Tgz4_WCDKNhTluhjqCW8Np1VKz2GRZZJ5FcoKpMksWdgdEgqNouhc10xtLrOMm005gmWJ0egtyUWXdhBiUDpA8TCR3b3Bkegdygax0ddf0SOjWI6geM6RgFdAcUHm2_d1BDk3w6xFO4e0mC7zWos4yg5YUh_ZmQiWaWYqGer6UJ2KPzZDi7G5Y0hYM-eUxSq0Z39efuSCKZfW7TTU4UzEYljvnBmGM7ZUw26VexQGFyZJzulKrVAnK5JGYeAg0UedblHyprHTMSwri8YjFi_CHnAY8IvEKuf7dCZ9_go0-WXuqZKZUIWnAgSt7TThZdZOycBEAMc7ERcDfHP2vUeC9tAuFEFJOrI0ww21Lz6Rfj29H6cm0LUzgzR7fpeYn66vm2Ey4FQGoKTZ0lz9MLop9s6REwlYaWXTKMf0dSBKfAJ4biACZNv3jgAQP7o3nn0hvlombj4-qViOaL3djHqdN3fjVJfEOvlKoPlTKnG4nLdvyXvUr8aaBuEj8FUSw3l9qIUrXLw8t7L03VV9GV7NC2bGioXCwxnFesactEVKw0q85yfZnuxSd8BVwOZ6S56q7MtiKOn9sfJxUCX3UptDUmvPbsbH77GbML4rgBfozqtusV7_3lbwR-jdBbVF0fP-UzT5bJnNg81MGqWKzsGtxDpzNydvbfLvy7uEcV7v_4-j0g9Lr4oS9bIPrNdIdRtm7wBdYgbGiQtZSMs69vNFPrZhvZOEh8cm4nUQviIY3veD7I03y7BfoMk8V9O0_8lq0YEayuKUs7R8Psd4zFp2NofNRaRfKaBTzYb_ZaeObTt9gUbTT-I9k4HXpgXJYZrmiaR6pKqfCJN9nNwiJ9fNE4LgpZmpVhhpLk66LAtJfEfx50-iUXX6mSOoeNCPh1PIuFkWhlc72N9iE6ZzITic5GtDNTKE1C6fJ4RmKC6nNGQlR8BtnaIvbp2TVNw27gHO-vDPEOgbk7N-D-DRhs5p1y8r3kqB8Rw_mu7c3vkI5kt4lpSKcHL8_Gckjls92kihS17dy5gaLvES-UBDOPbE9_IdZ_opPG6A5SVIAr8FBomzaGpL_j_HL_9LJi9vhmHliPkUfOVKtN_uvRItcT0uQMQsqD6VayCk4k0lJLsb9Vs289gwHgcKbCuxfdyKjZnMtZVmpEy6sevUpxX4wuXN6CM4YeDJk9BGXhnGquC9W4eaFPnp58Vc21gLIXOMF8Go4XXmauSDscu-JS2GlnBdJE2eg-", + "summary": [] + }, + { + "id": "msg_0c8ed9b4c0ead61e0168f8dd32f0048194adf529e91f1f3125", "type": "message", "status": "completed", "content": [ @@ -283,7 +283,7 @@ http_interactions: "type": "output_text", "annotations": [], "logprobs": [], - "text": "Red Delicious" + "text": "Red Delicious." } ], "role": "assistant" @@ -293,13 +293,13 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -312,18 +312,18 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 99, + "input_tokens": 101, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 3, + "output_tokens": 265, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 256 }, - "total_tokens": 102 + "total_tokens": 366 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 13:51:22 + recorded_at: 2025-10-22 13:33:39 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/openai-v2-tool.yml b/tests/testthat/_vcr/openai-v2-tool.yml index d8cc25da..db619696 100644 --- a/tests/testthat/_vcr/openai-v2-tool.yml +++ b/tests/testthat/_vcr/openai-v2-tool.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Always use a tool to answer. Reply with ''It is ____.''."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the current date in Y-M-D format?"}]}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"tools":[{"type":"function","name":"current_date","description":"Return + the current date in Y-M-D format?"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}},{"type":"function","name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}],"store":false}' response: @@ -13,37 +13,31 @@ http_interactions: headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990109cf9ea4c86f-DFW + cf-ray: 99295c9189103aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 16:05:36 GMT + date: Wed, 22 Oct 2025 13:32:40 GMT openai-organization: posit-esfrkf - openai-processing-ms: '1146' + openai-processing-ms: '4828' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=Hcb8GQWRJely.69kzrVgI_TQGtgTCM5hAQYxfDFmyPA-1760717136-1.0.1.1-YqfDFUQ1wXgJjUw85ep.AK_YwOQkhZTPTlTHPWb_Hb5OjqDpDXuZTS0ZRj28NV_corYmpx2KH3KImZLuViD3jYYA1EeUEWDB9LKifZPHKfs; - path=/; expires=Fri, 17-Oct-25 16:35:36 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=fhTidVE_cFJZAO6ORUfvLMd67Ar5CR0mxUwR98lXhcU-1761139960-1.0.1.1-80w0nZJG7LotxAxJc6qYmFLILWmY5F93G._r3E01qOYdN36WyynKsNZ_Vka7Frxtk.w8AgpM97ARYfGlQ9PDxcEAT.Yu.4eA_C.DO3GRIaE; + path=/; expires=Wed, 22-Oct-25 14:02:40 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=RBvWakNxjFBqfJc0_arl1xiqO_39mfBBZFdMa5B2it4-1760717136496-0.0.1.1-604800000; + - _cfuvid=J4gt8Iyx5sddXdZKyJ.45y0wG8oZN2aFCgPrGt.RcfI-1761139960328-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1150' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999707' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_9d14316cf0634d238069d0dede311f34 + x-envoy-upstream-service-time: '4841' + x-request-id: req_5d26bb068e0348509733c5fe04ffdda9 body: string: |- { - "id": "resp_00f93a97cc2a90520168f2694f5aa88190af1e962e87c0632f", + "id": "resp_0b596e78cb62e4af0168f8dcf38b308196979d2154881ac539", "object": "response", - "created_at": 1760717135, + "created_at": 1761139955, "status": "completed", "background": false, "billing": { @@ -54,36 +48,34 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "fc_00f93a97cc2a90520168f2695045148190b941d9cf7c5371ed", - "type": "function_call", - "status": "completed", - "arguments": "{}", - "call_id": "call_gfBseUftLhqLipPCedQ2jhLR", - "name": "current_date" + "id": "rs_0b596e78cb62e4af0168f8dcf44644819695adee06291dc69b", + "type": "reasoning", + "encrypted_content": "gAAAAABo-Nz4juEo9vu1wun4UFUK0Dp3vTbEFBQtyDHBeRk2hd8Pa3Ahjs4Ko8Gv9-g1sU7rYYKECTOy4ecI_7wGb0Aqz6_r3RxXdTMGA9L7AW2CUm8aGnIQRMKngDu6ynuI8l9EOgj8d4hSly7G9m38MRvsJe0NYL_Z1o92fL8EhT2BKdTWTtM8TJsZqhaT4e3_argWsdVMF-Lu4-ofuKj3cQvhEwQCuPX8Z0wkgFlL2woinb2RpvsjswqNiQYW0NCFzlvmfV45xF6XACK5l_gK4lZ0nnThcQIYX4O_OmEuSsKFgRyvlrX1byKk6YrsIFoXbk-oFpVrl_eLzBJ1rv9gmcBH-P51Ks_wYXSOmEwjsQ3vKjbvPb5r7VNywbFBbkPK2hLuUN7E5Pxpb4CUcr7diERqjCCfRGVk2V8c05dkbR594GEil9BmBVuC6-MaZwn-B8oS7uJb3Q7547BtDqHC5CgJSkbhIRJyuKcQeCa-3yrMmdMLz7RG9P3wttEJanfTC3hZuzc8LP7WQeQokRaiDs817jqRCBc0VPNdILCkz1o8x0Jmth14j2H1_JCiAKNkUEFbJQ-kSaxhhKi8cRkHgjYiTnz7ZhZ4qYeVRRRS6S4FFyRG_I8nLvzbo7UgVkZCocuXQ-PKbkMtyueMQEZ4DBIZwL5mDEowhZ7lh8H6Vp9tHO3wbiJHHSrAMJY7o0Xmfzx4_OMUrrZLYSjCAwJt_GhC59iu1A5lQIL4TBOauM9wgYShwxATlkVcZ_3FtuU9NRq05LNwSdnsLg3HYVSTy38_zMGBfBhJJRp2JiJ5So-aiWiS666gXXRR_lPqiTtFHCquN-_pWyoxF8RSzf-XKvrdW42ECeT0XdWvrWrVdShsBvzlvhTNIGW5JRXNgx3OcFfzRjdRD8TpUoK_0vu6sSM91MAfGGHNUp7RzQHVQuon0YsgflJnqlNzHYO1Yo8oj4tY829EJ6mIpuUOdVhYBrWwk1kFYmzTGOo8XVKW4eWgPFsC52b-o6rs2G8cEJZI-NcBTjgdF9ONrdGDwTNSBAg1LXiuQ5R29ejao-_1mDzgNM61ykpdmJMVa6P7qOrfL-5ne1GTRHCF9mVL3dVx5OCdvrJgQF8Gbg2_TaXLbXrCFI5MQ7iz5oiyHZ6_4UjG-YUnOQpkQ8q9E1Nj4W3tIF_y9nmxghKy0xDw3oJgKhN-EFi7jxwJAYxv9CjwpPUV5WfLuA_oqZHjZ4lz5Z8lQLENG5OwB9sZsSMTs6qLbVPjXs2913B7Q8oO10T0hmwgZAZ45kNZ2lRnsnr5SETcSGAi69Dnsry7St6GGCtQaHCazGmVeGhDgj7zMRhNqyKsCsZu4OB3KR0qXowxeZB2PTH7cJnID6hIO2UNxmwXAbBuwJ4A7X-g6vx_LguRxiosZCrv-sW7gUfsS-JaQ9AV2scS2org1Mwy9euDAVToPe7wQixOgvmYVLYCTR5EvAwucKpb0mryUop8pVG8co1oJ0X_q1nShQBdoeA99MsWhCLy0KGDYa9qM8Hj0YvBqGCChFDRDjLequEighgGoZXvtuUVoNF_4wreJ52wP35QdLNWoZPEOiNRvpBCh1VoxJxpv5xRiVhnDB06tvlUPEk-cS68FLUZdxwoLKJZC_5_6ToBO_YKuAg7vNKmT7zPeqTpX6NpG3uMoWJxfT5KzLhvhhfUa65Vp7fkyDO-QEMLSKPCwYyMy5YTj-j2-rKQtl3ddeYmAMhQsQTILtn6n1_Bzt84j6rl2rzSr2ugUobt7zGbIkkxADCTOCVOR-8F7xgg6j11bapIQ1sxGAB3kVPayS5b5GBir8DH269xw-Rq9tw0FPPhfEGUcL1w0YLcBEhtXYLSItxnBxCmD4J9fHuxE8d3mnbe3AFkbWXEi9EvIVx1z8JQ2ECDpuvZov8RQ6H5Gxl-qTGNQG7ibZHTzReiaDDvH2tPVC_y6jslB3_ru6zPvuCNkRL7FJcFE_UD2RG7LVqjhQ3yE-jJsLRazkRXaY1VzJuv7rOrRGYgv4lcmTm9gI8Q1pSaDHqe97hIuBh2VeR7MUpEDokObzmdTngxPtO5y83qCxQ4Qnl5-t-m3C2JtdDbaHUMTz3sQklw8x1J8_TY1CoIt_rya2Ws0AOCij0tX-Dqlmos_KFlW-BjVUdTox_kuL3Y7A9QIL37kfMqQFnqTBJd1j1cUBNc0lkr7Q6okOIfIHaZa2OQRS_l6edbjfmJ_SyqTzAsr3h2GldGQ1YMjLN8HDY-vXRvmJCKInG0vq_6mAK5qEyVvmAM7wSk071jDos8rrqqag3d8pf8t9U0rjS5xM9WLdImchQlxUHvVQ7KDicdmfzYOakN9LjpRVfgwvzQS7xGPm5ESOEWBHTFXJUM4eUPn30FD79qhnfC9B3QzZVEX3ukDHQ75HNJ0GPvECGl6nY6bvXY7TC3rP_Hk4b1FIvK6J_gh8XsvfYhrrsYq9ttzkrlGhHU3drXhzTajaHj_-G7-EzEe10mvU7rIQXY6kEyEw6Y3z3CoUX_L-DLeptYrgM55CGXb9XHqzfus8mDu3pvMPC--phwUj7fPr1NXWDlpnLFqCvw4jv6oxHimmmDxLbS-BiUG23aXuM0PAM5dZrRh3-ntM4YP2lb4yAF", + "summary": [] }, { - "id": "fc_00f93a97cc2a90520168f269506a0c8190a51b55da3f4f13d4", + "id": "fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b", "type": "function_call", "status": "completed", "arguments": "{}", - "call_id": "call_P1wgPJYa03N4xqGSidZhh8pR", - "name": "current_month" + "call_id": "call_j2o3InoCBU44ivTFIb4Pplss", + "name": "current_date" } ], "parallel_tool_calls": true, "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -123,27 +115,27 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 38, + "input_tokens": 81, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 40, + "output_tokens": 272, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 256 }, - "total_tokens": 78 + "total_tokens": 353 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 16:05:36 + recorded_at: 2025-10-22 13:32:40 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Always use a tool to answer. Reply with ''It is ____.''."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the current date in Y-M-D format?"}]},{"type":"function_call","call_id":"fc_00f93a97cc2a90520168f2695045148190b941d9cf7c5371ed","name":"current_date","arguments":"{}"},{"type":"function_call","call_id":"fc_00f93a97cc2a90520168f269506a0c8190a51b55da3f4f13d4","name":"current_month","arguments":"{}"},{"type":"function_call_output","call_id":"fc_00f93a97cc2a90520168f2695045148190b941d9cf7c5371ed","output":"2024-01-01"},{"type":"function_call_output","call_id":"fc_00f93a97cc2a90520168f269506a0c8190a51b55da3f4f13d4","output":"February"}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"tools":[{"type":"function","name":"current_date","description":"Return + the current date in Y-M-D format?"}]},{"id":"rs_0b596e78cb62e4af0168f8dcf44644819695adee06291dc69b","type":"reasoning","encrypted_content":"gAAAAABo-Nz4juEo9vu1wun4UFUK0Dp3vTbEFBQtyDHBeRk2hd8Pa3Ahjs4Ko8Gv9-g1sU7rYYKECTOy4ecI_7wGb0Aqz6_r3RxXdTMGA9L7AW2CUm8aGnIQRMKngDu6ynuI8l9EOgj8d4hSly7G9m38MRvsJe0NYL_Z1o92fL8EhT2BKdTWTtM8TJsZqhaT4e3_argWsdVMF-Lu4-ofuKj3cQvhEwQCuPX8Z0wkgFlL2woinb2RpvsjswqNiQYW0NCFzlvmfV45xF6XACK5l_gK4lZ0nnThcQIYX4O_OmEuSsKFgRyvlrX1byKk6YrsIFoXbk-oFpVrl_eLzBJ1rv9gmcBH-P51Ks_wYXSOmEwjsQ3vKjbvPb5r7VNywbFBbkPK2hLuUN7E5Pxpb4CUcr7diERqjCCfRGVk2V8c05dkbR594GEil9BmBVuC6-MaZwn-B8oS7uJb3Q7547BtDqHC5CgJSkbhIRJyuKcQeCa-3yrMmdMLz7RG9P3wttEJanfTC3hZuzc8LP7WQeQokRaiDs817jqRCBc0VPNdILCkz1o8x0Jmth14j2H1_JCiAKNkUEFbJQ-kSaxhhKi8cRkHgjYiTnz7ZhZ4qYeVRRRS6S4FFyRG_I8nLvzbo7UgVkZCocuXQ-PKbkMtyueMQEZ4DBIZwL5mDEowhZ7lh8H6Vp9tHO3wbiJHHSrAMJY7o0Xmfzx4_OMUrrZLYSjCAwJt_GhC59iu1A5lQIL4TBOauM9wgYShwxATlkVcZ_3FtuU9NRq05LNwSdnsLg3HYVSTy38_zMGBfBhJJRp2JiJ5So-aiWiS666gXXRR_lPqiTtFHCquN-_pWyoxF8RSzf-XKvrdW42ECeT0XdWvrWrVdShsBvzlvhTNIGW5JRXNgx3OcFfzRjdRD8TpUoK_0vu6sSM91MAfGGHNUp7RzQHVQuon0YsgflJnqlNzHYO1Yo8oj4tY829EJ6mIpuUOdVhYBrWwk1kFYmzTGOo8XVKW4eWgPFsC52b-o6rs2G8cEJZI-NcBTjgdF9ONrdGDwTNSBAg1LXiuQ5R29ejao-_1mDzgNM61ykpdmJMVa6P7qOrfL-5ne1GTRHCF9mVL3dVx5OCdvrJgQF8Gbg2_TaXLbXrCFI5MQ7iz5oiyHZ6_4UjG-YUnOQpkQ8q9E1Nj4W3tIF_y9nmxghKy0xDw3oJgKhN-EFi7jxwJAYxv9CjwpPUV5WfLuA_oqZHjZ4lz5Z8lQLENG5OwB9sZsSMTs6qLbVPjXs2913B7Q8oO10T0hmwgZAZ45kNZ2lRnsnr5SETcSGAi69Dnsry7St6GGCtQaHCazGmVeGhDgj7zMRhNqyKsCsZu4OB3KR0qXowxeZB2PTH7cJnID6hIO2UNxmwXAbBuwJ4A7X-g6vx_LguRxiosZCrv-sW7gUfsS-JaQ9AV2scS2org1Mwy9euDAVToPe7wQixOgvmYVLYCTR5EvAwucKpb0mryUop8pVG8co1oJ0X_q1nShQBdoeA99MsWhCLy0KGDYa9qM8Hj0YvBqGCChFDRDjLequEighgGoZXvtuUVoNF_4wreJ52wP35QdLNWoZPEOiNRvpBCh1VoxJxpv5xRiVhnDB06tvlUPEk-cS68FLUZdxwoLKJZC_5_6ToBO_YKuAg7vNKmT7zPeqTpX6NpG3uMoWJxfT5KzLhvhhfUa65Vp7fkyDO-QEMLSKPCwYyMy5YTj-j2-rKQtl3ddeYmAMhQsQTILtn6n1_Bzt84j6rl2rzSr2ugUobt7zGbIkkxADCTOCVOR-8F7xgg6j11bapIQ1sxGAB3kVPayS5b5GBir8DH269xw-Rq9tw0FPPhfEGUcL1w0YLcBEhtXYLSItxnBxCmD4J9fHuxE8d3mnbe3AFkbWXEi9EvIVx1z8JQ2ECDpuvZov8RQ6H5Gxl-qTGNQG7ibZHTzReiaDDvH2tPVC_y6jslB3_ru6zPvuCNkRL7FJcFE_UD2RG7LVqjhQ3yE-jJsLRazkRXaY1VzJuv7rOrRGYgv4lcmTm9gI8Q1pSaDHqe97hIuBh2VeR7MUpEDokObzmdTngxPtO5y83qCxQ4Qnl5-t-m3C2JtdDbaHUMTz3sQklw8x1J8_TY1CoIt_rya2Ws0AOCij0tX-Dqlmos_KFlW-BjVUdTox_kuL3Y7A9QIL37kfMqQFnqTBJd1j1cUBNc0lkr7Q6okOIfIHaZa2OQRS_l6edbjfmJ_SyqTzAsr3h2GldGQ1YMjLN8HDY-vXRvmJCKInG0vq_6mAK5qEyVvmAM7wSk071jDos8rrqqag3d8pf8t9U0rjS5xM9WLdImchQlxUHvVQ7KDicdmfzYOakN9LjpRVfgwvzQS7xGPm5ESOEWBHTFXJUM4eUPn30FD79qhnfC9B3QzZVEX3ukDHQ75HNJ0GPvECGl6nY6bvXY7TC3rP_Hk4b1FIvK6J_gh8XsvfYhrrsYq9ttzkrlGhHU3drXhzTajaHj_-G7-EzEe10mvU7rIQXY6kEyEw6Y3z3CoUX_L-DLeptYrgM55CGXb9XHqzfus8mDu3pvMPC--phwUj7fPr1NXWDlpnLFqCvw4jv6oxHimmmDxLbS-BiUG23aXuM0PAM5dZrRh3-ntM4YP2lb4yAF","summary":[]},{"type":"function_call","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","name":"current_date","arguments":"{}"},{"type":"function_call_output","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","output":"2024-01-01"}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}},{"type":"function","name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}],"store":false}' response: @@ -151,37 +143,31 @@ http_interactions: headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990109d8290cc86f-DFW + cf-ray: 99295cb129c63aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 16:05:37 GMT + date: Wed, 22 Oct 2025 13:32:44 GMT openai-organization: posit-esfrkf - openai-processing-ms: '893' + openai-processing-ms: '3668' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=yfJzoEpVcRyb70mInOox1yH.NvwKX0FFnuHrA7SpM_E-1760717137-1.0.1.1-qA3xYjxOD6bWZZFss_o_MOqLTDhRYbMUgYNlRMBy8qehMQIqP_NJsPIGLOP7QlP0fsqtjcz2dV5f6xCY0epSBOzXN.45iUaGd4FIy95wKeY; - path=/; expires=Fri, 17-Oct-25 16:35:37 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=GcUEgzcaYJnIadXxrD.96hOJtNR3.eLAh.bHzqUYSiA-1761139964-1.0.1.1-HTbXQlfNVjddXxRlSH0DD5tNunP4vvoMCKBtWhzjW2_NSku1eSwEewZ.SuroPh1.kw7jTk8TXb_rxsahDtAqp8m.aMZ.fcz6xZl3MPN8.OE; + path=/; expires=Wed, 22-Oct-25 14:02:44 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=mGmMo8GSzGRX21oS5AxX5nQGVrCpjBJflgoCiVq.54k-1760717137613-0.0.1.1-604800000; + - _cfuvid=g8fKEqazbxx_elUN4MQsEEEV4LGHNnnH0yhCT92yWoA-1761139964212-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '902' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999667' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_44b2483ae74a4825bde70a5a1cfa9c78 + x-envoy-upstream-service-time: '3672' + x-request-id: req_9e3951a837df49c890a3e3f333232b2b body: string: |- { - "id": "resp_09a8e4db00da1cc00168f26950bc00819082274ce213e202b9", + "id": "resp_0b596e78cb62e4af0168f8dcf88c3c8196afe1a3642f7c11dc", "object": "response", - "created_at": 1760717136, + "created_at": 1761139960, "status": "completed", "background": false, "billing": { @@ -192,10 +178,16 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "msg_09a8e4db00da1cc00168f269515d0c8190a9262b85cc2935d5", + "id": "rs_0b596e78cb62e4af0168f8dcf8ec048196bad8d497c7c98cca", + "type": "reasoning", + "encrypted_content": "gAAAAABo-Nz8NAdTL00F245OCYwzjmuG8xJk51sZhusE-dSkAZuITX2OTRCK9SNhgppraz6f9zzM_lOKXtQEav5m0QMkEL4Sm22kbgH3KOf8KeuoyKeHxh658naz-pyKXLiDs8X1Hg_7MkrTcRQoBrPDHp2b4mOvrjjFHP4lzsGgIfEyYwb-jt2ZzAqfOppZwA5eAqd9kXFFj3_zq9whWzJ3fu9bImmqzjsXcoZubjH6UTi6NUu9FQP7Wx-3uN9aCApixgrylUjS9TSJMU6loRyMohvxvNWex26nYyrEBHCwPagn4rdi26NHEbn9BUI_IgvQAATuuWzaSH2kRBKqXNVnyNdKiUA32Y46foM0LkknrZjC5U8nf3o39z0hJ8qNydlg2w_Yo6WbU8HnyMvYSMLdBPsWOFyLw3NToi5196f6fRM_Ubp504s8mmGV4B47IilvOLenOkzYJyTKU3cA0kgnSFv8om2oVb_vNv_omw8rBB5zz3-V3Em8K4gdo9u7mMx8PBKBhyCUePByBIWm2-NnCGzdjYo9-ssbF0v0pVbUawxltv2s-6nvRgAKRZmKZaQ3egvUOhkEheeU3qRfMH6xJ7z0SY7OmfcBL1lzxd9z5X_bVqtXyVxzNMPe5n5KMVtGO8B7pd7h3azio7JYgHHxah7xKKLprjHrNbQXt3zv8GCiHmLzOPWgeeyKUuksWce7IWwjc1MMm9R1_HHDy0dhvXVYpXlAzJCZZr_s_n11S5uFkG-9XDqbgtecLq3QYrqybzi1aMLr57dLlt9H-DLPGLWsXRn3aOX9ttYbjkyIkT8kVM4hPnZ171I0SqTaHX6VuBjJk6n0-rkRFNMb5TNEyl1XXvhAkNu1LU9gDrN1jzbQ5MK5xCIXOI7127JjwnI1QWJ2uDfFwK5fVzoS6qCNPGAp_wYkffLHF9TehVBxKAvh3yuvBGGUokOXOHgQNjYSGOJ5d1GWEm7JnybZqCODZJWeDbD2k5F0EwJGxRZERshreMki32-mKbHM9xLgkfBCmZJzwOeAAfbSN_fXEsyuH4pk9viBdifY1qxf4Ow8PFAZEyrsTbISoOq21B-YN_fQgv7O1Vbt2EQV31usrYG4tmE8MIAnqVvhr1hd2HZB8H0HYJNDc5gJCefhRr71XZaXEUI2jj1LLadgQ5XZDp4A2SifSLd3zEL1LyzuBi2ghsybovqVjOCMxrupw7IHvhXD6mmLK43dhlGgqXYh4zvqkIRaUy2uin2lMYtP7GAQZ_C1bdTWetYuHZvCEwrasvVXKTnZDxfEFYhVg3iienFLBZmACc3flNK8RuWxD_5oj1BzU541MLNIgi-eu-sP9WwnZW4PSL2EzOwKDrf8878IjIIoSC_fpHMt_Hizu0DIcD4SPcgNDkErQGEyfZz0XmdOMQXBWf93ZCz1JCAzYckesVVb19YwTgGmr9_kmB2kW5Ygq3gZNleMoWLu6t4tnf1CUAujwOeHIQRfmaC8V8kbU1w3t3UDhJ8m9ZHfzC4msTILLX9-DAjp013lRhZnMH-Lb7i2lfjA9fUmYJfelUkTYEIwkqSPLZfld8pNO2J-MzuTETh_47D2bSR6vRvWr_hMeLiULMNV8JL28QWJNtiyJ6BPY1XOZGDjRLvV-ipvMhV8VriYY49kS0WTIf57VJpAmX5wrY8g-t2ISijHPXgCSArRuGyxX_Mpdo0iY_fM61vuZfzB5BAC0QLl5YVM4qjKBYKS2qiLfdlU7hjkIx1Ry3NcLmf6pI8Ojv0Fwp-6H3Ljm37bkh_ksDi_2EWqTHLoo-EBD4-tQXqSdNw5iKfkIUm7ZX_p47kuonY5zYcA-sBi7897-u9CmaA66Yk8M3HkY64E0SOSTzh8rQ-dRcQXI_qGflyoXmtDja72hGp63d2YSsL9HKQWAaH3fyzblapTHoWH5hXsr1JZqNhplSawgtM3tt9ZZvBahBLAN0OVmw3BVYkW48m9nUimXtRqYMQXxUXRBp5kp4Zv4_FxqMtNW-WR92GTWvTE74StRBm1Y-AyD3pJroghLi58eW439TCVpUmUZypF-QRLbmKzQ_983s5y-yKb6KsE6brGXb1DNapWxgsVz34erwL2zcIOxWSPzbQp1W-YkS5CZb6GgrwCDRHp-5vBP3HSwNmJaLsqmsAhUpQn_hA=", + "summary": [] + }, + { + "id": "msg_0b596e78cb62e4af0168f8dcfbc4508196b5f5659607c00976", "type": "message", "status": "completed", "content": [ @@ -213,13 +205,13 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -259,29 +251,161 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 115, + "input_tokens": 429, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 12, + "output_tokens": 208, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 192 + }, + "total_tokens": 637 + }, + "user": null, + "metadata": {} + } + recorded_at: 2025-10-22 13:32:44 +- request: + method: POST + uri: https://api.openai.com/v1/responses + body: + string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Always + use a tool to answer. Reply with ''It is ____.''."}]},{"role":"user","content":[{"type":"input_text","text":"What''s + the current date in Y-M-D format?"}]},{"id":"rs_0b596e78cb62e4af0168f8dcf44644819695adee06291dc69b","type":"reasoning","encrypted_content":"gAAAAABo-Nz4juEo9vu1wun4UFUK0Dp3vTbEFBQtyDHBeRk2hd8Pa3Ahjs4Ko8Gv9-g1sU7rYYKECTOy4ecI_7wGb0Aqz6_r3RxXdTMGA9L7AW2CUm8aGnIQRMKngDu6ynuI8l9EOgj8d4hSly7G9m38MRvsJe0NYL_Z1o92fL8EhT2BKdTWTtM8TJsZqhaT4e3_argWsdVMF-Lu4-ofuKj3cQvhEwQCuPX8Z0wkgFlL2woinb2RpvsjswqNiQYW0NCFzlvmfV45xF6XACK5l_gK4lZ0nnThcQIYX4O_OmEuSsKFgRyvlrX1byKk6YrsIFoXbk-oFpVrl_eLzBJ1rv9gmcBH-P51Ks_wYXSOmEwjsQ3vKjbvPb5r7VNywbFBbkPK2hLuUN7E5Pxpb4CUcr7diERqjCCfRGVk2V8c05dkbR594GEil9BmBVuC6-MaZwn-B8oS7uJb3Q7547BtDqHC5CgJSkbhIRJyuKcQeCa-3yrMmdMLz7RG9P3wttEJanfTC3hZuzc8LP7WQeQokRaiDs817jqRCBc0VPNdILCkz1o8x0Jmth14j2H1_JCiAKNkUEFbJQ-kSaxhhKi8cRkHgjYiTnz7ZhZ4qYeVRRRS6S4FFyRG_I8nLvzbo7UgVkZCocuXQ-PKbkMtyueMQEZ4DBIZwL5mDEowhZ7lh8H6Vp9tHO3wbiJHHSrAMJY7o0Xmfzx4_OMUrrZLYSjCAwJt_GhC59iu1A5lQIL4TBOauM9wgYShwxATlkVcZ_3FtuU9NRq05LNwSdnsLg3HYVSTy38_zMGBfBhJJRp2JiJ5So-aiWiS666gXXRR_lPqiTtFHCquN-_pWyoxF8RSzf-XKvrdW42ECeT0XdWvrWrVdShsBvzlvhTNIGW5JRXNgx3OcFfzRjdRD8TpUoK_0vu6sSM91MAfGGHNUp7RzQHVQuon0YsgflJnqlNzHYO1Yo8oj4tY829EJ6mIpuUOdVhYBrWwk1kFYmzTGOo8XVKW4eWgPFsC52b-o6rs2G8cEJZI-NcBTjgdF9ONrdGDwTNSBAg1LXiuQ5R29ejao-_1mDzgNM61ykpdmJMVa6P7qOrfL-5ne1GTRHCF9mVL3dVx5OCdvrJgQF8Gbg2_TaXLbXrCFI5MQ7iz5oiyHZ6_4UjG-YUnOQpkQ8q9E1Nj4W3tIF_y9nmxghKy0xDw3oJgKhN-EFi7jxwJAYxv9CjwpPUV5WfLuA_oqZHjZ4lz5Z8lQLENG5OwB9sZsSMTs6qLbVPjXs2913B7Q8oO10T0hmwgZAZ45kNZ2lRnsnr5SETcSGAi69Dnsry7St6GGCtQaHCazGmVeGhDgj7zMRhNqyKsCsZu4OB3KR0qXowxeZB2PTH7cJnID6hIO2UNxmwXAbBuwJ4A7X-g6vx_LguRxiosZCrv-sW7gUfsS-JaQ9AV2scS2org1Mwy9euDAVToPe7wQixOgvmYVLYCTR5EvAwucKpb0mryUop8pVG8co1oJ0X_q1nShQBdoeA99MsWhCLy0KGDYa9qM8Hj0YvBqGCChFDRDjLequEighgGoZXvtuUVoNF_4wreJ52wP35QdLNWoZPEOiNRvpBCh1VoxJxpv5xRiVhnDB06tvlUPEk-cS68FLUZdxwoLKJZC_5_6ToBO_YKuAg7vNKmT7zPeqTpX6NpG3uMoWJxfT5KzLhvhhfUa65Vp7fkyDO-QEMLSKPCwYyMy5YTj-j2-rKQtl3ddeYmAMhQsQTILtn6n1_Bzt84j6rl2rzSr2ugUobt7zGbIkkxADCTOCVOR-8F7xgg6j11bapIQ1sxGAB3kVPayS5b5GBir8DH269xw-Rq9tw0FPPhfEGUcL1w0YLcBEhtXYLSItxnBxCmD4J9fHuxE8d3mnbe3AFkbWXEi9EvIVx1z8JQ2ECDpuvZov8RQ6H5Gxl-qTGNQG7ibZHTzReiaDDvH2tPVC_y6jslB3_ru6zPvuCNkRL7FJcFE_UD2RG7LVqjhQ3yE-jJsLRazkRXaY1VzJuv7rOrRGYgv4lcmTm9gI8Q1pSaDHqe97hIuBh2VeR7MUpEDokObzmdTngxPtO5y83qCxQ4Qnl5-t-m3C2JtdDbaHUMTz3sQklw8x1J8_TY1CoIt_rya2Ws0AOCij0tX-Dqlmos_KFlW-BjVUdTox_kuL3Y7A9QIL37kfMqQFnqTBJd1j1cUBNc0lkr7Q6okOIfIHaZa2OQRS_l6edbjfmJ_SyqTzAsr3h2GldGQ1YMjLN8HDY-vXRvmJCKInG0vq_6mAK5qEyVvmAM7wSk071jDos8rrqqag3d8pf8t9U0rjS5xM9WLdImchQlxUHvVQ7KDicdmfzYOakN9LjpRVfgwvzQS7xGPm5ESOEWBHTFXJUM4eUPn30FD79qhnfC9B3QzZVEX3ukDHQ75HNJ0GPvECGl6nY6bvXY7TC3rP_Hk4b1FIvK6J_gh8XsvfYhrrsYq9ttzkrlGhHU3drXhzTajaHj_-G7-EzEe10mvU7rIQXY6kEyEw6Y3z3CoUX_L-DLeptYrgM55CGXb9XHqzfus8mDu3pvMPC--phwUj7fPr1NXWDlpnLFqCvw4jv6oxHimmmDxLbS-BiUG23aXuM0PAM5dZrRh3-ntM4YP2lb4yAF","summary":[]},{"type":"function_call","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","name":"current_date","arguments":"{}"},{"type":"function_call_output","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","output":"2024-01-01"},{"id":"rs_0b596e78cb62e4af0168f8dcf8ec048196bad8d497c7c98cca","type":"reasoning","encrypted_content":"gAAAAABo-Nz8NAdTL00F245OCYwzjmuG8xJk51sZhusE-dSkAZuITX2OTRCK9SNhgppraz6f9zzM_lOKXtQEav5m0QMkEL4Sm22kbgH3KOf8KeuoyKeHxh658naz-pyKXLiDs8X1Hg_7MkrTcRQoBrPDHp2b4mOvrjjFHP4lzsGgIfEyYwb-jt2ZzAqfOppZwA5eAqd9kXFFj3_zq9whWzJ3fu9bImmqzjsXcoZubjH6UTi6NUu9FQP7Wx-3uN9aCApixgrylUjS9TSJMU6loRyMohvxvNWex26nYyrEBHCwPagn4rdi26NHEbn9BUI_IgvQAATuuWzaSH2kRBKqXNVnyNdKiUA32Y46foM0LkknrZjC5U8nf3o39z0hJ8qNydlg2w_Yo6WbU8HnyMvYSMLdBPsWOFyLw3NToi5196f6fRM_Ubp504s8mmGV4B47IilvOLenOkzYJyTKU3cA0kgnSFv8om2oVb_vNv_omw8rBB5zz3-V3Em8K4gdo9u7mMx8PBKBhyCUePByBIWm2-NnCGzdjYo9-ssbF0v0pVbUawxltv2s-6nvRgAKRZmKZaQ3egvUOhkEheeU3qRfMH6xJ7z0SY7OmfcBL1lzxd9z5X_bVqtXyVxzNMPe5n5KMVtGO8B7pd7h3azio7JYgHHxah7xKKLprjHrNbQXt3zv8GCiHmLzOPWgeeyKUuksWce7IWwjc1MMm9R1_HHDy0dhvXVYpXlAzJCZZr_s_n11S5uFkG-9XDqbgtecLq3QYrqybzi1aMLr57dLlt9H-DLPGLWsXRn3aOX9ttYbjkyIkT8kVM4hPnZ171I0SqTaHX6VuBjJk6n0-rkRFNMb5TNEyl1XXvhAkNu1LU9gDrN1jzbQ5MK5xCIXOI7127JjwnI1QWJ2uDfFwK5fVzoS6qCNPGAp_wYkffLHF9TehVBxKAvh3yuvBGGUokOXOHgQNjYSGOJ5d1GWEm7JnybZqCODZJWeDbD2k5F0EwJGxRZERshreMki32-mKbHM9xLgkfBCmZJzwOeAAfbSN_fXEsyuH4pk9viBdifY1qxf4Ow8PFAZEyrsTbISoOq21B-YN_fQgv7O1Vbt2EQV31usrYG4tmE8MIAnqVvhr1hd2HZB8H0HYJNDc5gJCefhRr71XZaXEUI2jj1LLadgQ5XZDp4A2SifSLd3zEL1LyzuBi2ghsybovqVjOCMxrupw7IHvhXD6mmLK43dhlGgqXYh4zvqkIRaUy2uin2lMYtP7GAQZ_C1bdTWetYuHZvCEwrasvVXKTnZDxfEFYhVg3iienFLBZmACc3flNK8RuWxD_5oj1BzU541MLNIgi-eu-sP9WwnZW4PSL2EzOwKDrf8878IjIIoSC_fpHMt_Hizu0DIcD4SPcgNDkErQGEyfZz0XmdOMQXBWf93ZCz1JCAzYckesVVb19YwTgGmr9_kmB2kW5Ygq3gZNleMoWLu6t4tnf1CUAujwOeHIQRfmaC8V8kbU1w3t3UDhJ8m9ZHfzC4msTILLX9-DAjp013lRhZnMH-Lb7i2lfjA9fUmYJfelUkTYEIwkqSPLZfld8pNO2J-MzuTETh_47D2bSR6vRvWr_hMeLiULMNV8JL28QWJNtiyJ6BPY1XOZGDjRLvV-ipvMhV8VriYY49kS0WTIf57VJpAmX5wrY8g-t2ISijHPXgCSArRuGyxX_Mpdo0iY_fM61vuZfzB5BAC0QLl5YVM4qjKBYKS2qiLfdlU7hjkIx1Ry3NcLmf6pI8Ojv0Fwp-6H3Ljm37bkh_ksDi_2EWqTHLoo-EBD4-tQXqSdNw5iKfkIUm7ZX_p47kuonY5zYcA-sBi7897-u9CmaA66Yk8M3HkY64E0SOSTzh8rQ-dRcQXI_qGflyoXmtDja72hGp63d2YSsL9HKQWAaH3fyzblapTHoWH5hXsr1JZqNhplSawgtM3tt9ZZvBahBLAN0OVmw3BVYkW48m9nUimXtRqYMQXxUXRBp5kp4Zv4_FxqMtNW-WR92GTWvTE74StRBm1Y-AyD3pJroghLi58eW439TCVpUmUZypF-QRLbmKzQ_983s5y-yKb6KsE6brGXb1DNapWxgsVz34erwL2zcIOxWSPzbQp1W-YkS5CZb6GgrwCDRHp-5vBP3HSwNmJaLsqmsAhUpQn_hA=","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"It + is 2024-01-01."}]},{"role":"user","content":[{"type":"input_text","text":"What + month is it? Provide the full name"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","name":"current_date","description":"Return + the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}},{"type":"function","name":"current_month","description":"Return + the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}],"store":false}' + response: + status: 200 + headers: + alt-svc: h3=":443"; ma=86400 + cf-cache-status: DYNAMIC + cf-ray: 99295cc90bed3aaf-DFW + content-encoding: gzip + content-type: application/json + date: Wed, 22 Oct 2025 13:32:49 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4766' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq + openai-version: '2020-10-01' + server: cloudflare + set-cookie: + - __cf_bm=o8Na_YLNoqH34n1gKgD_xYawlrZt0RiB0UywxsndHFs-1761139969-1.0.1.1-r_1tzci6RTONb2lkp2aqOEnnvc8ahHfkNBTD1N.MZK0bTKee4SLmK4mMpxe6W9cens39MzLyku5oTX0sdjmexUl29UOKVoLrQJr0gPGBTR8; + path=/; expires=Wed, 22-Oct-25 14:02:49 GMT; domain=.api.openai.com; HttpOnly; + Secure; SameSite=None + - _cfuvid=2pnDbZt2JvYeXh54myjAt4wJgpLCZXDkDCy9X07YgRo-1761139969143-0.0.1.1-604800000; + path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None + strict-transport-security: max-age=31536000; includeSubDomains; preload + x-content-type-options: nosniff + x-envoy-upstream-service-time: '4773' + x-request-id: req_ffe4393aae184b22ad26afbe593e0a1e + body: + string: |- + { + "id": "resp_0b596e78cb62e4af0168f8dcfc65008196b1b9db649b0c2fdc", + "object": "response", + "created_at": 1761139964, + "status": "completed", + "background": false, + "billing": { + "payer": "developer" + }, + "error": null, + "incomplete_details": null, + "instructions": null, + "max_output_tokens": null, + "max_tool_calls": null, + "model": "gpt-5-nano-2025-08-07", + "output": [ + { + "id": "rs_0b596e78cb62e4af0168f8dcfd0ffc81968e5ddbddb2fd6157", + "type": "reasoning", + "encrypted_content": "gAAAAABo-N0BJqNKlmG4o0osZXpnFFpFwq2pUFvL013elVORoJTPiK4gU7KAP3gZ_eaRd7i74ONNgqDfcth556NOtFlBO65E7HObLleTC-rK-CMFyifSHXbNqcLckAmD7TfiRCHcrS4BwXFImTP2Oo-8zIiT5x5YNnx5VpfwqM09-b2S9btpkoTGN8fFj_5VnO8Sf4I8CJJ7CCUDul3Gfbskr7s2Q85wCZ3JteEb6BUvPvGjZXBBaWr_zss0iOAZYP4WpNF9gvji8YPxOTo23Yih6i2iK4MgDKaCKeoc4eO5sTYxDmLEtlj8NM-y-IhMHSGtJqT6en8zCTbPpSniPhJ8fVzRIdwLZZPXZNWyjOehSwYj5xuOo-RgdLg8aSicPITdMCUAgZgH_nALHW4sfOq1yAvvK_b-Zl1kPbAk7mCbrK0MRUwF5PfD_DQJk28kwkpylbmMhj3tQBmOsW06rpEgu1KyAqG8ced5PTyN8evXmaTmVUGKH8uhdNULsHHD_eGun1lc2aPG-eJGgGS8BgDe2rb-oWB0syaA5eZFY7CKiU7FkHOieuPoti-d6rDx_Xp1e07QPnK5DA5n32dUyAShR-nnWG_HJcSXbOgOcRi5QZeHU0GC3vlN99t0a9HJ02slx_4oVcg6StVvdvKwIuHWXhpB4Y_yx5ysT4uy24G1SdxTw5-M2awVf0nDd4abS0ZUqC0tSYMtGmBF6U06BMmz47YGA8ndgu-IHgwLyEwSXQfIB3nwGXDTVwfisKeRkwrOQETXJGTg3Lw-Po2_gfqaBmsxcDjIONfdxkkH6Z8_TRP2R5_IqM8PHZNxdIVKUZkNSsECMtwYtSR-7lWD3IHCIKTaEeA5hLUJedJPmqWx_2avfIrTiU98T-QW_WndSS9v9_Pf6g_rUOmA1PuEQbyRgK8DLYkbAByTBox3AqsbvTIa7LI-2AKvIcqVtpnUPPkIWtwuVjNtIra0TiLjgynMzsxUWG41EcUIuTkDjdTrcCiMWPsH4LiDbDRLHtXbqKwQAk2axIXe6bHQsbcTFtvlGKyoCHkj-DksdwqCA8ifHnLp3PvWjNams4U3y8YDdxQ_5g-ZwI0iBmvjgE_0Rp06-oc5p2hTqCu1MR4BYfRV1Uqw6leK9ZYIT6GaRg4Pec0m-6Qv_jMGk-BGvU09e58EDXE3cy3J1PGrMlZOlhU0k6IvSUbUCiUObVLHTgq6n7xzasNpfRwr6aHxb8oyyRt_8OIbLPbLcmVwAeShOHMrAqcWNWA_zNw6NWV30jeQX0xY3DX6TDxYiPdTgSvuaF2E_nIDngYXKwt6L4naOyEYnScFBiGv2RifWmvJRAxM3wZGp1f_RzcEeAIj2vcORAjTZjr_3Ehexcch9r5n2TAl8qh5GB9nUS9HpVACuJ16jtaS5nGDnf8BjPfmaaJIHBD3CIS9w7ebT_A2DAnM9FIEoMhpyefrIFu-qQxpiiRtJsZ2YLQIy9n2dUaNu71nAYCIv_P5CgDoFD7Y7RtfPcQXnfpOB72RylFtJXyQrsNYvr7ArQK848_mrhX4Zesa7M4JAqN3-g5U0oup8zNUWy1Jdw3GLyCzlNWBgP8ofLWag935ctcSIDcJRU11_8jepkBsen-15N-fUDXE3qV6EpRP8ab8UtRzn2xCIqieAUKSHzjxfWl0kAo4-C2yoF1AT78lnBld9s43hAdE2smukN8osZVIJuQhM2Izll4ckxX3XrTR24K4TgsR2LozqtVrjQeml7FuDL420QGJsEhLUM2oYtyM-iF2E8AH8_lwXUVapkmgbpDSIWcHPN5ar-jZCvYzjcjbIv7cLd1cvnfHNMdDiWQmlR04nef6Pn_U7gWAFAszJ4obVymS1E07t65zD_5x80TI-8kui133TgVBu-hBMZ16sL-UIOcK41j1PvRDWA8jMBHTbzP90bLpZL6awBJuCMgOthALjuTfq9F8ANzOCvNp_JB7Otm5Tc6uy9G1OOj6l2-Il1eIT3UcLl7NDY3DCamAE9kzt9X4zfJIfAzSpDoSRK1CIjSLJ1pag4SHT6uvao3HU0bJarfvcO7QzHU5QaAU2bjzaueEKhJJ_pFDzIjH4bvIFXSOQfCO1XpNS0Vw4-Qttnd0eIHSTa1egfNEqXOUDjZiJtnh3haWCgB92cxFESkXN5-YbEQXyOUBVp25dtq4m3s4ZlI_auq2nD9i5TMCTJVkBOzmq3VhZrUNuCvA41JBLGaYZGwEOavzQx-J4EmcdpUcC9gc32Kx9Roidnv-mDmkMyscWK5AbfboA2K-fOdi39blAqI7V7E61bQpeSs9f-BIyl4jn-PXgD5RZvZfJkDjBPjP61vmEi3lJ8fSQzx4eRDpxTgMn832zq9nN8UO4lcUwB9evHg1-I0wTYVL9iTt_Lpdr8CEN5ZyBpqSfU9C1_b9rEhZeNr85pMPBesgw8sYexhkQz4KpHat5wa7QL9cddkcIXS8DxR25d2m64fn4bIe6CNeKzOz6-t7NiwFLknFu__r_ZFqRPtKcPRul_JsrRSyfZVyCanAF4OU6jpE4Oxr3CCVRSjxT7kxNvQqBjo1COpNcQqF_vf3DQWqbolAR-xFwpXRExvG1alRcehvFYoX4LMFJcoy-RqlWC7HFKclqaiVr2qDfx9ZS2Onz1nmFqxlF18_LS4s9aNkOPU5fJ42y3IECdH2rFqRd0q4aWRX4qfFkjLcRVgSAH_NXngpilCQ5BSYqEKKwvU98Rdz6hEW8xeL4uOSQI8tHAR28hLTWBQV7nSntIvaEqWgI1AXlsQ04BRRCWsNal5VNdVOXuPSeCQvhThJA4-0ukPpZ5pjzzidT-62FG5IyW3RV_Dx1zIWOFoVDJAfNiCrv-enxVyX5HB0sCG8LOG-Skk1KTlvmAl5W7elPBBWdOLaBDjLnJeSZ0a_FbCoZbjq_53eBPI9QTXF1hNLa05zq_RFuAQR6JxydoLs92T4JAuQXHddO1TlSfN5yAI72JMHuY-ZMdbI2IQuEYnKfchu2lFhr7oNdjHh5hqlAfWRL7aH_Z5_imBAVOZETGxnSLdRPQsnX4JCbMjq24zZVQd9qsW4hHLoWIHggLDaqKuEZgNmfCDMvxR0-F9pPzS75L8pHypA6Q3rGACfWMpcEhfhA9h9ZriU8lk72R23oJqXLIHISfbokff9G9NC-ocf10XGK2hJq-wjjRLJLHW-i9EMjIQFpmOxwjlXfR6CLXBA9iLo2wW0m1Pa9fBSDZjLDTFbXEuMLZ2l3gmnkIxlr8MWAUGzFjT0Ojq0XcjrGlGBypg2ffTycjdOMOv87fZvzOxwQlL0KYTdJpH9aCGM0563PXJHCgOReny96FII9BH6e3deN0MJwCIkid6hAQUbvJOOcnme1h1ZyTZvE_4nw6ofR5QEbku5_RAJCHjKDWgCv6CFu3Jta-EgKQxXCpDQWzjzIRIg27W_FTdYp3RUSNXh0hCt9sVFwifLsIJxgsl1YjtcDRrTZbsXdbXdGxUeHeDSzCzqG75bhQlr44qKwSqF8srmIZ3nsAedQLPSpn9o7ukE51NugA9dwgUfutqorLcxakO-iIQqgWBO5UNKGhLFL5KIxXKwQai9C805jUjG2lnU0pCLrIPeC8OG786pm6Lz9Kgd-4pZWu2KAZe5kuf-VJqpW9sg", + "summary": [] + }, + { + "id": "fc_0b596e78cb62e4af0168f8dd00f1c48196a18a701247ece722", + "type": "function_call", + "status": "completed", + "arguments": "{}", + "call_id": "call_oQBEjH9ghJTMob4tcqkYuZVP", + "name": "current_month" + } + ], + "parallel_tool_calls": true, + "previous_response_id": null, + "prompt_cache_key": null, + "reasoning": { + "effort": "medium", + "summary": null + }, + "safety_identifier": null, + "service_tier": "default", + "store": false, + "temperature": 1.0, + "text": { + "format": { + "type": "text" + }, + "verbosity": "medium" + }, + "tool_choice": "auto", + "tools": [ + { + "type": "function", + "description": "Return the current date", + "name": "current_date", + "parameters": { + "type": "object", + "description": "", + "properties": {}, + "required": [], + "additionalProperties": false + }, + "strict": true + }, + { + "type": "function", + "description": "Return the full name of the current month", + "name": "current_month", + "parameters": { + "type": "object", + "description": "", + "properties": {}, + "required": [], + "additionalProperties": false + }, + "strict": true + } + ], + "top_logprobs": 0, + "top_p": 1.0, + "truncation": "disabled", + "usage": { + "input_tokens": 138, + "input_tokens_details": { + "cached_tokens": 0 + }, + "output_tokens": 464, + "output_tokens_details": { + "reasoning_tokens": 448 }, - "total_tokens": 127 + "total_tokens": 602 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 16:05:37 + recorded_at: 2025-10-22 13:32:49 - request: method: POST uri: https://api.openai.com/v1/responses body: string: '{"input":[{"role":"system","content":[{"type":"input_text","text":"Always use a tool to answer. Reply with ''It is ____.''."}]},{"role":"user","content":[{"type":"input_text","text":"What''s - the current date in Y-M-D format?"}]},{"type":"function_call","call_id":"fc_00f93a97cc2a90520168f2695045148190b941d9cf7c5371ed","name":"current_date","arguments":"{}"},{"type":"function_call","call_id":"fc_00f93a97cc2a90520168f269506a0c8190a51b55da3f4f13d4","name":"current_month","arguments":"{}"},{"type":"function_call_output","call_id":"fc_00f93a97cc2a90520168f2695045148190b941d9cf7c5371ed","output":"2024-01-01"},{"type":"function_call_output","call_id":"fc_00f93a97cc2a90520168f269506a0c8190a51b55da3f4f13d4","output":"February"},{"role":"assistant","content":[{"type":"output_text","text":"It + the current date in Y-M-D format?"}]},{"id":"rs_0b596e78cb62e4af0168f8dcf44644819695adee06291dc69b","type":"reasoning","encrypted_content":"gAAAAABo-Nz4juEo9vu1wun4UFUK0Dp3vTbEFBQtyDHBeRk2hd8Pa3Ahjs4Ko8Gv9-g1sU7rYYKECTOy4ecI_7wGb0Aqz6_r3RxXdTMGA9L7AW2CUm8aGnIQRMKngDu6ynuI8l9EOgj8d4hSly7G9m38MRvsJe0NYL_Z1o92fL8EhT2BKdTWTtM8TJsZqhaT4e3_argWsdVMF-Lu4-ofuKj3cQvhEwQCuPX8Z0wkgFlL2woinb2RpvsjswqNiQYW0NCFzlvmfV45xF6XACK5l_gK4lZ0nnThcQIYX4O_OmEuSsKFgRyvlrX1byKk6YrsIFoXbk-oFpVrl_eLzBJ1rv9gmcBH-P51Ks_wYXSOmEwjsQ3vKjbvPb5r7VNywbFBbkPK2hLuUN7E5Pxpb4CUcr7diERqjCCfRGVk2V8c05dkbR594GEil9BmBVuC6-MaZwn-B8oS7uJb3Q7547BtDqHC5CgJSkbhIRJyuKcQeCa-3yrMmdMLz7RG9P3wttEJanfTC3hZuzc8LP7WQeQokRaiDs817jqRCBc0VPNdILCkz1o8x0Jmth14j2H1_JCiAKNkUEFbJQ-kSaxhhKi8cRkHgjYiTnz7ZhZ4qYeVRRRS6S4FFyRG_I8nLvzbo7UgVkZCocuXQ-PKbkMtyueMQEZ4DBIZwL5mDEowhZ7lh8H6Vp9tHO3wbiJHHSrAMJY7o0Xmfzx4_OMUrrZLYSjCAwJt_GhC59iu1A5lQIL4TBOauM9wgYShwxATlkVcZ_3FtuU9NRq05LNwSdnsLg3HYVSTy38_zMGBfBhJJRp2JiJ5So-aiWiS666gXXRR_lPqiTtFHCquN-_pWyoxF8RSzf-XKvrdW42ECeT0XdWvrWrVdShsBvzlvhTNIGW5JRXNgx3OcFfzRjdRD8TpUoK_0vu6sSM91MAfGGHNUp7RzQHVQuon0YsgflJnqlNzHYO1Yo8oj4tY829EJ6mIpuUOdVhYBrWwk1kFYmzTGOo8XVKW4eWgPFsC52b-o6rs2G8cEJZI-NcBTjgdF9ONrdGDwTNSBAg1LXiuQ5R29ejao-_1mDzgNM61ykpdmJMVa6P7qOrfL-5ne1GTRHCF9mVL3dVx5OCdvrJgQF8Gbg2_TaXLbXrCFI5MQ7iz5oiyHZ6_4UjG-YUnOQpkQ8q9E1Nj4W3tIF_y9nmxghKy0xDw3oJgKhN-EFi7jxwJAYxv9CjwpPUV5WfLuA_oqZHjZ4lz5Z8lQLENG5OwB9sZsSMTs6qLbVPjXs2913B7Q8oO10T0hmwgZAZ45kNZ2lRnsnr5SETcSGAi69Dnsry7St6GGCtQaHCazGmVeGhDgj7zMRhNqyKsCsZu4OB3KR0qXowxeZB2PTH7cJnID6hIO2UNxmwXAbBuwJ4A7X-g6vx_LguRxiosZCrv-sW7gUfsS-JaQ9AV2scS2org1Mwy9euDAVToPe7wQixOgvmYVLYCTR5EvAwucKpb0mryUop8pVG8co1oJ0X_q1nShQBdoeA99MsWhCLy0KGDYa9qM8Hj0YvBqGCChFDRDjLequEighgGoZXvtuUVoNF_4wreJ52wP35QdLNWoZPEOiNRvpBCh1VoxJxpv5xRiVhnDB06tvlUPEk-cS68FLUZdxwoLKJZC_5_6ToBO_YKuAg7vNKmT7zPeqTpX6NpG3uMoWJxfT5KzLhvhhfUa65Vp7fkyDO-QEMLSKPCwYyMy5YTj-j2-rKQtl3ddeYmAMhQsQTILtn6n1_Bzt84j6rl2rzSr2ugUobt7zGbIkkxADCTOCVOR-8F7xgg6j11bapIQ1sxGAB3kVPayS5b5GBir8DH269xw-Rq9tw0FPPhfEGUcL1w0YLcBEhtXYLSItxnBxCmD4J9fHuxE8d3mnbe3AFkbWXEi9EvIVx1z8JQ2ECDpuvZov8RQ6H5Gxl-qTGNQG7ibZHTzReiaDDvH2tPVC_y6jslB3_ru6zPvuCNkRL7FJcFE_UD2RG7LVqjhQ3yE-jJsLRazkRXaY1VzJuv7rOrRGYgv4lcmTm9gI8Q1pSaDHqe97hIuBh2VeR7MUpEDokObzmdTngxPtO5y83qCxQ4Qnl5-t-m3C2JtdDbaHUMTz3sQklw8x1J8_TY1CoIt_rya2Ws0AOCij0tX-Dqlmos_KFlW-BjVUdTox_kuL3Y7A9QIL37kfMqQFnqTBJd1j1cUBNc0lkr7Q6okOIfIHaZa2OQRS_l6edbjfmJ_SyqTzAsr3h2GldGQ1YMjLN8HDY-vXRvmJCKInG0vq_6mAK5qEyVvmAM7wSk071jDos8rrqqag3d8pf8t9U0rjS5xM9WLdImchQlxUHvVQ7KDicdmfzYOakN9LjpRVfgwvzQS7xGPm5ESOEWBHTFXJUM4eUPn30FD79qhnfC9B3QzZVEX3ukDHQ75HNJ0GPvECGl6nY6bvXY7TC3rP_Hk4b1FIvK6J_gh8XsvfYhrrsYq9ttzkrlGhHU3drXhzTajaHj_-G7-EzEe10mvU7rIQXY6kEyEw6Y3z3CoUX_L-DLeptYrgM55CGXb9XHqzfus8mDu3pvMPC--phwUj7fPr1NXWDlpnLFqCvw4jv6oxHimmmDxLbS-BiUG23aXuM0PAM5dZrRh3-ntM4YP2lb4yAF","summary":[]},{"type":"function_call","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","name":"current_date","arguments":"{}"},{"type":"function_call_output","call_id":"fc_0b596e78cb62e4af0168f8dcf8075881968cc6ecd61177aa2b","output":"2024-01-01"},{"id":"rs_0b596e78cb62e4af0168f8dcf8ec048196bad8d497c7c98cca","type":"reasoning","encrypted_content":"gAAAAABo-Nz8NAdTL00F245OCYwzjmuG8xJk51sZhusE-dSkAZuITX2OTRCK9SNhgppraz6f9zzM_lOKXtQEav5m0QMkEL4Sm22kbgH3KOf8KeuoyKeHxh658naz-pyKXLiDs8X1Hg_7MkrTcRQoBrPDHp2b4mOvrjjFHP4lzsGgIfEyYwb-jt2ZzAqfOppZwA5eAqd9kXFFj3_zq9whWzJ3fu9bImmqzjsXcoZubjH6UTi6NUu9FQP7Wx-3uN9aCApixgrylUjS9TSJMU6loRyMohvxvNWex26nYyrEBHCwPagn4rdi26NHEbn9BUI_IgvQAATuuWzaSH2kRBKqXNVnyNdKiUA32Y46foM0LkknrZjC5U8nf3o39z0hJ8qNydlg2w_Yo6WbU8HnyMvYSMLdBPsWOFyLw3NToi5196f6fRM_Ubp504s8mmGV4B47IilvOLenOkzYJyTKU3cA0kgnSFv8om2oVb_vNv_omw8rBB5zz3-V3Em8K4gdo9u7mMx8PBKBhyCUePByBIWm2-NnCGzdjYo9-ssbF0v0pVbUawxltv2s-6nvRgAKRZmKZaQ3egvUOhkEheeU3qRfMH6xJ7z0SY7OmfcBL1lzxd9z5X_bVqtXyVxzNMPe5n5KMVtGO8B7pd7h3azio7JYgHHxah7xKKLprjHrNbQXt3zv8GCiHmLzOPWgeeyKUuksWce7IWwjc1MMm9R1_HHDy0dhvXVYpXlAzJCZZr_s_n11S5uFkG-9XDqbgtecLq3QYrqybzi1aMLr57dLlt9H-DLPGLWsXRn3aOX9ttYbjkyIkT8kVM4hPnZ171I0SqTaHX6VuBjJk6n0-rkRFNMb5TNEyl1XXvhAkNu1LU9gDrN1jzbQ5MK5xCIXOI7127JjwnI1QWJ2uDfFwK5fVzoS6qCNPGAp_wYkffLHF9TehVBxKAvh3yuvBGGUokOXOHgQNjYSGOJ5d1GWEm7JnybZqCODZJWeDbD2k5F0EwJGxRZERshreMki32-mKbHM9xLgkfBCmZJzwOeAAfbSN_fXEsyuH4pk9viBdifY1qxf4Ow8PFAZEyrsTbISoOq21B-YN_fQgv7O1Vbt2EQV31usrYG4tmE8MIAnqVvhr1hd2HZB8H0HYJNDc5gJCefhRr71XZaXEUI2jj1LLadgQ5XZDp4A2SifSLd3zEL1LyzuBi2ghsybovqVjOCMxrupw7IHvhXD6mmLK43dhlGgqXYh4zvqkIRaUy2uin2lMYtP7GAQZ_C1bdTWetYuHZvCEwrasvVXKTnZDxfEFYhVg3iienFLBZmACc3flNK8RuWxD_5oj1BzU541MLNIgi-eu-sP9WwnZW4PSL2EzOwKDrf8878IjIIoSC_fpHMt_Hizu0DIcD4SPcgNDkErQGEyfZz0XmdOMQXBWf93ZCz1JCAzYckesVVb19YwTgGmr9_kmB2kW5Ygq3gZNleMoWLu6t4tnf1CUAujwOeHIQRfmaC8V8kbU1w3t3UDhJ8m9ZHfzC4msTILLX9-DAjp013lRhZnMH-Lb7i2lfjA9fUmYJfelUkTYEIwkqSPLZfld8pNO2J-MzuTETh_47D2bSR6vRvWr_hMeLiULMNV8JL28QWJNtiyJ6BPY1XOZGDjRLvV-ipvMhV8VriYY49kS0WTIf57VJpAmX5wrY8g-t2ISijHPXgCSArRuGyxX_Mpdo0iY_fM61vuZfzB5BAC0QLl5YVM4qjKBYKS2qiLfdlU7hjkIx1Ry3NcLmf6pI8Ojv0Fwp-6H3Ljm37bkh_ksDi_2EWqTHLoo-EBD4-tQXqSdNw5iKfkIUm7ZX_p47kuonY5zYcA-sBi7897-u9CmaA66Yk8M3HkY64E0SOSTzh8rQ-dRcQXI_qGflyoXmtDja72hGp63d2YSsL9HKQWAaH3fyzblapTHoWH5hXsr1JZqNhplSawgtM3tt9ZZvBahBLAN0OVmw3BVYkW48m9nUimXtRqYMQXxUXRBp5kp4Zv4_FxqMtNW-WR92GTWvTE74StRBm1Y-AyD3pJroghLi58eW439TCVpUmUZypF-QRLbmKzQ_983s5y-yKb6KsE6brGXb1DNapWxgsVz34erwL2zcIOxWSPzbQp1W-YkS5CZb6GgrwCDRHp-5vBP3HSwNmJaLsqmsAhUpQn_hA=","summary":[]},{"role":"assistant","content":[{"type":"output_text","text":"It is 2024-01-01."}]},{"role":"user","content":[{"type":"input_text","text":"What - month is it? Provide the full name"}]}],"model":"gpt-4.1-nano","temperature":0,"stream":false,"tools":[{"type":"function","name":"current_date","description":"Return + month is it? Provide the full name"}]},{"id":"rs_0b596e78cb62e4af0168f8dcfd0ffc81968e5ddbddb2fd6157","type":"reasoning","encrypted_content":"gAAAAABo-N0BJqNKlmG4o0osZXpnFFpFwq2pUFvL013elVORoJTPiK4gU7KAP3gZ_eaRd7i74ONNgqDfcth556NOtFlBO65E7HObLleTC-rK-CMFyifSHXbNqcLckAmD7TfiRCHcrS4BwXFImTP2Oo-8zIiT5x5YNnx5VpfwqM09-b2S9btpkoTGN8fFj_5VnO8Sf4I8CJJ7CCUDul3Gfbskr7s2Q85wCZ3JteEb6BUvPvGjZXBBaWr_zss0iOAZYP4WpNF9gvji8YPxOTo23Yih6i2iK4MgDKaCKeoc4eO5sTYxDmLEtlj8NM-y-IhMHSGtJqT6en8zCTbPpSniPhJ8fVzRIdwLZZPXZNWyjOehSwYj5xuOo-RgdLg8aSicPITdMCUAgZgH_nALHW4sfOq1yAvvK_b-Zl1kPbAk7mCbrK0MRUwF5PfD_DQJk28kwkpylbmMhj3tQBmOsW06rpEgu1KyAqG8ced5PTyN8evXmaTmVUGKH8uhdNULsHHD_eGun1lc2aPG-eJGgGS8BgDe2rb-oWB0syaA5eZFY7CKiU7FkHOieuPoti-d6rDx_Xp1e07QPnK5DA5n32dUyAShR-nnWG_HJcSXbOgOcRi5QZeHU0GC3vlN99t0a9HJ02slx_4oVcg6StVvdvKwIuHWXhpB4Y_yx5ysT4uy24G1SdxTw5-M2awVf0nDd4abS0ZUqC0tSYMtGmBF6U06BMmz47YGA8ndgu-IHgwLyEwSXQfIB3nwGXDTVwfisKeRkwrOQETXJGTg3Lw-Po2_gfqaBmsxcDjIONfdxkkH6Z8_TRP2R5_IqM8PHZNxdIVKUZkNSsECMtwYtSR-7lWD3IHCIKTaEeA5hLUJedJPmqWx_2avfIrTiU98T-QW_WndSS9v9_Pf6g_rUOmA1PuEQbyRgK8DLYkbAByTBox3AqsbvTIa7LI-2AKvIcqVtpnUPPkIWtwuVjNtIra0TiLjgynMzsxUWG41EcUIuTkDjdTrcCiMWPsH4LiDbDRLHtXbqKwQAk2axIXe6bHQsbcTFtvlGKyoCHkj-DksdwqCA8ifHnLp3PvWjNams4U3y8YDdxQ_5g-ZwI0iBmvjgE_0Rp06-oc5p2hTqCu1MR4BYfRV1Uqw6leK9ZYIT6GaRg4Pec0m-6Qv_jMGk-BGvU09e58EDXE3cy3J1PGrMlZOlhU0k6IvSUbUCiUObVLHTgq6n7xzasNpfRwr6aHxb8oyyRt_8OIbLPbLcmVwAeShOHMrAqcWNWA_zNw6NWV30jeQX0xY3DX6TDxYiPdTgSvuaF2E_nIDngYXKwt6L4naOyEYnScFBiGv2RifWmvJRAxM3wZGp1f_RzcEeAIj2vcORAjTZjr_3Ehexcch9r5n2TAl8qh5GB9nUS9HpVACuJ16jtaS5nGDnf8BjPfmaaJIHBD3CIS9w7ebT_A2DAnM9FIEoMhpyefrIFu-qQxpiiRtJsZ2YLQIy9n2dUaNu71nAYCIv_P5CgDoFD7Y7RtfPcQXnfpOB72RylFtJXyQrsNYvr7ArQK848_mrhX4Zesa7M4JAqN3-g5U0oup8zNUWy1Jdw3GLyCzlNWBgP8ofLWag935ctcSIDcJRU11_8jepkBsen-15N-fUDXE3qV6EpRP8ab8UtRzn2xCIqieAUKSHzjxfWl0kAo4-C2yoF1AT78lnBld9s43hAdE2smukN8osZVIJuQhM2Izll4ckxX3XrTR24K4TgsR2LozqtVrjQeml7FuDL420QGJsEhLUM2oYtyM-iF2E8AH8_lwXUVapkmgbpDSIWcHPN5ar-jZCvYzjcjbIv7cLd1cvnfHNMdDiWQmlR04nef6Pn_U7gWAFAszJ4obVymS1E07t65zD_5x80TI-8kui133TgVBu-hBMZ16sL-UIOcK41j1PvRDWA8jMBHTbzP90bLpZL6awBJuCMgOthALjuTfq9F8ANzOCvNp_JB7Otm5Tc6uy9G1OOj6l2-Il1eIT3UcLl7NDY3DCamAE9kzt9X4zfJIfAzSpDoSRK1CIjSLJ1pag4SHT6uvao3HU0bJarfvcO7QzHU5QaAU2bjzaueEKhJJ_pFDzIjH4bvIFXSOQfCO1XpNS0Vw4-Qttnd0eIHSTa1egfNEqXOUDjZiJtnh3haWCgB92cxFESkXN5-YbEQXyOUBVp25dtq4m3s4ZlI_auq2nD9i5TMCTJVkBOzmq3VhZrUNuCvA41JBLGaYZGwEOavzQx-J4EmcdpUcC9gc32Kx9Roidnv-mDmkMyscWK5AbfboA2K-fOdi39blAqI7V7E61bQpeSs9f-BIyl4jn-PXgD5RZvZfJkDjBPjP61vmEi3lJ8fSQzx4eRDpxTgMn832zq9nN8UO4lcUwB9evHg1-I0wTYVL9iTt_Lpdr8CEN5ZyBpqSfU9C1_b9rEhZeNr85pMPBesgw8sYexhkQz4KpHat5wa7QL9cddkcIXS8DxR25d2m64fn4bIe6CNeKzOz6-t7NiwFLknFu__r_ZFqRPtKcPRul_JsrRSyfZVyCanAF4OU6jpE4Oxr3CCVRSjxT7kxNvQqBjo1COpNcQqF_vf3DQWqbolAR-xFwpXRExvG1alRcehvFYoX4LMFJcoy-RqlWC7HFKclqaiVr2qDfx9ZS2Onz1nmFqxlF18_LS4s9aNkOPU5fJ42y3IECdH2rFqRd0q4aWRX4qfFkjLcRVgSAH_NXngpilCQ5BSYqEKKwvU98Rdz6hEW8xeL4uOSQI8tHAR28hLTWBQV7nSntIvaEqWgI1AXlsQ04BRRCWsNal5VNdVOXuPSeCQvhThJA4-0ukPpZ5pjzzidT-62FG5IyW3RV_Dx1zIWOFoVDJAfNiCrv-enxVyX5HB0sCG8LOG-Skk1KTlvmAl5W7elPBBWdOLaBDjLnJeSZ0a_FbCoZbjq_53eBPI9QTXF1hNLa05zq_RFuAQR6JxydoLs92T4JAuQXHddO1TlSfN5yAI72JMHuY-ZMdbI2IQuEYnKfchu2lFhr7oNdjHh5hqlAfWRL7aH_Z5_imBAVOZETGxnSLdRPQsnX4JCbMjq24zZVQd9qsW4hHLoWIHggLDaqKuEZgNmfCDMvxR0-F9pPzS75L8pHypA6Q3rGACfWMpcEhfhA9h9ZriU8lk72R23oJqXLIHISfbokff9G9NC-ocf10XGK2hJq-wjjRLJLHW-i9EMjIQFpmOxwjlXfR6CLXBA9iLo2wW0m1Pa9fBSDZjLDTFbXEuMLZ2l3gmnkIxlr8MWAUGzFjT0Ojq0XcjrGlGBypg2ffTycjdOMOv87fZvzOxwQlL0KYTdJpH9aCGM0563PXJHCgOReny96FII9BH6e3deN0MJwCIkid6hAQUbvJOOcnme1h1ZyTZvE_4nw6ofR5QEbku5_RAJCHjKDWgCv6CFu3Jta-EgKQxXCpDQWzjzIRIg27W_FTdYp3RUSNXh0hCt9sVFwifLsIJxgsl1YjtcDRrTZbsXdbXdGxUeHeDSzCzqG75bhQlr44qKwSqF8srmIZ3nsAedQLPSpn9o7ukE51NugA9dwgUfutqorLcxakO-iIQqgWBO5UNKGhLFL5KIxXKwQai9C805jUjG2lnU0pCLrIPeC8OG786pm6Lz9Kgd-4pZWu2KAZe5kuf-VJqpW9sg","summary":[]},{"type":"function_call","call_id":"fc_0b596e78cb62e4af0168f8dd00f1c48196a18a701247ece722","name":"current_month","arguments":"{}"},{"type":"function_call_output","call_id":"fc_0b596e78cb62e4af0168f8dd00f1c48196a18a701247ece722","output":"February"}],"include":["reasoning.encrypted_content"],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","name":"current_date","description":"Return the current date","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}},{"type":"function","name":"current_month","description":"Return the full name of the current month","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}],"store":false}' response: @@ -289,37 +413,31 @@ http_interactions: headers: alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 990109df0d94c86f-DFW + cf-ray: 99295ce83c393aaf-DFW content-encoding: gzip content-type: application/json - date: Fri, 17 Oct 2025 16:05:38 GMT + date: Wed, 22 Oct 2025 13:32:50 GMT openai-organization: posit-esfrkf - openai-processing-ms: '630' + openai-processing-ms: '912' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=76Y8yDtdyfww0Ez0yCh_6uSqNXQ6TUPjnCT_3BecN9c-1760717138-1.0.1.1-_I.1DnfM_YQjNlLptBIauSC_Eiy_95aW923BOWLnDfM2z4rnkh92I1WNetvGxhwKG656b3ryaWeNogwy4HMXpWbth2ijEt_WAAmNC2WLyrI; - path=/; expires=Fri, 17-Oct-25 16:35:38 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=MlcuCuKBwLgawPkpIYK5GlvrqYLnEOdPol.JrNPiU44-1761139970-1.0.1.1-3ytNI_GfBZ1PIX24KcSFmyZw8Drh_Fmk4lBOsmNSJmRNzSZ1ERE6Jurzcl0jDDFgF.ZZPfloh1SdsFm8d95x2rd0trLsY_YQFx30eIVBKFQ; + path=/; expires=Wed, 22-Oct-25 14:02:50 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=ggZFu0p8yASkiyfqTOOwgRFy8V5rRlmrP8397gVyx10-1760717138466-0.0.1.1-604800000; + - _cfuvid=P5UeW2MVk2UXfvajab4yetx7aQ3dYGn7V7hSBcYNZ9g-1761139970269-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '635' - x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' - x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999640' - x-ratelimit-reset-requests: 2ms - x-ratelimit-reset-tokens: 0s - x-request-id: req_d53019bc5ecf4b54afa61fe218658707 + x-envoy-upstream-service-time: '923' + x-request-id: req_20f8968d3a3545d1a4a3379126d7f19f body: string: |- { - "id": "resp_067f51606fce62f10168f26951d47881979d0c6704fcb264a5", + "id": "resp_0b596e78cb62e4af0168f8dd01606c81968000147076112609", "object": "response", - "created_at": 1760717137, + "created_at": 1761139969, "status": "completed", "background": false, "billing": { @@ -330,10 +448,10 @@ http_interactions: "instructions": null, "max_output_tokens": null, "max_tool_calls": null, - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "output": [ { - "id": "msg_067f51606fce62f10168f269526174819790cf20058957d430", + "id": "msg_0b596e78cb62e4af0168f8dd020e4881968337c5d26bfe610b", "type": "message", "status": "completed", "content": [ @@ -351,13 +469,13 @@ http_interactions: "previous_response_id": null, "prompt_cache_key": null, "reasoning": { - "effort": null, + "effort": "medium", "summary": null }, "safety_identifier": null, "service_tier": "default", "store": false, - "temperature": 0.0, + "temperature": 1.0, "text": { "format": { "type": "text" @@ -397,18 +515,18 @@ http_interactions: "top_p": 1.0, "truncation": "disabled", "usage": { - "input_tokens": 142, + "input_tokens": 644, "input_tokens_details": { "cached_tokens": 0 }, - "output_tokens": 6, + "output_tokens": 8, "output_tokens_details": { "reasoning_tokens": 0 }, - "total_tokens": 148 + "total_tokens": 652 }, "user": null, "metadata": {} } - recorded_at: 2025-10-17 16:05:38 + recorded_at: 2025-10-22 13:32:50 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/parallel-basic.yml b/tests/testthat/_vcr/parallel-basic.yml index abbd56d1..bb213518 100644 --- a/tests/testthat/_vcr/parallel-basic.yml +++ b/tests/testthat/_vcr/parallel-basic.yml @@ -4,44 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - 1 + 1?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + 1 + 1?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f16598d8636ab6-DFW + cf-ray: 9933ef5c68bf3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:34:19 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '277' + date: Thu, 23 Oct 2025 20:20:27 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1671' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=3mON_KPp_Ij17EAoXhoql1EVbnfDxNUzC5weYqZZm4U-1752500059-1.0.1.1-DFYXATpuuRq0QDF2Zju96.2mVPN4AlNogelfM.INQOmD8yXkOY8Ba1gaabeCRwTKIQcslaqJJl_fxWuknMWn4HL18g7_kDSIsxYfR9dlCto; - path=/; expires=Mon, 14-Jul-25 14:04:19 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=qk1an_o4OKRPnsU3qtlHiIlTNE1QEEaXUInrGgNTmUk-1761250827-1.0.1.1-o7.3.XHtUTnPMqlMF5DOwa3KsO5t_MWlCn3byLNNO0l5AeTpR6BlRgou6khIjD4ZQAeZlMI.WcAkpNsALPkqFZ3W9mI55.bWyTO7EQow6OI; + path=/; expires=Thu, 23-Oct-25 20:50:27 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=MH8qV7gcEoOcHeOXyOLM7xYADK1nFiyr1sPAOGTbvBQ-1752500059752-0.0.1.1-604800000; + - _cfuvid=7nixCS34LSgm1mJlZAeBimuQBSLsaMYYscI3FBF5Ii4-1761250827432-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '297' + x-envoy-upstream-service-time: '1721' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_b092cd956c5fca2485ccaaba42636263 + x-request-id: req_2fe378664d754983a74eaffbd500bcd5 body: string: | { - "id": "chatcmpl-BtDbvEkGQlQ9ZzPLUvi94gmR77HH3", + "id": "chatcmpl-CTw5J4WpxSs3V4QMf15xL76Vuu79X", "object": "chat.completion", - "created": 1752500059, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250825, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,72 +53,73 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 1, - "total_tokens": 22, + "prompt_tokens": 20, + "completion_tokens": 74, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-07-14 13:34:19 + recorded_at: 2025-10-23 20:20:27 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - 2 + 2?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + 2 + 2?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f1659dbe076ab6-DFW + cf-ray: 9933ef684ea13ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:34:20 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '127' + date: Thu, 23 Oct 2025 20:20:29 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1427' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=RRGLpMw7t2AwONAYhNrGvN1veGKUYp083o.2DcWpNT4-1752500060-1.0.1.1-kNTN0REAgyLhll1TayDH2Bx9mNAc2ECaCl6.m7X.vJQIn5Gv.qdgAeagetKVmai5Ujf6L3gvqP0xocwOtaN6sLiZxycadgiZxqtKBFEVpmE; - path=/; expires=Mon, 14-Jul-25 14:04:20 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ruq0bFlBAkwB5oNmLWE1L_NV9CvhPNf0evWiH4kiGOU-1761250829-1.0.1.1-1O_bExXfpAy_WAFooMlywWkb9bmEE3TFx196CN1aGekKUzpA0kku71wOcN2dn8geSA56CYMgIb0YFxHEeAQHRfSHFH_GsqRIetendOsYLZA; + path=/; expires=Thu, 23-Oct-25 20:50:29 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=JYxS6SN9pAPbLPO3DoK8LGehVd9XW34jNbMlSPGgFj8-1752500060196-0.0.1.1-604800000; + - _cfuvid=2UBtLbaU.9FhguSQEpRcKrmebWKiiCLwr8pxy4J1JG0-1761250829074-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '137' + x-envoy-upstream-service-time: '1458' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_824516848f8fa0109ba13d2bede0db69 + x-request-id: req_7cf5f7d6f97e40aea00f836daf640d80 body: string: | { - "id": "chatcmpl-BtDbw6qB3HUzwWKjNN03hhMH3r0L3", + "id": "chatcmpl-CTw5Ls5lT2jWkxZTm2awyKiX5CfD6", "object": "chat.completion", - "created": 1752500060, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250827, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -126,20 +129,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 1, - "total_tokens": 22, + "prompt_tokens": 20, + "completion_tokens": 74, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -148,5 +150,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:34:20 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-23 20:20:28 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/parallel-data.yml b/tests/testthat/_vcr/parallel-data.yml index 1417dc0b..4b3ce90c 100644 --- a/tests/testthat/_vcr/parallel-data.yml +++ b/tests/testthat/_vcr/parallel-data.yml @@ -4,45 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"John, - age 15"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + age 15"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 960bc33eefa1e669-DEN + cf-ray: 9933f003a9fc3ab9-DFW content-encoding: gzip content-type: application/json - date: Thu, 17 Jul 2025 18:22:04 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '218' + date: Thu, 23 Oct 2025 20:20:56 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3806' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=JSeWgGTkj4wdW2PEaG3UphMed4UxAck1xT7VjyyAU1c-1752776524-1.0.1.1-4hMZdVp2aQLXKoQ9PXjJ6fULKz2JGHuVDd_IijirBouD3xTqkc3JunszRMXnLV1AcggZwx.R5ToFgR4H5beCgC1yaT5uXTzcIPt8ufkneYA; - path=/; expires=Thu, 17-Jul-25 18:52:04 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=7tP3xWdZrjKXntTvjyEUqHOZDEMYLWUkjJC8vGTh2FI-1761250856-1.0.1.1-KOGpQDyJgDG4GP5bhRGR6IjzlEjQz82SxlB3qBISZwm2qTW04qDF05zWHc76ti0vc_9eaVT21t48Vnftf368IrhEK45W9mVC5KNhpB2DgrY; + path=/; expires=Thu, 23-Oct-25 20:50:56 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=HrCJe1LTHKSxW35GwOTM_xYqPiojJWGkO8D3flbwxb8-1752776524935-0.0.1.1-604800000; + - _cfuvid=y0UEspdU4nOHjFWqGmHJAfM5gfCyhJTqwcgDJwMe4JQ-1761250856287-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '222' + x-envoy-upstream-service-time: '3829' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_a3a8c647d18f2513442a80b5b917282f + x-request-id: req_4be85bc5e11e4e448de3d535eb7d37f9 body: string: | { - "id": "chatcmpl-BuNX2CdsyvFG4LwONHBdLNADAPMuu", + "id": "chatcmpl-CTw5ktTOgW6yFRC2ubJs2bZrfmAL6", "object": "chat.completion", - "created": 1752776524, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250852, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -52,20 +53,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 61, - "completion_tokens": 9, - "total_tokens": 70, + "prompt_tokens": 59, + "completion_tokens": 406, + "total_tokens": 465, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -74,51 +74,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-17 18:22:04 + recorded_at: 2025-10-23 20:20:56 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Jane, - age 16"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + age 16"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 960bc3414ed1e669-DEN + cf-ray: 9933f01c1ca53ab9-DFW content-encoding: gzip content-type: application/json - date: Thu, 17 Jul 2025 18:22:05 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '317' + date: Thu, 23 Oct 2025 20:21:00 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4124' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=kPl2mL.FfCs3VxUt7Vw62KI0SoYeTP7NEwY8uqqq454-1752776525-1.0.1.1-Erd8UH1TUJgtWbT0pWcGSyS24iryrRl9GwqhooEVeySDqhjpuAZY4.VU3Mhq0Pmkm5iomLnqc.BoEAX0.Df7hf6BI0tmq9yMWdZK4jOnFWY; - path=/; expires=Thu, 17-Jul-25 18:52:05 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=6VtcWb_ZLfFcoJfI2IvgCgqV_K_yd2YYwD6a.qgvHiE-1761250860-1.0.1.1-Ae06IjobhHxu7YG9MOhvtn1qj69Vv_TG8zPaocxPEc_QUQvzsbblXQ2RWLSnIsaIRGqBzmZI.C7_TI0aBzzTWFMeUEm0hgAbrS.IfoiNP20; + path=/; expires=Thu, 23-Oct-25 20:51:00 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=7aEMurE8qykM.h0MfB3L3AgfLVsENNGWO5t06rEIySk-1752776525399-0.0.1.1-604800000; + - _cfuvid=22euOsXHCOYkEEqJVXKykUd825i5rm_QiicqP5QdGnE-1761250860543-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '319' + x-envoy-upstream-service-time: '4166' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_25db19e887559a30db6fe8c6c35a2690 + x-request-id: req_7bba022fcace434892369ceab73bb797 body: string: | { - "id": "chatcmpl-BuNX3QpVMREcgnoXIkuQXeP3g4crV", + "id": "chatcmpl-CTw5oCICtJ3TsMOPEKtSU6wT7iHyt", "object": "chat.completion", - "created": 1752776525, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250856, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -128,20 +129,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 61, - "completion_tokens": 9, - "total_tokens": 70, + "prompt_tokens": 59, + "completion_tokens": 406, + "total_tokens": 465, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -150,5 +150,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-17 18:22:05 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-23 20:21:00 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/parallel-duration.yml b/tests/testthat/_vcr/parallel-duration.yml index 84e3e82d..b448e627 100644 --- a/tests/testthat/_vcr/parallel-duration.yml +++ b/tests/testthat/_vcr/parallel-duration.yml @@ -4,46 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - 1 + 1?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + 1 + 1?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9923d52a4fdbeada-ORD + cf-ray: 9933f95a2fe51376-DFW content-encoding: gzip content-type: application/json - date: Tue, 21 Oct 2025 21:26:20 GMT + date: Thu, 23 Oct 2025 20:27:17 GMT openai-organization: posit-esfrkf - openai-processing-ms: '222' - openai-project: proj_KTxPJ5EAugIeuZGL0lAI1H9t + openai-processing-ms: '2842' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CNn83eXIyTFCAi32M6078nwZ6Wj4IUbfjf4m6fddHCI-1761081980-1.0.1.1-6W13EGCknDqS1x.WrQhxHzML2KaBOGbPyA_zylzt7jx1uvtXxjeRwAJHA.G8y4NXmwsVZD2rsqsHyIl4S0qBqLNuwVnSLeUQ4T3S9qtTWts; - path=/; expires=Tue, 21-Oct-25 21:56:20 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=06a6Hb738GE2dpOPGtndDapjYIeC4hGTZbHCtOlLxcc-1761251237-1.0.1.1-FO76ZQFwWaBQNxV_6w4ljuLhw_LEp6Pdo5.X0Qc702FWP1VmH1.RCIP4ncaLSePf4ggDAcZaOwaXfe4i2kEf5VdEkU5qB7j_l3OukhkiIVU; + path=/; expires=Thu, 23-Oct-25 20:57:17 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=5f4xn.j6cu6PrOX0LueanYdg1MpSALF8OyBqNzD.8uU-1761081980836-0.0.1.1-604800000; + - _cfuvid=2.e7WTz4kkrU.1aJ0DJ5pQEHYCJvDHbywRcSjgqqQ34-1761251237797-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '242' + x-envoy-upstream-service-time: '2861' x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_ec2eb3314ce24143b5f0db019ab7b30e + x-request-id: req_6ffc3a7f20ec4edb8ac3e18d24dd0d35 body: string: | { - "id": "chatcmpl-CTEA0JE0DNVxVAxhXCiTOBw84MYcO", + "id": "chatcmpl-CTwBvqsc5BzLhUrhWypBPPUwRK8F9", "object": "chat.completion", - "created": 1761081980, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251235, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -53,74 +53,73 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 1, - "total_tokens": 22, + "prompt_tokens": 20, + "completion_tokens": 74, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_950f36939b" + "system_fingerprint": null } - recorded_at: 2025-10-21 21:26:20 + recorded_at: 2025-10-23 20:27:17 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"What''s - 2 + 2?"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false}' + 2 + 2?"}]}],"model":"gpt-5-nano","seed":1014,"stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9923d52cafbbeada-ORD + cf-ray: 9933f96c8b631376-DFW content-encoding: gzip content-type: application/json - date: Tue, 21 Oct 2025 21:26:21 GMT + date: Thu, 23 Oct 2025 20:27:19 GMT openai-organization: posit-esfrkf - openai-processing-ms: '222' - openai-project: proj_KTxPJ5EAugIeuZGL0lAI1H9t + openai-processing-ms: '1362' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=zRSWXQfnu0z7pLG482UCJpymENAMVmyL.vGgvM5MAiQ-1761081981-1.0.1.1-nD8ta4I2EvlEoA4fRG4uw.Tra0AYlecxwIJkmFukwMN9IQTSezTxZQp0ua6S8ZAxD.zfvT35DoyrfDkgNd7sstmEakLcL3aLyWxGLp3PK4s; - path=/; expires=Tue, 21-Oct-25 21:56:21 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=w9k4erhKB0KQc8SJVY1UTwbwCF747B9CxWz5VuPicbw-1761251239-1.0.1.1-KvAcU5e9I2Owex.tOi9QI_GP0GknwXW5PnNuyy5M77NAee8n2OBBaO5uFys9253sby.xFb7LABhmeFK.xAXDFOJY9sRwD_w_gYT232Hk9ew; + path=/; expires=Thu, 23-Oct-25 20:57:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=sHL8QopYm.59qm5MYg.M7qL_MghnWuJg_WIVGq0Ut_o-1761081981224-0.0.1.1-604800000; + - _cfuvid=YHlT_0EPeg7PnbSjpEqU8J7JFLpWpTqbjFK8y8IfD7o-1761251239271-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '261' + x-envoy-upstream-service-time: '1394' x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999990' + x-ratelimit-remaining-tokens: '179999991' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_8864835358074829b42b02598b3c4621 + x-request-id: req_ce48d6596b694621b270dafeecf1dd52 body: string: | { - "id": "chatcmpl-CTEA1aAVocwDiWGW6TokGvlY6zCxU", + "id": "chatcmpl-CTwBxZLIKZqTvLseQz5wgKfB3IJC7", "object": "chat.completion", - "created": 1761081981, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761251237, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -130,27 +129,26 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 1, - "total_tokens": 22, + "prompt_tokens": 20, + "completion_tokens": 74, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_950f36939b" + "system_fingerprint": null } - recorded_at: 2025-10-21 21:26:21 + recorded_at: 2025-10-23 20:27:19 recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/parallel-tool-uneven.yml b/tests/testthat/_vcr/parallel-tool-uneven.yml index 650ec930..ea76e4ea 100644 --- a/tests/testthat/_vcr/parallel-tool-uneven.yml +++ b/tests/testthat/_vcr/parallel-tool-uneven.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -12,37 +12,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166e28c9d6ab6-DFW + cf-ray: 9933efa4887c3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '292' + date: Thu, 23 Oct 2025 20:20:40 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2962' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=Th2_FZo5LXfxvN0wo8xzEyPMBu1fkuu2i5WgdwEu5xQ-1752500112-1.0.1.1-pF4Ro6Y1Ix2J7f6IDChk9ak6mnOflFZUSY2VK95KsF4x4uv0ek6x3a_xE.ht4NPIVKa1ybc2TOWwKvlyoTeeIW0ddi40XmUwcJS4hi9Bb7c; - path=/; expires=Mon, 14-Jul-25 14:05:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=kie0hs2lIfmCJbpBPxEj2o8aYmlORQW_sU4qH8o48uA-1761250840-1.0.1.1-DRSv8kETKdG3wXLlZU6d0wVLiEuYIJjeXikZZuEIt39WQWX4Nl3QtHwq92DcX4wjPRN23SB37BSDtnZMzG7HZx3TNO2A5pA_SKKWIYuTZaA; + path=/; expires=Thu, 23-Oct-25 20:50:40 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=j.CZIotY0bSLWVOXm7H1eZ4AewqkMJkDVAF2w4NGReE-1752500112489-0.0.1.1-604800000; + - _cfuvid=LFW4MVb6Cn7saCnJoj30OzTSt51PuKRyTbVj3ROIab8-1761250840235-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '299' + x-envoy-upstream-service-time: '2990' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_ed1c55f2b16778a82d62c6d16ed43a5c + x-request-id: req_8be1161ee308416ba295514e6c2dfa96 body: string: | { - "id": "chatcmpl-BtDcmoyF7l0gGFOqqbWZ4NrvyiAXt", + "id": "chatcmpl-CTw5V6YTGJJLnCtTnczVttM1a6427", "object": "chat.completion", - "created": 1752500112, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250837, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,7 +53,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_KzcwCYKajFpre80FodETpuqa", + "id": "call_1hXdz3cBCGTh0SEGBJ6jR8P8", "type": "function", "function": { "name": "roll", @@ -62,20 +64,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 52, - "completion_tokens": 9, - "total_tokens": 61, + "prompt_tokens": 136, + "completion_tokens": 274, + "total_tokens": 410, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -84,13 +85,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:12 + recorded_at: 2025-10-23 20:20:40 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"reply - with the word ''boop''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + with the word ''boop''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -98,37 +99,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166e7ba5d6ab6-DFW + cf-ray: 9933efb7bccc3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:13 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '177' + date: Thu, 23 Oct 2025 20:20:42 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2123' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=.Q9bihpk6nf9c9RJZG88sT1Ny.PtYOJJMMttvK8vjsA-1752500113-1.0.1.1-4LP2CJ2mTfms5FWVI6aY1Y3M_Bhj.DQ6ViU6KgBojozsuqGKN8YARhE1K_2rhpbF2h4Pls.dF01kz3nxSkKtQIyOb1zrPXw93R8W5pQ0Sks; - path=/; expires=Mon, 14-Jul-25 14:05:13 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=T5svaFQgpEFIz5ZBI9X.phJZRMQaRsCO7_qjd18hhyA-1761250842-1.0.1.1-q61YOTTlztAwxdu7KG7huyb.nNgFbfktZCrkOm9UwRsLqZfdvD25tmOVXzsrzVYY8SeBvHQXsGcETaxnBF0WgT1s3TUDbi8yWw8HQFnmZHw; + path=/; expires=Thu, 23-Oct-25 20:50:42 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=o04sO0P6wMKcSkNq9aTlGDnKFbfDHPTW9vx2bea.BO8-1752500113330-0.0.1.1-604800000; + - _cfuvid=Hluim3ILvxTknK1kIKZ6fEqb46oMC75HXwJVhiZVSAQ-1761250842456-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '180' + x-envoy-upstream-service-time: '2141' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999987' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_5637626c4b70125d58d0fce8b3b0e677 + x-request-id: req_548a4d1d71da44bf90fda6977d85d08c body: string: | { - "id": "chatcmpl-BtDcnuwmSkavS9EERnozUQTBd3bp9", + "id": "chatcmpl-CTw5YEN3Nst68TKteNdth8U67ztak", "object": "chat.completion", - "created": 1752500113, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250840, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -138,20 +141,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 47, - "completion_tokens": 3, - "total_tokens": 50, + "prompt_tokens": 131, + "completion_tokens": 139, + "total_tokens": 270, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -160,13 +162,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:13 + recorded_at: 2025-10-23 20:20:42 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -174,37 +176,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166ece8566ab6-DFW + cf-ray: 9933efc65d6b3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:13 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '257' + date: Thu, 23 Oct 2025 20:20:46 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4178' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=xrOs5H_chG8RQKlS7rl09wqenW6ajqUkzJCxQroFK8M-1752500113-1.0.1.1-NJ08R3NdTxYfVg.fMbrXoCHZYaCBIVba0xt.F8yHf1z.8oKXwv37L9Q1VarOj47tVn5mpzsrRgU7OHRDyJmkmNDwfycPnm77FK4VSAbuEt4; - path=/; expires=Mon, 14-Jul-25 14:05:13 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=OPLv5XZofQUWvu3.Y60kCa0tjOl.FsAvpxKt5e2_.6w-1761250846-1.0.1.1-Am5RYWwPuDiNDwouqIm6O3f8jBJG0JqjXD_ozVUS66U0WjnGN5xVmqOoQIZFNBfsh4eW9NSfq6KNQyH272VZpDl9gqXl5JpRewS3U6BASu8; + path=/; expires=Thu, 23-Oct-25 20:50:46 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=Gr_xwxVXiIrM8wC9x_Lh18bC6Ewk_DPQz6Gl_PoKONY-1752500113728-0.0.1.1-604800000; + - _cfuvid=yZ_55eiUaCQjcmDZMohu7LhTWyACojg0HKVBC7ogrSM-1761250846902-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '261' + x-envoy-upstream-service-time: '4233' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c959dce8fc3bd03a6e89b52f14190cfd + x-request-id: req_dbf9a79529d14de39821033dab82e1fc body: string: | { - "id": "chatcmpl-BtDcn3UlTc1aACCBHXf5yAg1TSZrV", + "id": "chatcmpl-CTw5aJGxb3pEWCc82M6ZGX7fbmo9N", "object": "chat.completion", - "created": 1752500113, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250842, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -213,31 +217,30 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_VEEo1PMuf1UVQuskHF5VUKDL", + "id": "call_uf737cySeNYXcr585cdsHFbH", "type": "function", "function": { "name": "roll", - "arguments": "{}" + "arguments": "\n{}" } } ], "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 52, - "completion_tokens": 9, - "total_tokens": 61, + "prompt_tokens": 136, + "completion_tokens": 403, + "total_tokens": 539, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -246,13 +249,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:13 + recorded_at: 2025-10-23 20:20:46 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"reply - with the word ''beep''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + with the word ''beep''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -260,37 +263,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166ef8fa76ab6-DFW + cf-ray: 9933efe1cd3f3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '215' + date: Thu, 23 Oct 2025 20:20:49 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2504' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=PGqAybjrBov3Zy4Lklet1ZZap125BrnpkQPSYoFaJW0-1752500114-1.0.1.1-kHFYTy.nl6aw_CoDLyziexW6HqxZal0fMHwUl0R4ZuAid7jlg4Sserw8ejujVfkecNd96HL4AwbnS150Qevr5sUIvYmRS8hsebVAMoIMF9o; - path=/; expires=Mon, 14-Jul-25 14:05:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=hrmQHlAKc_OF5dhEaSKJMOv5EM0rh5OEg5KDFLzp2dI-1761250849-1.0.1.1-EDRHtrE0iQ2TmkpaE7LBiJcCUS3KEInd_nL0BViXa07uC_gGlOhaihw6DhSlrDXhKOdxHLVPyzpQtHqVOJc3ciY9WnUheS2Jnk.Gt_mqgYA; + path=/; expires=Thu, 23-Oct-25 20:50:49 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=CE1X4jCNHzjanzTSmUO2lGaYKUflt6oHOU2l2BNWmOY-1752500114458-0.0.1.1-604800000; + - _cfuvid=7Hdk5onGiD85IecrOF99fn76pwKrVv3pJiedzLXqVwQ-1761250849621-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '219' + x-envoy-upstream-service-time: '2554' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999987' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_0d32d93b3240ea9a9b25a9d7a6c14152 + x-request-id: req_57493ce9c21441339781daf8454af2fa body: string: | { - "id": "chatcmpl-BtDcoxjf1bJoq2aKdPBP4vZIlUvzL", + "id": "chatcmpl-CTw5fE5h253yKwPgbJOZjjFznShVL", "object": "chat.completion", - "created": 1752500114, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250847, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -300,20 +305,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 47, - "completion_tokens": 3, - "total_tokens": 50, + "prompt_tokens": 131, + "completion_tokens": 75, + "total_tokens": 206, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -322,13 +326,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:14 + recorded_at: 2025-10-23 20:20:49 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_KzcwCYKajFpre80FodETpuqa","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_KzcwCYKajFpre80FodETpuqa"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_1hXdz3cBCGTh0SEGBJ6jR8P8","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_1hXdz3cBCGTh0SEGBJ6jR8P8"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -336,37 +340,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166f4ad126ab6-DFW + cf-ray: 9933eff3086c3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '216' + date: Thu, 23 Oct 2025 20:20:50 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '892' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=8yAFvey0JVPFKs5yNHvHDANw5ve6gPjM29peTCrH9I4-1752500115-1.0.1.1-jxXgDr7e6RMETJRVXPgtAG4bmrimzYJqy3y9dYgfbUHPQis5FZquegSP_eHRLW2pREXDMS_DG.2E2v2FjIoAuICBznj3GPH29JzKK8GfwmI; - path=/; expires=Mon, 14-Jul-25 14:05:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=lz4XHRz75AXtJlOXMAXGpxDmRAEbIbopooCbN_TlBVE-1761250850-1.0.1.1-vMYiI.9BciQVJ_.tveGaNTn0KnXsgBCzWLjYmzWRFafnhkUqHVf10SK5qZPGGG1.apPeLScZH1YaPnToxX12q7yzuWeLpGYhHLvJT_LzdHI; + path=/; expires=Thu, 23-Oct-25 20:50:50 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=uQcKQygzlpWTa86hCJDWBd.0KS402y0Cr49Lmrm9jBw-1752500115460-0.0.1.1-604800000; + - _cfuvid=pAwlzmljOLAKnay3pWwT_n83yAnLg01lwaLZfzicD4A-1761250850726-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '229' + x-envoy-upstream-service-time: '923' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999978' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_9b368bde82addb53941d98b3484a9a08 + x-request-id: req_ae2bc02dff8e412c9d83599768da9526 body: string: | { - "id": "chatcmpl-BtDcpyy0wPj54l5IxEOG9F93rZ1H4", + "id": "chatcmpl-CTw5hYmWYtqYCurHk6NPWGYVenRIO", "object": "chat.completion", - "created": 1752500115, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250849, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -376,14 +382,13 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 69, - "completion_tokens": 5, - "total_tokens": 74, + "prompt_tokens": 159, + "completion_tokens": 7, + "total_tokens": 166, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -398,13 +403,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:15 + recorded_at: 2025-10-23 20:20:50 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_VEEo1PMuf1UVQuskHF5VUKDL","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_VEEo1PMuf1UVQuskHF5VUKDL"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_uf737cySeNYXcr585cdsHFbH","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_uf737cySeNYXcr585cdsHFbH"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -412,37 +417,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166f9eb316ab6-DFW + cf-ray: 9933eff98f4b3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '182' + date: Thu, 23 Oct 2025 20:20:52 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1357' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=_GqM.iRBaDoBaiBzkLilbLKEiBnn_VKaICuWmtBechs-1752500115-1.0.1.1-LuByBbuW611c7p_6EP0M76BIh2W75aJg7U4kGoLKwt9HZ3z3QX9OgV9xcZ_iuhtTC8tW1g5vZHL6uiti8zc17QlL.E3gsmNOnKGicVLua0Q; - path=/; expires=Mon, 14-Jul-25 14:05:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=V9RmiRFvl.Jn2RyaqXSa3KVvWONxYukNShyhQIKR3uU-1761250852-1.0.1.1-mWpCVB3RpXYkPLAsazDBWcpkhivN.G.2OExR_ys3Po_EOv7wPSnWi02zXcpRHWsVIZpKmjnn0sq1ZjVBZ.N42M2UaCZ9VX1H97MW4uHNXtM; + path=/; expires=Thu, 23-Oct-25 20:50:52 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=.Z9.MqgojE0jW4OzPAKHDqQtUSDN39nHPR41Isi8mZw-1752500115731-0.0.1.1-604800000; + - _cfuvid=TNTHdGWA7PdE0KiUdwo_SEjNTBX.0MleGoJQcRp_Y1c-1761250852245-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '188' + x-envoy-upstream-service-time: '1402' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999979' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_125ae66c2d2e3d3552963ceb1b1a40fc + x-request-id: req_9988acb4210940bfa7c5b54414673158 body: string: | { - "id": "chatcmpl-BtDcpiDdAep5dVucwbIah7NPST3xG", + "id": "chatcmpl-CTw5jRMcRIKe5wwTZlybvFKjLvQep", "object": "chat.completion", - "created": 1752500115, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250851, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -452,14 +459,13 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 69, - "completion_tokens": 5, - "total_tokens": 74, + "prompt_tokens": 159, + "completion_tokens": 7, + "total_tokens": 166, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -474,5 +480,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:15 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-23 20:20:52 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/_vcr/parallel-tool.yml b/tests/testthat/_vcr/parallel-tool.yml index 029c7b80..7c66c66e 100644 --- a/tests/testthat/_vcr/parallel-tool.yml +++ b/tests/testthat/_vcr/parallel-tool.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -12,37 +12,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166d4d8cf6ab6-DFW + cf-ray: 9933ef72fadf3ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '262' + date: Thu, 23 Oct 2025 20:20:32 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2652' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=etAzi.NzqH551_EJdO1oTRoXpJrMHmUxe3Ahba7nt_c-1752500110-1.0.1.1-liaO58RYRttWhhhASCCyzTPNR8RCwZlkjb6zvwknn72Sfw_9.SZXZLMRzsyNgCAGjGSn20Of9Wahch4PQYCY6ao7HgmJ0bH3ZjziZB_xbmo; - path=/; expires=Mon, 14-Jul-25 14:05:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=NVnLTNgTgPLkM1G6KUgBdpOTRLBQgTZwI0FKTFXrd8g-1761250832-1.0.1.1-mJbmzjZ4ntnKLbukBqqWEG0e43K2uRgJsJwQqowouq8.nIaUXjkVlkP2Bph9WGFBGHeICWlKUFSjI5loiJrJ7V5fb1d_qB_1l_ZuNBjynC8; + path=/; expires=Thu, 23-Oct-25 20:50:32 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=oTNwPF7mDX8bxcRXLQCTtSsyx.5_9XHmUDWk6p0yJDo-1752500110120-0.0.1.1-604800000; + - _cfuvid=t4y1njPD5qw0z1xKrBwhHvWIj_ze0tT3vUuKKSsV8MU-1761250832043-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '267' + x-envoy-upstream-service-time: '2694' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c2ec3352ba4bdbe0e994f7d08e9a0e2a + x-request-id: req_a8e09d72edc34191b96ed537e0647822 body: string: | { - "id": "chatcmpl-BtDcjreP6nfRPM7ZH43umvqbDl7g9", + "id": "chatcmpl-CTw5NlaTz6P0hVOg8XjjFkbmMsvEA", "object": "chat.completion", - "created": 1752500109, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250829, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,7 +53,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_UQjbPn2o355GwtG2X2svnZTU", + "id": "call_Po6UtBy08Q1EBhEMrZ7thTP7", "type": "function", "function": { "name": "roll", @@ -62,20 +64,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 52, - "completion_tokens": 9, - "total_tokens": 61, + "prompt_tokens": 136, + "completion_tokens": 274, + "total_tokens": 410, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -84,13 +85,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:10 + recorded_at: 2025-10-23 20:20:32 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -98,37 +99,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166d8aac56ab6-DFW + cf-ray: 9933ef84ff963ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '474' + date: Thu, 23 Oct 2025 20:20:35 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2923' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=hFnCURm7cjLrTjayPqH4wquIprvFXWQMKPLTwFt2pMk-1752500110-1.0.1.1-M2cOEQJSQhycN8KNAauX5qXhNJnTx518.T.eizQ5zjO2QmyPA18spczWyOB7ggyhlvMUZ5vNCgdCeq6zL_hEW3ogl9RRAmDuzQQtLPxiVEo; - path=/; expires=Mon, 14-Jul-25 14:05:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=edgmWfO6Y5D7UkOJIw8DTdBsqVvPnJWsJ5Ntyx9euHM-1761250835-1.0.1.1-zqurGPpcj2mlfQKNHIihvBtIk9Ij.JYRvJa0vsEY7Go9H2dz0gnpwkA.d9qYAPzE2H4fZcmLeSDBcmtGQ_DE2vepXb2srxj89vViznXOW04; + path=/; expires=Thu, 23-Oct-25 20:50:35 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=cFRkh4qre8irlb4G4BafGVos3Iztw8FyBZgfT0NHS.I-1752500110742-0.0.1.1-604800000; + - _cfuvid=IVvwEfVDtV8yTEqyg45r.4E9tnfBJHEO.eDSM3nx.lE-1761250835158-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '516' + x-envoy-upstream-service-time: '2940' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_868a022eb3bb673acd2c1468f61445de + x-request-id: req_b27fd49eeabf470aa29a1f19e1a5dba7 body: string: | { - "id": "chatcmpl-BtDckxLlzmSAwP62wrE7PHZaDfCVu", + "id": "chatcmpl-CTw5QvRUeyvfCJ704mqvKz51Cqllw", "object": "chat.completion", - "created": 1752500110, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250832, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -137,7 +140,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_WC4HIFaWcrF954uf4wyGVn3i", + "id": "call_JgEjnbamHM8GFNGNoGEGRvAS", "type": "function", "function": { "name": "roll", @@ -148,20 +151,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 52, - "completion_tokens": 9, - "total_tokens": 61, + "prompt_tokens": 136, + "completion_tokens": 274, + "total_tokens": 410, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -170,13 +172,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:10 + recorded_at: 2025-10-23 20:20:35 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_UQjbPn2o355GwtG2X2svnZTU","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_UQjbPn2o355GwtG2X2svnZTU"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_Po6UtBy08Q1EBhEMrZ7thTP7","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"1","tool_call_id":"call_Po6UtBy08Q1EBhEMrZ7thTP7"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -184,37 +186,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166dced926ab6-DFW + cf-ray: 9933ef98abe93ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:11 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '202' + date: Thu, 23 Oct 2025 20:20:36 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '826' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=OWEgp._hE6kw6esy09pwyKdem0l7uMnHjxMqho7062U-1752500111-1.0.1.1-vFV_WXszMRiE3j4SVUv0DJmGQxfkVQXzjImtjoKdFqk187qPWLCYaonhLEq6e6OXm2HJXvspJhalqVJxFBIFmcgTJZ9kPt5QCv07LskI5d0; - path=/; expires=Mon, 14-Jul-25 14:05:11 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=SjnEQr6zne1AdV_UEjAObOA6.4n4ZNgVFMJve6Z6vNQ-1761250836-1.0.1.1-byL3FLsu4JNDAw0H2VuiF57mZpqGP0MfnC8R9mZtqzEt_kx6bS4s7X9ap8giiOHLAKH34ADB7Is.hTMhhqt8WW57z0ed2eLxiqBOHa819ho; + path=/; expires=Thu, 23-Oct-25 20:50:36 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=EQ_ke0B5HpFmVbJNwSbNOqxr3clMoMSynDc5KxzCpME-1752500111147-0.0.1.1-604800000; + - _cfuvid=a3YLxFmd8AvdPbQRMJ56mPGftpUEdtOun2iZS8L.D9o-1761250836193-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '239' + x-envoy-upstream-service-time: '859' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999979' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_7e395aa9440b7dba3a79f0a99f06ef3d + x-request-id: req_081404ff535546e0bb17644b858789db body: string: | { - "id": "chatcmpl-BtDcknF61CzeWyftaZMPwvFyisAfi", + "id": "chatcmpl-CTw5TTibmDwNXslHKqXZcr2jBL87N", "object": "chat.completion", - "created": 1752500110, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250835, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -224,14 +228,13 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 69, - "completion_tokens": 5, - "total_tokens": 74, + "prompt_tokens": 159, + "completion_tokens": 7, + "total_tokens": 166, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -246,13 +249,13 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:11 + recorded_at: 2025-10-23 20:20:36 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse."},{"role":"user","content":[{"type":"text","text":"Roll - the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_WC4HIFaWcrF954uf4wyGVn3i","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_WC4HIFaWcrF954uf4wyGVn3i"}],"model":"gpt-4.1-nano","seed":1014,"temperature":0,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls + the dice, please! Reply with ''You rolled ____''"}]},{"role":"assistant","tool_calls":[{"id":"call_JgEjnbamHM8GFNGNoGEGRvAS","function":{"name":"roll","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"2","tool_call_id":"call_JgEjnbamHM8GFNGNoGEGRvAS"}],"model":"gpt-5-nano","seed":1014,"stream":false,"tools":[{"type":"function","function":{"name":"roll","description":"Rolls a six-sided die.","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -260,37 +263,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 95f166df7c6b6ab6-DFW + cf-ray: 9933ef9e9a343ab9-DFW content-encoding: gzip content-type: application/json - date: Mon, 14 Jul 2025 13:35:11 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '313' + date: Thu, 23 Oct 2025 20:20:37 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '715' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=AaOI1VD8CaRG26eNzoXmdhQ1NbF_F49S2.DI7jSLSHo-1752500111-1.0.1.1-R4VkbjPhAqUP1HdCjbMILduv2otz0tTqsyVmABbYywHhRwpLIHrLGI9WEyNm1ilr38tO4rQZX2dU_PFG3vkKCf3E9KPt3sH.0PbcZVKO4FI; - path=/; expires=Mon, 14-Jul-25 14:05:11 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=T3B_TQ0a6aBc_oabYvXzlQ8QUAvEXR0jup51.FPZ_J8-1761250837-1.0.1.1-ncwzCA_vOFEusVyFf8zohbAd3so13W1UVqmpgL2ZZlx8ddnW2JVFFzMue6.F2tLsfLcxXesoxwEDCz7ZbxmTEw5v54fKARTHLpcqk8t9oOo; + path=/; expires=Thu, 23-Oct-25 20:50:37 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=URdIjaW7y8g3E_6.aGfYYdR6dEDRsAGnjk123zUeTT8-1752500111647-0.0.1.1-604800000; + - _cfuvid=6ddNaU7JMtoSm0.Xi03z9LCaFXjLIM5ghCLL9APNbHE-1761250837028-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '324' + x-envoy-upstream-service-time: '737' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999979' + x-ratelimit-remaining-tokens: '179999979' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_02803be5ee64ece7f9e35f56fae47707 + x-request-id: req_5bd281c911864500a96ec89865e9cf24 body: string: | { - "id": "chatcmpl-BtDclMXQieoPjb0mTcHYD8HfvQHBk", + "id": "chatcmpl-CTw5UowC9mQRlWUwUaEOtPUIOPUMi", "object": "chat.completion", - "created": 1752500111, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761250836, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -300,14 +305,13 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 69, - "completion_tokens": 5, - "total_tokens": 74, + "prompt_tokens": 159, + "completion_tokens": 7, + "total_tokens": 166, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -322,5 +326,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-14 13:35:11 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-23 20:20:37 +recorded_with: VCR-vcr/2.0.0 diff --git a/tests/testthat/batch/state-capitals.json b/tests/testthat/batch/state-capitals.json index 52b5d77a..bebfeddb 100644 --- a/tests/testthat/batch/state-capitals.json +++ b/tests/testthat/batch/state-capitals.json @@ -2,21 +2,21 @@ "version": 1, "stage": "done", "batch": { - "id": "batch_68f802ddb59481908fc70271e9eff0f6", + "id": "batch_68f8e3b584b88190bc889ba7b8662332", "object": "batch", "endpoint": "/v1/chat/completions", - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "errors": {}, - "input_file_id": "file-JPA9WjqJ5dYmauWGMnEijt", + "input_file_id": "file-JjMcVC1GPKiM5MK866HenU", "completion_window": "24h", "status": "completed", - "output_file_id": "file-5JPzmFxLH7MtjLzL2TpjWN", + "output_file_id": "file-KJyWhZM5542pPSDjkrX4fm", "error_file_id": {}, - "created_at": 1761084125, - "in_progress_at": 1761084128, - "expires_at": 1761170525, - "finalizing_at": 1761084149, - "completed_at": 1761084152, + "created_at": 1761141685, + "in_progress_at": 1761141687, + "expires_at": 1761228085, + "finalizing_at": 1761149229, + "completed_at": 1761149233, "failed_at": {}, "expired_at": {}, "cancelling_at": {}, @@ -27,14 +27,14 @@ "failed": 0 }, "usage": { - "input_tokens": 81, - "output_tokens": 7, - "total_tokens": 88, + "input_tokens": 77, + "output_tokens": 495, + "total_tokens": 572, "input_tokens_details": { "cached_tokens": 0 }, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 448 } }, "metadata": {} @@ -42,168 +42,164 @@ "results": [ { "status_code": 200, - "request_id": "98d76687bb4841866c5e3660bc7aec00", + "request_id": "8205f6957a2c18dccd45b1423e973a09", "body": { - "id": "chatcmpl-CTEikVO7HRPuFV6CqMKpuwCp0iSKN", + "id": "chatcmpl-CTVZOrTLDnSTfUL2Go0dFfNe6QgCy", "object": "chat.completion", - "created": 1761084134, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761148902, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Des Moines", + "content": "Des Moines.", "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 20, - "completion_tokens": 2, - "total_tokens": 22, + "prompt_tokens": 19, + "completion_tokens": 76, + "total_tokens": 95, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_7c233bf9d1" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "5c4a190dd9079087f0ee2d1cc6ecbbed", + "request_id": "ba7ce4b2edb56fe3e93a16887c27b518", "body": { - "id": "chatcmpl-CTEioj4PdLMO0B9dVarkET9n9cXzu", + "id": "chatcmpl-CTVYDoG2M4fseVCFlXjdmLJKjB4Ez", "object": "chat.completion", - "created": 1761084138, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761148829, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Albany", + "content": "Albany.", "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 21, - "completion_tokens": 2, - "total_tokens": 23, + "prompt_tokens": 20, + "completion_tokens": 268, + "total_tokens": 288, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "dde5e47eb23802d49bbc415a2b76599e", + "request_id": "d2569ec6c41728f682d0df515242e5bb", "body": { - "id": "chatcmpl-CTEisUiHnFjkZp7qyVIt9icqbf7dk", + "id": "chatcmpl-CTVZV1onKxsp42xwOb8bSg61TwMyR", "object": "chat.completion", - "created": 1761084142, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761148909, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Sacramento", + "content": "Sacramento.", "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 20, - "completion_tokens": 2, - "total_tokens": 22, + "prompt_tokens": 19, + "completion_tokens": 76, + "total_tokens": 95, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "a905ebc6ccd6c29b1f5ee6d9d2839db4", + "request_id": "2b809fb612dc664ee3ff67fe364879e9", "body": { - "id": "chatcmpl-CTEivElBhxFZjwzSP0QqcnJoZQzGx", + "id": "chatcmpl-CTVYXC85nrUy6RwrfU6i1yvgnDc5M", "object": "chat.completion", - "created": 1761084145, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761148849, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Austin", + "content": "Austin.", "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 20, - "completion_tokens": 1, - "total_tokens": 21, + "prompt_tokens": 19, + "completion_tokens": 75, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": {} } } ], - "started_at": 1761084124, + "started_at": 1761141683, "hash": { - "provider": "959dc7923e4dc3760a7690794dc41c2a", + "provider": "d0ed28e3605e893972f1a634fdd5e825", "prompts": "b8eafe281e3cc5113058d9722be3e295", "user_turns": "8c1302088b9bc30258d1191db0d35705" } diff --git a/tests/testthat/batch/state-name.json b/tests/testthat/batch/state-name.json index e3965aa6..d366d909 100644 --- a/tests/testthat/batch/state-name.json +++ b/tests/testthat/batch/state-name.json @@ -2,21 +2,21 @@ "version": 1, "stage": "done", "batch": { - "id": "batch_68f802e7e2108190ae0b2eb233481ad3", + "id": "batch_68f8e46d61a88190b494ab66e0646d54", "object": "batch", "endpoint": "/v1/chat/completions", - "model": "gpt-4.1-nano-2025-04-14", + "model": "gpt-5-nano-2025-08-07", "errors": {}, - "input_file_id": "file-TEGbui1Bw1ofZ3xYvFfVqR", + "input_file_id": "file-7JTLC2r9mCrwZcZKHXEo3n", "completion_window": "24h", "status": "completed", - "output_file_id": "file-GGXRgbHBYfoBwQcBbVfrcE", + "output_file_id": "file-YJMdaTu6C7iLtntP6pg9yP", "error_file_id": {}, - "created_at": 1761084135, - "in_progress_at": 1761084136, - "expires_at": 1761170535, - "finalizing_at": 1761084154, - "completed_at": 1761084156, + "created_at": 1761141869, + "in_progress_at": 1761141870, + "expires_at": 1761228269, + "finalizing_at": 1761142036, + "completed_at": 1761142038, "failed_at": {}, "expired_at": {}, "cancelling_at": {}, @@ -27,14 +27,14 @@ "failed": 0 }, "usage": { - "input_tokens": 213, - "output_tokens": 23, - "total_tokens": 236, + "input_tokens": 205, + "output_tokens": 7755, + "total_tokens": 7960, "input_tokens_details": { "cached_tokens": 0 }, "output_tokens_details": { - "reasoning_tokens": 0 + "reasoning_tokens": 7680 } }, "metadata": {} @@ -42,12 +42,12 @@ "results": [ { "status_code": 200, - "request_id": "b5136d6001fbb37a42fb99848f545d95", + "request_id": "ee56c25698a4073aa5fdae09c826ac56", "body": { - "id": "chatcmpl-CTEitmAMxIfqie3UvZTGmRwF9lu4J", + "id": "chatcmpl-CTTk3qvwgMQFwG61oRZj2uq6WkZzN", "object": "chat.completion", - "created": 1761084143, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761141875, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -57,37 +57,36 @@ "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 53, - "completion_tokens": 6, - "total_tokens": 59, + "prompt_tokens": 51, + "completion_tokens": 2195, + "total_tokens": 2246, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2176, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_950f36939b" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "bbc0f4b0f89713362ec087830839968b", + "request_id": "33844cd64f0bb6a6fee524fdb1d0d64b", "body": { - "id": "chatcmpl-CTEiyjHGDWGi9ykXF2HC41u5NBeYq", + "id": "chatcmpl-CTTkjZwObMNJRJ8tGRtHute1iDQO8", "object": "chat.completion", - "created": 1761084148, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761141917, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -97,37 +96,36 @@ "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 54, - "completion_tokens": 6, - "total_tokens": 60, + "prompt_tokens": 52, + "completion_tokens": 2067, + "total_tokens": 2119, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2048, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "865b5fb42e232299e9e249c59c960e5a", + "request_id": "a92d51cfd661ad4f3959841b926b353c", "body": { - "id": "chatcmpl-CTEitJbkgtZZ679QAmrdnLcNxVVBq", + "id": "chatcmpl-CTTl6NpKOJ4RqUIiTpwXoKGTZZKds", "object": "chat.completion", - "created": 1761084143, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761141940, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -137,37 +135,36 @@ "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 53, - "completion_tokens": 6, - "total_tokens": 59, + "prompt_tokens": 51, + "completion_tokens": 787, + "total_tokens": 838, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 768, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": {} } }, { "status_code": 200, - "request_id": "826b54ed5511d488df2bcd4d7edc46f0", + "request_id": "e1328ae314af79b5fd63fcd18aa81026", "body": { - "id": "chatcmpl-CTEj1muO76Fyz3ncj09eA2Sw7Q0Ce", + "id": "chatcmpl-CTTlIGxmQhgzCvE98KdRmZxO8eY1g", "object": "chat.completion", - "created": 1761084151, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761141952, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -177,33 +174,32 @@ "refusal": {}, "annotations": [] }, - "logprobs": {}, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 53, - "completion_tokens": 5, - "total_tokens": 58, + "prompt_tokens": 51, + "completion_tokens": 2706, + "total_tokens": 2757, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2688, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_f12167b370" + "system_fingerprint": {} } } ], - "started_at": 1761084135, + "started_at": 1761141868, "hash": { - "provider": "959dc7923e4dc3760a7690794dc41c2a", + "provider": "d0ed28e3605e893972f1a634fdd5e825", "prompts": "b8eafe281e3cc5113058d9722be3e295", "user_turns": "8c1302088b9bc30258d1191db0d35705" } diff --git a/tests/testthat/test-batch-chat.R b/tests/testthat/test-batch-chat.R index 4757265f..97c0bf1a 100644 --- a/tests/testthat/test-batch-chat.R +++ b/tests/testthat/test-batch-chat.R @@ -7,26 +7,35 @@ test_that("can get chats/data from completed request", { "What's the capital of California?", "What's the capital of Texas?" ) - chats <- batch_chat( - chat, - prompts, - path = test_path("batch/state-capitals.json") + suppressWarnings( + chats <- batch_chat( + chat, + prompts, + path = test_path("batch/state-capitals.json"), + ignore_hash = TRUE + ) ) expect_length(chats, 4) - out <- batch_chat_text( - chat, - prompts, - path = test_path("batch/state-capitals.json") + suppressWarnings( + out <- batch_chat_text( + chat, + prompts, + path = test_path("batch/state-capitals.json"), + ignore_hash = TRUE + ) ) - expect_equal(out, c("Des Moines", "Albany", "Sacramento", "Austin")) + expect_equal(out, c("Des Moines.", "Albany.", "Sacramento.", "Austin.")) type_state <- type_object(name = type_string("State name")) - data <- batch_chat_structured( - chat, - prompts, - path = test_path("batch/state-name.json"), - type = type_state + suppressWarnings( + data <- batch_chat_structured( + chat, + prompts, + path = test_path("batch/state-name.json"), + type = type_state, + ignore_hash = TRUE + ) ) expect_equal(nrow(data), 4) }) diff --git a/tests/testthat/test-chat-tools.R b/tests/testthat/test-chat-tools.R index 3f35891a..3c01e8e7 100644 --- a/tests/testthat/test-chat-tools.R +++ b/tests/testthat/test-chat-tools.R @@ -155,7 +155,7 @@ test_that("tool calls can be rejected via `tool_request` callbacks", { test_that("tool calls can be rejected via the tool function", { vcr::local_cassette("chat-tools-reject-tool-function") - chat <- chat_openai_test() + chat <- chat_openai_test(model = "gpt-5-mini") chat$register_tool(tool( function(user) if (user == "Joe") tool_reject() else "red", @@ -177,7 +177,10 @@ test_that("tool calls can be rejected via the tool function", { # Async ------------------------------------------------------------------------ test_that("can use async tools", { - chat <- chat_openai_test("Be very terse, not even punctuation.") + chat <- chat_openai_test( + "Be very terse, not even punctuation.", + model = "gpt-4.1-mini" + ) chat$register_tool(tool( coro::async(function() "2024-01-01"), name = "current_date", diff --git a/tests/testthat/test-chat.R b/tests/testthat/test-chat.R index 2ed09ad2..eaef96fb 100644 --- a/tests/testthat/test-chat.R +++ b/tests/testthat/test-chat.R @@ -166,8 +166,11 @@ test_that("can extract structured data (async)", { }) test_that("chat_structured() doesn't require a prompt", { - chat <- chat_openai_test() - chat$chat("What's the biggest city in the world? What country is it in?") + chat <- chat_openai_test(model = "gpt-5-nano") + chat$chat( + "What's the biggest city in the world by urban area population? + What country is it in?" + ) out <- chat$chat_structured( type = type_object( diff --git a/tests/testthat/test-provider-openai-responses.R b/tests/testthat/test-provider-openai-responses.R index 497d0cc0..3a4a1d8e 100644 --- a/tests/testthat/test-provider-openai-responses.R +++ b/tests/testthat/test-provider-openai-responses.R @@ -71,12 +71,6 @@ test_that("can match prices for some common models", { # Custom tests ----------------------------------------------------------------- -test_that("can retrieve log_probs (#115)", { - chat <- chat_openai_responses_test(params = params(log_probs = TRUE)) - chat$chat("Hi") - expect_length(chat$last_turn()@json$output[[1]]$content[[1]]$logprobs, 2) -}) - test_that("structured data work with and without wrapper", { chat <- chat_openai_responses_test() out <- chat$chat_structured( diff --git a/tests/testthat/test-provider-openai.R b/tests/testthat/test-provider-openai.R index 9af3aae5..129863e6 100644 --- a/tests/testthat/test-provider-openai.R +++ b/tests/testthat/test-provider-openai.R @@ -25,7 +25,7 @@ test_that("defaults are reported", { }) test_that("supports standard parameters", { - chat_fun <- chat_openai_test + chat_fun <- \(...) chat_openai_test(model = "gpt-4.1-nano", ...) test_params_stop(chat_fun) }) @@ -69,7 +69,10 @@ test_that("can match prices for some common models", { # Custom tests ----------------------------------------------------------------- test_that("can retrieve log_probs (#115)", { - chat <- chat_openai_test(params = params(log_probs = TRUE)) + chat <- chat_openai_test( + params = params(log_probs = TRUE), + model = "gpt-4.1-nano" + ) pieces <- coro::collect(chat$stream("Hi")) logprobs <- chat$last_turn()@json$choices[[1]]$logprobs$content diff --git a/vignettes/_vcr/ellmer-token-usage.yml b/vignettes/_vcr/ellmer-token-usage.yml index 05d73fec..82eaaf0a 100644 --- a/vignettes/_vcr/ellmer-token-usage.yml +++ b/vignettes/_vcr/ellmer-token-usage.yml @@ -11,43 +11,45 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564f962f9d54684-DFW + cf-ray: 99299901bb8e2e51-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:33:42 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1367' + date: Wed, 22 Oct 2025 14:13:55 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4449' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=k3RuZRiPn5JiHB8ZPj63obB3K5ZfoHKb.ztqilT3ppk-1751027622-1.0.1.1-SrPqO33HBlKyrYFOuDw7ASawo8_rcltqXHYoDzNt3TCG.vXv3mX_UmSrXL5dmD9tu6wNnC9kmR01K.kbS.yXgLvJreSXRr091aLNSToHDvs; - path=/; expires=Fri, 27-Jun-25 13:03:42 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=W.6qK06lTtgzW13aB2KBrf1HY5eahy.u.q.JK6N7uN8-1761142435-1.0.1.1-fvDzOWbtLojJRJypquxJ0A8IR.ssVgLGtFWrKo6VYvfYqhvBbLJmvqfTYaGAcc_jDZmH4uNvz_uv4UQw_nF.NS149h.DbxVXTDVx0RKBFEQ; + path=/; expires=Wed, 22-Oct-25 14:43:55 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=LkRvBz7b9ZStMVNZK6EEVl29rc9DJcLjuXTlGLApe3E-1751027622476-0.0.1.1-604800000; + - _cfuvid=IW_kzvSm9rC0Fl5Xu69KEyKpksVH4YW8Aa59G8tYLOQ-1761142435567-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1372' + x-envoy-upstream-service-time: '4524' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '10000' x-ratelimit-limit-tokens: '30000000' x-ratelimit-remaining-requests: '9999' x-ratelimit-remaining-tokens: '29999994' x-ratelimit-reset-requests: 6ms x-ratelimit-reset-tokens: 0s - x-request-id: req_f58f7a8b0facaf969d74382274440bee + x-request-id: req_f778b4934a1b418e86e6eaca84619a9e body: string: | { - "id": "chatcmpl-Bn2YvNlEOwxRZpo6x3iY1xD5HZxmh", + "id": "chatcmpl-CTTt1Gzp44eUj7QgwnvL5X4T09QSC", "object": "chat.completion", - "created": 1751027621, + "created": 1761142431, "model": "gpt-4.1-2025-04-14", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "R was originally created by **Ross Ihaka** and **Robert Gentleman** at the University of Auckland, New Zealand, in the early 1990s. They began developing R as a free, open-source implementation of the S programming language for statistical computing and graphics. The project quickly grew, and today it is maintained by the R Core Team and the contributions of many users worldwide.", + "content": "**R** is a programming language and environment for statistical computing and graphics.\n\n**R** was created by **Ross Ihaka** and **Robert Gentleman** at the **University of Auckland** in New Zealand.\n\n- The project started in **1992**.\n- The first official release (\"version 1.0.0\") was in **2000**.\n\nToday, R is developed by the **R Core Team**, with contributions from statisticians and programmers around the world.", "refusal": null, "annotations": [] }, @@ -57,8 +59,8 @@ http_interactions: ], "usage": { "prompt_tokens": 11, - "completion_tokens": 77, - "total_tokens": 88, + "completion_tokens": 96, + "total_tokens": 107, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 @@ -71,7 +73,7 @@ http_interactions: } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": "fp_422e2d36a8" } - recorded_at: 2025-06-27 12:33:42 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:13:55 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-capital.yml b/vignettes/_vcr/programming-capital.yml index 6790ada3..c347f65e 100644 --- a/vignettes/_vcr/programming-capital.yml +++ b/vignettes/_vcr/programming-capital.yml @@ -4,44 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of France"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of France"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa210e3a7103-DFW + cf-ray: 99299aa2dcb36c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:11 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '178' + date: Wed, 22 Oct 2025 14:14:59 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '1706' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=YMvu3FGjYB2u1YKJsR.zzJ_3RiU7PrcaWYuL9h6sM9c-1751027651-1.0.1.1-ZsAt8BGTc9AAQxbx1eQB1FM2EJxGEQcNjacifhXhPC7QZ4SzcGyn8L7Bg49kiVJiMA1vP2xBLjLjxckEnQZj58LLNcNF9IyEQGvFhbYLTHg; - path=/; expires=Fri, 27-Jun-25 13:04:11 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=6vaaGoUPP1IwImcF2rzkXYmQxg3EEhE0xDryVCQTVdk-1761142499-1.0.1.1-4UPNo1LVA8utp3WQt6mI5TNZ6zDD1IvnrK2rPFSkQ3F49okUB8TgLXXtooK3qp0.nI2.tMXGKSciASNmkcK5Fy_Knp2d9WYfy6p08A16fNs; + path=/; expires=Wed, 22-Oct-25 14:44:59 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=Z1NKtSXDK3Gr6WlosoIv09Hnnxnz.2zVjfEq2GwAd2w-1751027651317-0.0.1.1-604800000; + - _cfuvid=b9e_UqMipWdsw3Jdv2FpLtBuFJ4uofZroEK_GpoNbgU-1761142499537-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '185' + x-envoy-upstream-service-time: '1752' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999987' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_5680dcadd803cbebef9f214753f832d9 + x-request-id: req_ad525485d3864b82bf870102c448c7a0 body: string: | { - "id": "chatcmpl-Bn2ZPH2R5Fx8I2Stzt3RHjoWKRlpe", + "id": "chatcmpl-CTTu6XmNesHYdCCmRAX87X9q4mBJS", "object": "chat.completion", - "created": 1751027651, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142498, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,27 +53,26 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 18, - "completion_tokens": 2, - "total_tokens": 20, + "prompt_tokens": 17, + "completion_tokens": 75, + "total_tokens": 92, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:11 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:59 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-chat-clone.yml b/vignettes/_vcr/programming-chat-clone.yml index 44d7b869..d609a468 100644 --- a/vignettes/_vcr/programming-chat-clone.yml +++ b/vignettes/_vcr/programming-chat-clone.yml @@ -4,149 +4,151 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of New Zealand"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564f9ff9fc37103-DFW + cf-ray: 99299973af096c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:05 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '232' + date: Wed, 22 Oct 2025 14:14:11 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2046' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=sdy48yu4e3GlH2xJZzBBQGRWYD.BJvvDipnT5xVwSK4-1751027645-1.0.1.1-iPs9H0rywjjR.AVcqEO8tGOQwaWoR.T2UDRz.9PEfyorwk2XG9cDWJvXMRvhUuc8jJ3g_749NXy9dvHCf93w6svWzcPmT1iJENvJv4fueiU; - path=/; expires=Fri, 27-Jun-25 13:04:05 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=7LMBxfZ86EGOJt5.JGlBMDKkVaytVXlx3.H7iHkblPM-1761142451-1.0.1.1-mHkig4WzHGY7SbwXvYbO98HDrRz0Zfab0Eeed8iwvc91SmOJ7ul2IF9iFbJgkjfAF.tJ28rce7DG3S5nHkWP6_fP6Cc9F7romdKl6BhoZ.w; + path=/; expires=Wed, 22-Oct-25 14:44:11 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=W_znHb3PpRumvUHRY_PDk_hgfyhP5CIdWNq3MDYGQ.Q-1751027645651-0.0.1.1-604800000; + - _cfuvid=7o3z1B6TFp2pH.WiAgODuy_sRAWKEfX8znsp5vDN56o-1761142451334-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '237' + x-envoy-upstream-service-time: '2072' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999985' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_0a573fadf1b563d099eb8b0534bc0642 + x-request-id: req_6fdbbf6617aa4daf8177236d9241468c body: string: | { - "id": "chatcmpl-Bn2ZJ2x3RerX44kKeCImMiuvxB4ha", + "id": "chatcmpl-CTTtJiq2puAiiD0lXilhfdjEK5pCm", "object": "chat.completion", - "created": 1751027645, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142449, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Wellington", + "content": "Wellington.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 19, - "completion_tokens": 2, - "total_tokens": 21, + "prompt_tokens": 18, + "completion_tokens": 140, + "total_tokens": 158, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:05 + recorded_at: 2025-10-22 14:14:11 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of France"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of France"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa027f3a7103-DFW + cf-ray: 99299981fb676c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:06 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '173' + date: Wed, 22 Oct 2025 14:14:13 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2403' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=1yc_nnhdqScW1DJm2HG6zxil6ko0Mj4j3zRpYCyct5w-1751027646-1.0.1.1-OyeSHC8cNZBJ8qRbxzRWOkv1.GcayhgsYeapBdfw4EWABrs_xLHa7o978vXcKz86MgDqAlwFa4BOK7Qa7tLE5Dz939uVXi3p93kMESlOvRw; - path=/; expires=Fri, 27-Jun-25 13:04:06 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=r.1Dzz4tjDujA_WI1YEV76.fv5FlPYSpUldKyNB.otg-1761142453-1.0.1.1-6fbGjuoeW1wXDTW4UiTKGSmbUOciG9qMZY7EOry3kEUln9QDHImfl4PciS9C6LeyZsvUZ3hi7sJxxcPQ1vvVHQIQwK6S_VthkXJJVAI60tc; + path=/; expires=Wed, 22-Oct-25 14:44:13 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=PAQNuijjkge1xDeymsweRFkUQVkZ0CUvovCRUXLqbSo-1751027646671-0.0.1.1-604800000; + - _cfuvid=2_w11ddS71g1WM5VCm2Pzx4icchQIsLpNS_yPLc2ZAI-1761142453976-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '176' + x-envoy-upstream-service-time: '2426' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999987' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_fe7b4d7deaf5f690275443508b24dad0 + x-request-id: req_dabb24f1c8604969b1b85b16403dc394 body: string: | { - "id": "chatcmpl-Bn2ZKG7IbxXjxhsiMUtp7vaYJ44ub", + "id": "chatcmpl-CTTtLlJmXK3QmwMu1BjX75gC6lteX", "object": "chat.completion", - "created": 1751027646, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142451, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Paris", + "content": "Paris.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 18, - "completion_tokens": 1, - "total_tokens": 19, + "prompt_tokens": 17, + "completion_tokens": 139, + "total_tokens": 156, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:06 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:13 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-mutable.yml b/vignettes/_vcr/programming-mutable.yml index bc853422..b96f8ba4 100644 --- a/vignettes/_vcr/programming-mutable.yml +++ b/vignettes/_vcr/programming-mutable.yml @@ -4,150 +4,152 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of New Zealand"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564f9f52f537103-DFW + cf-ray: 99299949290d6c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:04 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '200' + date: Wed, 22 Oct 2025 14:14:05 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2887' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=88o5HUwZI99hFLu9TQCas1aEOBRHfc1d5lhZlFwmBJs-1751027644-1.0.1.1-m0I9TIiWm6.TpgWkbwgZYxjmyTaz32lKi2ejSBwgwCSUWgAfqLqLf8WQ.rPjLNlrSY2JFUf1WKs1cVL3tWBJb5RmQOIlMFlG7mXuolcOH4I; - path=/; expires=Fri, 27-Jun-25 13:04:04 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=c1mxGkdPqxfSmRIx4PkH3MSy41dk2v5x_BcJvR2gYLM-1761142445-1.0.1.1-lS6QXY7JVGoGk5xV3618zQQuJKxMztV61RnVil3WDdVkQZjq0oFZZa.HvhYS6v6zZMoQo_Mm4pFEcsXwbvP81DaTgHbb.mr3nds7EXWcq9s; + path=/; expires=Wed, 22-Oct-25 14:44:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=8T1NYPZdbets9kivvVjgQvtJttDq9Z_pLpIhfljyz8Q-1751027644458-0.0.1.1-604800000; + - _cfuvid=ojtYmWD.iNHh07xijapTmk2nbYiu3bXif.JGCu46F2I-1761142445475-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '206' + x-envoy-upstream-service-time: '3009' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999985' + x-ratelimit-remaining-tokens: '179999988' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_39c3814d2a7351e64a58f7015542bb49 + x-request-id: req_e877294f490b4a3a83d4bf84e050fed4 body: string: | { - "id": "chatcmpl-Bn2ZIQF0YMSqquEhP6T5mcE1xX71E", + "id": "chatcmpl-CTTtC3dKlrhRwDPeriTB73v24j0cG", "object": "chat.completion", - "created": 1751027644, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142442, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Wellington", + "content": "Wellington.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 19, - "completion_tokens": 2, - "total_tokens": 21, + "prompt_tokens": 18, + "completion_tokens": 76, + "total_tokens": 94, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:04 + recorded_at: 2025-10-22 14:14:05 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand"}]},{"role":"assistant","content":[{"type":"text","text":"Wellington"}]},{"role":"user","content":[{"type":"text","text":"What''s - the capital of France"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of New Zealand"}]},{"role":"assistant","content":[{"type":"text","text":"Wellington."}]},{"role":"user","content":[{"type":"text","text":"What''s + the capital of France"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564f9fb2d357103-DFW + cf-ray: 9929995e195f6c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:05 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '118' + date: Wed, 22 Oct 2025 14:14:09 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3178' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=U_YiPKWC2kH3ncXS_CnbG5scYz25pQw0Irh0QFX_Y5I-1751027645-1.0.1.1-fL3Qmk6iHum2af8nIxlW6uj9pn1FYddMsm86TklFQHbdGuzaw.3iutpIej_sz_3D0.xd7oVgLN.F6tOavr3nfv3bRFae6fQctod8VesWlwU; - path=/; expires=Fri, 27-Jun-25 13:04:05 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=pbPwmdn5odNT4MNq2Gf2qbbodI9iwjxsKPC3iJ6Mbrs-1761142449-1.0.1.1-NDx2BqEcU.P8YoioOFAwcDeU3k19ab2fKH7zGNAfGFchi_uzp1QVHBVlpPrCQ7p.JtPxEghOcaS8SLmlRc8YNLFzWTh.HZbHE.J2v8Puo2E; + path=/; expires=Wed, 22-Oct-25 14:44:09 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=kAMidtnN5wU84Bf8WQ4usF9tw3XbAacIS2gQgDWX5xM-1751027645181-0.0.1.1-604800000; + - _cfuvid=c_694u_PUTk1mdlQb8HgzW99LyOMpJ7W6eZRvFoQ.Qc-1761142449033-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '121' + x-envoy-upstream-service-time: '3221' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999974' + x-ratelimit-remaining-tokens: '179999976' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_9e11cccf5c81d43e465378c48ecc6e65 + x-request-id: req_7a347ad8189d4f3f9704ba7a6da7e920 body: string: | { - "id": "chatcmpl-Bn2ZJMgx4xRYk8RFzmTk9pTYNnepS", + "id": "chatcmpl-CTTtF2PWeLpb8juQV9lwuyI7iXems", "object": "chat.completion", - "created": 1751027645, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142445, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Paris", + "content": "Paris.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 34, - "completion_tokens": 1, - "total_tokens": 35, + "prompt_tokens": 36, + "completion_tokens": 139, + "total_tokens": 175, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:05 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:08 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-reset.yml b/vignettes/_vcr/programming-reset.yml index ece9fa4f..664df0a7 100644 --- a/vignettes/_vcr/programming-reset.yml +++ b/vignettes/_vcr/programming-reset.yml @@ -4,149 +4,151 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Pretend - that the capital of New Zealand is Kiwicity"}]}],"model":"gpt-4.1-nano","stream":false}' + that the capital of New Zealand is Kiwicity"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa1bb9127103-DFW + cf-ray: 99299a4509d26c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '226' + date: Wed, 22 Oct 2025 14:14:54 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '11588' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=R6rGWCQ88MZUUMG7k3kAu3ciGQ7sKbq29hEmwkyF2ow-1751027650-1.0.1.1-SynmumLZst2b.U74qYqZN2AL9dxdUTe2a4ZSUtZCFajz_Iarr72tP2uMdlLZ38fz4jWh4cZ6f2OfAObKx6Q.6UusMCBLyDeZGFzE_i1pos4; - path=/; expires=Fri, 27-Jun-25 13:04:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=.GZX4wh7YA1mrxMovwxDYlAHovlcR_TT8GDR748ZVBw-1761142494-1.0.1.1-QTV.EJXrsIzLXE2.dU2UElUwYqtEm3.2HhK.dBaJjW7Igl7ZYAnGM2nE5CCM008gDMUZH1szQNiUkagbfXR8VEbwr4msZMK1IfN6tBCf7vQ; + path=/; expires=Wed, 22-Oct-25 14:44:54 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=OGAVuBol7kYcWK7jWZ58FFU.tL4d0CJMKHGEZAi1x30-1751027650167-0.0.1.1-604800000; + - _cfuvid=iO.XFGq5m8w4N58BKpjlHktvVFPZpH8DIWqvxV7xEDk-1761142494385-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '241' + x-envoy-upstream-service-time: '11620' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_a8f4d97c1efae23e66df85608df254d2 + x-request-id: req_2aa32e5768ce4ff487402fd6ae92e53c body: string: | { - "id": "chatcmpl-Bn2ZNwzidEirMrgvhAr7Xtt9mSTNN", + "id": "chatcmpl-CTTtqXLvdB7GcTrdXhgOfPpTvCTwk", "object": "chat.completion", - "created": 1751027649, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142482, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Got it. The capital of New Zealand is Kiwicity.", + "content": "Sure—In this fictional scenario, the capital of New Zealand is Kiwicity.\n\nNote: This is a fictional premise; in reality, Wellington is the capital.\n\nQuick facts about Kiwicity:\n- Location: fictional capital on the North Island, coastal city in this world.\n- Government: Parliament convenes at Kiwicity Hall; Prime Minister in Emerald House.\n- Landmarks: Sunrise Tower, Kiwi Dome, Te Tango Garden.\n- Symbol: silver fern on a teal field; flag resembles NZ style but with a Kiwicity mark.\n- Culture: annual Kiwifest in January; thriving waterfront district and national museum.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 25, - "completion_tokens": 13, - "total_tokens": 38, + "prompt_tokens": 24, + "completion_tokens": 1160, + "total_tokens": 1184, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1024, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:10 + recorded_at: 2025-10-22 14:14:54 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand"}]}],"model":"gpt-4.1-nano","stream":false}' + the capital of New Zealand"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa1e780c7103-DFW + cf-ray: 99299a8f3cef6c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '203' + date: Wed, 22 Oct 2025 14:14:57 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2843' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=3.7ILJPjYbPcm8Qk22GJS.QQgEV6vOaZiwwZOFhCKMA-1751027650-1.0.1.1-2CiV9rWMT7fHH39.sskxitQz_I2HLcy1HSbWitcpvjeea7hiQME7cvzSjFPmTjLhdm2qI7kYZ3r513WEm5daQf0YLeacZyyj5w9CuHFnuPc; - path=/; expires=Fri, 27-Jun-25 13:04:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=2_XrOqsgOzxbasKgPVL5.Uka9xJcmUkuC2jL_u5uGv8-1761142497-1.0.1.1-uclm6047PGOlR2BH_WZfiiYI406hNjqdCXTByTQ_WQfi9WKKAKvP8y5e1qVmlbTjkIeuULtECqNIDjdT416ahSr4Lyhd6pzPAsT_Oy6Xh84; + path=/; expires=Wed, 22-Oct-25 14:44:57 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=lpo2Wo4m3DFG43d7wTzWpzQ2keiXHVCtYJORonwCXas-1751027650557-0.0.1.1-604800000; + - _cfuvid=pQAzAwmaIWh5_zVFIsDbgv.Mvv1caYWCOSVqEkPiCaU-1761142497492-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '207' + x-envoy-upstream-service-time: '2868' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999985' + x-ratelimit-remaining-tokens: '179999985' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_0fcbb53cb2d07224a6bdd4d6fef0cd8e + x-request-id: req_e7559e565acd4d42983f54f8ed42850c body: string: | { - "id": "chatcmpl-Bn2ZO6EHjmW93ga8bRAi9yxe3XFZt", + "id": "chatcmpl-CTTu2PeLNOQn11HzwIm5FOFGOXvjM", "object": "chat.completion", - "created": 1751027650, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142494, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Wellington", + "content": "Wellington.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 19, - "completion_tokens": 2, - "total_tokens": 21, + "prompt_tokens": 18, + "completion_tokens": 204, + "total_tokens": 222, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:10 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:57 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-tree.yml b/vignettes/_vcr/programming-tree.yml index a8851c4c..4d343de2 100644 --- a/vignettes/_vcr/programming-tree.yml +++ b/vignettes/_vcr/programming-tree.yml @@ -4,121 +4,125 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"My - name is Hadley and I''m a data scientist"}]}],"model":"gpt-4.1-nano","stream":false}' + name is Hadley and I''m a data scientist"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa08eec87103-DFW + cf-ray: 992999928f4b6c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:07 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '251' + date: Wed, 22 Oct 2025 14:14:18 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4408' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=7D7CA4Wt21IfNvOiZcrO8iFKTWJvWAAnknQtk.Qv4iE-1751027647-1.0.1.1-r..63Ptfx.QVp_KZ2gX.Nm0u.FPjbHO_lIF56SyJLa9_DCGYM9vfbsLmRoFfWRPzvYGr2juUSgAViCf14qYpD7mctcc6NdnGtFajvMcEMzE; - path=/; expires=Fri, 27-Jun-25 13:04:07 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=svCEmNG020oKdyb1L.GHQBnX.5Kv9CVnluoJT4cNcdo-1761142458-1.0.1.1-0wl1tQ_.d9PUxAqFpD.YMLAXgNTMC3P_MjtI8u43q7W4vTQMwNGVEgF9k78mmiew9nRiGF__qbQNHU2lgZg3MIC__BB8icHGlW2Hz9l43vc; + path=/; expires=Wed, 22-Oct-25 14:44:18 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=KUNzx.SQVt0Rutw5KjDNLdIncXXF_.2PtQqpVhi1QDI-1751027647815-0.0.1.1-604800000; + - _cfuvid=OZvGJgvCZOQBvM.m8BVW4phzcMP21RPZkXVgETuv.gk-1761142458627-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '256' + x-envoy-upstream-service-time: '4438' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999984' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_3ed41617ad2d83b1f5f86730475f84c8 + x-request-id: req_d956c66ef436423f929b4efa849dec9c body: string: | { - "id": "chatcmpl-Bn2ZLtVihsd4isiuZPwxka5h80ukz", + "id": "chatcmpl-CTTtO7kzCcEZPT0LwOT2rUcgE5OPm", "object": "chat.completion", - "created": 1751027647, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142454, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Hello, Hadley. Nice to meet you.", + "content": "Nice to meet you, Hadley. What would you like help with—data cleaning, model building, visualization, or debugging?", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 23, - "completion_tokens": 10, - "total_tokens": 33, + "prompt_tokens": 22, + "completion_tokens": 355, + "total_tokens": 377, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:07 + recorded_at: 2025-10-22 14:14:18 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"My - name is Hadley and I''m a data scientist"}]},{"role":"assistant","content":[{"type":"text","text":"Hello, - Hadley. Nice to meet you."}]},{"role":"user","content":[{"type":"text","text":"what''s - my name?"}]}],"model":"gpt-4.1-nano","stream":false}' + name is Hadley and I''m a data scientist"}]},{"role":"assistant","content":[{"type":"text","text":"Nice + to meet you, Hadley. What would you like help with—data cleaning, model building, + visualization, or debugging?"}]},{"role":"user","content":[{"type":"text","text":"what''s + my name?"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa0fee7d7103-DFW + cf-ray: 992999af8ff16c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:08 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '260' + date: Wed, 22 Oct 2025 14:14:22 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4063' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=rdJAq8E3lF2prE0wumAf.hspc02caf_.NxXEdvCe.6I-1751027648-1.0.1.1-Cq32hk8eKfomkRx0IRK36Cpz2XytbfbMzOLZBOqZhndcncMubIkACXtgkwOEOJbQN4ZASgWndbIc_p73aQnlIwTRDO5WLWRw8_U6i.P3W30; - path=/; expires=Fri, 27-Jun-25 13:04:08 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=I54fBw7T.Kb2YvFF.af2mnaFQ62WMHSbF2HJ2yCIwHk-1761142462-1.0.1.1-dO59cJliMBOVCW7hwi_Zf5RM28vLvhd.w4R4JRl1IGlbc1_QphisDSOwyMxiI7eMeefyfsBadwhg3Xmy1TNYnxB_jerM_TVdSaMF7he35Q8; + path=/; expires=Wed, 22-Oct-25 14:44:22 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=blhp0Y0T2dPqOo347FvNzxiLd6GXN3r2MW7lrCnWDhk-1751027648291-0.0.1.1-604800000; + - _cfuvid=e8zwBlNGaGHtaB.KecSIMH7bwqf0HsUs78LzCP6RCws-1761142462936-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '267' + x-envoy-upstream-service-time: '4095' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999970' + x-ratelimit-remaining-tokens: '179999949' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_ad9d7241c86225805fe1119a2f68bc1b + x-request-id: req_0d025d7104db450abbce5d6fd0877498 body: string: | { - "id": "chatcmpl-Bn2ZMZRw4uLnWYByNUUdztp28hc0H", + "id": "chatcmpl-CTTtSpXok6Jt7ismtkY5BYI9L4Far", "object": "chat.completion", - "created": 1751027648, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142458, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -128,104 +132,105 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 46, - "completion_tokens": 3, - "total_tokens": 49, + "prompt_tokens": 63, + "completion_tokens": 268, + "total_tokens": 331, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:08 + recorded_at: 2025-10-22 14:14:22 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"My - name is Hadley and I''m a data scientist"}]},{"role":"assistant","content":[{"type":"text","text":"Hello, - Hadley. Nice to meet you."}]},{"role":"user","content":[{"type":"text","text":"what''s - my job?"}]}],"model":"gpt-4.1-nano","stream":false}' + name is Hadley and I''m a data scientist"}]},{"role":"assistant","content":[{"type":"text","text":"Nice + to meet you, Hadley. What would you like help with—data cleaning, model building, + visualization, or debugging?"}]},{"role":"user","content":[{"type":"text","text":"what''s + my job?"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa12cd427103-DFW + cf-ray: 992999ca4f6c6c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:08 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '164' + date: Wed, 22 Oct 2025 14:14:26 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3445' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=5e.gKPcFA5mM7HOsyAqGr17JbcEJ.6FOL_dNHs78k0A-1751027648-1.0.1.1-Z4kaBQWyLiLb3BQdtQcderMapLEkasRJl1APUMlWh1lmkEpPzhX7XdBkR6g2P.K.AufVBo8qLqv.MY.cgvWiUvOQEQfZbq3J67zfShivQNg; - path=/; expires=Fri, 27-Jun-25 13:04:08 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=5G3aneNjDSqaghjRr2EjmKYAzdM4fYW88NoYN2WSMno-1761142466-1.0.1.1-dTpnAqubDOAELIYr3l6ISL2TL35rhBSD85jHpSBgpKaKIMHiSpiVpk_LOWvuHOEwfdVUG0ma8R3ofA62PouiRtPpydm9ZVBbcClO3wP7zQg; + path=/; expires=Wed, 22-Oct-25 14:44:26 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=g9nHixKem7xsV_lsWetciLlF6xcXHiSpj17aXPtO.E8-1751027648673-0.0.1.1-604800000; + - _cfuvid=vbF9E1DS4iuHc8cSC7s1Og8S_bDwoSIMY6eLtVC_dp8-1761142466713-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '167' + x-envoy-upstream-service-time: '3580' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999971' + x-ratelimit-remaining-tokens: '179999949' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_3b695dd79d539d1b43b0c8512ea3bb06 + x-request-id: req_2926dd70b51b4c60a5773418d6bb9cfe body: string: | { - "id": "chatcmpl-Bn2ZMihoWwjRwws85PtqzYfAQadin", + "id": "chatcmpl-CTTtXnQXcqRkO9s8ZKiAdtlo0zSdS", "object": "chat.completion", - "created": 1751027648, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142463, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Data scientist.", + "content": "You're a data scientist.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 46, - "completion_tokens": 3, - "total_tokens": 49, + "prompt_tokens": 63, + "completion_tokens": 334, + "total_tokens": 397, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:08 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:26 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-turns.yml b/vignettes/_vcr/programming-turns.yml index 51fadf83..4d49815e 100644 --- a/vignettes/_vcr/programming-turns.yml +++ b/vignettes/_vcr/programming-turns.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Roll - two dice and tell me the total"}]}],"model":"gpt-4.1-nano","stream":false,"tools":[{"type":"function","function":{"name":"tool_001","description":"Roll + two dice and tell me the total"}]}],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","function":{"name":"tool_001","description":"Roll a die","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -12,37 +12,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa25d89e7103-DFW + cf-ray: 99299aafbed86c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '506' + date: Wed, 22 Oct 2025 14:15:05 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5970' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=PtfUEhteEHvnuk_rLUo03viutAvbgaLUYzmY0SmYYmA-1751027652-1.0.1.1-ed.Z8v5XY43_MRL_J1WVYYaiU8G4IOuDVLNajP3bWkyE3sxtWRTlBwv6c3iEtY8c_rG5zPX3jbAEM385HA5TSel9dozkBcDgAGcOQCiOPSw; - path=/; expires=Fri, 27-Jun-25 13:04:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=ldA9E1Bx3s6ZPqVNE3cKSVsZCVU6wv8X0vQY2niagBU-1761142505-1.0.1.1-faziynjjkBoA24HcW83RMLy_gvJvWqZvLl62.BriU0SsapblIL3.cItJ8AU_suU9XxHdzkRNsvcfLV6g4Kv7.tWJVeHYw2onqXx88_NP3h0; + path=/; expires=Wed, 22-Oct-25 14:45:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=a0Y6DbbARQBg0CsBtZnUrv_bUzxS5_cjSuYkE2q6Byo-1751027652047-0.0.1.1-604800000; + - _cfuvid=rKZ1H_5IL97x_GWUs2_fSHt_wpP8zfno6v1D.aB_9dw-1761142505824-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '515' + x-envoy-upstream-service-time: '5998' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999985' + x-ratelimit-remaining-tokens: '179999985' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_4d7a682eb2eea9196a0b49ab763f1226 + x-request-id: req_d0d956f2de72493490e69030edcf770f body: string: | { - "id": "chatcmpl-Bn2ZPB85PqyXTCCv6mtej2FNEkQLA", + "id": "chatcmpl-CTTu7AQLhPdORZQQo5v2Cqhho5tNp", "object": "chat.completion", - "created": 1751027651, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142499, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, @@ -51,7 +53,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_1OtUWtCCMJ6YE8ZNFQtpoyQJ", + "id": "call_itTIoGc9G0B15MayNYvTEQT2", "type": "function", "function": { "name": "tool_001", @@ -59,7 +61,7 @@ http_interactions: } }, { - "id": "call_UZw7jatKY7tYN7CfOrlk9j5l", + "id": "call_mD0DNUPsSSoDp3HbSppOzS5h", "type": "function", "function": { "name": "tool_001", @@ -70,35 +72,34 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 47, - "completion_tokens": 41, - "total_tokens": 88, + "prompt_tokens": 131, + "completion_tokens": 434, + "total_tokens": 565, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:12 + recorded_at: 2025-10-22 14:15:05 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Roll - two dice and tell me the total"}]},{"role":"assistant","tool_calls":[{"id":"call_1OtUWtCCMJ6YE8ZNFQtpoyQJ","function":{"name":"tool_001","arguments":"{}"},"type":"function"},{"id":"call_UZw7jatKY7tYN7CfOrlk9j5l","function":{"name":"tool_001","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"5","tool_call_id":"call_1OtUWtCCMJ6YE8ZNFQtpoyQJ"},{"role":"tool","content":"4","tool_call_id":"call_UZw7jatKY7tYN7CfOrlk9j5l"}],"model":"gpt-4.1-nano","stream":false,"tools":[{"type":"function","function":{"name":"tool_001","description":"Roll + two dice and tell me the total"}]},{"role":"assistant","tool_calls":[{"id":"call_itTIoGc9G0B15MayNYvTEQT2","function":{"name":"tool_001","arguments":"{}"},"type":"function"},{"id":"call_mD0DNUPsSSoDp3HbSppOzS5h","function":{"name":"tool_001","arguments":"{}"},"type":"function"}]},{"role":"tool","content":"5","tool_call_id":"call_itTIoGc9G0B15MayNYvTEQT2"},{"role":"tool","content":"4","tool_call_id":"call_mD0DNUPsSSoDp3HbSppOzS5h"}],"model":"gpt-5-nano","stream":false,"tools":[{"type":"function","function":{"name":"tool_001","description":"Roll a die","strict":true,"parameters":{"type":"object","description":"","properties":{},"required":[],"additionalProperties":false}}}]}' response: status: 200 @@ -106,67 +107,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa2a2afc7103-DFW + cf-ray: 99299ad689d66c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:12 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '155' + date: Wed, 22 Oct 2025 14:15:08 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2560' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CVTfNf.UibdxPulWbO.Cx8EXwXHJ9FDSm5IOxJnnBmg-1751027652-1.0.1.1-_iCQTNzf09m1hpe5ggfGyibtQ8Gdmb6UTB2.aLojUFGSdn_YWUo56wtiqDJWxTyg3KXr9UNAr4HRSn6Amr1o8QQ01ucHvarxAC_kO0JQtBQ; - path=/; expires=Fri, 27-Jun-25 13:04:12 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=Qigf.0LnyM4k86Q1iShpmOpehZ0Fqxgx3QsVTVD4hHU-1761142508-1.0.1.1-_0dicEPIElAvPR_6LfWIYdm4ADIw_2UxZWPt0fixmmTz8XpuyRecDSm5EzOvOP89sCCKlpaIoTHCopmSeUmhXKTHh1jGKKT2JAA2Rylf2BI; + path=/; expires=Wed, 22-Oct-25 14:45:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=niy728HJmNqlIHBZtyu4nAR5CVZLkRdBwHRGPoa7Wis-1751027652405-0.0.1.1-604800000; + - _cfuvid=GxXLtkS.0E_wPGpNt1Xw7vOiAFeg1wNLBcJGMYb_Zhw-1761142508640-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '170' + x-envoy-upstream-service-time: '2594' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999982' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_774140bb06366055455e1cd95fca6543 + x-request-id: req_c406196a834b4c55b4551630d5b29b93 body: string: | { - "id": "chatcmpl-Bn2ZQRLp9UOwnF4ZgG3fXcFB4Bezk", + "id": "chatcmpl-CTTuEjTz60KSLd99AW8Xhp6nkp99o", "object": "chat.completion", - "created": 1751027652, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142506, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "The total is 9.", + "content": "Rolls: 5 and 4. Total: 9.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 104, - "completion_tokens": 7, - "total_tokens": 111, + "prompt_tokens": 194, + "completion_tokens": 151, + "total_tokens": 345, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:12 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:15:08 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/programming-uhoh.yml b/vignettes/_vcr/programming-uhoh.yml index aaeba434..5871022b 100644 --- a/vignettes/_vcr/programming-uhoh.yml +++ b/vignettes/_vcr/programming-uhoh.yml @@ -4,151 +4,160 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Pretend - that the capital of New Zealand is Kiwicity"}]}],"model":"gpt-4.1-nano","stream":false}' + that the capital of New Zealand is Kiwicity"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa153a5c7103-DFW + cf-ray: 992999e21a886c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:09 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '236' + date: Wed, 22 Oct 2025 14:14:38 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '11760' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=jyPp73a6UcMRnQIBOutssFc0yh.5gYHyrGLAbaIX36A-1751027649-1.0.1.1-z6COo5YDg8Cae1AH1cn9FTriRFNyGK8fxJQyZF5wxAxMmy5tndMCE6Nwn1_gKKeLP8NjTVrXZiWPtEc8nUISm.fXKRc7ZOSBg5qweQ.64oU; - path=/; expires=Fri, 27-Jun-25 13:04:09 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=UI_EmOz70ds1c7YuyleosoPDEuWaJJLCV895Jvlrbjs-1761142478-1.0.1.1-ZK8BHx5wMdbqUOHbZESJ4XeotsQRvmyjDDaMACzztJ1VaJxt96Bdp7PGqvDpkFv_hpVfEe.RC4ppfx3RaukLP1pXYgdizpym2gSyHh2rr_4; + path=/; expires=Wed, 22-Oct-25 14:44:38 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=PQvG8dVKlYXT_ei1ISKWBwsyyjLL06427ElWonYiTt8-1751027649111-0.0.1.1-604800000; + - _cfuvid=wHGwu0kxaeTfRpT9agt8AUH5D7D9YiM6XQxpTYZI.rE-1761142478721-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '239' + x-envoy-upstream-service-time: '11781' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999981' + x-ratelimit-remaining-tokens: '179999982' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_985324f37a908c1ebcbd3bce132d8794 + x-request-id: req_f2bf3270d0ea46729e7c87384aa8d585 body: string: | { - "id": "chatcmpl-Bn2ZMvtP4qhUUUynY7h1FjpasVMD5", + "id": "chatcmpl-CTTtbRvJssjSag5yVYDPdoihCkK9Y", "object": "chat.completion", - "created": 1751027648, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142467, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Not true; the capital of New Zealand is Wellington.", + "content": "Sure. In this pretend world, the capital of New Zealand is Kiwicity (real-world capital Wellington remains in reality).\n\n- Government: Parliament and the Prime Minister’s office are in Kiwicity; Governor-General’s residence in Kiwicity too.\n- Landmarks: Parliament Building, Kiwi Dome, Waterfront Commons, and the National Library of Kiwicity.\n- Everyday facts: Currency NZD; official languages English and te reo Māori.\n- Quick sample: In this world, Prime Minister Mira Te Aroha leads the government.\n\nWant me to answer questions in this pretend setting or draft a short travel guide for Kiwicity?", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 25, - "completion_tokens": 11, - "total_tokens": 36, + "prompt_tokens": 24, + "completion_tokens": 1289, + "total_tokens": 1313, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1152, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:09 + recorded_at: 2025-10-22 14:14:38 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"system","content":"Be terse"},{"role":"user","content":[{"type":"text","text":"Pretend - that the capital of New Zealand is Kiwicity"}]},{"role":"assistant","content":[{"type":"text","text":"Not - true; the capital of New Zealand is Wellington."}]},{"role":"user","content":[{"type":"text","text":"What''s - the capital of New Zealand"}]}],"model":"gpt-4.1-nano","stream":false}' + that the capital of New Zealand is Kiwicity"}]},{"role":"assistant","content":[{"type":"text","text":"Sure. + In this pretend world, the capital of New Zealand is Kiwicity (real-world + capital Wellington remains in reality).\n\n- Government: Parliament and the + Prime Minister’s office are in Kiwicity; Governor-General’s residence in Kiwicity + too.\n- Landmarks: Parliament Building, Kiwi Dome, Waterfront Commons, and + the National Library of Kiwicity.\n- Everyday facts: Currency NZD; official + languages English and te reo Māori.\n- Quick sample: In this world, Prime + Minister Mira Te Aroha leads the government.\n\nWant me to answer questions + in this pretend setting or draft a short travel guide for Kiwicity?"}]},{"role":"user","content":[{"type":"text","text":"What''s + the capital of New Zealand"}]}],"model":"gpt-5-nano","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fa17d8257103-DFW + cf-ray: 99299a2d19796c66-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:34:09 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '166' + date: Wed, 22 Oct 2025 14:14:42 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3575' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=_u.EftLO9XzksW_kF6vYwWA7jwazuQmeGc5L9br_f74-1751027649-1.0.1.1-A2F9UQUSPqczayde9DlWFUji_LHFhOprI43grsv8ZOfp7S6Dkop_XYmojEJukn3jISwCfZwKXlHQ9mBhAdnjfYn9rh2UniWgzLshbtEYW6U; - path=/; expires=Fri, 27-Jun-25 13:04:09 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=VlvZL3EdSMPQ9iFlZ8.zGlGUHCK2atUVb0DazigSnrY-1761142482-1.0.1.1-VUcba7U.OZTkmaWFpC7B5tb7avdFaBjcShrkvORXWUigWFsQfUlH7qn7DO2EZy4QhUtdFg4mAXnhSECDSsO5RMz_rpB6wfEoG4.wtkDViIA; + path=/; expires=Wed, 22-Oct-25 14:44:42 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=TYQyyL6zCE0M2kw42SKvwPpxQLOGqs33pbeCJpgEpI4-1751027649712-0.0.1.1-604800000; + - _cfuvid=KnZC5h6dMRcSTk7Jr1Z0IR4FRHqsa9CupwEkfin0P.Q-1761142482536-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '170' + x-envoy-upstream-service-time: '3598' + x-openai-proxy-wasm: v0.1 x-ratelimit-limit-requests: '30000' - x-ratelimit-limit-tokens: '150000000' + x-ratelimit-limit-tokens: '180000000' x-ratelimit-remaining-requests: '29999' - x-ratelimit-remaining-tokens: '149999959' + x-ratelimit-remaining-tokens: '179999820' x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_25f07b80fec2649c635165a423ae7677 + x-request-id: req_a1602d04facd40678dffa7a9ca041145 body: string: | { - "id": "chatcmpl-Bn2ZNgCTIpHcpBdUtKKI6MxmiGkZV", + "id": "chatcmpl-CTTtnlNxxnzRsq2D7noL4Rd3xnab1", "object": "chat.completion", - "created": 1751027649, - "model": "gpt-4.1-nano-2025-04-14", + "created": 1761142479, + "model": "gpt-5-nano-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Wellington", + "content": "In this pretend setting, the capital of New Zealand is Kiwicity. (Real-world capital is Wellington.)", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 50, - "completion_tokens": 2, - "total_tokens": 52, + "prompt_tokens": 168, + "completion_tokens": 288, + "total_tokens": 456, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_38343a2f8f" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:34:09 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:14:42 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-basic.yml b/vignettes/_vcr/prompt-design-code-basic.yml index f61f8318..f9254c90 100644 --- a/vignettes/_vcr/prompt-design-code-basic.yml +++ b/vignettes/_vcr/prompt-design-code-basic.yml @@ -3,67 +3,52 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":[{"type":"text","text":"\n How + string: '{"model":"claude-sonnet-4-5-20250929","messages":[{"role":"user","content":[{"type":"text","text":"\n How can I compute the mean and median of variables a, b, c, and so on,\n all the way up to z, grouped by age and sex.\n"}]}],"stream":false,"max_tokens":4096}' response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:28 GMT + date: Wed, 22 Oct 2025 14:34:37 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:15Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:29Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:14Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:15Z' - request-id: req_011CQYjVtLYPeSL24UqKY1nR + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:34:31Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:34:37Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:29Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:34:31Z' + request-id: req_011CUNQJtFuX8sjdheksduwG strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '7901' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fa36ed042e27-DFW - content-encoding: gzip + cf-ray: 9929b73de98c461a-DFW body: - string: '{"id":"msg_0157g7e3mCGTdmnLyKr6S5UW","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"Here - are several ways to compute the mean and median of variables a through z, - grouped by age and sex, depending on the tool you''re using:\n\n## Python - with pandas\n\n```python\nimport pandas as pd\nimport numpy as np\n\n# Assuming - your data is in a DataFrame called ''df''\n# Variables a-z are columns, along - with ''age'' and ''sex''\n\n# Get all columns from ''a'' to ''z''\nvariables - = [chr(i) for i in range(ord(''a''), ord(''z'')+1)]\n\n# Method 1: Using agg() - with multiple functions\nresult = df.groupby([''age'', ''sex''])[variables].agg([''mean'', - ''median''])\n\n# Method 2: Separate calculations\nmeans = df.groupby([''age'', - ''sex''])[variables].mean()\nmedians = df.groupby([''age'', ''sex''])[variables].median()\n\n# - Method 3: Using describe() for more statistics\nsummary = df.groupby([''age'', - ''sex''])[variables].describe()\n```\n\n## R\n\n```r\nlibrary(dplyr)\n\n# - Method 1: Using dplyr\nresult <- df %>%\n group_by(age, sex) %>%\n summarise(across(a:z, - list(mean = mean, median = median), na.rm = TRUE))\n\n# Method 2: Using aggregate()\nmeans - <- aggregate(. ~ age + sex, data = df[c(''age'', ''sex'', letters)], FUN = - mean)\nmedians <- aggregate(. ~ age + sex, data = df[c(''age'', ''sex'', letters)], - FUN = median)\n\n# Method 3: Using data.table\nlibrary(data.table)\ndt <- - as.data.table(df)\nresult <- dt[, lapply(.SD, function(x) list(mean = mean(x), - median = median(x))), \n by = .(age, sex), .SDcols = letters]\n```\n\n## - SQL\n\n```sql\nSELECT \n age, \n sex,\n AVG(a) as mean_a, PERCENTILE_CONT(0.5) - WITHIN GROUP (ORDER BY a) as median_a,\n AVG(b) as mean_b, PERCENTILE_CONT(0.5) - WITHIN GROUP (ORDER BY b) as median_b,\n -- ... repeat for all variables - c through z\n AVG(z) as mean_z, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER - BY z) as median_z\nFROM your_table\nGROUP BY age, sex;\n```\n\n## SAS\n\n```sas\nproc - means data=your_dataset mean median;\n class age sex;\n var a--z; /* - Variables from a to z */\nrun;\n\n/* Or using PROC SUMMARY */\nproc summary - data=your_dataset;\n class age sex;\n var a--z;\n output out=summary_stats - mean= median= / autoname;\nrun;\n```\n\n## SPSS Syntax\n\n```spss\nMEANS TABLES=a - TO z BY age BY sex\n /CELLS=MEAN MEDIAN.\n```\n\nThe pandas approach is probably - most flexible if you''re using Python, as it gives you a clean DataFrame with - hierarchical columns showing both statistics for each variable. Which tool - are you planning to use?"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":45,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":785,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:28 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01UozNQ8LQsKAybE7zZ7nUsf","type":"message","role":"assistant","content":[{"type":"text","text":"# + Computing Mean and Median by Groups\n\nHere are several approaches depending + on your tool:\n\n## **R - using dplyr**\n\n```r\nlibrary(dplyr)\n\ndf %>%\n group_by(age, + sex) %>%\n summarise(across(a:z, \n list(mean = mean, median + = median),\n na.rm = TRUE))\n```\n\n## **Python - using + pandas**\n\n```python\nimport pandas as pd\n\ndf.groupby([''age'', ''sex'']).agg([''mean'', + ''median''])\n```\n\nOr for specific columns:\n\n```python\n# Select columns + a through z\ncols = [col for col in df.columns if col not in [''age'', ''sex'']]\n\ndf.groupby([''age'', + ''sex''])[cols].agg([''mean'', ''median''])\n```\n\n## **SQL**\n\n```sql\nSELECT + \n age,\n sex,\n AVG(a) as a_mean, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER + BY a) as a_median,\n AVG(b) as b_mean, PERCENTILE_CONT(0.5) WITHIN GROUP + (ORDER BY b) as b_median,\n -- ... repeat for each variable\nFROM your_table\nGROUP + BY age, sex\n```\n\n## **SAS**\n\n```sas\nPROC MEANS DATA=dataset MEAN MEDIAN;\n CLASS + age sex;\n VAR a--z; /* double dash selects all variables between a and + z */\nRUN;\n```\n\n**Which tool are you using?** I can provide more specific + details!"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":45,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":382,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:34:37 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-explicit.yml b/vignettes/_vcr/prompt-design-code-explicit.yml index 369d9976..e34372f4 100644 --- a/vignettes/_vcr/prompt-design-code-explicit.yml +++ b/vignettes/_vcr/prompt-design-code-explicit.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer who prefers the tidyverse.\n Just give me the code. I don''t want any explanation or sample data.\n\n Follow the tidyverse style guide:\n * Spread long function calls across multiple lines.\n * Where needed, always @@ -15,32 +15,33 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:55 GMT + date: Wed, 22 Oct 2025 14:35:01 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:54Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:55Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:52Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:54Z' - request-id: req_011CQYjYiq8YP1rsiNbUvNoT + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:35:00Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:35:01Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:58Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:35:00Z' + request-id: req_011CUNQM3ZJTZ1QmiuDDKwLB strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '2974' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fb275da72e27-DFW - content-encoding: gzip + cf-ray: 9929b7f52b07461a-DFW body: - string: '{"id":"msg_01Pn9fuwhaZh8VP3v7qdv17b","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\nlibrary(dplyr)\n\ndata - |>\n group_by(age, sex) |>\n summarise(\n across(\n a:z,\n list(mean - = mean, median = median),\n na.rm = TRUE\n ),\n .groups = \"drop\"\n )\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":160,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":78,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:55 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01W9wj6VDVBWwvCq3HcBhP1x","type":"message","role":"assistant","content":[{"type":"text","text":"\n```R\nlibrary(dplyr)\n\ndf + |>\n group_by(age, sex) |>\n summarise(across(\n a:z,\n list(mean + = mean, median = median),\n .names = \"{.col}_{.fn}\"\n ))\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":160,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":73,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:35:01 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-new-feature.yml b/vignettes/_vcr/prompt-design-code-new-feature.yml index c0110729..784a3a95 100644 --- a/vignettes/_vcr/prompt-design-code-new-feature.yml +++ b/vignettes/_vcr/prompt-design-code-new-feature.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer.\n Just give me the code; no explanation in text.\n Use the `.by` argument rather than `group_by()`.\n dplyr 1.1.0 introduced per-operation grouping with the `.by` argument.\n e.g., instead of:\n\n transactions |>\n group_by(company, @@ -14,32 +14,33 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:35:03 GMT + date: Wed, 22 Oct 2025 14:35:11 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:35:02Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:35:03Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:35:01Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:35:02Z' - request-id: req_011CQYjZLo6affubYGxrTmkR + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:35:10Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:35:11Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:35:08Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:35:10Z' + request-id: req_011CUNQMjyQsYcN3mxGaSuUF strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '3021' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fb5be9cf2e27-DFW - content-encoding: gzip + cf-ray: 9929b830494a461a-DFW body: - string: '{"id":"msg_015Mt15UatdGzG6Kbh6AiiAn","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\ndata + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01FQnKTUcxJqjtW1oFYEeK82","type":"message","role":"assistant","content":[{"type":"text","text":"```r\ndata |>\n summarise(\n across(a:z, list(mean = mean, median = median), .names - = \"{.col}_{.fn}\"),\n .by = c(age, sex)\n )\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":182,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":60,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:35:03 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + = \"{.col}_{.fn}\"),\n .by = c(age, sex)\n )\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":182,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":60,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:35:11 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-r-minimal.yml b/vignettes/_vcr/prompt-design-code-r-minimal.yml index bd648c16..d9e965ef 100644 --- a/vignettes/_vcr/prompt-design-code-r-minimal.yml +++ b/vignettes/_vcr/prompt-design-code-r-minimal.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer who prefers the tidyverse.\n Just give me the code. I don''t want any explanation or sample data.\n","messages":[{"role":"user","content":[{"type":"text","text":"\n How can I compute the mean and median of variables a, b, c, and so on,\n all @@ -11,32 +11,33 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:44 GMT + date: Wed, 22 Oct 2025 14:34:47 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:43Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:45Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:41Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:43Z' - request-id: req_011CQYjXuLsg6WJvBmBoDa3v + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:34:46Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:34:47Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:44Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:34:46Z' + request-id: req_011CUNQL2J8EfqwLmmKhkT5N strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '2792' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fae1db7b2e27-DFW - content-encoding: gzip + cf-ray: 9929b79e898e461a-DFW body: - string: '{"id":"msg_01FQ2cdTwAFps4hwm638FH4G","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\nlibrary(dplyr)\n\ndf + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01QzMiLWZPZKNat1Uhe8UKxw","type":"message","role":"assistant","content":[{"type":"text","text":"```r\nlibrary(dplyr)\n\ndf %>%\n group_by(age, sex) %>%\n summarise(across(a:z, list(mean = mean, median - = median), na.rm = TRUE),\n .groups = \"drop\")\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":79,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":65,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:44 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + = median), .names = \"{.col}_{.fn}\"))\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":79,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":63,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:34:47 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-r.yml b/vignettes/_vcr/prompt-design-code-r.yml index e7852162..137a5309 100644 --- a/vignettes/_vcr/prompt-design-code-r.yml +++ b/vignettes/_vcr/prompt-design-code-r.yml @@ -3,63 +3,52 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer who prefers the tidyverse.\n","messages":[{"role":"user","content":[{"type":"text","text":"\n How can I compute the mean and median of variables a, b, c, and so on,\n all the way up to z, grouped by age and sex.\n"}]}],"stream":false,"max_tokens":4096}' response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:41 GMT + date: Wed, 22 Oct 2025 14:34:44 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:30Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:41Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:29Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:30Z' - request-id: req_011CQYjWz1srxPpDaWVwuXFB + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:34:39Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:34:44Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:37Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:34:39Z' + request-id: req_011CUNQKVPkzSCM6CpuaV7f3 strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '6928' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fa940e242e27-DFW - content-encoding: gzip + cf-ray: 9929b7716c7e461a-DFW body: - string: '{"id":"msg_01BZSTESTjDiidpRCFuuZpuX","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"Here - are a few ways to compute the mean and median of variables a through z, grouped - by age and sex using tidyverse:\n\n## Method 1: Using `across()` with `summarise()` - (Recommended)\n\n```r\nlibrary(dplyr)\n\n# If you want separate columns for - mean and median\nresult <- df %>%\n group_by(age, sex) %>%\n summarise(\n across(a:z, - list(mean = mean, median = median), .names = \"{.col}_{.fn}\"),\n .groups - = \"drop\"\n )\n\n# If you want a longer format that''s easier to work with\nresult_long - <- df %>%\n group_by(age, sex) %>%\n summarise(\n across(a:z, list(mean - = mean, median = median), .names = \"{.col}_{.fn}\"),\n .groups = \"drop\"\n ) - %>%\n pivot_longer(\n cols = -c(age, sex),\n names_to = c(\"variable\", - \"statistic\"),\n names_sep = \"_\",\n values_to = \"value\"\n )\n```\n\n## - Method 2: If you need to handle missing values\n\n```r\nresult <- df %>%\n group_by(age, - sex) %>%\n summarise(\n across(a:z, list(\n mean = ~mean(.x, na.rm - = TRUE),\n median = ~median(.x, na.rm = TRUE)\n ), .names = \"{.col}_{.fn}\"),\n .groups - = \"drop\"\n )\n```\n\n## Method 3: Using `pivot_longer()` first (alternative - approach)\n\n```r\nlibrary(dplyr)\nlibrary(tidyr)\n\nresult <- df %>%\n pivot_longer(cols - = a:z, names_to = \"variable\", values_to = \"value\") %>%\n group_by(age, - sex, variable) %>%\n summarise(\n mean = mean(value, na.rm = TRUE),\n median - = median(value, na.rm = TRUE),\n .groups = \"drop\"\n )\n```\n\n## Method - 4: If you want to specify variables by pattern\n\n```r\n# If your variables - follow a pattern or you want to be more selective\nresult <- df %>%\n group_by(age, - sex) %>%\n summarise(\n across(matches(\"^[a-z]$\"), list(mean = mean, - median = median), .names = \"{.col}_{.fn}\"),\n .groups = \"drop\"\n )\n```\n\nThe - first method is generally the most efficient and produces a wide format that''s - easy to read. The third method produces a long format that''s often more convenient - for further analysis or visualization.\n\nChoose the method that best fits - your data structure and analysis needs!"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":61,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":662,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:41 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01WYxzpiBDSpqsxxhk4mXS1j","type":"message","role":"assistant","content":[{"type":"text","text":"Here''s + how to compute mean and median for variables a through z, grouped by age and + sex using tidyverse:\n\n```r\nlibrary(dplyr)\nlibrary(tidyr)\n\n# Option 1: + Using across() with summarise()\nresult <- df %>%\n group_by(age, sex) %>%\n summarise(\n across(\n a:z,\n list(mean + = mean, median = median),\n .names = \"{.col}_{.fn}\"\n ),\n .groups + = \"drop\"\n )\n\n# Option 2: If you want long format for easier viewing\nresult_long + <- df %>%\n group_by(age, sex) %>%\n summarise(\n across(\n a:z,\n list(mean + = mean, median = median)\n ),\n .groups = \"drop\"\n ) %>%\n pivot_longer(\n cols + = -c(age, sex),\n names_to = c(\"variable\", \"statistic\"),\n names_sep + = \"_\",\n values_to = \"value\"\n )\n\n# Option 3: If you need to handle + missing values\nresult <- df %>%\n group_by(age, sex) %>%\n summarise(\n across(\n a:z,\n list(mean + = ~mean(.x, na.rm = TRUE), \n median = ~median(.x, na.rm = TRUE)),\n .names + = \"{.col}_{.fn}\"\n ),\n .groups = \"drop\"\n )\n```\n\nThe result + will have columns like `a_mean`, `a_median`, `b_mean`, `b_median`, etc., with + one row per age/sex combination."}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":61,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":402,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:34:44 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-styles.yml b/vignettes/_vcr/prompt-design-code-styles.yml index 75f6dd97..1191ca1d 100644 --- a/vignettes/_vcr/prompt-design-code-styles.yml +++ b/vignettes/_vcr/prompt-design-code-styles.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer who prefers data.table.\n Just give me the code. I don''t want any explanation or sample data.\n","messages":[{"role":"user","content":[{"type":"text","text":"\n How can I compute the mean and median of variables a, b, c, and so on,\n all @@ -11,40 +11,47 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:48 GMT + date: Wed, 22 Oct 2025 14:34:53 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:46Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:48Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:45Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:46Z' - request-id: req_011CQYjYAHYamguVToV3ftjk + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:34:49Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:34:53Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:48Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:34:49Z' + request-id: req_011CUNQLFGEJexZJLKgF5Tj9 strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '5332' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564faf7a8a12e27-DFW - content-encoding: gzip + cf-ray: 9929b7b188f3461a-DFW body: - string: '{"id":"msg_01BbHVBRZmLAQeAdC2scpqWN","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\nlibrary(data.table)\n\n# - Assuming your data is in a data.table called ''dt''\ndt[, lapply(.SD, function(x) - list(mean = mean(x, na.rm = TRUE), \n median - = median(x, na.rm = TRUE))), \n by = .(age, sex), \n .SDcols = letters]\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":78,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":97,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:48 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_013EQbABpQZzFCh1zy4geMLQ","type":"message","role":"assistant","content":[{"type":"text","text":"```r\nlibrary(data.table)\n\ndt[, + lapply(.SD, function(x) list(mean = mean(x, na.rm = TRUE), \n median + = median(x, na.rm = TRUE))), \n by = .(age, sex), \n .SDcols = letters]\n```\n\nIf + you want mean and median as separate columns:\n\n```r\nlibrary(data.table)\n\ndt[, + c(lapply(.SD, mean, na.rm = TRUE), \n lapply(.SD, median, na.rm = TRUE)), + \n by = .(age, sex), \n .SDcols = letters]\n```\n\nOr with prefixes for + clarity:\n\n```r\nlibrary(data.table)\n\nresult <- dt[, c(\n setNames(lapply(.SD, + mean, na.rm = TRUE), paste0(\"mean_\", letters)),\n setNames(lapply(.SD, + median, na.rm = TRUE), paste0(\"median_\", letters))\n), by = .(age, sex), + .SDcols = letters]\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":78,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":256,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:34:53 - request: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R programmer who prefers base R.\n Just give me the code. I don''t want any explanation or sample data.\n","messages":[{"role":"user","content":[{"type":"text","text":"\n How can I compute the mean and median of variables a, b, c, and so on,\n all @@ -52,37 +59,40 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:34:52 GMT + date: Wed, 22 Oct 2025 14:34:58 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:49Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:34:53Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:48Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:49Z' - request-id: req_011CQYjYPxZkn9zaeeH6mXB5 + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:34:55Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:34:58Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:34:53Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:34:55Z' + request-id: req_011CUNQLf2DzaE2kyesWTw8t strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '5022' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fb0bbbca2e27-DFW - content-encoding: gzip + cf-ray: 9929b7d43b1f461a-DFW body: - string: '{"id":"msg_012mSxHqw2tZK9WnfgaiDkoe","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\naggregate(. - ~ age + sex, data = df[c(\"age\", \"sex\", letters)], FUN = function(x) c(mean - = mean(x), median = median(x)))\n```\n\nOr if you want separate columns for - means and medians:\n\n```r\nmeans <- aggregate(. ~ age + sex, data = df[c(\"age\", - \"sex\", letters)], FUN = mean)\nmedians <- aggregate(. ~ age + sex, data - = df[c(\"age\", \"sex\", letters)], FUN = median)\nnames(medians)[-(1:2)] - <- paste0(names(medians)[-(1:2)], \"_median\")\nmerge(means, medians, by = - c(\"age\", \"sex\"))\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":77,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":176,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:34:52 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01MLW4fJH1dYX9NVDoCBEw2E","type":"message","role":"assistant","content":[{"type":"text","text":"```R\naggregate(. + ~ age + sex, data = your_data, FUN = function(x) c(mean = mean(x), median + = median(x)))\n```\n\nOr if you want separate columns for means and medians:\n\n```R\nmeans + <- aggregate(. ~ age + sex, data = your_data, FUN = mean)\nmedians <- aggregate(. + ~ age + sex, data = your_data, FUN = median)\nresult <- merge(means, medians, + by = c(\"age\", \"sex\"), suffixes = c(\"_mean\", \"_median\"))\n```\n\nOr + using `by()` for more control:\n\n```R\ndo.call(rbind, by(your_data, list(your_data$age, + your_data$sex), function(x) {\n data.frame(\n age = x$age[1],\n sex + = x$sex[1],\n t(sapply(x[, c(\"a\", \"b\", \"c\", ..., \"z\")], function(col) + c(mean = mean(col), median = median(col))))\n )\n}))\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":77,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":261,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:34:58 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-code-teacher.yml b/vignettes/_vcr/prompt-design-code-teacher.yml index ea129e70..b9d20086 100644 --- a/vignettes/_vcr/prompt-design-code-teacher.yml +++ b/vignettes/_vcr/prompt-design-code-teacher.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"\n You are an expert + string: '{"model":"claude-sonnet-4-5-20250929","system":"\n You are an expert R teacher.\n I am a new R user who wants to improve my programming skills.\n Help me understand the code you produce by explaining each function call with\n a brief comment. For more complicated calls, add documentation to each\n argument. @@ -13,37 +13,41 @@ http_interactions: response: status: 200 headers: - date: Fri, 27 Jun 2025 12:35:00 GMT + date: Wed, 22 Oct 2025 14:35:07 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '40000' - anthropic-ratelimit-input-tokens-remaining: '40000' - anthropic-ratelimit-input-tokens-reset: '2025-06-27T12:34:57Z' - anthropic-ratelimit-output-tokens-limit: '16000' - anthropic-ratelimit-output-tokens-remaining: '16000' - anthropic-ratelimit-output-tokens-reset: '2025-06-27T12:35:01Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-06-27T12:34:56Z' - anthropic-ratelimit-tokens-limit: '56000' - anthropic-ratelimit-tokens-remaining: '56000' - anthropic-ratelimit-tokens-reset: '2025-06-27T12:34:57Z' - request-id: req_011CQYjYxTBKK9QAZNn46MTR + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '2000000' + anthropic-ratelimit-input-tokens-remaining: '2000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:35:03Z' + anthropic-ratelimit-output-tokens-limit: '400000' + anthropic-ratelimit-output-tokens-remaining: '400000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:35:07Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:35:02Z' + anthropic-ratelimit-tokens-limit: '2400000' + anthropic-ratelimit-tokens-remaining: '2400000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:35:03Z' + request-id: req_011CUNQMHRysbzKSvrXrXhMs strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '5884' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 9564fb3b390e2e27-DFW - content-encoding: gzip + cf-ray: 9929b8095af9461a-DFW body: - string: '{"id":"msg_01QuHMUKXYc6EmiBE8TTFMnP","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"text","text":"```r\n# - Compute mean and median for variables a through z, grouped by age and sex\nresult - <- df %>%\n group_by(age, sex) %>% # Group data by age and sex categories\n summarise(\n across(\n .cols - = a:z, # Select all columns from ''a'' to ''z''\n .fns = list(\n mean - = ~ mean(.x, na.rm = TRUE), # Calculate mean, removing missing values\n median - = ~ median(.x, na.rm = TRUE) # Calculate median, removing missing values\n ),\n .names - = \"{.col}_{.fn}\" # Name format: variable_statistic (e.g., a_mean, a_median)\n ),\n .groups - = \"drop\" # Remove grouping structure from result\n )\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":120,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":198,"service_tier":"standard"}}' - recorded_at: 2025-06-27 12:35:00 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + string: '{"model":"claude-sonnet-4-5-20250929","id":"msg_01UiAPzaQfzB8QSMVC7nZiR4","type":"message","role":"assistant","content":[{"type":"text","text":"```r\n# + Load dplyr for data manipulation\nlibrary(dplyr)\n\n# Compute mean and median + for variables a through z, grouped by age and sex\nresult <- your_data %>%\n # + Group the data by age and sex\n group_by(age, sex) %>%\n # Calculate mean + and median for all variables from a to z\n summarise(\n # across() applies + functions to multiple columns\n across(\n # Select columns a through + z\n .cols = a:z,\n # List of functions to apply: mean and median\n .fns + = list(\n mean = ~mean(.x, na.rm = TRUE), # na.rm removes missing + values\n median = ~median(.x, na.rm = TRUE)\n ),\n # Naming + pattern for new columns: original_function\n .names = \"{.col}_{.fn}\"\n )\n ) + %>%\n # Remove grouping structure from result\n ungroup()\n```"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":120,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":230,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:35:07 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-data-examples.yml b/vignettes/_vcr/prompt-design-data-examples.yml index 7d3960e1..1b21ea50 100644 --- a/vignettes/_vcr/prompt-design-data-examples.yml +++ b/vignettes/_vcr/prompt-design-data-examples.yml @@ -14,74 +14,75 @@ http_interactions: cup (150g) dark brown sugar\n 2 large eggs\n ¾ cup (165g) sour cream\n ½ cup (113g) unsalted butter, melted\n 1 teaspoon vanilla extract\n ¾ teaspoon kosher salt\n ⅓ cup (80ml) neutral oil\n 1½ cups (190g) all-purpose flour\n 150g - plus 1½ teaspoons sugar\n"}]}],"model":"gpt-4.1","stream":false}' + plus 1½ teaspoons sugar\n"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fb96cd344863-DFW + cf-ray: 9929b963eef4f048-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:35:21 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '10587' + date: Wed, 22 Oct 2025 14:36:31 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '33845' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=0egBugD61HaAgAoMw2EkSk34gSSDYPnFrKKOFGTbjE8-1751027721-1.0.1.1-fa8Gylqp7jYdBy8m.Ee04UeMdNbZOFvxQ9j99Y7IFxu02Zvz0PVF7VCcxjhEDnyg5SbwoaVDe.2pgJm8yzcC9vIvcx6r7JDEHQKaxzB4bX8; - path=/; expires=Fri, 27-Jun-25 13:05:21 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=zWhtvL6SFznLNR1K5oPBLomt_qJAH76BKAdSAbxU9Bk-1761143791-1.0.1.1-ayfWrHMRu.0Aqh5IFThb1GGAZjRsejWNW.0bnAVQvO0L.6_868cajZAQO8tONeB_GU98Sr7OjGNW_XQfPrkmXxxGFBmMaZnZFa9Ar2wSHOE; + path=/; expires=Wed, 22-Oct-25 15:06:31 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=86A_sYUsIRlIFJdxCNmb4kGrnki3Zw1MG.WhOGCzm1k-1751027721182-0.0.1.1-604800000; + - _cfuvid=0s6HyQyfc1FALvvjAV6AOOrwmcG8QD8YzPGxvgxe.G0-1761143791928-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '10592' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999797' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '34429' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999798' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_c334a9d7363feade20233c035f8cb556 + x-request-id: req_38f8e8e9cd974884bd18fdc64069c5e7 body: string: | { - "id": "chatcmpl-Bn2aMHQF1Eu1Z3jiqHNNE8JsbneE9", + "id": "chatcmpl-CTUEQ1ob0tzAsygCc0d3LzU9SCeR6", "object": "chat.completion", - "created": 1751027710, - "model": "gpt-4.1-2025-04-14", + "created": 1761143758, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "[\n {\"name\": \"dark brown sugar\", \"quantity\": 150, \"unit\": \"g\"},\n {\"name\": \"large eggs\", \"quantity\": 2, \"unit\": \"count\"},\n {\"name\": \"sour cream\", \"quantity\": 165, \"unit\": \"g\"},\n {\"name\": \"unsalted butter\", \"quantity\": 113, \"unit\": \"g\", \"note\": \"melted\"},\n {\"name\": \"vanilla extract\", \"quantity\": 1, \"unit\": \"teaspoon\"},\n {\"name\": \"kosher salt\", \"quantity\": 0.75, \"unit\": \"teaspoon\"},\n {\"name\": \"neutral oil\", \"quantity\": 80, \"unit\": \"ml\"},\n {\"name\": \"all-purpose flour\", \"quantity\": 190, \"unit\": \"g\"},\n {\"name\": \"sugar\", \"quantity\": 150, \"unit\": \"g\"},\n {\"name\": \"sugar\", \"quantity\": 1.5, \"unit\": \"teaspoon\"}\n]", + "content": "[\n {\"name\": \"dark brown sugar\", \"quantity\": 150, \"unit\": \"g\"},\n {\"name\": \"large eggs\", \"quantity\": 2, \"unit\": \"count\"},\n {\"name\": \"sour cream\", \"quantity\": 165, \"unit\": \"g\"},\n {\"name\": \"unsalted butter, melted\", \"quantity\": 113, \"unit\": \"g\"},\n {\"name\": \"vanilla extract\", \"quantity\": 1, \"unit\": \"teaspoon\"},\n {\"name\": \"kosher salt\", \"quantity\": 0.75, \"unit\": \"teaspoon\"},\n {\"name\": \"neutral oil\", \"quantity\": 80, \"unit\": \"ml\"},\n {\"name\": \"all-purpose flour\", \"quantity\": 190, \"unit\": \"g\"},\n {\"name\": \"sugar\", \"quantity\": 150, \"unit\": \"g\"},\n {\"name\": \"sugar\", \"quantity\": 1.5, \"unit\": \"teaspoon\"}\n]", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 258, - "completion_tokens": 226, - "total_tokens": 484, + "prompt_tokens": 257, + "completion_tokens": 2277, + "total_tokens": 2534, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2048, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:35:21 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:36:31 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-data-loose.yml b/vignettes/_vcr/prompt-design-data-loose.yml index f9cef4a9..45371633 100644 --- a/vignettes/_vcr/prompt-design-data-loose.yml +++ b/vignettes/_vcr/prompt-design-data-loose.yml @@ -10,74 +10,75 @@ http_interactions: (150g) dark brown sugar\n 2 large eggs\n ¾ cup (165g) sour cream\n ½ cup (113g) unsalted butter, melted\n 1 teaspoon vanilla extract\n ¾ teaspoon kosher salt\n ⅓ cup (80ml) neutral oil\n 1½ cups (190g) all-purpose flour\n 150g - plus 1½ teaspoons sugar\n"}]}],"model":"gpt-4.1","stream":false}' + plus 1½ teaspoons sugar\n"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fb6b7c724863-DFW + cf-ray: 9929b8454f85f048-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:35:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '6672' + date: Wed, 22 Oct 2025 14:35:57 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '45545' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=uhy1dBTOvMaT_n3Tee23IQ1bTz_ephDEJFpAMPVLL7c-1751027710-1.0.1.1-xbXtjNj_RbuB3z3YS_mg22lTB_LYkyy2I6bCd18UOqmjo5Y5evf_UjVO4GvtJe0mgTcnfaAahkBIYwomK79aQx_ZqYwi8EboxyNRHwEjomo; - path=/; expires=Fri, 27-Jun-25 13:05:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=atiKs5rWu0s71NoF3ZCphKLnvmuaTHxvHTZrWIOi4QQ-1761143757-1.0.1.1-RskDLiLWReJMyK9SHosZrvB.GcYYjidCMqAUFqwc58Ai7EVwyFZD6qsay4haDKbBEK9VVbMY9d1363fVabzFdlP8SHbAOr8xvuS3Zo3qPHA; + path=/; expires=Wed, 22-Oct-25 15:05:57 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=d4MK21NY2k9d65OjRyUF6gnWMnNQ6IAG6ZHepvNasOw-1751027710320-0.0.1.1-604800000; + - _cfuvid=zfMg964cx4VhkWOpNsuATCuLFbcmdjqsn2Q831uW2ws-1761143757226-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '6678' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999881' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '45604' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999882' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_2e2b596fb5ab6794f4532f1087c86bd4 + x-request-id: req_e2eeb449f8e9479fbea5f4d1a5025f1a body: string: | { - "id": "chatcmpl-Bn2aFnOoZ4ywAFdwZf0inUEKCY8m4", + "id": "chatcmpl-CTUDfcBEJqgpDGjXhb4By5O0ZyMmy", "object": "chat.completion", - "created": 1751027703, - "model": "gpt-4.1-2025-04-14", + "created": 1761143711, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "[\n {\n \"ingredient\": \"dark brown sugar\",\n \"amount\": \"3/4 cup\",\n \"weight\": \"150g\"\n },\n {\n \"ingredient\": \"eggs\",\n \"amount\": \"2\",\n \"unit\": \"large\"\n },\n {\n \"ingredient\": \"sour cream\",\n \"amount\": \"3/4 cup\",\n \"weight\": \"165g\"\n },\n {\n \"ingredient\": \"unsalted butter\",\n \"amount\": \"1/2 cup\",\n \"weight\": \"113g\",\n \"preparation\": \"melted\"\n },\n {\n \"ingredient\": \"vanilla extract\",\n \"amount\": \"1 teaspoon\"\n },\n {\n \"ingredient\": \"kosher salt\",\n \"amount\": \"3/4 teaspoon\"\n },\n {\n \"ingredient\": \"neutral oil\",\n \"amount\": \"1/3 cup\",\n \"volume\": \"80ml\"\n },\n {\n \"ingredient\": \"all-purpose flour\",\n \"amount\": \"1 1/2 cups\",\n \"weight\": \"190g\"\n },\n {\n \"ingredient\": \"sugar\",\n \"amounts\": [\n {\n \"amount\": \"150g\"\n },\n {\n \"amount\": \"1 1/2 teaspoons\"\n }\n ]\n }\n]", + "content": "{\n \"ingredients\": [\n {\n \"name\": \"dark brown sugar\",\n \"quantity\": 0.75,\n \"unit\": \"cup\",\n \"metric\": { \"quantity\": 150, \"unit\": \"g\" }\n },\n {\n \"name\": \"eggs\",\n \"quantity\": 2,\n \"unit\": \"count\",\n \"size\": \"large\"\n },\n {\n \"name\": \"sour cream\",\n \"quantity\": 0.75,\n \"unit\": \"cup\",\n \"metric\": { \"quantity\": 165, \"unit\": \"g\" }\n },\n {\n \"name\": \"unsalted butter\",\n \"quantity\": 0.5,\n \"unit\": \"cup\",\n \"metric\": { \"quantity\": 113, \"unit\": \"g\" },\n \"preparation\": \"melted\"\n },\n {\n \"name\": \"vanilla extract\",\n \"quantity\": 1,\n \"unit\": \"teaspoon\"\n },\n {\n \"name\": \"kosher salt\",\n \"quantity\": 0.75,\n \"unit\": \"teaspoon\"\n },\n {\n \"name\": \"neutral oil\",\n \"quantity\": 0.3333333333,\n \"unit\": \"cup\",\n \"metric\": { \"quantity\": 80, \"unit\": \"ml\" }\n },\n {\n \"name\": \"all-purpose flour\",\n \"quantity\": 1.5,\n \"unit\": \"cup\",\n \"metric\": { \"quantity\": 190, \"unit\": \"g\" }\n },\n {\n \"name\": \"sugar\",\n \"quantity\": 150,\n \"unit\": \"g\"\n },\n {\n \"name\": \"sugar\",\n \"quantity\": 1.5,\n \"unit\": \"teaspoon\",\n \"notes\": \"additional\"\n }\n ]\n}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 149, - "completion_tokens": 286, - "total_tokens": 435, + "prompt_tokens": 148, + "completion_tokens": 3493, + "total_tokens": 3641, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 3072, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_799e4ca3f1" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:35:10 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:35:57 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-data-structured.yml b/vignettes/_vcr/prompt-design-data-structured.yml index 95407721..155ec35c 100644 --- a/vignettes/_vcr/prompt-design-data-structured.yml +++ b/vignettes/_vcr/prompt-design-data-structured.yml @@ -16,7 +16,7 @@ http_interactions: (150g) dark brown sugar\n 2 large eggs\n ¾ cup (165g) sour cream\n ½ cup (113g) unsalted butter, melted\n 1 teaspoon vanilla extract\n ¾ teaspoon kosher salt\n ⅓ cup (80ml) neutral oil\n 1½ cups (190g) all-purpose flour\n 150g - plus 1½ teaspoons sugar\n"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":"Ingredient + plus 1½ teaspoons sugar\n"}]}],"model":"gpt-5","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":"Ingredient name"},"quantity":{"type":"number","description":""},"unit":{"type":"string","description":"Unit of measurement"}},"required":["name","quantity","unit"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' response: @@ -25,67 +25,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fbdaebce4863-DFW + cf-ray: 9929ba3da827f048-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:35:24 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '2258' + date: Wed, 22 Oct 2025 14:37:05 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '32960' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=u5KndivZDk1OHRsvc39Fu47DGuMto.bsqtwPtyt7elY-1751027724-1.0.1.1-8hd8ujYVu2O1ceAUT11z24ejb2kUEZwV8Gu3r.0LQ215zEaFff1J_t3nJF_Ggyi1hTvY3eR54xUxXJnU57TNpynVR8rz3dBJLreyZqX5kPY; - path=/; expires=Fri, 27-Jun-25 13:05:24 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=tL3MkDs235YoF3b0iyn4pkbBBWJ_JeI7oRSDZs8WcRY-1761143825-1.0.1.1-DpOvHDEoSOgA6KXCfuah88YFGvD5azdahFAdXPJOKCAQ2_3jfzFrNlhoC2havOcyDjYUN2naHdojRUbpc_VUtgX3D06jtFNU042D6.zk_L8; + path=/; expires=Wed, 22-Oct-25 15:07:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=0BnkHsT0PCnJqJcgzoAUim9a62zFpUJl.GJ.X7jw_LY-1751027724034-0.0.1.1-604800000; + - _cfuvid=csbe6ooWd7ziLv1VmvZ6eKSgpB1l9BfBy4vFsF_c7Rs-1761143825380-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '2261' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999776' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '33076' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999776' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d9e7c12c618d4022fd87af03011d08a4 + x-request-id: req_11fc48baf9264d8684c350ac94168c5f body: string: | { - "id": "chatcmpl-Bn2aXTZTFJT0syrV26o5UoHpRStYm", + "id": "chatcmpl-CTUEyPgKYfHPKZnNmTC5Sk413IXoU", "object": "chat.completion", - "created": 1751027721, - "model": "gpt-4.1-2025-04-14", + "created": 1761143792, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"wrapper\":[{\"name\":\"dark brown sugar\",\"quantity\":150,\"unit\":\"g\"},{\"name\":\"eggs\",\"quantity\":2,\"unit\":\"large\"},{\"name\":\"sour cream\",\"quantity\":165,\"unit\":\"g\"},{\"name\":\"unsalted butter, melted\",\"quantity\":113,\"unit\":\"g\"},{\"name\":\"vanilla extract\",\"quantity\":1,\"unit\":\"teaspoon\"},{\"name\":\"kosher salt\",\"quantity\":0.75,\"unit\":\"teaspoon\"},{\"name\":\"neutral oil\",\"quantity\":80,\"unit\":\"ml\"},{\"name\":\"all-purpose flour\",\"quantity\":190,\"unit\":\"g\"},{\"name\":\"sugar\",\"quantity\":150,\"unit\":\"g\"},{\"name\":\"sugar\",\"quantity\":1.5,\"unit\":\"teaspoon\"}]}", + "content": "{\"wrapper\":[{\"name\":\"dark brown sugar\",\"quantity\":150,\"unit\":\"g\"},{\"name\":\"large eggs\",\"quantity\":2,\"unit\":\"count\"},{\"name\":\"sour cream\",\"quantity\":165,\"unit\":\"g\"},{\"name\":\"unsalted butter, melted\",\"quantity\":113,\"unit\":\"g\"},{\"name\":\"vanilla extract\",\"quantity\":1,\"unit\":\"teaspoon\"},{\"name\":\"kosher salt\",\"quantity\":0.75,\"unit\":\"teaspoon\"},{\"name\":\"neutral oil\",\"quantity\":80,\"unit\":\"ml\"},{\"name\":\"all-purpose flour\",\"quantity\":190,\"unit\":\"g\"},{\"name\":\"sugar\",\"quantity\":150,\"unit\":\"g\"},{\"name\":\"sugar\",\"quantity\":1.5,\"unit\":\"teaspoon\"}]}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 355, - "completion_tokens": 153, - "total_tokens": 508, + "prompt_tokens": 352, + "completion_tokens": 2470, + "total_tokens": 2822, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2304, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:35:24 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:37:05 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/prompt-design-data-unstructured-input.yml b/vignettes/_vcr/prompt-design-data-unstructured-input.yml index e172b5fe..4e359524 100644 --- a/vignettes/_vcr/prompt-design-data-unstructured-input.yml +++ b/vignettes/_vcr/prompt-design-data-unstructured-input.yml @@ -21,74 +21,75 @@ http_interactions: of dough onto an ungreased baking sheet and bake at 350°F (175°C)\n for 10-12 minutes, or until the edges are lightly browned. Let the cookies\n cool on the baking sheet for a few minutes before transferring to a wire\n rack to - cool completely. Enjoy!\n"}]}],"model":"gpt-4.1","stream":false}' + cool completely. Enjoy!\n"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fbec5e294863-DFW + cf-ray: 9929bb0deb7af048-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:35:26 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '2355' + date: Wed, 22 Oct 2025 14:37:48 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '42296' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=cyzSzKqDaX1lJC5VaSssSmaLplB6y5HW1rxnSD562Kk-1751027726-1.0.1.1-ieYjGreq40wNIrvBEJB3F9wPW9YyMIx0MwgOKzUjrLyYXJ1MAthoV2oXohhC45Xd2ibS.U_6k5wZqm6oNIBP5FMAeMMZJVRjeuAR9SNmhrc; - path=/; expires=Fri, 27-Jun-25 13:05:26 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=phNdNtslMmqLLgd_8R106hieTw5cQHkK1winlYFTxz8-1761143868-1.0.1.1-6HOcaEDPl.ufjfMHzRK11w648wXL8Ir_YaJhuVTPXFvt5xHe8xb.1VsYBzUUSUs2EdfQOksqbYvbYPu7kd_oHrQFhusP6C.k7o.U4m04yHw; + path=/; expires=Wed, 22-Oct-25 15:07:48 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=UczthRh6Q1elypHl2RnLSPYuucHVUq2oVWxL8ojpZLY-1751027726809-0.0.1.1-604800000; + - _cfuvid=i3HcgUFrpEaV.wNpHm9yGLrr0Wwh4KhS.GzLRsmg8NY-1761143868066-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '2548' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999666' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '42439' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999666' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_ce9fe6c6ead064607b9d33123dbc7145 + x-request-id: req_f15895ec90fa47b0b4e02ba99174188b body: string: | { - "id": "chatcmpl-Bn2aaNMICKWnAgLF6vKKwjf0bl8n5", + "id": "chatcmpl-CTUFVAiciPRRtOhRQRFd1qENbhBEQ", "object": "chat.completion", - "created": 1751027724, - "model": "gpt-4.1-2025-04-14", + "created": 1761143825, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "[\n {\"name\": \"unsalted butter\", \"quantity\": 1, \"unit\": \"cup\", \"input\": \"one cup of softened unsalted butter\"},\n {\"name\": \"white sugar\", \"quantity\": 0.25, \"unit\": \"cup\", \"input\": \"a quarter cup of white sugar\"},\n {\"name\": \"egg\", \"quantity\": 1, \"unit\": \"item\", \"input\": \"an egg\"},\n {\"name\": \"vanilla extract\", \"quantity\": 1, \"unit\": \"teaspoon\", \"input\": \"1 teaspoon of vanilla extract\"},\n {\"name\": \"all-purpose flour\", \"quantity\": 2, \"unit\": \"cup\", \"input\": \"2 cups of all-purpose flour\"},\n {\"name\": \"semisweet chocolate chips\", \"quantity\": 1, \"unit\": \"cup\", \"input\": \"1 cup of semisweet chocolate chips\"}\n]", + "content": "[\n {\"name\": \"softened unsalted butter\", \"quantity\": 1, \"unit\": \"cup\", \"input\": \"one cup of softened unsalted butter\"},\n {\"name\": \"white sugar\", \"quantity\": 0.25, \"unit\": \"cup\", \"input\": \"a quarter cup of white sugar\"},\n {\"name\": \"egg\", \"quantity\": 1, \"unit\": \"count\", \"input\": \"an egg\"},\n {\"name\": \"vanilla extract\", \"quantity\": 1, \"unit\": \"teaspoon\", \"input\": \"1 teaspoon of vanilla extract\"},\n {\"name\": \"all-purpose flour\", \"quantity\": 2, \"unit\": \"cup\", \"input\": \"2 cups of all-purpose flour\"},\n {\"name\": \"semisweet chocolate chips\", \"quantity\": 1, \"unit\": \"cup\", \"input\": \"1 cup of semisweet chocolate chips\"}\n]", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 366, - "completion_tokens": 195, - "total_tokens": 561, + "prompt_tokens": 365, + "completion_tokens": 2766, + "total_tokens": 3131, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2560, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_b3f1157249" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:35:26 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:37:48 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-basics-image.yml b/vignettes/_vcr/structured-data-basics-image.yml index 1cdfd850..45021a0e 100644 --- a/vignettes/_vcr/structured-data-basics-image.yml +++ b/vignettes/_vcr/structured-data-basics-image.yml @@ -3,79 +3,78 @@ http_interactions: method: POST uri: https://api.openai.com/v1/chat/completions body: - string: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"https://www.r-project.org/Rlogo.png"}}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"primary_shape":{"type":"string","description":""},"primary_colour":{"type":"string","description":""}},"required":["primary_shape","primary_colour"],"additionalProperties":false},"strict":true}}}' + string: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"https://www.r-project.org/Rlogo.png"}}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"primary_shape":{"type":"string","description":""},"primary_colour":{"type":"string","description":""}},"required":["primary_shape","primary_colour"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 98be0afb8be8e8f5-DFW + cf-ray: 99299cf10c79a912-DFW content-encoding: gzip content-type: application/json - date: Thu, 09 Oct 2025 12:57:20 GMT + date: Wed, 22 Oct 2025 14:16:40 GMT openai-organization: posit-esfrkf - openai-processing-ms: '2783' + openai-processing-ms: '7759' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=XU1VH6ao5IGqaayNN0i_Gc5yDplZb3L.gyOMGl64dME-1760014640-1.0.1.1-bdwIwsnCBSzkKcgbo0aUAL.qqAbkZcIdbr98WusUL6HwlkdJjeXpItdXYzs_KifHuYzGRUw4V7YceO4QcGiN.3R8zwA.ySdiuaTKSTVKeEM; - path=/; expires=Thu, 09-Oct-25 13:27:20 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=G3CqWaQz1q.l23itjyCdAckzJ3Hdzed1dyQBZpxHZcs-1761142599-1.0.1.1-jUMH4OlOQpStOB.fB2D8Gr9f5kQM946rhipBGL9715iU8j7umFkxM46nAztYquu_q1dvi8MRJ3i0xT1zaDIkaQyuUm.OD9LScZHWuzOrbpw; + path=/; expires=Wed, 22-Oct-25 14:46:39 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=aQoMxVqMwSPoONdwA10gTK4E2KEs0Dy2FSdteFnS87U-1760014640430-0.0.1.1-604800000; + - _cfuvid=qgkrB10FD2lMdGO69CF6SbA2FVYJMiuZa7p7jL79tCw-1761142599999-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '3028' + x-envoy-upstream-service-time: '7798' x-openai-proxy-wasm: v0.1 - x-ratelimit-limit-input-images: '250000' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-input-images: '249999' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999233' - x-ratelimit-reset-input-images: 0s - x-ratelimit-reset-requests: 6ms - x-ratelimit-reset-tokens: 1ms - x-request-id: req_f389cc41bf2646559dc4178c538e528c + x-ratelimit-limit-input-images: '50000' + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-input-images: '49999' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999232' + x-ratelimit-reset-input-images: 1ms + x-ratelimit-reset-requests: 2ms + x-ratelimit-reset-tokens: 0s + x-request-id: req_9252bc0118974be9be11cf7a34339177 body: string: | { - "id": "chatcmpl-COkUoDXCdJVyrPnZJiiA5ODNHYEgJ", + "id": "chatcmpl-CTTveytIh6oh38r15rBXksgdQ2dbb", "object": "chat.completion", - "created": 1760014638, - "model": "gpt-4.1-2025-04-14", + "created": 1761142594, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"primary_shape\":\"letter and ellipse\",\"primary_colour\":\"blue and grey\"}", + "content": "{\"primary_shape\":\"stylized letter 'R' with surrounding oval ring\",\"primary_colour\":\"blue\"}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 310, - "completion_tokens": 15, - "total_tokens": 325, + "prompt_tokens": 93, + "completion_tokens": 225, + "total_tokens": 318, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_e24a1fec47" + "system_fingerprint": null } - recorded_at: 2025-10-09 12:57:20 + recorded_at: 2025-10-22 14:16:40 recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-basics-text.yml b/vignettes/_vcr/structured-data-basics-text.yml index 7549cebe..d7da6713 100644 --- a/vignettes/_vcr/structured-data-basics-text.yml +++ b/vignettes/_vcr/structured-data-basics-text.yml @@ -4,45 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"My name - is Susan and I''m 13 years old"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + is Susan and I''m 13 years old"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125ab33d7b511a-MSP + cf-ray: 99299cdc6cfda912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:03 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '448' + date: Wed, 22 Oct 2025 14:16:31 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3065' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=x1KYUONagWxs2VLRRiOu7P3MRn4cllK5LPzO8_Km8Zg-1752845643-1.0.1.1-whwUhohzOjCklGy4J32Y4wxM5yt11uStsH6S1k.85j3.9CCCbrRLHRffpC6WIsx0Y4cBIXlHWGTL45NwcvXEAB30ybmd1OCrteuRT_UxCRE; - path=/; expires=Fri, 18-Jul-25 14:04:03 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=TBOrVQ_8qzRrKi4se4ExslUJVpFG8oH4VCTqT4.6MPc-1761142591-1.0.1.1-Kl.STFFpXg1DHCV4.F2_qNuDM6E33pgv9dXpc9RQW80PA0aq9QWNLYjNI4j3emUozqDPf.7xBlgOmu8cI8S08gmGAi6PQ0dZ30kIJPVzzWQ; + path=/; expires=Wed, 22-Oct-25 14:46:31 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=W4cchMOa_.Gu5Unu0iSHudtdrR4Yg11Tbej07WNz9.Q-1752845643599-0.0.1.1-604800000; + - _cfuvid=IhVH5BmwuUQFQnQaxZryc73vmA4OpbAHUiengI5Scq0-1761142591985-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '455' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999988' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3091' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999988' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_50b36d4b81f5045466381f76e984d0e6 + x-request-id: req_3a50aec8f0004b9e816fbe09044d6209 body: string: | { - "id": "chatcmpl-BufVrIInLJiF8X7GeHsVVP7plb0yF", + "id": "chatcmpl-CTTvYpzjFOp2UGjVmmpbTHjzny570", "object": "chat.completion", - "created": 1752845643, - "model": "gpt-4.1-2025-04-14", + "created": 1761142588, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -52,20 +53,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 63, - "completion_tokens": 9, - "total_tokens": 72, + "prompt_tokens": 58, + "completion_tokens": 86, + "total_tokens": 144, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -74,5 +74,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:03 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:16:31 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-dataframe-wrong.yml b/vignettes/_vcr/structured-data-dataframe-wrong.yml index 07228765..ff956f10 100644 --- a/vignettes/_vcr/structured-data-dataframe-wrong.yml +++ b/vignettes/_vcr/structured-data-dataframe-wrong.yml @@ -6,7 +6,7 @@ http_interactions: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n* John Smith. Age: 30. Height: 180 cm. Weight: 80 kg.\n* Jane Doe. Age: 25. Height: 5''5\". Weight: 110 lb.\n* Jose Rodriguez. Age: 40. Height: 190 cm. Weight: - 90 kg.\n* June Lee | Age: 35 | Height 175 cm | Weight: 70 kg\n"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"array","description":"","items":{"type":"string","description":""}},"age":{"type":"array","description":"","items":{"type":"integer","description":""}},"height":{"type":"array","description":"","items":{"type":"number","description":"in + 90 kg.\n* June Lee | Age: 35 | Height 175 cm | Weight: 70 kg\n"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"array","description":"","items":{"type":"string","description":""}},"age":{"type":"array","description":"","items":{"type":"integer","description":""}},"height":{"type":"array","description":"","items":{"type":"number","description":"in m"}},"weight":{"type":"array","description":"","items":{"type":"number","description":"in kg"}}},"required":["name","age","height","weight"],"additionalProperties":false},"strict":true}}}' response: @@ -15,61 +15,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b149df6511a-MSP + cf-ray: 99299f7a4a92a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:19 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '950' + date: Wed, 22 Oct 2025 14:18:29 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '13391' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CYYmwGbXrbFLQ4l.44mGo5zjMk0Iu.06O47cFoRMp4M-1752845659-1.0.1.1-DcPnKc3NnNdpapfGhb152pvWPzoc1DNyQ2JHDeovXqJs7_NwomntU3c57R3dtPRdqZcxQMnSIkXvu44Yli0pbJOKbinx8UeRVarlnydzDbA; - path=/; expires=Fri, 18-Jul-25 14:04:19 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=giho8gvNsK.rKzCQGJFT97dQVZs2tZA7tI2o7nwgWOM-1761142709-1.0.1.1-0gNhmxy4wsl3VFJ5yQU7rWxSbPiwALzUqo32OG9DnvflbYT1Ownkc5elndZwGSUbW7XrIFQw6KgEpyq36tJheR5szqaSZVY4H3mY5bmRKyU; + path=/; expires=Wed, 22-Oct-25 14:48:29 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=6ajFHQfxQgnFHyGrqJZ0rG5BnBjqi8ckVOvVzhLMUVQ-1752845659413-0.0.1.1-604800000; + - _cfuvid=Md6tdGoeP4SxKd90B4Elvi.sSC3xCPXzHN5rCOu1PQ0-1761142709511-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '996' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999942' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '13427' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999943' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_9fa556fecb96fb5ee38299869c251cf3 + x-request-id: req_55b1fcc112fc472b814a5ec6d0060ae2 body: string: | { - "id": "chatcmpl-BufW6391R1exMD79UPfDGEDFCNHsu", + "id": "chatcmpl-CTTxIrwMwVDqbclEFaDBgk9tRZ21I", "object": "chat.completion", - "created": 1752845658, - "model": "gpt-4.1-2025-04-14", + "created": 1761142696, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"name\":[\"John Smith\",\"Jane Doe\",\"Jose Rodriguez\",\"June Lee\"],\"age\":[30,25,40,35],\"height\":[1.8,1.651,1.9,1.75],\"weight\":[80,49.9,90,70]}", + "content": "{\"name\":[\"John Smith\",\"Jane Doe\",\"Jose Rodriguez\",\"June Lee\"],\"age\":[30,25,40,35],\"height\":[1.8,1.651,1.9,1.75],\"weight\":[80,49.8951607,90,70]}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 195, - "completion_tokens": 56, - "total_tokens": 251, + "prompt_tokens": 190, + "completion_tokens": 711, + "total_tokens": 901, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 640, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -78,5 +78,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:19 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:18:29 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-dataframe.yml b/vignettes/_vcr/structured-data-dataframe.yml index 81bc6917..39c1135a 100644 --- a/vignettes/_vcr/structured-data-dataframe.yml +++ b/vignettes/_vcr/structured-data-dataframe.yml @@ -6,7 +6,7 @@ http_interactions: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n* John Smith. Age: 30. Height: 180 cm. Weight: 80 kg.\n* Jane Doe. Age: 25. Height: 5''5\". Weight: 110 lb.\n* Jose Rodriguez. Age: 40. Height: 190 cm. Weight: - 90 kg.\n* June Lee | Age: 35 | Height 175 cm | Weight: 70 kg\n"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""},"height":{"type":"number","description":"in + 90 kg.\n* June Lee | Age: 35 | Height 175 cm | Weight: 70 kg\n"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"integer","description":""},"height":{"type":"number","description":"in m"},"weight":{"type":"number","description":"in kg"}},"required":["name","age","height","weight"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' response: status: 200 @@ -14,61 +14,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b1c4a92511a-MSP + cf-ray: 99299fcf5ca9a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:20 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '893' + date: Wed, 22 Oct 2025 14:18:43 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '13736' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=s9If2lqL8nMittRYeludKUQ.E1YUKNnsdEyVl_xq1VQ-1752845660-1.0.1.1-VEwLEu7bTk_vcLKhBBUo5XnHPtl0v4dzMZR8EH9U1AP8EsauASZ44TuMX2huCXTqVvDdINOzWcGMW9Pe1LwE9gzmgzApk1m.N6Ol5bcniyQ; - path=/; expires=Fri, 18-Jul-25 14:04:20 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=HdTHREZ4ebio4Mczx6nUNd3YPC9a8y2Q2FrhghY2WBA-1761142723-1.0.1.1-Yy1T6IlpfUmdkje7zJS_RLxBG0knHKDBdF1ffvkT70USxVuLsB4JNPSsUFMffHJpaP6zQCIkqsxbIkhpBHC_vUBytv.gw0x0e7UiR9fA4i0; + path=/; expires=Wed, 22-Oct-25 14:48:43 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=WqhmdJ04QO6.lp3g6s73BeqhCWlF3cnL.J8od4rPdBU-1752845660595-0.0.1.1-604800000; + - _cfuvid=Fb4n3T0hnHLYZzzQX08hM3f1r641FDnDzXV96_dY8II-1761142723473-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '931' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999942' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '13770' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999943' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_327ac7c34c6dcdeafd7227c0373de6b3 + x-request-id: req_bd53529bf7804a87a28b94742adff04c body: string: | { - "id": "chatcmpl-BufW7arFmIBeMnZKwqYGPJUOE9XGy", + "id": "chatcmpl-CTTxVriGNbSNAZZp8OVZvjXPavDWR", "object": "chat.completion", - "created": 1752845659, - "model": "gpt-4.1-2025-04-14", + "created": 1761142709, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"wrapper\":[{\"name\":\"John Smith\",\"age\":30,\"height\":1.8,\"weight\":80},{\"name\":\"Jane Doe\",\"age\":25,\"height\":1.65,\"weight\":49.9},{\"name\":\"Jose Rodriguez\",\"age\":40,\"height\":1.9,\"weight\":90},{\"name\":\"June Lee\",\"age\":35,\"height\":1.75,\"weight\":70}]}", + "content": "{\"wrapper\":[{\"name\":\"John Smith\",\"age\":30,\"height\":1.8,\"weight\":80},{\"name\":\"Jane Doe\",\"age\":25,\"height\":1.651,\"weight\":49.895},{\"name\":\"Jose Rodriguez\",\"age\":40,\"height\":1.9,\"weight\":90},{\"name\":\"June Lee\",\"age\":35,\"height\":1.75,\"weight\":70}]}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 180, - "completion_tokens": 83, - "total_tokens": 263, + "prompt_tokens": 175, + "completion_tokens": 800, + "total_tokens": 975, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 704, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -77,5 +77,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:20 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:18:43 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-classification.yml b/vignettes/_vcr/structured-data-examples-classification.yml index 723dee7c..011f73e7 100644 --- a/vignettes/_vcr/structured-data-examples-classification.yml +++ b/vignettes/_vcr/structured-data-examples-classification.yml @@ -4,7 +4,7 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"The new - quantum computing breakthrough could revolutionize the tech industry."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"Array + quantum computing breakthrough could revolutionize the tech industry."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"Array of classification results. The scores should sum to 1.","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":"The category name","enum":["Politics","Sports","Technology","Entertainment","Business","Other"]},"score":{"type":"number","description":"The classification score for the category, ranging from 0.0 to 1.0."}},"required":["name","score"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' @@ -14,61 +14,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b5b1ed1511a-MSP + cf-ray: 9929a09a4e80a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:30 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '876' + date: Wed, 22 Oct 2025 14:19:08 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '6246' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=d7fJLIF_EXeaebC8oCGT4m.KFHLxEejPyB5NYqsyq3g-1752845670-1.0.1.1-G0nHajr3j4xjWHXLvPEAFdeN2sgHf6XtZM8QUlaDjSamRfBqiiJ2DiyFI3o5ldp51eoSwwL5DRSy3Efe3jmhTYL1mRr0h_GJ2na2OYacLio; - path=/; expires=Fri, 18-Jul-25 14:04:30 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=X.8jvkFWpr2Ru3U49qzcio82YrCahKj1P5tjIkPYfJw-1761142748-1.0.1.1-Wm4uCw_5oHC4Z3H1wmEQUWGAxXp2h.KHfruANOi9WZv5yHkDG_18iNXFf8SrtRXw9NQN70LSwFxQ8K1HPFSCZcGvM2c_LQKAQpeHRVgpR3A; + path=/; expires=Wed, 22-Oct-25 14:49:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=2.mwGuvDOuSVQV3QKkB4rX3LRF_ITrxXzbVYK.p2elY-1752845670579-0.0.1.1-604800000; + - _cfuvid=H3ANZhQuOKkVvNo4JnU7RaZjZj5ciBzgb6c06KiKhtY-1761142748472-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '884' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999978' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '6286' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999979' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_da4d36d9d05f64ce6ad176450780c1be + x-request-id: req_e2b636f40fcd41e488eff65f594aad96 body: string: | { - "id": "chatcmpl-BufWH4n9FCNGs1i5MqQxxxhJGci3I", + "id": "chatcmpl-CTTy2V1h8cyrvA0ib5iCdrNFWLkhj", "object": "chat.completion", - "created": 1752845669, - "model": "gpt-4.1-2025-04-14", + "created": 1761142742, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"wrapper\":[{\"name\":\"Technology\",\"score\":0.95},{\"name\":\"Business\",\"score\":0.03},{\"name\":\"Other\",\"score\":0.02}]}", + "content": "{\"wrapper\":[{\"name\":\"Politics\",\"score\":0.0},{\"name\":\"Sports\",\"score\":0.0},{\"name\":\"Technology\",\"score\":0.85},{\"name\":\"Entertainment\",\"score\":0.0},{\"name\":\"Business\",\"score\":0.1},{\"name\":\"Other\",\"score\":0.05}]}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 132, - "completion_tokens": 35, - "total_tokens": 167, + "prompt_tokens": 127, + "completion_tokens": 270, + "total_tokens": 397, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -77,5 +77,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:30 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:19:08 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-image.yml b/vignettes/_vcr/structured-data-examples-image.yml index 7567304a..f12408df 100644 --- a/vignettes/_vcr/structured-data-examples-image.yml +++ b/vignettes/_vcr/structured-data-examples-image.yml @@ -3,71 +3,71 @@ http_interactions: method: POST uri: https://api.openai.com/v1/chat/completions body: - string: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,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"}}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"assert_name":{"type":"string","description":""},"owner":{"type":"string","description":""},"location":{"type":"string","description":""},"asset_value_low":{"type":"integer","description":""},"asset_value_high":{"type":"integer","description":""},"income_type":{"type":"string","description":""},"income_low":{"type":"integer","description":""},"income_high":{"type":"integer","description":""},"tx_gt_1000":{"type":"boolean","description":""}},"required":["assert_name","owner","location","asset_value_low","asset_value_high","income_type","income_low","income_high","tx_gt_1000"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' + string: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,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"}}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"assert_name":{"type":"string","description":""},"owner":{"type":"string","description":""},"location":{"type":"string","description":""},"asset_value_low":{"type":"integer","description":""},"asset_value_high":{"type":"integer","description":""},"income_type":{"type":"string","description":""},"income_low":{"type":"integer","description":""},"income_high":{"type":"integer","description":""},"tx_gt_1000":{"type":"boolean","description":""}},"required":["assert_name","owner","location","asset_value_low","asset_value_high","income_type","income_low","income_high","tx_gt_1000"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b71dbf7511a-MSP + cf-ray: 9929a0cd1c57a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:37 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '3950' + date: Wed, 22 Oct 2025 14:19:23 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '13126' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=1Vv.HnFCqXGRd1XEp4vJWQggZgT6zZGf7rTrX2zMSOg-1752845677-1.0.1.1-MhLUG3JaZJnjn7zS2JjUHuPF.STh84wEhyPRBAnd5R6FPzrLxYAQrahI6ICg41snjWZ.TEZa7mggBqUyMrwnMt0L7onTlSay6Ui_gmYi6nc; - path=/; expires=Fri, 18-Jul-25 14:04:37 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=GFBfDqyMHrgechUuG6fVReetVlt3yTewpVjXNf06GeI-1761142763-1.0.1.1-h2eBYgp0W0j5QglITYxB4CwHjWPWlGZrvMOCOUOxy9ryqgVfNl1ds3Hp4A9Hd7JDekLiSSK_rtput4nBHQ9CZ1Oh7Tjjzn9O0HESKcT9I.0; + path=/; expires=Wed, 22-Oct-25 14:49:23 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=jolTq0kJUBXzWRWVmnceYJBI5wO62FZsbka6.TIMyYc-1752845677319-0.0.1.1-604800000; + - _cfuvid=t.N6zTAdMjNTXLDdNqJvA0whUH4h8cHS8oAvh_RhSlg-1761142763640-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '3859' - x-ratelimit-limit-input-images: '250000' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-input-images: '249999' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999233' - x-ratelimit-reset-input-images: 0s - x-ratelimit-reset-requests: 6ms - x-ratelimit-reset-tokens: 1ms - x-request-id: req_7e5e3d720073782426325da41db48136 + x-envoy-upstream-service-time: '13342' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-input-images: '50000' + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-input-images: '49999' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999232' + x-ratelimit-reset-input-images: 1ms + x-ratelimit-reset-requests: 2ms + x-ratelimit-reset-tokens: 0s + x-request-id: req_2eea5340eb3b43199caef2dc18ec4c36 body: string: | { - "id": "chatcmpl-BufWLiWRVX474ymYomWKKqo16bmEL", + "id": "chatcmpl-CTTyAIERPJViysAuTZypJTBAxCBZZ", "object": "chat.completion", - "created": 1752845673, - "model": "gpt-4.1-2025-04-14", + "created": 1761142750, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"wrapper\":[{\"assert_name\":\"11 Zinfandel Lane - Home & Vineyard\",\"owner\":\"JT\",\"location\":\"St. Helena/Napa, CA, US\",\"asset_value_low\":5000001,\"asset_value_high\":25000000,\"income_type\":\"Grape Sales\",\"income_low\":100001,\"income_high\":1000000,\"tx_gt_1000\":false},{\"assert_name\":\"25 Point Lobos - Commercial Property\",\"owner\":\"SP\",\"location\":\"San Francisco/San Francisco, CA, US\",\"asset_value_low\":5000001,\"asset_value_high\":25000000,\"income_type\":\"Rent\",\"income_low\":100001,\"income_high\":1000000,\"tx_gt_1000\":false}]}", + "content": "{\"wrapper\":[{\"assert_name\":\"11 Zinfandel Lane - Home & Vineyard [RP]\",\"owner\":\"JT\",\"location\":\"St. Helena/Napa, CA, US\",\"asset_value_low\":5000001,\"asset_value_high\":25000000,\"income_type\":\"Grape Sales\",\"income_low\":100001,\"income_high\":1000000,\"tx_gt_1000\":false},{\"assert_name\":\"25 Point Lobos - Commercial Property [RP]\",\"owner\":\"SP\",\"location\":\"San Francisco/San Francisco, CA, US\",\"asset_value_low\":5000001,\"asset_value_high\":25000000,\"income_type\":\"Rent\",\"income_low\":100001,\"income_high\":1000000,\"tx_gt_1000\":false}]}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 409, - "completion_tokens": 147, - "total_tokens": 556, + "prompt_tokens": 246, + "completion_tokens": 933, + "total_tokens": 1179, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 768, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -76,5 +76,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:37 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:19:23 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-named-entity.yml b/vignettes/_vcr/structured-data-examples-named-entity.yml index 9548d905..932a7ebe 100644 --- a/vignettes/_vcr/structured-data-examples-named-entity.yml +++ b/vignettes/_vcr/structured-data-examples-named-entity.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n John works at Google in New York. He met with Sarah, the CEO of\n Acme Inc., last - week in San Francisco.\n"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":"The + week in San Francisco.\n"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"wrapper":{"type":"array","description":"","items":{"type":"object","description":"","properties":{"name":{"type":"string","description":"The extracted entity name."},"type":{"type":"string","description":"The entity type","enum":["person","location","organization"]},"context":{"type":"string","description":"The context in which the entity appears in the text."}},"required":["name","type","context"],"additionalProperties":false}}},"required":["wrapper"],"additionalProperties":false},"strict":true}}}' @@ -15,61 +15,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b4d1879511a-MSP + cf-ray: 9929a06618faa912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:28 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1248' + date: Wed, 22 Oct 2025 14:18:58 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4765' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=GiorKZ9KW3D4hzBS6vbwFEa99iAjtejhdFAzm2hzvzQ-1752845668-1.0.1.1-cghV7LQqCwh6ZN8xW3e_gBHd4tSExNLhial0W05AQGNg14tI98QniWA_dT_JSJOnuuuHkwTwvY6mfmLAOOFpfMxKsoyFsnIO_wvAbfB03_E; - path=/; expires=Fri, 18-Jul-25 14:04:28 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=_S1WvNfZXuOv1PtaFNGqETQtRkyNO_x78EmcXr0CDjU-1761142738-1.0.1.1-yXF8I5NWDhYHbOAMX38aNBQipYEMX.e.EItz8sU5WCLE0ofgLogMCn98qS54GcDdvEub1oUE806AvoE1FeL9f3oywV6YaQzysXWNSA9C1vs; + path=/; expires=Wed, 22-Oct-25 14:48:58 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=mz9Wd4tFQGhQ6CkmKdadi.q3GBbZXzbEpBrzvtSuZaA-1752845668745-0.0.1.1-604800000; + - _cfuvid=vx7Zy1sOocigCyiyVbu3ssNFstTnXVedjTgeiXQIwXo-1761142738603-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1261' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999971' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '4792' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999973' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d5a63f1f93d97b0b717fe950a41881ba + x-request-id: req_65068b94a2e1430b8b800a4677ba76eb body: string: | { - "id": "chatcmpl-BufWFLXulio4TIbZSZdNAsW4KuEID", + "id": "chatcmpl-CTTxtwyjnRIhJSH9Ck6C46XckGI8P", "object": "chat.completion", - "created": 1752845667, - "model": "gpt-4.1-2025-04-14", + "created": 1761142733, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"wrapper\":[{\"name\":\"John\",\"type\":\"person\",\"context\":\"John works at Google in New York.\"},{\"name\":\"Google\",\"type\":\"organization\",\"context\":\"John works at Google in New York.\"},{\"name\":\"New York\",\"type\":\"location\",\"context\":\"John works at Google in New York.\"},{\"name\":\"Sarah\",\"type\":\"person\",\"context\":\"He met with Sarah, the CEO of Acme Inc.\"},{\"name\":\"Acme Inc.\",\"type\":\"organization\",\"context\":\"Sarah, the CEO of Acme Inc.\"},{\"name\":\"San Francisco\",\"type\":\"location\",\"context\":\"He met with Sarah... last week in San Francisco.\"}]}", + "content": "{\n \"wrapper\": [\n {\n \"name\": \"John\",\n \"type\": \"person\",\n \"context\": \"John works at Google in New York.\"\n },\n {\n \"name\": \"Google\",\n \"type\": \"organization\",\n \"context\": \"John works at Google in New York.\"\n },\n {\n \"name\": \"New York\",\n \"type\": \"location\",\n \"context\": \"John works at Google in New York.\"\n },\n {\n \"name\": \"Sarah\",\n \"type\": \"person\",\n \"context\": \"He met with Sarah, the CEO of Acme Inc., last week in San Francisco.\"\n },\n {\n \"name\": \"Acme Inc.\",\n \"type\": \"organization\",\n \"context\": \"He met with Sarah, the CEO of Acme Inc., last week in San Francisco.\"\n },\n {\n \"name\": \"San Francisco\",\n \"type\": \"location\",\n \"context\": \"He met with Sarah, the CEO of Acme Inc., last week in San Francisco.\"\n }\n ]\n}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 137, - "completion_tokens": 131, - "total_tokens": 268, + "prompt_tokens": 132, + "completion_tokens": 434, + "total_tokens": 566, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -78,5 +78,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:28 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:18:58 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-sentiment.yml b/vignettes/_vcr/structured-data-examples-sentiment.yml index 65333a59..8ec97272 100644 --- a/vignettes/_vcr/structured-data-examples-sentiment.yml +++ b/vignettes/_vcr/structured-data-examples-sentiment.yml @@ -5,7 +5,7 @@ http_interactions: body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"\n The product was okay, but the customer service was terrible. I probably\n won''t - buy from them again.\n"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"Extract + buy from them again.\n"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"Extract the sentiment scores of a given text. Sentiment scores should sum to 1.","properties":{"positive_score":{"type":"number","description":"Positive sentiment score, ranging from 0.0 to 1.0."},"negative_score":{"type":"number","description":"Negative sentiment score, ranging from 0.0 to 1.0."},"neutral_score":{"type":"number","description":"Neutral @@ -16,61 +16,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b569ff3511a-MSP + cf-ray: 9929a085cb51a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:29 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '487' + date: Wed, 22 Oct 2025 14:19:01 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3020' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=j1qlNNFkxaKxylhRJatSYhSxxn8ZzO0gy28TQb_pVsA-1752845669-1.0.1.1-J5kKt0UCygpKqH7m6eWlGtyqITGosSDqM892eP01807wa_Px3kCM0IIp28cvK5urSrTpc9exatF_ABxw7rfZlcM33ztnORINDr_N3MqMMOg; - path=/; expires=Fri, 18-Jul-25 14:04:29 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=l6vUOuJj9_utg.hojmH_prEDxEN1IoXrWdzkJvoSrbI-1761142741-1.0.1.1-rzwlvwxJGW8DOmhELwgLThyv31kFlxHOsMxFr57qK2GFzd0DNMecWlCa7wP3vEMUOk.Yz0k187Ng_Yy_nUsDBn3ZJayax5vTrl.Ifxz_aho; + path=/; expires=Wed, 22-Oct-25 14:49:01 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=fi2fGthhdkOyGTzGYYygXrJg5j0HrUALpVFV8rJk2L4-1752845669495-0.0.1.1-604800000; + - _cfuvid=pGjqAHkz.hvOrkCwi6kEc8WL5DODXMzwzU.dcxne7b0-1761142741984-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '490' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999972' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3103' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999970' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_6571e3617cd71c668a78a8f440eb7a33 + x-request-id: req_234ce3583ad949ca978858c24dd8cb36 body: string: | { - "id": "chatcmpl-BufWHhlGgnngwYY6qKOfAXOc9zqlV", + "id": "chatcmpl-CTTxzHA3FeBiIDc6rgea8LLPgL0KL", "object": "chat.completion", - "created": 1752845669, - "model": "gpt-4.1-2025-04-14", + "created": 1761142739, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"positive_score\":0.05,\"negative_score\":0.7,\"neutral_score\":0.25}", + "content": "{\"positive_score\":0.10,\"negative_score\":0.75,\"neutral_score\":0.15}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 153, - "completion_tokens": 22, - "total_tokens": 175, + "prompt_tokens": 148, + "completion_tokens": 291, + "total_tokens": 439, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 256, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -79,5 +79,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:29 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:19:01 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-summarisation.yml b/vignettes/_vcr/structured-data-examples-summarisation.yml index 2977d64b..8b1afd0c 100644 --- a/vignettes/_vcr/structured-data-examples-summarisation.yml +++ b/vignettes/_vcr/structured-data-examples-summarisation.yml @@ -300,7 +300,7 @@ http_interactions: If you were able to develop technology that made it very hard to fine-tune an AI model away from its original capability distribution, then it’d be easier to confidently release models without potentially compromising on downstream - safety."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"Summary + safety."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"Summary of the article.","properties":{"author":{"type":"string","description":"Name of the article author"},"topics":{"type":"array","description":"Array of topics, e.g. [\"tech\", \"politics\"]. Should be as specific as possible, and can @@ -314,61 +314,61 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b241f70511a-MSP + cf-ray: 9929a0269eb8a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:27 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '6258' + date: Wed, 22 Oct 2025 14:18:53 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '9951' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=baK.2.7tKzuTHzoaZDymuJbr1rj_zuzGTnEDDtERDZI-1752845667-1.0.1.1-r.baHk_6IydN1LWwNDzG2QK2uIIRFNqsqO9VItR6o._GwazvlXZXYSl.hd7gthPNqLtFFVP6giTGVzHAYw_H.Muq1LJemQ_maVBoHwdKp8I; - path=/; expires=Fri, 18-Jul-25 14:04:27 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=VTKenvsBxhxHiURAT84sBKJlDM8UVwKbLKgV8tveApE-1761142733-1.0.1.1-4zDwzGPhrZiCkeX7Wj5ajFCSKA_s8P0_f3W3uuAAeRxQej.yR41q5BV5fGSSwhyNd6f87jXX3qMdH5iQ3dHaXzkgI9cRh_IOTMUaBPBOwRc; + path=/; expires=Wed, 22-Oct-25 14:48:53 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=pg7kOK4NwczowtheAjWJqqfJpIfatXfQRxcu9lNljPw-1752845667181-0.0.1.1-604800000; + - _cfuvid=P0igMGqZvOJay6NANkI1jhfYu5n0dxCNe61SKiw8XFo-1761142733639-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '6264' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29994291' - x-ratelimit-reset-requests: 6ms - x-ratelimit-reset-tokens: 11ms - x-request-id: req_afe6b8c37e7a33cc68d5e9d12bf6f50e + x-envoy-upstream-service-time: '9991' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179994291' + x-ratelimit-reset-requests: 2ms + x-ratelimit-reset-tokens: 1ms + x-request-id: req_8d85d8bd4eb441a9904ff6d6d9c99936 body: string: | { - "id": "chatcmpl-BufW9umcHCBc5JkDZa0xWRt5BgIsn", + "id": "chatcmpl-CTTxjjNCRKpYPQApWWR9aEWJD1nMI", "object": "chat.completion", - "created": 1752845661, - "model": "gpt-4.1-2025-04-14", + "created": 1761142723, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"author\":\"Anthropic (not specified by individual name)\",\"topics\":[\"AI policy\",\"AI safety\",\"third-party testing\",\"AI regulation\",\"AI evaluation\",\"open-source AI\",\"regulatory capture\",\"Responsible Scaling Policy\",\"national security and AI\"],\"summary\":\"The article argues that effective third-party testing is essential to AI policy for managing the risks and societal impacts of frontier AI systems such as large-scale generative models. Anthropic promotes a regime where AI models, especially the most powerful and general-purpose ones, undergo third-party evaluation to ensure safety, limit misuse (in domains like election integrity and national security), and build public trust. The article details what a robust third-party testing regime should include: trusted tests, credible assessors, and a balance between safety assurance and regulatory burden. It advocates for multi-actor involvement (companies, universities, governments), iterative prototyping, and funding for governmental infrastructure to drive effective regulation while avoiding overly burdensome procedures that stifle innovation or entrench large incumbents. The article emphasizes the need to balance openness in AI research, the necessity for safety-related limits on open dissemination of powerful models, and the risks of regulatory capture. Anthropic outlines its own contributions and affirms a cautious, feedback-driven approach to advocating AI policy. Ultimately, third-party testing is positioned as a linchpin for safe and trustworthy AI development.\",\"coherence\":95,\"persuasion\":0.91}", + "content": "{\"author\":\"Anthropic\",\"topics\":[\"AI policy\",\"third-party testing\",\"AI safety\",\"national security\",\"open-source models\",\"regulatory capture\",\"government funding\",\"testing regimes\",\"Responsible Scaling Policy\"],\"summary\":\"Anthropic argues that frontier, large-scale generative AI systems require an effective, broadly trusted third-party testing regime to identify and mitigate misuse and accident risks. They propose a narrowly scoped, two-stage testing framework (automated screening followed by expert human-led evaluation), trusted third-party auditors (private firms, universities, and some government bodies), and targeted legal mandates for a small set of critical tests—particularly those related to national-security-relevant capabilities.\\n\\nThe post outlines practical steps Anthropic will take (prototyping via its Responsible Scaling Policy, third-party assessments, red-teaming, and advocacy for government funding and research infrastructure like national research clouds). It also discusses how testing connects to debates on open dissemination of models and the risk of regulatory capture, arguing that robust third-party testing can enable safer openness while reducing capture risk. Overall, they recommend iterative, evidence-driven development of testing standards and greater public investment in evaluation capacity.\",\"coherence\":92,\"persuasion\":0.82}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 4343, - "completion_tokens": 284, - "total_tokens": 4627, + "prompt_tokens": 4338, + "completion_tokens": 575, + "total_tokens": 4913, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -377,5 +377,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:27 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:18:53 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-examples-unknown-keys.yml b/vignettes/_vcr/structured-data-examples-unknown-keys.yml index 4d1c49d3..870bb4d3 100644 --- a/vignettes/_vcr/structured-data-examples-unknown-keys.yml +++ b/vignettes/_vcr/structured-data-examples-unknown-keys.yml @@ -3,7 +3,7 @@ http_interactions: method: POST uri: https://api.anthropic.com/v1/messages body: - string: '{"model":"claude-sonnet-4-20250514","system":"Extract all characteristics + string: '{"model":"claude-haiku-4-5-20251001","system":"Extract all characteristics of supplied character","messages":[{"role":"user","content":[{"type":"text","text":"\n The man is tall, with a beard and a scar on his left cheek. He has a deep voice and wears a black leather jacket.\n"}]}],"stream":false,"tools":[{"name":"_structured_tool_call","description":"Extract @@ -12,31 +12,32 @@ http_interactions: response: status: 200 headers: - date: Fri, 18 Jul 2025 13:34:32 GMT + date: Wed, 22 Oct 2025 14:19:10 GMT content-type: application/json - anthropic-ratelimit-input-tokens-limit: '450000' - anthropic-ratelimit-input-tokens-remaining: '450000' - anthropic-ratelimit-input-tokens-reset: '2025-07-18T13:34:32Z' - anthropic-ratelimit-output-tokens-limit: '90000' - anthropic-ratelimit-output-tokens-remaining: '90000' - anthropic-ratelimit-output-tokens-reset: '2025-07-18T13:34:32Z' - anthropic-ratelimit-requests-limit: '1000' - anthropic-ratelimit-requests-remaining: '999' - anthropic-ratelimit-requests-reset: '2025-07-18T13:34:30Z' - anthropic-ratelimit-tokens-limit: '540000' - anthropic-ratelimit-tokens-remaining: '540000' - anthropic-ratelimit-tokens-reset: '2025-07-18T13:34:32Z' - request-id: req_011CREa5huvCSvGz7H6C6u9X + content-encoding: gzip + anthropic-ratelimit-input-tokens-limit: '4000000' + anthropic-ratelimit-input-tokens-remaining: '4000000' + anthropic-ratelimit-input-tokens-reset: '2025-10-22T14:19:09Z' + anthropic-ratelimit-output-tokens-limit: '800000' + anthropic-ratelimit-output-tokens-remaining: '800000' + anthropic-ratelimit-output-tokens-reset: '2025-10-22T14:19:10Z' + anthropic-ratelimit-requests-limit: '4000' + anthropic-ratelimit-requests-remaining: '3999' + anthropic-ratelimit-requests-reset: '2025-10-22T14:19:08Z' + anthropic-ratelimit-tokens-limit: '4800000' + anthropic-ratelimit-tokens-remaining: '4800000' + anthropic-ratelimit-tokens-reset: '2025-10-22T14:19:09Z' + request-id: req_011CUNP91WaB4Sshe4pJrUsU strict-transport-security: max-age=31536000; includeSubDomains; preload anthropic-organization-id: bf3687d8-1b59-41eb-9761-a1fd70b24e7e + x-envoy-upstream-service-time: '1352' via: 1.1 google cf-cache-status: DYNAMIC x-robots-tag: none server: cloudflare - cf-ray: 96125b625bc9a1c7-MSP - content-encoding: gzip + cf-ray: 9929a0c32a330c11-DFW body: - string: '{"id":"msg_01CxJrKKnPfuDNfoNtErriGs","type":"message","role":"assistant","model":"claude-sonnet-4-20250514","content":[{"type":"tool_use","id":"toolu_012A4CA83DyBGH8tzytHWMPq","name":"_structured_tool_call","input":{"data":{"gender":"male","height":"tall","facial_hair":"beard","distinguishing_marks":"scar - on left cheek","voice":"deep voice","clothing":"black leather jacket"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":457,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":95,"service_tier":"standard"}}' - recorded_at: 2025-07-18 13:34:32 -recorded_with: VCR-vcr/1.7.1.93 + string: '{"model":"claude-haiku-4-5-20251001","id":"msg_01JQKAkrwf35G3NCnxj4sybv","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_018FA14tz32PdGrJuqg1L66e","name":"_structured_tool_call","input":{"data":{"gender":"male","height":"tall","facial_hair":"beard","distinguishing_marks":"scar + on left cheek","voice":"deep","clothing":"black leather jacket"}}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":730,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":94,"service_tier":"standard"}}' + recorded_at: 2025-10-22 14:19:10 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-parallel-missing-2.yml b/vignettes/_vcr/structured-data-parallel-missing-2.yml index c1cb582e..264d5e06 100644 --- a/vignettes/_vcr/structured-data-parallel-missing-2.yml +++ b/vignettes/_vcr/structured-data-parallel-missing-2.yml @@ -4,68 +4,68 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"I like - apples"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + apples"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b050d04511a-MSP + cf-ray: 99299f091d5ea912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:16 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '769' + date: Wed, 22 Oct 2025 14:18:01 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3260' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=SG3kL21WQwthmlpdHE3YLvf6h9sV8HdWPfhN4j.AB4Y-1752845656-1.0.1.1-psChnWaKJsBKYWYpcl3D8hZSadv.HXZst64wLbL4vVM1zUKH43jLUeTpoPldw9jOhQvoHkw_1WfM2mCGnMwwGlR0OWuNZBJUu4tiCn99Oeg; - path=/; expires=Fri, 18-Jul-25 14:04:16 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=BZG38xcz.geQQYItd5250xfkDr2Nyw2TWlQkgHqjUvA-1761142681-1.0.1.1-0Mbf4vjhCs.Y4pvYiXZaxnCWAuwnCFYzau5wxj4wp.79vPLvzPXQroNbfcvrIy.V9VkuojA4PhQYyxb1VCd1mXM67LwkIt8IlHRwB8RDop8; + path=/; expires=Wed, 22-Oct-25 14:48:01 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=xnu4lZAxJIYdWScOxF0DFeJ.GwCrX0pUZ.V1iwkI2E0-1752845656734-0.0.1.1-604800000; + - _cfuvid=kVVG5Z3W8gMenpkCPZ1UM3yMv7Jj2i9ChvWgytJnjIY-1761142681243-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '788' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999994' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3279' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_fecf18b376c1db6e0e2e8e24819d65e5 + x-request-id: req_85156c64c7d04788a916dd40cabaf156 body: string: | { - "id": "chatcmpl-BufW3AnHgnzf784CWrhCOupw0npG5", + "id": "chatcmpl-CTTx0IQcjQsIfuPQVYclr8pGXLfVb", "object": "chat.completion", - "created": 1752845655, - "model": "gpt-4.1-2025-04-14", + "created": 1761142678, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"name\":null,\"age\":null}", + "content": "{\"name\":\"Great! What's your favorite variety?\",\"age\":null}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 62, - "completion_tokens": 9, - "total_tokens": 71, + "prompt_tokens": 57, + "completion_tokens": 156, + "total_tokens": 213, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -74,51 +74,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:16 + recorded_at: 2025-10-22 14:18:01 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What - time is it?"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + time is it?"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b0aceba511a-MSP + cf-ray: 99299f1e2ac4a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:17 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '326' + date: Wed, 22 Oct 2025 14:18:08 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '6986' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=CYINHwNPGXUEvm_wVXoHFnI_0fQs_VfGsbuanlmfca0-1752845657-1.0.1.1-293_RIoeXg8YwZrWoRj9zReb4thabcRbQdbvsqDCpEhTFF5Da5oFv2M80CVSKtcF.KghSobIsMHzqCKFSXRtSw.fxiFk9cIR5P1tFKlyrJk; - path=/; expires=Fri, 18-Jul-25 14:04:17 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=MDCvzLlqXFlRjKFqYfgtNP5UtAX4QXdF3f.u3w6NlTk-1761142688-1.0.1.1-GrifSe0RpTYm999kLbPQPLNlqt0M6h2UlEAl_9JkYSUnBtk6zhiKLoEgMIGNRC0kceJnUUxMj7s3_MsI4rYLw27Ppwja4HmpUiXEEeqwYtY; + path=/; expires=Wed, 22-Oct-25 14:48:08 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=j2hXH2U9d72oLsmhKa_nu7F3uubUNGHUtLz4roYo_gE-1752845657188-0.0.1.1-604800000; + - _cfuvid=NRr1_pdzOA8pQkn0moKcho8I1_bPg_Jqhr5ixYmd.xI-1761142688366-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '329' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999994' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '7011' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_dbc584c6f48c5ccbfe6d7fc664977cf0 + x-request-id: req_a1253fdb25a74d4782d84f9c41952a85 body: string: | { - "id": "chatcmpl-BufW4xuDXTda5F09C6CZm1UYvW2LV", + "id": "chatcmpl-CTTx3mmtCDIiMKeB7NPsyn2mDAZEG", "object": "chat.completion", - "created": 1752845656, - "model": "gpt-4.1-2025-04-14", + "created": 1761142681, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -128,20 +129,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 64, - "completion_tokens": 9, - "total_tokens": 73, + "prompt_tokens": 59, + "completion_tokens": 342, + "total_tokens": 401, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -150,74 +150,74 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:17 + recorded_at: 2025-10-22 14:18:08 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"This - cheese is 3 years old"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + cheese is 3 years old"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b0dbb44511a-MSP + cf-ray: 99299f4af923a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:17 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '310' + date: Wed, 22 Oct 2025 14:18:11 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3251' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=NhVqOLAElr.yyeqZIfrJLm6ofpMJMiFC9YiBujuruXo-1752845657-1.0.1.1-W2sg.fMqmRESYAAm2gLs2qveGsAFWr2VEecWQRdpOdPukkOJUTCdr1.DMRfT0N1I_6WtgceIajWNS_xEvB1oUQQdbYoN0FjeO15iwc9EZV4; - path=/; expires=Fri, 18-Jul-25 14:04:17 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=dD8zWEfrCIBxMIS5WRghbM0L8e6PUsk7_u4FJ_yxo0I-1761142691-1.0.1.1-mnqJb6coTxxLjjPb4sBzaEzdvU7NHOEx_sVXnvLD9nHw6QPCn8cUuXJPBD3pKmsgf7AINivb2THpjKzhL.ZTdy1Eh5oP8Kq3sA8YYbeolag; + path=/; expires=Wed, 22-Oct-25 14:48:11 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=VSrMqFVrOg7SGyopdVqB9yVl4aR0rAraydPfWYYsJ5o-1752845657662-0.0.1.1-604800000; + - _cfuvid=rl82GQEoVlP4TthKDo9Mei_1dv0mvR1hAUI.WjAFcSc-1761142691795-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '321' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999990' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3291' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999991' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_7ad2a68f2fe11f5c1f43b81a160e4702 + x-request-id: req_b8e290d01c0d425aa4ab5f4ace2b5ce0 body: string: | { - "id": "chatcmpl-BufW5TeH38FkhDFvuoLIooom0vEAO", + "id": "chatcmpl-CTTxAZfWQAvoo0GHkUrcyQQPkPILd", "object": "chat.completion", - "created": 1752845657, - "model": "gpt-4.1-2025-04-14", + "created": 1761142688, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"name\":\"cheese\",\"age\":3}", + "content": "{\"name\":null,\"age\":3}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 66, - "completion_tokens": 10, - "total_tokens": 76, + "prompt_tokens": 61, + "completion_tokens": 86, + "total_tokens": 147, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -226,51 +226,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:17 + recorded_at: 2025-10-22 14:18:11 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"My name - is Hadley."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + is Hadley."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":["string","null"],"description":""},"age":{"type":["number","null"],"description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125b1108f8511a-MSP + cf-ray: 99299f600fc4a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:18 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '277' + date: Wed, 22 Oct 2025 14:18:15 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4007' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=3isa8xXOlDK34ura5bpIU9EVixFWEtihEnUM.79sCTU-1752845658-1.0.1.1-dBVFpq.xXTircz4_rqx0vYNNnm.1OVzEpAe8ZZ9p45wI2zkVJ8imwRn1r0B8KA6yfcXBvVhZkheSbENtsHThynN1D3eB9Jvz1bc0y9Gujgs; - path=/; expires=Fri, 18-Jul-25 14:04:18 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=CJYAHCm6JaeAHjYJxeJEhy4USL.417aJqaR1xDWiNNU-1761142695-1.0.1.1-jIhr79i0230IbSlWKzndnfuIjv_rEXG1sxhqceYz7oP6oNCrxZOApMWg24jOK72bfZploviVPpl57lPq2q13jjOZssxnUz3vsrsc01rYvuQ; + path=/; expires=Wed, 22-Oct-25 14:48:15 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=z3whSAiF_NZaYrMRjL208uf_voS9wZZdMhIE2l2CINM-1752845658210-0.0.1.1-604800000; + - _cfuvid=tiJAyTNegvhmjnIhHlc7AU2H9GmuJsnoohH4Qqzm3k0-1761142695935-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '281' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999993' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '4053' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_2fb8c6a18415c437fd762540179c3c7c + x-request-id: req_f0f69cd5ece24dbaa2e6f3e5a4430ba9 body: string: | { - "id": "chatcmpl-BufW56RWBiJ1Kz9mJCZgQtrII3hRW", + "id": "chatcmpl-CTTxEzzG9pdcXiOxQ7UJf1VQb7fhB", "object": "chat.completion", - "created": 1752845657, - "model": "gpt-4.1-2025-04-14", + "created": 1761142692, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -280,20 +281,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 65, - "completion_tokens": 10, - "total_tokens": 75, + "prompt_tokens": 60, + "completion_tokens": 87, + "total_tokens": 147, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 64, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -302,5 +302,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:18 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:18:15 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-parallel-missing.yml b/vignettes/_vcr/structured-data-parallel-missing.yml index 22d58435..868c19ee 100644 --- a/vignettes/_vcr/structured-data-parallel-missing.yml +++ b/vignettes/_vcr/structured-data-parallel-missing.yml @@ -4,68 +4,68 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"I like - apples"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + apples"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125ae33cad511a-MSP + cf-ray: 99299ddffcbca912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:13 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1508' + date: Wed, 22 Oct 2025 14:17:19 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '9508' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=qf4nCUTEKBoA8PRLh.aRVjeCmNcMYcfTPikWmwdA0eI-1752845653-1.0.1.1-LMQ63U9aWjr4IykjcK5dT9i3hDOX96WtjGp1a.VFORf9xMCOPwctI5fsM72kb0JYR9yiaz5DuApUJoUaiz2EU9Qn49D3F1dirzLVRfVXsQ8; - path=/; expires=Fri, 18-Jul-25 14:04:13 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=fkc5gP9y5ns4_IqV3ILxQc_KZ6p7M4tSEfP.4pmbLmA-1761142639-1.0.1.1-i49VyyKnnF7J_0Yio0Tg0OwCUdJHgrolNRihqvhiZRRVk2x5mxOSgRkELDxD2z6z7bfV8Ygut0rNRLs3IUoc7ZzSBJ_l9azyRtJJxcKQ2gQ; + path=/; expires=Wed, 22-Oct-25 14:47:19 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=_z3LYovPH1mfXHd9sA9WLfeQF308kmc0.JDFbCwGipA-1752845653654-0.0.1.1-604800000; + - _cfuvid=f.SWo4JwWRQg_Nnc9uiIjBDLI5LC_ZncA374u7BkL_Y-1761142639978-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '3101' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999994' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '9540' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_53ee7072a7d891609a90544ba32d04f7 + x-request-id: req_7cdffbf942a441c5b7f23637fd308f5e body: string: | { - "id": "chatcmpl-BufW0zMHdZMguCSMLI8KtA8DbyQdG", + "id": "chatcmpl-CTTwEjlJ37QTaHqFMu68NRA8OZLce", "object": "chat.completion", - "created": 1752845652, - "model": "gpt-4.1-2025-04-14", + "created": 1761142630, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"name\":\"Unknown\",\"age\":0}", + "content": "{\"name\":\"apples\",\"age\":0}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 56, - "completion_tokens": 9, - "total_tokens": 65, + "prompt_tokens": 51, + "completion_tokens": 407, + "total_tokens": 458, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -74,74 +74,74 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:13 + recorded_at: 2025-10-22 14:17:19 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"What - time is it?"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + time is it?"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125af7aed0511a-MSP + cf-ray: 99299e1c18caa912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '516' + date: Wed, 22 Oct 2025 14:17:28 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '8346' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=_LOSKQQ2l9_bmXMwJOMG0G11kP4o1lZPC_1HcqAdtsc-1752845654-1.0.1.1-HLRdmGkdnXGy5yXwxeoY8P6ey_Cfrtxjv3ckNZukDnKhFX9dj8JdVtYeOHXoVPXl.Nj6bOmY5T3L_JlqWA2vZ9AOUXoWdIpAd1NfSpT2s3M; - path=/; expires=Fri, 18-Jul-25 14:04:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=3MBlJZjTcXp97kcO4i95V1FH8jld4Mbmc0Jm7QWsoEs-1761142648-1.0.1.1-mlJ1WBYAy8YHJA9qcE0.WoU520hZERPmeebzdn9z0rYjJIVqmZ6Nsy1qZOC_4aa8QmcRHWgMI6.ws4cuhuTd0Ox0ILuBzgoEfSZJ.wtlpWE; + path=/; expires=Wed, 22-Oct-25 14:47:28 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=a4WUMYK5Oaeg6doMA_reKaW9xKCxnCH.kCrT.g9G60U-1752845654309-0.0.1.1-604800000; + - _cfuvid=zE.LLvaKuRti46nySf4jWHzZmfBBKuBDtQEQ6tdVq90-1761142648443-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '522' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999994' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '8388' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_de207b63c43617588716d6cb2c29902f + x-request-id: req_f9de9c8415ac4943bc6cbc894e9286c1 body: string: | { - "id": "chatcmpl-BufW1alY7dBL3MjBfkRPaIGG5A245", + "id": "chatcmpl-CTTwOz1qtw9sMZVAK2Pgk70hmyeMk", "object": "chat.completion", - "created": 1752845653, - "model": "gpt-4.1-2025-04-14", + "created": 1761142640, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": null, - "refusal": "I'm sorry, I can't provide real-time information such as the current time.", + "content": "{\"name\":\"Need location or timezone\",\"age\":0}", + "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 58, - "completion_tokens": 16, - "total_tokens": 74, + "prompt_tokens": 53, + "completion_tokens": 345, + "total_tokens": 398, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -150,74 +150,74 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:14 + recorded_at: 2025-10-22 14:17:28 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"This - cheese is 3 years old"}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + cheese is 3 years old"}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125afbed37511a-MSP + cf-ray: 99299e515e22a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:14 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '236' + date: Wed, 22 Oct 2025 14:17:33 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4528' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=QwqTJpQP.88HiJLjVPQNvUSaNLwl8kD4LS04TpZ0vDE-1752845654-1.0.1.1-jeTpzleTM8WmX.GiN2y3dhxFYQLrL0I.U.sslV3V84gBz2lk4bsiAq8zvCFGYGDP3TNjj.zdxYmfEVMiQoIM4FU9TUZP7GjsbPgg7xH3oXU; - path=/; expires=Fri, 18-Jul-25 14:04:14 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=rUpGM38PPtrg5e.zZGhuEmoYxPxP71OHM81jmee7cdA-1761142653-1.0.1.1-0yr87utRdm_qDnEIK2OkdRvKhFerIEC4yqGRXfGzKobc6L7IK3MNllIt3iTpGr0PybZ0dW4LBz3CFIkNi9ILrnZtDzNOANKlo7J863vFWDY; + path=/; expires=Wed, 22-Oct-25 14:47:33 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=QcYiCWCmtkBfOsAz3HA4OXHfykpMtTnxebxLwxXlY6Q-1752845654798-0.0.1.1-604800000; + - _cfuvid=V_j7e1dYlsi4naLGl9XoIQ5NtsqjEc0k.SO7sAbaht8-1761142653177-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '240' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999990' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '4603' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999991' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_eb1f2f1d03c3fa16e492953e7cfa7f32 + x-request-id: req_7495879b8cfd4313a1934d8ff40ebe90 body: string: | { - "id": "chatcmpl-BufW21Ow80808lm5B2sJSVdNeYKvt", + "id": "chatcmpl-CTTwWBKZg8uf36i6o1YQ4PxSw7LkX", "object": "chat.completion", - "created": 1752845654, - "model": "gpt-4.1-2025-04-14", + "created": 1761142648, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "{\"name\":\"cheese\",\"age\":3}", + "content": "{\"name\":\"this cheese\",\"age\":3}", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 60, - "completion_tokens": 10, - "total_tokens": 70, + "prompt_tokens": 55, + "completion_tokens": 151, + "total_tokens": 206, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -226,51 +226,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:14 + recorded_at: 2025-10-22 14:17:33 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"My name - is Hadley."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + is Hadley."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125afeba04511a-MSP + cf-ray: 99299e6ebe70a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '830' + date: Wed, 22 Oct 2025 14:17:57 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '24522' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=r29Fgj4j_HeUZWtC1HmhD0xywKveXhs5XbT9kRr.ZRM-1752845655-1.0.1.1-CCWsIXIUoZ11uI7cbtS_riqm0VsVBZRRODHoHeu86ba2t1310tS.LLTT.mshv4Gdy3sgEijJiiuvaJdkFl1RhZNusqlgN1UBCXOFAta5jcM; - path=/; expires=Fri, 18-Jul-25 14:04:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=FYfUzlZqMUCGepFadP5l9YbOk53OMxjxtH7eK5P3r1M-1761142677-1.0.1.1-lFjEiXOyk.3169sboJKaIp6yEnSciB36ZGcTKZHRd.61gumJgA9GO0iXTgETUN2IwYMdkF24IQIVNkgND_ZoFOETt4iywcpdVJBJFDrJ1To; + path=/; expires=Wed, 22-Oct-25 14:47:57 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=6ZhHYf9jEPZyatYQfODZKCGIm3aG.SOhhsBQPz_M6IM-1752845655768-0.0.1.1-604800000; + - _cfuvid=fRemmjCDq7FBsVaHJn8SFgyLAHHm7LIQw9UIlJuv3YM-1761142677849-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '842' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999993' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '24574' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999994' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_76a360c274a02d3ca0aea186a9861668 + x-request-id: req_12e7461d0a6a4409a358a02a01c4eedc body: string: | { - "id": "chatcmpl-BufW3eVPhtStmqcKzQ1XZRY2mX4jh", + "id": "chatcmpl-CTTwb7uzSJQri99ixmFjEtsla4lZL", "object": "chat.completion", - "created": 1752845655, - "model": "gpt-4.1-2025-04-14", + "created": 1761142653, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -280,20 +281,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 59, - "completion_tokens": 10, - "total_tokens": 69, + "prompt_tokens": 54, + "completion_tokens": 535, + "total_tokens": 589, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 512, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -302,5 +302,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:15 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:17:57 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/structured-data-parallel.yml b/vignettes/_vcr/structured-data-parallel.yml index 8394371f..cdb5ab3b 100644 --- a/vignettes/_vcr/structured-data-parallel.yml +++ b/vignettes/_vcr/structured-data-parallel.yml @@ -4,45 +4,46 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"I go - by Alex. 42 years on this planet and counting."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + by Alex. 42 years on this planet and counting."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125ac8b8f4511a-MSP + cf-ray: 99299d2338b3a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:06 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '275' + date: Wed, 22 Oct 2025 14:16:45 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4956' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=3ET8k01o037TGuD4pgY0a_WpbpqbeI5iyWUVyYcgcZE-1752845646-1.0.1.1-QgEQwxmgPsifJvD.jk7lbWhDfg.fGXtYorqppcgPY.bbWW6pqT4auwXAhB1kgm.M7b6f3ttbrf7CJPFkV5f0VtABmRpcyEImnQ4zHlwlPec; - path=/; expires=Fri, 18-Jul-25 14:04:06 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=t6GFa5I_FJUpL.s.JolaZgfWVYm4L6pOQ0uCvOwfvFY-1761142605-1.0.1.1-7kxrvHnwnqQl6SH76aydMuEwKP9d4UfA5Nn0jW_rAN_SEY83ntL8jcc6Nv2vkgHmaLfQFdlY0mGLYWX3UPVXOZDttn2d4uewBCKcU7PdC_0; + path=/; expires=Wed, 22-Oct-25 14:46:45 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=5FCUm8FwEBlr8cdtL4Asscr.aHTwAdHQ.6byh.Wt2FU-1752845646565-0.0.1.1-604800000; + - _cfuvid=U6UIRz1469749ypwj3PFfKtuvWbKzGJ6eItI_a0OZA8-1761142605248-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '278' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '5011' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999985' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_796b60a11ada23053d8c6630496203cd + x-request-id: req_0724cefc142c481aa9116b6ae9d0cf9b body: string: | { - "id": "chatcmpl-BufVuPlOyUqqWUzAEK9KTumpbkO6Z", + "id": "chatcmpl-CTTvk7RbU2vnTWUzh19P3KBdWrZUN", "object": "chat.completion", - "created": 1752845646, - "model": "gpt-4.1-2025-04-14", + "created": 1761142600, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -52,20 +53,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 9, - "total_tokens": 76, + "prompt_tokens": 62, + "completion_tokens": 150, + "total_tokens": 212, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -74,51 +74,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:06 + recorded_at: 2025-10-22 14:16:45 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Pleased - to meet you! I''m Jamal, age 27."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + to meet you! I''m Jamal, age 27."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125acb5da0511a-MSP + cf-ray: 99299d434cd6a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:08 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1380' + date: Wed, 22 Oct 2025 14:16:55 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3345' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=TX13bVVnH1gIBepqIc4qVwKblYaTqTgZvHTbp.NMm7s-1752845648-1.0.1.1-aywhNfDgPzybDMn1MN.X1iWmKP0VDPnzoRt3BOfTWHf6J12GY31paoeKndhdiXbcmv14TF6EW6pN0VIDCVHxHNqmKZvQEyP5swdS4S6L0kA; - path=/; expires=Fri, 18-Jul-25 14:04:08 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=aGhJvsRYPFiyMPeam2Ie7f9viGafdwzH2tknvITJETI-1761142615-1.0.1.1-akYSL5xZrMjdLWgU5MqB8t8LdMUcSDqNYPLEfkXb_4Yg4hE1chvIKQ.bkDFWQleHpJBTxgcmm6rtvirZRLm0LUeCKM5Z4tdsFCDXVSWaKRU; + path=/; expires=Wed, 22-Oct-25 14:46:55 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=owZAxYUcQ2HA6NQTw6L_cPRUujV9x9tKPtbcpppdfr4-1752845648088-0.0.1.1-604800000; + - _cfuvid=crIdtGag8iFGBLWjsNAzdq.avjjDVWeE4rq7RPTiZGY-1761142615588-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1385' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999988' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '10226' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999988' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d13b4cef5f2ab3c66d0df0c369a7de5d + x-request-id: req_5216374bb3ea4df6b7d30a415bab378e body: string: | { - "id": "chatcmpl-BufVuQXrty3vwHhtkeBVoI6nU9EMD", + "id": "chatcmpl-CTTvwvc4Hnm9fFIRu2z2LQcuCZbLv", "object": "chat.completion", - "created": 1752845646, - "model": "gpt-4.1-2025-04-14", + "created": 1761142612, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -128,20 +129,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 10, - "total_tokens": 77, + "prompt_tokens": 62, + "completion_tokens": 151, + "total_tokens": 213, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -150,51 +150,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:07 + recorded_at: 2025-10-22 14:16:55 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"They - call me Li Wei. Nineteen years young."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + call me Li Wei. Nineteen years young."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125ad4ed7b511a-MSP + cf-ray: 99299d83fddaa912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:08 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '446' + date: Wed, 22 Oct 2025 14:16:57 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '2210' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=Bs9Yn8I6F09pT0555M1SRvYbjuDv79HjRQ_DR7w3j4U-1752845648-1.0.1.1-CZZRDeTYlwEQpBRlsGvQrRXy.DiyXmUk8aIdZzc52v5VCqJ3_lJ5ODNKZIPlUSMuuxcrWjqXQFOdwUkISoMj3jfknzxItWEYlYt3eKCpjYQ; - path=/; expires=Fri, 18-Jul-25 14:04:08 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=GCQmu6PCIZb0MDW5dX82SIvLENVXvmiVuiV.CysSWec-1761142617-1.0.1.1-zdrmijjB6mOT_60uZa28.XIi.Ai4XowEHThH1twrurhdKDCbyAM4msBlxaD6aNiNNemzjt2UsBHCvaUcv7p8X.n3t_hRkX03AipB8aaUPmQ; + path=/; expires=Wed, 22-Oct-25 14:46:57 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=3Io1owlXanfiYfiw5bqH83ugN1MsFaXMmJtbu9Ii_U4-1752845648680-0.0.1.1-604800000; + - _cfuvid=GfuoDcUzN5HGu8jsAFVGog3V.OLOdXRar34pNzl69Kg-1761142617958-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '449' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999986' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '2254' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999985' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_52bfdbb9b53c4cee2e60a97525eff307 + x-request-id: req_b84904b9592f4118b4e8c7a8ef42e0d2 body: string: | { - "id": "chatcmpl-BufVwrmuZs5c2u0QbgY0T3V6p2jM3", + "id": "chatcmpl-CTTvzVGYc4F6vB4SttEGt7Y4Hb4Vt", "object": "chat.completion", - "created": 1752845648, - "model": "gpt-4.1-2025-04-14", + "created": 1761142615, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -204,20 +205,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 65, - "completion_tokens": 10, - "total_tokens": 75, + "prompt_tokens": 60, + "completion_tokens": 215, + "total_tokens": 275, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -226,51 +226,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:08 + recorded_at: 2025-10-22 14:16:57 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Fatima - here. Just celebrated my 35th birthday last week."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + here. Just celebrated my 35th birthday last week."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125ad87ad8511a-MSP + cf-ray: 99299d929e97a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:09 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '376' + date: Wed, 22 Oct 2025 14:17:01 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3867' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=HVeZJ71EK3z4M3CRgxs4VjrftNrtfQh13nYbLjRtpys-1752845649-1.0.1.1-6yGsdpU5gTeKAI0F3i2KdLKFpgsKwQ6Moyxgt45AY.PNpMfVokxYsueK834hWbiSSFGlN1Ft.P7uW0e_jrNX5ITKKtkc4w4ayWLVP2Yzb5w; - path=/; expires=Fri, 18-Jul-25 14:04:09 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=EswmBH.A59zRZgbZEikA_75jOgmc0ruOX_C6Asn39OA-1761142621-1.0.1.1-tVqK3TU5GXOjku2mxaZhUZo7AWAhMw_uNdLSG9HIZJREMXfbYg4lytOJRaMV6o.A8tb02FbnwAQDsfI.y0BQ2R1JJgB8J7LQobXghxVk1t0; + path=/; expires=Wed, 22-Oct-25 14:47:01 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=NOI_BcE_9srUCI6KQASry3XiEw4WnFIqFt0D1ywWOd8-1752845649193-0.0.1.1-604800000; + - _cfuvid=UwkuroJ16XD4mG1KTgDeTTyAltZiClYrt6Z8MyUtt_8-1761142621934-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '382' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3893' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999985' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_59bc5f329376b7fd317b4b8519faba61 + x-request-id: req_7783d131c9ce46cea7712ab50ad6ac50 body: string: | { - "id": "chatcmpl-BufVwSxfN5mjFjVzZ3QrXaB0lcy58", + "id": "chatcmpl-CTTw2ADz32AiwsKmiIDVqYnBshN21", "object": "chat.completion", - "created": 1752845648, - "model": "gpt-4.1-2025-04-14", + "created": 1761142618, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -280,20 +281,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 10, - "total_tokens": 77, + "prompt_tokens": 62, + "completion_tokens": 215, + "total_tokens": 277, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -302,51 +302,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:09 + recorded_at: 2025-10-22 14:17:01 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"The name''s - Robert - 51 years old and proud of it."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + Robert - 51 years old and proud of it."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125adbb856511a-MSP + cf-ray: 99299dab5ecea912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:09 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '415' + date: Wed, 22 Oct 2025 14:17:05 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3357' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=qhERZvMRQHVVDf7PrydRTog0J4OKfAUdp6iQJzxwgO4-1752845649-1.0.1.1-CIdTvjrBqwghfN7TzKcsIXUHo9wYDZbLcdWO_Nox4NX6PFPEV.LGEFkfszc2_iql_7KOiC380lk0qlf.PqR96HVPrYd4vf3CYhOWJTen8qM; - path=/; expires=Fri, 18-Jul-25 14:04:09 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=5JZ9i5j4JSXSlzBhw47FU7ls69m5qnluQpV3YjkcQMg-1761142625-1.0.1.1-XpbifUwiGHW8kWUcvYysbp1o60IpeI51mOfgHGXZA_fuTr9vFsiKCRcYrk_geU8LHKfWs8O0cgcEYe9p.E13MDNzi2JODck4w3PvPo7AiTs; + path=/; expires=Wed, 22-Oct-25 14:47:05 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=O6t_L4sXoIvCL6xepICLcMOlYxBYJ_2aSp7WQ6V7iHE-1752845649745-0.0.1.1-604800000; + - _cfuvid=lgJkcNSITfWLkKH_Yb1zXOmfM4krMt6PDXsAVXQR3IE-1761142625429-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '421' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3405' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999985' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_ed55e2c38a3a22e9bb68af84694d2744 + x-request-id: req_8ac0500aec494ec8bd4a3e50747535b1 body: string: | { - "id": "chatcmpl-BufVxYUezN0oJVqMiKEkm5FCqKhXM", + "id": "chatcmpl-CTTw6AwBVdwxvsJc8gDmRgWln0sbJ", "object": "chat.completion", - "created": 1752845649, - "model": "gpt-4.1-2025-04-14", + "created": 1761142622, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -356,20 +357,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 67, - "completion_tokens": 9, - "total_tokens": 76, + "prompt_tokens": 62, + "completion_tokens": 150, + "total_tokens": 212, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -378,51 +378,52 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:09 + recorded_at: 2025-10-22 14:17:05 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Kwame - here - just hit the big 5-0 this year."}]}],"model":"gpt-4.1","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' + here - just hit the big 5-0 this year."}]}],"model":"gpt-5-mini","stream":false,"response_format":{"type":"json_schema","json_schema":{"name":"structured_data","schema":{"type":"object","description":"","properties":{"name":{"type":"string","description":""},"age":{"type":"number","description":""}},"required":["name","age"],"additionalProperties":false},"strict":true}}}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 96125adf2d7c511a-MSP + cf-ray: 99299dc11ec1a912-DFW content-encoding: gzip content-type: application/json - date: Fri, 18 Jul 2025 13:34:10 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '458' + date: Wed, 22 Oct 2025 14:17:10 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '4550' openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=bFq3VZTn1qQ0nVKhzmBjNrIn50q73AVQYoUpM87hdFQ-1752845650-1.0.1.1-eaxdACemDrx3M09aW.7YSmv2MAv_oMY_YJAk28xY9QnmiKsGrS.Ka6oZ7bIEv4cWvMbCHy4u2_9zY2gh12h3Lm01.nm0KijzfDAZjY.TPpI; - path=/; expires=Fri, 18-Jul-25 14:04:10 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=sJQiR8vrQEno6MW3OaYsvXh52AyFyEQSXJZ6z7nWFlk-1761142630-1.0.1.1-isbPJm4q5ia3oPqRtK2V7ejulIt1zcTk47I8UZZxQVNkOdc2VslkE7L_NcAz5eC28f8aRyijsLaNfAqQoNMRgalonif2TVYIuC5qniQxZXg; + path=/; expires=Wed, 22-Oct-25 14:47:10 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=jfadVRpkfBMKx.njD5aKi_prABWc_pTayxi9wu.5D.Q-1752845650350-0.0.1.1-604800000; + - _cfuvid=N3_dkrx02ufFI5kcJNelFXUqprOn4EKrnTZDO5thFZU-1761142630090-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '464' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999987' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '4575' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '30000' + x-ratelimit-limit-tokens: '180000000' + x-ratelimit-remaining-requests: '29999' + x-ratelimit-remaining-tokens: '179999988' + x-ratelimit-reset-requests: 2ms x-ratelimit-reset-tokens: 0s - x-request-id: req_d8d38b5216d71bbe6d61fb44751b86e2 + x-request-id: req_30b7e7e8dc51400e9883862af3e8f871 body: string: | { - "id": "chatcmpl-BufVxYLvDwZDpCBFbTVZ7uRo6NksQ", + "id": "chatcmpl-CTTw9DkbhQdGdWcqoB5btmy4sO0Zg", "object": "chat.completion", - "created": 1752845649, - "model": "gpt-4.1-2025-04-14", + "created": 1761142625, + "model": "gpt-5-mini-2025-08-07", "choices": [ { "index": 0, @@ -432,20 +433,19 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 68, - "completion_tokens": 10, - "total_tokens": 78, + "prompt_tokens": 63, + "completion_tokens": 215, + "total_tokens": 278, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 192, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 @@ -454,5 +454,5 @@ http_interactions: "service_tier": "default", "system_fingerprint": null } - recorded_at: 2025-07-18 13:34:10 -recorded_with: VCR-vcr/1.7.1.93 + recorded_at: 2025-10-22 14:17:10 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/tool-calling-inputs-outputs.yml b/vignettes/_vcr/tool-calling-inputs-outputs.yml index 173bf373..5b7f5b29 100644 --- a/vignettes/_vcr/tool-calling-inputs-outputs.yml +++ b/vignettes/_vcr/tool-calling-inputs-outputs.yml @@ -4,8 +4,8 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Give - me a weather udpate for London and Chicago"}]}],"model":"gpt-4.1","stream":false,"tools":[{"type":"function","function":{"name":"get_weather","description":"\n Report - on weather conditions in multiple cities. For efficiency, request \n all + me a weather udpate for London and Chicago"}]}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"get_weather","description":"\n Report + on weather conditions in multiple cities. For efficiency, request\n all weather updates using a single tool call\n ","strict":true,"parameters":{"type":"object","description":"","properties":{"cities":{"type":"array","description":"City names","items":{"type":"string","description":""}}},"required":["cities"],"additionalProperties":false}}}]}' response: @@ -14,37 +14,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e67ad6b7f478d-DFW + cf-ray: 9929bf7c3fa52cac-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:14:15 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '692' + date: Wed, 22 Oct 2025 14:40:10 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '3379' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=KqmmM1rTFagKpbmMZjsi.f.GbiBKcHExEbU.ywgDrGk-1751462055-1.0.1.1-hH3iVjj5goW7InWaxuhT1s7uZhW5P6zJxchPWg3Tgp5nJUYY7CXQXUJbxhgvIwQsFQLWP8UhYgFvtTTiRf7wKIxNVJVa8rpAn1S62wH.bEU; - path=/; expires=Wed, 02-Jul-25 13:44:15 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=YfuaTEWeq_iWQ3Jt8u5kFC0__IxU1NeXdVDavhAGeyw-1761144010-1.0.1.1-nTjBLobU84ZLjB_Osux69y4heojcg7C6tTKLS9j9DLjfYxYkK9vgTEVJStMXGc8zMb4HM5jYxMm68jb4AcpZS0Nx.m1ppD3BuNF48upqK2U; + path=/; expires=Wed, 22-Oct-25 15:10:10 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=buvHomNFCBGje3dsLh6l60DqPcou3y5A_ZqBI0E7JGc-1751462055065-0.0.1.1-604800000; + - _cfuvid=a3vSHX2rRgwxufgG9_87zf6y24smBCBnW02ShWIruzc-1761144010531-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1017' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999985' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '3411' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999986' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_cb11cb2e75b6c56e756e1e14f7cff701 + x-request-id: req_2897fc5c94bf4d25ae60acfd8caea231 body: string: | { - "id": "chatcmpl-BorZuEWNNGa6bJLBteIWbJ1QYSyFw", + "id": "chatcmpl-CTUIRokfcDT35feEzyGgCCbHplLE6", "object": "chat.completion", - "created": 1751462054, - "model": "gpt-4.1-2025-04-14", + "created": 1761144007, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -53,7 +55,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_0epVfhsX7e8pEy0M1NaY9Vca", + "id": "call_zTXXx1UrxZaEKNlGCPkQkhNi", "type": "function", "function": { "name": "get_weather", @@ -64,36 +66,35 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 74, - "completion_tokens": 17, - "total_tokens": 91, + "prompt_tokens": 155, + "completion_tokens": 154, + "total_tokens": 309, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 128, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:14:15 + recorded_at: 2025-10-22 14:40:10 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"Give - me a weather udpate for London and Chicago"}]},{"role":"assistant","tool_calls":[{"id":"call_0epVfhsX7e8pEy0M1NaY9Vca","function":{"name":"get_weather","arguments":"{\"cities\":[[\"London\"],[\"Chicago\"]]}"},"type":"function"}]},{"role":"tool","content":"[{\"city\":\"London\",\"raining\":\"heavy\",\"temperature\":\"cool\",\"wind\":\"strong\"},{\"city\":\"Chicago\",\"raining\":\"overcast\",\"temperature\":\"warm\",\"wind\":\"strong\"}]","tool_call_id":"call_0epVfhsX7e8pEy0M1NaY9Vca"}],"model":"gpt-4.1","stream":false,"tools":[{"type":"function","function":{"name":"get_weather","description":"\n Report - on weather conditions in multiple cities. For efficiency, request \n all + me a weather udpate for London and Chicago"}]},{"role":"assistant","tool_calls":[{"id":"call_zTXXx1UrxZaEKNlGCPkQkhNi","function":{"name":"get_weather","arguments":"{\"cities\":[[\"London\"],[\"Chicago\"]]}"},"type":"function"}]},{"role":"tool","content":"[{\"city\":\"London\",\"raining\":\"heavy\",\"temperature\":\"cool\",\"wind\":\"strong\"},{\"city\":\"Chicago\",\"raining\":\"overcast\",\"temperature\":\"warm\",\"wind\":\"strong\"}]","tool_call_id":"call_zTXXx1UrxZaEKNlGCPkQkhNi"}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"get_weather","description":"\n Report + on weather conditions in multiple cities. For efficiency, request\n all weather updates using a single tool call\n ","strict":true,"parameters":{"type":"object","description":"","properties":{"cities":{"type":"array","description":"City names","items":{"type":"string","description":""}}},"required":["cities"],"additionalProperties":false}}}]}' response: @@ -102,67 +103,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 958e67b51c21478d-DFW + cf-ray: 9929bf936c922cac-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 13:14:16 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '722' + date: Wed, 22 Oct 2025 14:40:16 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5458' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=.0Ld71xdTVeghPQ_oEHuH_PpjLcfSINiJo50CpMsK7E-1751462056-1.0.1.1-3Rp5V_yTvgp8fTFT8RbGoqDx90zscKVsEoKuVmrkj3rlP2raRvQ0yDIfWjw1.5ejZW.VPORb7iItKUXaddsGhkemNC0c0m6pwOqVPP1oXPk; - path=/; expires=Wed, 02-Jul-25 13:44:16 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=3wydyjzRkUSfIyjcQUZupVsih8QQyinqulnS7HPInI8-1761144016-1.0.1.1-bRz.MqmC5HQd.vYddSZY2qidCR601YqyxMvkXKMPs.pkfeU3H_u40ZGl73z613jGZBaaBhy6kYa3_ppQGjLGXhHBt0ZW7j5dYu0ROiOsQnI; + path=/; expires=Wed, 22-Oct-25 15:10:16 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=_sUsQ_4DHg1Gk8J5eHbyPonSYyssrJko5Pr9LHqKV2I-1751462056004-0.0.1.1-604800000; + - _cfuvid=Si5GM3YjU.BiVqsjDjaQNkkcX23y4_nz.MKhhGDs4MM-1761144016299-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '726' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999946' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '5479' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999946' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e034705bd78833d6ccef7940e5aacea1 + x-request-id: req_89797d7fc1e4484485e2d67f9a8880f2 body: string: | { - "id": "chatcmpl-BorZvYnPYXm1NTGbRDqDr2JxYjOB7", + "id": "chatcmpl-CTUIUcogfv6ohItok0D1merdZXzcH", "object": "chat.completion", - "created": 1751462055, - "model": "gpt-4.1-2025-04-14", + "created": 1761144010, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Here's the latest weather update:\n\n- London: Heavy rain, cool temperatures, and strong winds.\n- Chicago: Overcast skies, warm temperatures, and strong winds.\n\nLet me know if you need a forecast for more cities or details!", + "content": "Here’s the latest:\n\n- London: Heavy rain, cool, and strong winds. Consider waterproofs and a windproof layer.\n- Chicago: Overcast, warm, and strong winds. Lightweight layers, but be prepared for gusts.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 139, - "completion_tokens": 48, - "total_tokens": 187, + "prompt_tokens": 226, + "completion_tokens": 377, + "total_tokens": 603, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 320, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_51e1070cf2" + "system_fingerprint": null } - recorded_at: 2025-07-02 13:14:15 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:40:16 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/tool-calling-no-tool.yml b/vignettes/_vcr/tool-calling-no-tool.yml index 12378c39..6649a5f3 100644 --- a/vignettes/_vcr/tool-calling-no-tool.yml +++ b/vignettes/_vcr/tool-calling-no-tool.yml @@ -4,74 +4,75 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"How long - ago did Neil Armstrong touch down on the moon?"}]}],"model":"gpt-4o","stream":false}' + ago did Neil Armstrong touch down on the moon?"}]}],"model":"gpt-5","stream":false}' response: status: 200 headers: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 9564fcab1f266bf2-DFW + cf-ray: 9929bc48ddd52cac-DFW content-encoding: gzip content-type: application/json - date: Fri, 27 Jun 2025 12:35:55 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1207' + date: Wed, 22 Oct 2025 14:38:16 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '20551' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=J.67ci5o5vXqr9AnZ4Yj2q24Ruv9bK.j6XET24UDL3k-1751027755-1.0.1.1-W5DJVTRwhKS5v8720bWev93b0cJ6IaOICUslnKcQmGkdxrRN4Jnu_ZGzUt.36Gf47ecgIicJFY3LsEEsB5SY1gR9EeQzKuDN60F5yN8m3sM; - path=/; expires=Fri, 27-Jun-25 13:05:55 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=0TU4rkth3KxlJ.QLrZUvXAayVz.OVbRUkAbzFW_0ACs-1761143896-1.0.1.1-DqaIVw7FCSgwYyE0L2QWGQP1quAuMYa6K08cjkOMEE2LXZJ.lxUXMogKDYQVWwTofQto2nnmwy.lxC3dyVpLoJOUdEO5FXTbASwruXhr77A; + path=/; expires=Wed, 22-Oct-25 15:08:16 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=GWM9CpmZqMXPOZEB6QMdObM8POPy68KVL2d_d59vDig-1751027755994-0.0.1.1-604800000; + - _cfuvid=G_Pp9lgt2tGk5FDfh8AAeEXXxv2sxG_5RpW_CnGwxf4-1761143896600-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '1211' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999984' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '20585' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999984' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_e01c994ace4114de2728f24fa3e1b3e3 + x-request-id: req_6412436af10544ec943bc84b7c5d53cc body: string: | { - "id": "chatcmpl-Bn2b4dSmLrsTcXNOCbnKM0a039Mqu", + "id": "chatcmpl-CTUGKjxJtEWKZDBiypis0EHsgs7xM", "object": "chat.completion", - "created": 1751027754, - "model": "gpt-4o-2024-08-06", + "created": 1761143876, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Neil Armstrong touched down on the Moon on July 20, 1969. As of October 2023, that event occurred 54 years ago.", + "content": "As of today (October 22, 2025), Neil Armstrong’s lunar module touchdown on July 20, 1969 at 20:17 UTC was 56 years, 3 months, and 2 days ago.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 19, - "completion_tokens": 31, - "total_tokens": 50, + "prompt_tokens": 18, + "completion_tokens": 1336, + "total_tokens": 1354, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 1280, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_07871e2ad8" + "system_fingerprint": null } - recorded_at: 2025-06-27 12:35:55 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:38:16 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/_vcr/tool-calling-with-tool.yml b/vignettes/_vcr/tool-calling-with-tool.yml index 4e97afd7..4cf7cba7 100644 --- a/vignettes/_vcr/tool-calling-with-tool.yml +++ b/vignettes/_vcr/tool-calling-with-tool.yml @@ -4,10 +4,10 @@ http_interactions: uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"How long - ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","content":[{"type":"text","text":"Neil - Armstrong touched down on the Moon on July 20, 1969. As of October 2023, that - event occurred 54 years ago."}]},{"role":"user","content":[{"type":"text","text":"How - long ago did Neil Armstrong touch down on the moon?"}]}],"model":"gpt-4o","stream":false,"tools":[{"type":"function","function":{"name":"get_current_time","description":"Returns + ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","content":[{"type":"text","text":"As + of today (October 22, 2025), Neil Armstrong’s lunar module touchdown on July + 20, 1969 at 20:17 UTC was 56 years, 3 months, and 2 days ago."}]},{"role":"user","content":[{"type":"text","text":"How + long ago did Neil Armstrong touch down on the moon?"}]}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"get_current_time","description":"Returns the current time.","strict":true,"parameters":{"type":"object","description":"","properties":{"tz":{"type":["string","null"],"description":"Time zone to display the current time in. Defaults to `\"UTC\"`."}},"required":["tz"],"additionalProperties":false}}}]}' response: @@ -16,37 +16,39 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 959041a83b297399-DFW + cf-ray: 9929bccbecbd2cac-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 18:37:50 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '675' + date: Wed, 22 Oct 2025 14:38:23 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '5977' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=lWHLj.HmEpBh9KwyDQ2vwYfFl.5gOiNQ3FLDydYQrIY-1751481470-1.0.1.1-Zvhvn0WbnC4VyL79kH2VEQYuaQ6Ohnf8JJuJ4i.FiK0Ftfc3eBjprbIoueE.t_GDnJjZ6N0UjX.qwoP2dg7v3pZ2W084V8o7iqu.dm6XvOs; - path=/; expires=Wed, 02-Jul-25 19:07:50 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=Dq7XR1AsQq3Fsjec2.s6bq0Fw18zi2qps2nPbh6va.s-1761143903-1.0.1.1-ieAg1mWNnc5YP8NHLx881D9yhB3TmIbNAuxij9YXkDIVuUjobp3guNXdPgosw2QEk3pFlX6.urXScJe9e.fRxaL975V0e0KhNaP.ZtEpWSo; + path=/; expires=Wed, 22-Oct-25 15:08:23 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=e6.2cAniIhJ90DyLfma1pVTOvWytBhI6VtdUWPfVnM4-1751481470826-0.0.1.1-604800000; + - _cfuvid=x2fE4YKbkpVgdf98H02gJTM0ZEuAYTFoRDKbxrX1IqA-1761143903098-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '693' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999940' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '6117' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999932' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_6edf2c880c686d62ecec79b8e7499ca2 + x-request-id: req_38ae0873491e4279ab82cb35048c8878 body: string: | { - "id": "chatcmpl-Bowd4S0M9PRLjvxmks46h36Xzj8ck", + "id": "chatcmpl-CTUGfylttIMfJK54Dm1wqDwxX7gtc", "object": "chat.completion", - "created": 1751481470, - "model": "gpt-4o-2024-08-06", + "created": 1761143897, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, @@ -55,7 +57,7 @@ http_interactions: "content": null, "tool_calls": [ { - "id": "call_olBG8OUjyIj914iwNBjw35dv", + "id": "call_YFKhBck0wyoP1Bpjyv43tUXC", "type": "function", "function": { "name": "get_current_time", @@ -66,39 +68,38 @@ http_interactions: "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "tool_calls" } ], "usage": { - "prompt_tokens": 158, - "completion_tokens": 15, - "total_tokens": 173, + "prompt_tokens": 257, + "completion_tokens": 408, + "total_tokens": 665, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 384, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_07871e2ad8" + "system_fingerprint": null } - recorded_at: 2025-07-02 18:37:50 + recorded_at: 2025-10-22 14:38:23 - request: method: POST uri: https://api.openai.com/v1/chat/completions body: string: '{"messages":[{"role":"user","content":[{"type":"text","text":"How long - ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","content":[{"type":"text","text":"Neil - Armstrong touched down on the Moon on July 20, 1969. As of October 2023, that - event occurred 54 years ago."}]},{"role":"user","content":[{"type":"text","text":"How - long ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","tool_calls":[{"id":"call_olBG8OUjyIj914iwNBjw35dv","function":{"name":"get_current_time","arguments":"{\"tz\":[\"UTC\"]}"},"type":"function"}]},{"role":"tool","content":"2025-06-25 - 16:53:23 UTC","tool_call_id":"call_olBG8OUjyIj914iwNBjw35dv"}],"model":"gpt-4o","stream":false,"tools":[{"type":"function","function":{"name":"get_current_time","description":"Returns + ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","content":[{"type":"text","text":"As + of today (October 22, 2025), Neil Armstrong’s lunar module touchdown on July + 20, 1969 at 20:17 UTC was 56 years, 3 months, and 2 days ago."}]},{"role":"user","content":[{"type":"text","text":"How + long ago did Neil Armstrong touch down on the moon?"}]},{"role":"assistant","tool_calls":[{"id":"call_YFKhBck0wyoP1Bpjyv43tUXC","function":{"name":"get_current_time","arguments":"{\"tz\":[\"UTC\"]}"},"type":"function"}]},{"role":"tool","content":"2025-06-25 + 16:53:23 UTC","tool_call_id":"call_YFKhBck0wyoP1Bpjyv43tUXC"}],"model":"gpt-5","stream":false,"tools":[{"type":"function","function":{"name":"get_current_time","description":"Returns the current time.","strict":true,"parameters":{"type":"object","description":"","properties":{"tz":{"type":["string","null"],"description":"Time zone to display the current time in. Defaults to `\"UTC\"`."}},"required":["tz"],"additionalProperties":false}}}]}' response: @@ -107,67 +108,68 @@ http_interactions: access-control-expose-headers: X-Request-ID alt-svc: h3=":443"; ma=86400 cf-cache-status: DYNAMIC - cf-ray: 959041b9bf0a7399-DFW + cf-ray: 9929bcf3a97d2cac-DFW content-encoding: gzip content-type: application/json - date: Wed, 02 Jul 2025 18:37:55 GMT - openai-organization: user-wfrajlxs4zxa4ixjljhmt9vx - openai-processing-ms: '1830' + date: Wed, 22 Oct 2025 14:40:06 GMT + openai-organization: posit-esfrkf + openai-processing-ms: '103327' + openai-project: proj_IeWhBnzvOO8wbVR5MdxnGXFq openai-version: '2020-10-01' server: cloudflare set-cookie: - - __cf_bm=OpHdoCCBXdBttFZJn0m1tCv3NWXWhutkI.NN8hKflGE-1751481475-1.0.1.1-wbVKcosbkpEoHxnnSHLEndNk7GVZbhlSPl80_qmvoYeAkK4i0sOAnVYsBhmeIKhXKdl57y8el5der6R2maB3XEI34PndtY1DuLq.RTG0t8Q; - path=/; expires=Wed, 02-Jul-25 19:07:55 GMT; domain=.api.openai.com; HttpOnly; + - __cf_bm=h.BOqu0bVhyKQYP2tira9Plf1BjRZ5Sdj6aVdxr7PYM-1761144006-1.0.1.1-ZYmyjs_B5XZi9.2CP9oTkngpCQhJpka6jzqHuSB8bsJOycS2Y2mJxZPSPltzM_PPovHbXVPIiOm4FtBJarIRpXksKb8WPXnC4wPVhJRsS6A; + path=/; expires=Wed, 22-Oct-25 15:10:06 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - - _cfuvid=qcfXSe6HzsGCy2Mp4uCjljoonphmzIGJjE6EywbHbjk-1751481475251-0.0.1.1-604800000; + - _cfuvid=YaIRlMlXJGmTj5NmdrXtst4xXWwM4VzG93RQ5Rn8oJ4-1761144006750-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None strict-transport-security: max-age=31536000; includeSubDomains; preload x-content-type-options: nosniff - x-envoy-upstream-service-time: '3760' - x-ratelimit-limit-requests: '10000' - x-ratelimit-limit-tokens: '30000000' - x-ratelimit-remaining-requests: '9999' - x-ratelimit-remaining-tokens: '29999932' - x-ratelimit-reset-requests: 6ms + x-envoy-upstream-service-time: '103380' + x-openai-proxy-wasm: v0.1 + x-ratelimit-limit-requests: '15000' + x-ratelimit-limit-tokens: '40000000' + x-ratelimit-remaining-requests: '14999' + x-ratelimit-remaining-tokens: '39999925' + x-ratelimit-reset-requests: 4ms x-ratelimit-reset-tokens: 0s - x-request-id: req_fec02247ab3b7f22ebb7e011f4789721 + x-request-id: req_bf8b80ef00b54adc86621b3cb399dc7a body: string: | { - "id": "chatcmpl-Bowd7XWEJ72sgWDTvpEEQvQ9JdqwI", + "id": "chatcmpl-CTUGldVBlyOLM7531RtPWMah8pNG4", "object": "chat.completion", - "created": 1751481473, - "model": "gpt-4o-2024-08-06", + "created": 1761143903, + "model": "gpt-5-2025-08-07", "choices": [ { "index": 0, "message": { "role": "assistant", - "content": "Neil Armstrong touched down on the Moon on July 20, 1969. As of June 25, 2025, that event occurred 55 years and approximately 11 months ago.", + "content": "As of now (June 25, 2025 UTC), Neil Armstrong’s lunar module Eagle touchdown on July 20, 1969 was 55 years, 11 months, and 4 days ago.", "refusal": null, "annotations": [] }, - "logprobs": null, "finish_reason": "stop" } ], "usage": { - "prompt_tokens": 196, - "completion_tokens": 40, - "total_tokens": 236, + "prompt_tokens": 301, + "completion_tokens": 2164, + "total_tokens": 2465, "prompt_tokens_details": { "cached_tokens": 0, "audio_tokens": 0 }, "completion_tokens_details": { - "reasoning_tokens": 0, + "reasoning_tokens": 2112, "audio_tokens": 0, "accepted_prediction_tokens": 0, "rejected_prediction_tokens": 0 } }, "service_tier": "default", - "system_fingerprint": "fp_07871e2ad8" + "system_fingerprint": null } - recorded_at: 2025-07-02 18:37:55 -recorded_with: VCR-vcr/1.7.0.91, webmockr/2.1.0 + recorded_at: 2025-10-22 14:40:06 +recorded_with: VCR-vcr/2.0.0 diff --git a/vignettes/programming.Rmd b/vignettes/programming.Rmd index dfb4adf5..2747821d 100644 --- a/vignettes/programming.Rmd +++ b/vignettes/programming.Rmd @@ -45,7 +45,7 @@ Mutable objects don't work the same way: #| label: mutable #| cassette: true -chat <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat <- chat_openai("Be terse", model = "gpt-5-nano") capital <- function(chat, country) { chat$chat(interpolate("What's the capital of {{country}}")) @@ -56,7 +56,7 @@ capital(chat, "France") chat ``` -It would be annoying if chat objects were immutable, because then you'd need to save the result every time you chatted with the model. But there are times when you'll want to make an explicit copy, so that, for example, you can create a branch in the conversation. +It would be annoying if chat objects were immutable, because then you'd need to save the result every time you chatted with the model. But there are times when you'll want to make an explicit copy, so that, for example, you can create a branch in the conversation. Creating a copy of the object is the job of the `$clone()` method. It will create a copy of the object that behaves identically to the existing chat: @@ -64,7 +64,7 @@ Creating a copy of the object is the job of the `$clone()` method. It will creat #| label: chat-clone #| cassette: true -chat <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat <- chat_openai("Be terse", model = "gpt-5-nano") capital <- function(chat, country) { chat <- chat$clone() @@ -82,7 +82,7 @@ You can also use `clone()` when you want to create a conversational "tree", wher #| label: tree #| cassette: true -chat1 <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat1 <- chat_openai("Be terse", model = "gpt-5-nano") chat1$chat("My name is Hadley and I'm a data scientist") chat2 <- chat1$clone() @@ -103,7 +103,7 @@ There's a bit of a problem with our `capital()` function: we can use our convers #| label: uhoh #| cassette: true -chat <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat <- chat_openai("Be terse", model = "gpt-5-nano") chat$chat("Pretend that the capital of New Zealand is Kiwicity") capital(chat, "New Zealand") ``` @@ -114,7 +114,7 @@ We can avoid that problem by using `$set_turns()` to reset the conversational hi #| label: reset #| cassette: true -chat <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat <- chat_openai("Be terse", model = "gpt-5-nano") chat$chat("Pretend that the capital of New Zealand is Kiwicity") capital <- function(chat, country) { @@ -152,7 +152,7 @@ Chat objects provide some tools to get to ellmer's internal data structures. For #| cassette: true set.seed(1014) # make it reproducible -chat <- chat_openai("Be terse", model = "gpt-4.1-nano") +chat <- chat_openai("Be terse", model = "gpt-5-nano") chat$register_tool(tool(function() sample(6, 1), "Roll a die")) chat$chat("Roll two dice and tell me the total") diff --git a/vignettes/structured-data.Rmd b/vignettes/structured-data.Rmd index 9c23a2be..4663d6cf 100644 --- a/vignettes/structured-data.Rmd +++ b/vignettes/structured-data.Rmd @@ -31,7 +31,7 @@ To extract structured data call `$chat_structured()` instead of `$chat()`. You'l #| label: basics-text #| cassette: true -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") chat$chat_structured( "My name is Susan and I'm 13 years old", type = type_object( @@ -41,13 +41,15 @@ chat$chat_structured( ) ``` +(Note that throughout this vignette I'm going to use a cheaper model than the ellmer. These tend to be more than adequate for structured data extraction. If you're using `chat_openai()` you might also want to try `gpt-5-nano` for even cheaper responses.) + The same basic idea works with images too: ```{r} #| label: basics-image #| cassette: true -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") chat$chat_structured( content_image_url("https://www.r-project.org/Rlogo.png"), type = type_object( @@ -75,7 +77,7 @@ type_person <- type_object( name = type_string(), age = type_number() ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") parallel_chat_structured(chat, prompts, type = type_person) ``` @@ -199,7 +201,7 @@ type_people <- type_object( weight = type_array(type_number("in kg")) ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") chat$chat_structured(prompt, type = type_people) ``` @@ -218,7 +220,7 @@ type_people <- type_array( ) ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") chat$chat_structured(prompt, type = type_people) ``` @@ -261,7 +263,7 @@ type_summary <- type_object( persuasion = type_number("Article's persuasion score, 0.0-1.0 (inclusive)") ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") data <- chat$chat_structured(text, type = type_summary) cat(data$summary) @@ -286,7 +288,7 @@ type_named_entity <- type_object( ) type_named_entities <- type_array(type_named_entity) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") chat$chat_structured(text, type = type_named_entities) ``` @@ -314,7 +316,7 @@ type_sentiment <- type_object( ) ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") str(chat$chat_structured(text, type = type_sentiment)) ``` @@ -349,7 +351,7 @@ type_classification <- type_array( description = "Array of classification results. The scores should sum to 1." ) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") data <- chat$chat_structured(text, type = type_classification) data ``` @@ -369,7 +371,10 @@ text <- " The man is tall, with a beard and a scar on his left cheek. He has a deep voice and wears a black leather jacket. " -chat <- chat_anthropic("Extract all characteristics of supplied character") +chat <- chat_anthropic( + "Extract all characteristics of supplied character", + model = "claude-haiku-4-5-20251001" +) str(chat$chat_structured(text, type = type_characteristics)) ``` @@ -402,7 +407,7 @@ type_asset <- type_object( ) type_assets <- type_array(type_asset) -chat <- chat_openai() +chat <- chat_openai(model = "gpt-5-mini") image <- content_image_file("congressional-assets.png") data <- chat$chat_structured(image, type = type_assets) data diff --git a/vignettes/tool-calling.Rmd b/vignettes/tool-calling.Rmd index f92663b0..a7ffdfe9 100644 --- a/vignettes/tool-calling.Rmd +++ b/vignettes/tool-calling.Rmd @@ -46,7 +46,7 @@ Let's take a look at an example where we really need an external tool. Chat mode #| label: no-tool #| cassette: true -chat <- chat_openai(model = "gpt-4o") +chat <- chat_openai() chat$chat("How long ago did Neil Armstrong touch down on the moon?") ``` @@ -54,7 +54,7 @@ Since the model doesn't know what day it is, the result is incorrect. ### Defining a tool function -The first thing we'll do is define an R function that returns the current time. +The first thing we'll do is define an R function that returns the current time. ```{r} #' Gets the current time in the given time zone. @@ -122,7 +122,7 @@ That's all we need to do! Let's retry our query: chat$chat("How long ago did Neil Armstrong touch down on the moon?") ``` -That's correct! Without any further guidance, the chat model decided to call our tool function and successfully used its result in formulating its response. +That's correct! Without any further guidance, the chat model decided to call our tool function and successfully used its result in formulating its response. If we print the chat we can see where the model decided to use the tool: @@ -130,8 +130,6 @@ If we print the chat we can see where the model decided to use the tool: chat ``` -(Full disclosure: I originally tried this example with the default model of `gpt-4o-mini` and it got the tool calling right but the date math wrong, hence the explicit `model="gpt-4o"`.) - This tool example was extremely simple, but you can imagine doing much more interesting things from tool functions: calling APIs, reading from or writing to a database, kicking off a complex simulation, or even calling a complementary GenAI model (like an image generator). Or if you are using ellmer in a Shiny app, you could use tools to set reactive values, setting off a chain of reactive updates. ### Tool inputs and outputs @@ -160,7 +158,7 @@ get_weather <- tool( }, name = "get_weather", description = " - Report on weather conditions in multiple cities. For efficiency, request + Report on weather conditions in multiple cities. For efficiency, request all weather updates using a single tool call ", arguments = list(