http_interactions:
- 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"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5.4","stream":false,"store":false,"service_tier":"auto"}'
  response:
    status: 200
    headers:
      access-control-expose-headers:
      - X-Request-ID
      - CF-Ray
      - CF-Ray
      alt-svc: h3=":443"; ma=86400
      cf-cache-status: DYNAMIC
      cf-ray: a133b8b73b25d4ce-MAN
      content-encoding: br
      content-type: application/json
      date: Mon, 29 Jun 2026 08:57:08 GMT
      openai-organization: user-k8m6yzpx9oqbrzisf5xeeeap
      openai-processing-ms: '4858'
      openai-project: proj_1zyW3RxIpA38KxiYN69dBj4g
      openai-version: '2020-10-01'
      server: cloudflare
      set-cookie: __cf_bm=DSiZn6onw6yo2OAW9fHbjFbYV7fUhgV.GtmDMrV6Mmw-1782723423.871339-1.0.1.1-0.6xDeaYdlzRdjsC3r53ZTV2Wcqp8MS_.7sSwEop.udj8PAKOmYYvXW4IdeR9UQAPR5LgygL2oAiQDukH7li7zNR91dqm_Dscu1t8.Z8pasexqjeIg8TtgebHu8GUUpm;
        HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon,
        29 Jun 2026 09:27:08 GMT
      strict-transport-security: max-age=31536000; includeSubDomains; preload
      x-content-type-options: nosniff
      x-ratelimit-limit-requests: '500'
      x-ratelimit-limit-tokens: '500000'
      x-ratelimit-remaining-requests: '499'
      x-ratelimit-remaining-tokens: '499825'
      x-ratelimit-reset-requests: 120ms
      x-ratelimit-reset-tokens: 21ms
      x-request-id: d2da803f-c1d0-407b-ac70-91b569123f6e
    body:
      string: |-
        {
          "id": "resp_009836829ffce795016a42335ff93c81a09b9d4eed7a7baae0",
          "object": "response",
          "created_at": 1782723424,
          "status": "completed",
          "background": false,
          "billing": {
            "payer": "developer"
          },
          "completed_at": 1782723428,
          "error": null,
          "frequency_penalty": 0.0,
          "incomplete_details": null,
          "instructions": null,
          "max_output_tokens": null,
          "max_tool_calls": null,
          "model": "gpt-5.4-2026-03-05",
          "moderation": null,
          "output": [
            {
              "id": "msg_009836829ffce795016a423360b13c81a09f978e5ba289d9cb",
              "type": "message",
              "status": "completed",
              "content": [
                {
                  "type": "output_text",
                  "annotations": [],
                  "logprobs": [],
                  "text": "- **Both store tabular data in R**, but a **tibble** is a modern version of a **data frame**, provided by the **tibble** package and commonly used in the **tidyverse**.\n\n- **Printing behavior**\n  - **Data frame:** prints the whole object by default.\n  - **Tibble:** prints only the first 10 rows and columns that fit on screen, making large datasets easier to inspect.\n\n- **Subsetting behavior**\n  - **Data frame:** may simplify results, for example returning a vector instead of a one-column data frame.\n  - **Tibble:** is more strict and usually preserves the data structure.\n\n- **Column names**\n  - **Data frame:** may change column names to make them syntactically valid unless told not to.\n  - **Tibble:** keeps column names more faithfully.\n\n- **Type handling**\n  - **Data frame:** older versions of R sometimes converted character columns to factors automatically.\n  - **Tibble:** does not do automatic character-to-factor conversion.\n\n- **Partial matching**\n  - **Data frame:** can allow partial matching in some cases.\n  - **Tibble:** does not allow partial matching, which helps avoid mistakes.\n\n- **Input flexibility**\n  - **Data frame:** works well with base R functions.\n  - **Tibble:** is designed to work smoothly with tidyverse tools like `dplyr` and `ggplot2`.\n\n- **Summary**\n  - Use a **data frame** for base R compatibility.\n  - Use a **tibble** when you want cleaner printing, stricter behavior, and tidyverse-friendly workflows."
                }
              ],
              "phase": "final_answer",
              "role": "assistant"
            }
          ],
          "parallel_tool_calls": true,
          "presence_penalty": 0.0,
          "previous_response_id": null,
          "prompt_cache_key": null,
          "prompt_cache_retention": "24h",
          "reasoning": {
            "context": "current_turn",
            "effort": "none",
            "mode": "standard",
            "summary": null
          },
          "safety_identifier": null,
          "service_tier": "default",
          "store": false,
          "temperature": 1.0,
          "text": {
            "format": {
              "type": "text"
            },
            "verbosity": "medium"
          },
          "tool_choice": "auto",
          "tool_usage": {
            "image_gen": {
              "input_tokens": 0,
              "input_tokens_details": {
                "image_tokens": 0,
                "text_tokens": 0
              },
              "output_tokens": 0,
              "output_tokens_details": {
                "image_tokens": 0,
                "text_tokens": 0
              },
              "total_tokens": 0
            },
            "web_search": {
              "num_requests": 0
            }
          },
          "tools": [],
          "top_logprobs": 0,
          "top_p": 0.98,
          "truncation": "disabled",
          "usage": {
            "input_tokens": 29,
            "input_tokens_details": {
              "cached_tokens": 0
            },
            "output_tokens": 338,
            "output_tokens_details": {
              "reasoning_tokens": 0
            },
            "total_tokens": 367
          },
          "user": null,
          "metadata": {}
        }
  recorded_at: 2026-06-29 08:57:08
- 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":"-
        **Both store tabular data in R**, but a **tibble** is a modern version of
        a **data frame**, provided by the **tibble** package and commonly used in
        the **tidyverse**.\n\n- **Printing behavior**\n  - **Data frame:** prints
        the whole object by default.\n  - **Tibble:** prints only the first 10 rows
        and columns that fit on screen, making large datasets easier to inspect.\n\n-
        **Subsetting behavior**\n  - **Data frame:** may simplify results, for example
        returning a vector instead of a one-column data frame.\n  - **Tibble:** is
        more strict and usually preserves the data structure.\n\n- **Column names**\n  -
        **Data frame:** may change column names to make them syntactically valid unless
        told not to.\n  - **Tibble:** keeps column names more faithfully.\n\n- **Type
        handling**\n  - **Data frame:** older versions of R sometimes converted character
        columns to factors automatically.\n  - **Tibble:** does not do automatic character-to-factor
        conversion.\n\n- **Partial matching**\n  - **Data frame:** can allow partial
        matching in some cases.\n  - **Tibble:** does not allow partial matching,
        which helps avoid mistakes.\n\n- **Input flexibility**\n  - **Data frame:**
        works well with base R functions.\n  - **Tibble:** is designed to work smoothly
        with tidyverse tools like `dplyr` and `ggplot2`.\n\n- **Summary**\n  - Use
        a **data frame** for base R compatibility.\n  - Use a **tibble** when you
        want cleaner printing, stricter behavior, and tidyverse-friendly workflows."}]},{"role":"user","content":[{"type":"input_text","text":"Tell
        me three funny jokes about statisticians"}]}],"include":["reasoning.encrypted_content"],"model":"gpt-5.4","stream":false,"store":false,"service_tier":"auto"}'
  response:
    status: 200
    headers:
      access-control-expose-headers:
      - X-Request-ID
      - CF-Ray
      - CF-Ray
      alt-svc: h3=":443"; ma=86400
      cf-cache-status: DYNAMIC
      cf-ray: a133b8d90982d4ce-MAN
      content-encoding: br
      content-type: application/json
      date: Mon, 29 Jun 2026 08:57:12 GMT
      openai-organization: user-k8m6yzpx9oqbrzisf5xeeeap
      openai-processing-ms: '3184'
      openai-project: proj_1zyW3RxIpA38KxiYN69dBj4g
      openai-version: '2020-10-01'
      server: cloudflare
      set-cookie: __cf_bm=mYjPzVcka4kyQJ0ElL7rwME0sso5SOdtjdRRr3F2dtA-1782723429.2889225-1.0.1.1-ZU1L5K7ZcIEaR.WH09Wz3J_UYY2rWDNLFs5bUgpGrCSC0eWtaytK_KHvWnNzAdOiClxKcZ2oHC_UseqNLncVYUeLvSeMthEUnMjBT08zcxYRtOrDC1CQeJ6GTPVbdvjQ;
        HttpOnly; SameSite=None; Secure; Path=/; Domain=api.openai.com; Expires=Mon,
        29 Jun 2026 09:27:12 GMT
      strict-transport-security: max-age=31536000; includeSubDomains; preload
      x-content-type-options: nosniff
      x-ratelimit-limit-requests: '500'
      x-ratelimit-limit-tokens: '500000'
      x-ratelimit-remaining-requests: '499'
      x-ratelimit-remaining-tokens: '500000'
      x-ratelimit-reset-requests: 120ms
      x-ratelimit-reset-tokens: 0s
      x-request-id: 2181bc7f-d508-463e-9842-496abfc6e2da
    body:
      string: |-
        {
          "id": "resp_00f03fecf45867fc016a4233656be8819f86cb240870a4956b",
          "object": "response",
          "created_at": 1782723429,
          "status": "completed",
          "background": false,
          "billing": {
            "payer": "developer"
          },
          "completed_at": 1782723432,
          "error": null,
          "frequency_penalty": 0.0,
          "incomplete_details": null,
          "instructions": null,
          "max_output_tokens": null,
          "max_tool_calls": null,
          "model": "gpt-5.4-2026-03-05",
          "moderation": null,
          "output": [
            {
              "id": "msg_00f03fecf45867fc016a4233673278819f9dd41af00817d7bb",
              "type": "message",
              "status": "completed",
              "content": [
                {
                  "type": "output_text",
                  "annotations": [],
                  "logprobs": [],
                  "text": "- Why did the statistician bring a ladder to work?  \n  - Because the data had too many high points.\n\n- A statistician drowned crossing a river that was, on average, 3 feet deep.  \n  - Moral: always check the distribution.\n\n- Statisticians do it with significance.  \n  - But only if `p < 0.05`."
                }
              ],
              "phase": "final_answer",
              "role": "assistant"
            }
          ],
          "parallel_tool_calls": true,
          "presence_penalty": 0.0,
          "previous_response_id": null,
          "prompt_cache_key": null,
          "prompt_cache_retention": "24h",
          "reasoning": {
            "context": "current_turn",
            "effort": "none",
            "mode": "standard",
            "summary": null
          },
          "safety_identifier": null,
          "service_tier": "default",
          "store": false,
          "temperature": 1.0,
          "text": {
            "format": {
              "type": "text"
            },
            "verbosity": "medium"
          },
          "tool_choice": "auto",
          "tool_usage": {
            "image_gen": {
              "input_tokens": 0,
              "input_tokens_details": {
                "image_tokens": 0,
                "text_tokens": 0
              },
              "output_tokens": 0,
              "output_tokens_details": {
                "image_tokens": 0,
                "text_tokens": 0
              },
              "total_tokens": 0
            },
            "web_search": {
              "num_requests": 0
            }
          },
          "tools": [],
          "top_logprobs": 0,
          "top_p": 0.98,
          "truncation": "disabled",
          "usage": {
            "input_tokens": 381,
            "input_tokens_details": {
              "cached_tokens": 0
            },
            "output_tokens": 80,
            "output_tokens_details": {
              "reasoning_tokens": 0
            },
            "total_tokens": 461
          },
          "user": null,
          "metadata": {}
        }
  recorded_at: 2026-06-29 08:57:12
recorded_with: VCR-vcr/2.1.0
