ruby_llm-providers-groq 2.0.0.pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +7 -0
  2. data/.flayignore +1 -0
  3. data/.github/workflows/ci.yml +30 -0
  4. data/.github/workflows/gitleaks.yml +22 -0
  5. data/.github/workflows/release.yml +36 -0
  6. data/.overcommit.yml +31 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +29 -0
  9. data/Archspec.rb +14 -0
  10. data/LICENSE +21 -0
  11. data/README.md +57 -0
  12. data/lib/ruby_llm/providers/groq.rb +70 -0
  13. data/models.json +218 -0
  14. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_can_handle_a_multi_turn_conversation.yml +153 -0
  15. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_can_have_a_basic_conversation.yml +75 -0
  16. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_can_use_tools.yml +153 -0
  17. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_returns_structured_output.yml +80 -0
  18. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_returns_the_raw_response.yml +79 -0
  19. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_openai_gpt_oss_120b_supports_streaming_responses.yml +252 -0
  20. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_can_handle_a_multi_turn_conversation.yml +160 -0
  21. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_can_have_a_basic_conversation.yml +77 -0
  22. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_can_use_tools.yml +152 -0
  23. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_returns_structured_output.yml +77 -0
  24. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_returns_the_raw_response.yml +77 -0
  25. data/spec/fixtures/vcr_cassettes/rubyllm_chat_groq_qwen_qwen3_8_27b_supports_streaming_responses.yml +126 -0
  26. data/spec/ruby_llm/chat_schema_spec.rb +30 -0
  27. data/spec/ruby_llm/chat_spec.rb +35 -0
  28. data/spec/ruby_llm/chat_streaming_spec.rb +22 -0
  29. data/spec/ruby_llm/chat_tools_spec.rb +31 -0
  30. data/spec/ruby_llm/embedding_spec.rb +49 -0
  31. data/spec/ruby_llm/image_spec.rb +23 -0
  32. data/spec/ruby_llm/models_spec.rb +11 -0
  33. data/spec/ruby_llm/moderation_spec.rb +22 -0
  34. data/spec/ruby_llm/providers/groq_spec.rb +32 -0
  35. data/spec/ruby_llm/rerank_spec.rb +23 -0
  36. data/spec/ruby_llm/speech_spec.rb +25 -0
  37. data/spec/ruby_llm/video_spec.rb +27 -0
  38. data/spec/spec_helper.rb +26 -0
  39. data/spec/support/models.rb +22 -0
  40. data/spec/support/rubyllm_configuration.rb +14 -0
  41. data/spec/support/vcr_configuration.rb +16 -0
  42. metadata +105 -0
@@ -0,0 +1,153 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.groq.com/openai/v1/responses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"Who
9
+ created the programming language Ruby?"}],"stream":false,"store":false}'
10
+ headers:
11
+ User-Agent:
12
+ - Faraday v2.14.4
13
+ Authorization:
14
+ - Bearer <AUTH_TOKEN>
15
+ Content-Type:
16
+ - application/json
17
+ Accept-Encoding:
18
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
19
+ Accept:
20
+ - "*/*"
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Date:
27
+ - Wed, 07 Oct 2026 16:48:56 GMT
28
+ Content-Type:
29
+ - application/json
30
+ Transfer-Encoding:
31
+ - chunked
32
+ Connection:
33
+ - keep-alive
34
+ Cache-Control:
35
+ - private, max-age=0, no-store, no-cache, must-revalidate
36
+ Server:
37
+ - cloudflare
38
+ Vary:
39
+ - Origin
40
+ X-Groq-Region:
41
+ - dls
42
+ X-Ratelimit-Limit-Requests:
43
+ - '1000'
44
+ X-Ratelimit-Limit-Tokens:
45
+ - '8000'
46
+ X-Ratelimit-Remaining-Requests:
47
+ - '993'
48
+ X-Ratelimit-Remaining-Tokens:
49
+ - '7232'
50
+ X-Ratelimit-Reset-Requests:
51
+ - 10m4.8s
52
+ X-Ratelimit-Reset-Tokens:
53
+ - 5.76s
54
+ X-Request-Id:
55
+ - req_01m4bm98h5e7wagy3m0spj64fs
56
+ Via:
57
+ - 1.1 google
58
+ Alt-Svc:
59
+ - h3=":443"; ma=86400
60
+ Cf-Cache-Status:
61
+ - DYNAMIC
62
+ Set-Cookie:
63
+ - __cf_bm=Xt7xTHUsTy4KZNZ.2ZP4MkygCap.ZB7ttt5vez1jckk-1791391736.2727015-1.0.1.1-2GLEOd60LhQGJEUluLltC.D8aUMOsiBmIoUojEGa2cgskxvNscPY1VDmEa7oyWJpgDfPcixPLmsLneV_HF9gcdsyBALA3E8rHx.wUOMTMA8fqr7pm5QMxXyT1x.DK2FQ;
64
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
65
+ Oct 2026 17:18:56 GMT
66
+ Strict-Transport-Security:
67
+ - max-age=15552000
68
+ Cf-Ray:
69
+ - a46e656fb8a0817b-HEL
70
+ body:
71
+ encoding: ASCII-8BIT
72
+ string: !binary |-
73
+ eyJpZCI6InJlc3BfMDFtNGJtOTkwY2U2ZmI3Y3M0OW53YW1manoiLCJvYmplY3QiOiJyZXNwb25zZSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNyZWF0ZWRfYXQiOjE3OTEzOTE3MzYsIm91dHB1dCI6W3sidHlwZSI6InJlYXNvbmluZyIsImlkIjoicmVzcF8wMW00Ym05OTBjZTZmcjlkZTVrYjFmZTJlMyIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNvbnRlbnQiOlt7InR5cGUiOiJyZWFzb25pbmdfdGV4dCIsInRleHQiOiJUaGUgdXNlciBhc2tzIFwiV2hvIGNyZWF0ZWQgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlIFJ1Ynk/XCIgVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBmYWN0dWFsIHF1ZXN0aW9uLiBQcm92aWRlIGFuc3dlcjogUnVieSB3YXMgY3JlYXRlZCBieSBZdWtpaGlybyBNYXRzdW1vdG8sIGFsc28ga25vd24gYXMgTWF0eiwgaW4gMTk5NSwgcmVsZWFzZWQgMTk5NSwgZXRjLiBQcm92aWRlIHNvbWUgY29udGV4dC4ifV0sInN1bW1hcnkiOltdfSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJtc2dfMDFtNGJtOTkwY2U2Zzg3azA1N2ZlNXFhZXciLCJzdGF0dXMiOiJjb21wbGV0ZWQiLCJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6Im91dHB1dF90ZXh0IiwidGV4dCI6IlJ1Ynkgd2FzIGNyZWF0ZWQgYnkgKipZdWtpaGlyb+KAr01hdHN1bW90byoqLCBhIEphcGFuZXNlIGNvbXB1dGVyIHNjaWVudGlzdCB3aG8gaXMgY29tbW9ubHkga25vd24gYnkgaGlzIG5pY2tuYW1lICoq4oCcTWF0ei7igJ0qKiBIZSBiZWdhbiBkZXZlbG9waW5nIFJ1YnkgaW4gMTk5MyBhbmQgcmVsZWFzZWQgdGhlIGZpcnN0IHB1YmxpYyB2ZXJzaW9uICgwLjk1KSBpbiBEZWNlbWJlcuKArzE5OTUuIE1hdHN1bW90byBkZXNpZ25lZCBSdWJ5IHRvIGJlIGEgc2ltcGxlLCBleHByZXNzaXZlLCBhbmQgb2JqZWN04oCRb3JpZW50ZWQgbGFuZ3VhZ2UgdGhhdCBlbXBoYXNpemVzIHByb2dyYW1tZXIgaGFwcGluZXNzLiIsImFubm90YXRpb25zIjpbXSwibG9ncHJvYnMiOm51bGx9XX1dLCJwcmV2aW91c19yZXNwb25zZV9pZCI6bnVsbCwibW9kZWwiOiJvcGVuYWkvZ3B0LW9zcy0xMjBiIiwicmVhc29uaW5nIjp7ImVmZm9ydCI6Im1lZGl1bSJ9LCJtYXhfb3V0cHV0X3Rva2VucyI6bnVsbCwidGV4dCI6eyJmb3JtYXQiOnsidHlwZSI6InRleHQifX0sInRvb2xzIjpbXSwidG9vbF9jaG9pY2UiOiJhdXRvIiwidHJ1bmNhdGlvbiI6ImRpc2FibGVkIiwibWV0YWRhdGEiOnt9LCJncm9xIjpudWxsLCJ0ZW1wZXJhdHVyZSI6MSwidG9wX3AiOjEsInVzZXIiOm51bGwsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJiYWNrZ3JvdW5kIjpmYWxzZSwiZXJyb3IiOm51bGwsImluY29tcGxldGVfZGV0YWlscyI6bnVsbCwidXNhZ2UiOnsiaW5wdXRfdG9rZW5zIjo3OCwiaW5wdXRfdG9rZW5zX2RldGFpbHMiOnsiY2FjaGVkX3Rva2VucyI6MH0sIm91dHB1dF90b2tlbnMiOjE0NCwib3V0cHV0X3Rva2Vuc19kZXRhaWxzIjp7InJlYXNvbmluZ190b2tlbnMiOjU1fSwidG90YWxfdG9rZW5zIjoyMjJ9LCJwYXJhbGxlbF90b29sX2NhbGxzIjp0cnVlLCJzdG9yZSI6ZmFsc2UsInRvcF9sb2dwcm9icyI6bnVsbCwibWF4X3Rvb2xfY2FsbHMiOm51bGx9Cg==
74
+ recorded_at: Wed, 07 Oct 2026 16:48:56 GMT
75
+ - request:
76
+ method: post
77
+ uri: https://api.groq.com/openai/v1/responses
78
+ body:
79
+ encoding: UTF-8
80
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"Who
81
+ created the programming language Ruby?"},{"role":"assistant","content":[{"type":"input_text","text":"Ruby
82
+ was created by **Yukihiro Matsumoto**, a Japanese computer scientist who is
83
+ commonly known by his nickname **“Matz.”** He began developing Ruby in 1993
84
+ and released the first public version (0.95) in December 1995. Matsumoto designed
85
+ Ruby to be a simple, expressive, and object‑oriented language that emphasizes
86
+ programmer happiness."}]},{"role":"user","content":"What year was Ruby first
87
+ released?"}],"stream":false,"store":false}'
88
+ headers:
89
+ User-Agent:
90
+ - Faraday v2.14.4
91
+ Authorization:
92
+ - Bearer <AUTH_TOKEN>
93
+ Content-Type:
94
+ - application/json
95
+ Accept-Encoding:
96
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
97
+ Accept:
98
+ - "*/*"
99
+ response:
100
+ status:
101
+ code: 200
102
+ message: OK
103
+ headers:
104
+ Date:
105
+ - Wed, 07 Oct 2026 16:48:57 GMT
106
+ Content-Type:
107
+ - application/json
108
+ Transfer-Encoding:
109
+ - chunked
110
+ Connection:
111
+ - keep-alive
112
+ Cache-Control:
113
+ - private, max-age=0, no-store, no-cache, must-revalidate
114
+ Server:
115
+ - cloudflare
116
+ Vary:
117
+ - Origin
118
+ X-Groq-Region:
119
+ - dls
120
+ X-Ratelimit-Limit-Requests:
121
+ - '1000'
122
+ X-Ratelimit-Limit-Tokens:
123
+ - '8000'
124
+ X-Ratelimit-Remaining-Requests:
125
+ - '992'
126
+ X-Ratelimit-Remaining-Tokens:
127
+ - '7045'
128
+ X-Ratelimit-Reset-Requests:
129
+ - 11m31.2s
130
+ X-Ratelimit-Reset-Tokens:
131
+ - 7.162s
132
+ X-Request-Id:
133
+ - req_01m4bm998se2wsfpjm5yd9jnhw
134
+ Via:
135
+ - 1.1 google
136
+ Alt-Svc:
137
+ - h3=":443"; ma=86400
138
+ Cf-Cache-Status:
139
+ - DYNAMIC
140
+ Set-Cookie:
141
+ - __cf_bm=xgFKuT8TtBcpaoGA_9xd6VzfPq32OiPfoPrQObiVDWM-1791391737.027779-1.0.1.1-ghY.T660RcusjkwVecwPUMDHmlvhnqfX4Xw4soXye4K30PRJg.gc7U_Rg6wwjysKd2xhhVVB297sc.xdicnsQKVcOVNfZL2G603DvabY__Cumzrz3UiApmhOJZLLzDwD;
142
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
143
+ Oct 2026 17:18:57 GMT
144
+ Strict-Transport-Security:
145
+ - max-age=15552000
146
+ Cf-Ray:
147
+ - a46e657468ca6e6a-HEL
148
+ body:
149
+ encoding: ASCII-8BIT
150
+ string: !binary |-
151
+ eyJpZCI6InJlc3BfMDFtNGJtOTloaGUzOGE3OTkxcTJnZGhxOXYiLCJvYmplY3QiOiJyZXNwb25zZSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNyZWF0ZWRfYXQiOjE3OTEzOTE3MzcsIm91dHB1dCI6W3sidHlwZSI6InJlYXNvbmluZyIsImlkIjoicmVzcF8wMW00Ym05OWhoZTM4dHhyNzB2dnYyOTVxOSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNvbnRlbnQiOlt7InR5cGUiOiJyZWFzb25pbmdfdGV4dCIsInRleHQiOiJVc2VyIGFza3M6IFwiV2hhdCB5ZWFyIHdhcyBSdWJ5IGZpcnN0IHJlbGVhc2VkP1wiIFByb3ZpZGUgYW5zd2VyOiAxOTk1LiBNZW50aW9uIGZpcnN0IHB1YmxpYyByZWxlYXNlIDAuOTUgRGVjZW1iZXIgMTk5NS4gUHJvdmlkZSBjb25jaXNlIGFuc3dlci4ifV0sInN1bW1hcnkiOltdfSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJtc2dfMDFtNGJtOTloaGUzOTh5NWdldDdtOXBmYzQiLCJzdGF0dXMiOiJjb21wbGV0ZWQiLCJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6Im91dHB1dF90ZXh0IiwidGV4dCI6IlJ1YnnigJlzIGZpcnN0IHB1YmxpYyByZWxlYXNlICh2ZXJzaW9u4oCvMC45NSkgY2FtZSBvdXQgaW4gKioxOTk1KiogKERlY2VtYmVy4oCvMTk5NSkuIiwiYW5ub3RhdGlvbnMiOltdLCJsb2dwcm9icyI6bnVsbH1dfV0sInByZXZpb3VzX3Jlc3BvbnNlX2lkIjpudWxsLCJtb2RlbCI6Im9wZW5haS9ncHQtb3NzLTEyMGIiLCJyZWFzb25pbmciOnsiZWZmb3J0IjoibWVkaXVtIn0sIm1heF9vdXRwdXRfdG9rZW5zIjpudWxsLCJ0ZXh0Ijp7ImZvcm1hdCI6eyJ0eXBlIjoidGV4dCJ9fSwidG9vbHMiOltdLCJ0b29sX2Nob2ljZSI6ImF1dG8iLCJ0cnVuY2F0aW9uIjoiZGlzYWJsZWQiLCJtZXRhZGF0YSI6e30sImdyb3EiOm51bGwsInRlbXBlcmF0dXJlIjoxLCJ0b3BfcCI6MSwidXNlciI6bnVsbCwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsImJhY2tncm91bmQiOmZhbHNlLCJlcnJvciI6bnVsbCwiaW5jb21wbGV0ZV9kZXRhaWxzIjpudWxsLCJ1c2FnZSI6eyJpbnB1dF90b2tlbnMiOjE3NSwiaW5wdXRfdG9rZW5zX2RldGFpbHMiOnsiY2FjaGVkX3Rva2VucyI6MH0sIm91dHB1dF90b2tlbnMiOjcwLCJvdXRwdXRfdG9rZW5zX2RldGFpbHMiOnsicmVhc29uaW5nX3Rva2VucyI6MzZ9LCJ0b3RhbF90b2tlbnMiOjI0NX0sInBhcmFsbGVsX3Rvb2xfY2FsbHMiOnRydWUsInN0b3JlIjpmYWxzZSwidG9wX2xvZ3Byb2JzIjpudWxsLCJtYXhfdG9vbF9jYWxscyI6bnVsbH0K
152
+ recorded_at: Wed, 07 Oct 2026 16:48:57 GMT
153
+ recorded_with: VCR 6.4.0
@@ -0,0 +1,75 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.groq.com/openai/v1/responses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"What''s
9
+ 2 + 2?"}],"stream":false,"store":false}'
10
+ headers:
11
+ User-Agent:
12
+ - Faraday v2.14.4
13
+ Authorization:
14
+ - Bearer <AUTH_TOKEN>
15
+ Content-Type:
16
+ - application/json
17
+ Accept-Encoding:
18
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
19
+ Accept:
20
+ - "*/*"
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Date:
27
+ - Wed, 07 Oct 2026 16:48:58 GMT
28
+ Content-Type:
29
+ - application/json
30
+ Transfer-Encoding:
31
+ - chunked
32
+ Connection:
33
+ - keep-alive
34
+ Cache-Control:
35
+ - private, max-age=0, no-store, no-cache, must-revalidate
36
+ Server:
37
+ - cloudflare
38
+ Vary:
39
+ - Origin
40
+ X-Groq-Region:
41
+ - dls
42
+ X-Ratelimit-Limit-Requests:
43
+ - '1000'
44
+ X-Ratelimit-Limit-Tokens:
45
+ - '8000'
46
+ X-Ratelimit-Remaining-Requests:
47
+ - '991'
48
+ X-Ratelimit-Remaining-Tokens:
49
+ - '7059'
50
+ X-Ratelimit-Reset-Requests:
51
+ - 12m57.599s
52
+ X-Ratelimit-Reset-Tokens:
53
+ - 7.057s
54
+ X-Request-Id:
55
+ - req_01m4bm9a9te59sjwgrt110h87a
56
+ Via:
57
+ - 1.1 google
58
+ Alt-Svc:
59
+ - h3=":443"; ma=86400
60
+ Cf-Cache-Status:
61
+ - DYNAMIC
62
+ Set-Cookie:
63
+ - __cf_bm=3obVUtIJrpx.PgHjXCHGW1YtjUe0RYPd.5nlZO_kxvU-1791391738.0848591-1.0.1.1-kYzXuB2Ok80M655dREPs0EcEqqqXoW8qzkcmJ3OyD5nQwF5E825XnN61gLzombGFM6jSnfSsabBL56jxUqjiHKSFn1OZu0ZB9Kx0FwASGRD8w4lcB5yg25WsLhYT694A;
64
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
65
+ Oct 2026 17:18:58 GMT
66
+ Strict-Transport-Security:
67
+ - max-age=15552000
68
+ Cf-Ray:
69
+ - a46e657b0db17c3b-HEL
70
+ body:
71
+ encoding: ASCII-8BIT
72
+ string: !binary |-
73
+ eyJpZCI6InJlc3BfMDFtNGJtOWFkbmViZmE2YTR6OHFyM3k1cnMiLCJvYmplY3QiOiJyZXNwb25zZSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNyZWF0ZWRfYXQiOjE3OTEzOTE3MzgsIm91dHB1dCI6W3sidHlwZSI6InJlYXNvbmluZyIsImlkIjoicmVzcF8wMW00Ym05YWRuZWJmdGJoYTUxZnl6M3BzMCIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNvbnRlbnQiOlt7InR5cGUiOiJyZWFzb25pbmdfdGV4dCIsInRleHQiOiJVc2VyIGFza3Mgc2ltcGxlIG1hdGguIFByb3ZpZGUgYW5zd2VyLiJ9XSwic3VtbWFyeSI6W119LHsidHlwZSI6Im1lc3NhZ2UiLCJpZCI6Im1zZ18wMW00Ym05YWRuZWJnODdoc2V3Mm5nMXR6eCIsInN0YXR1cyI6ImNvbXBsZXRlZCIsInJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjpbeyJ0eXBlIjoib3V0cHV0X3RleHQiLCJ0ZXh0IjoiMuKAryvigK8y4oCvPeKArzQuIiwiYW5ub3RhdGlvbnMiOltdLCJsb2dwcm9icyI6bnVsbH1dfV0sInByZXZpb3VzX3Jlc3BvbnNlX2lkIjpudWxsLCJtb2RlbCI6Im9wZW5haS9ncHQtb3NzLTEyMGIiLCJyZWFzb25pbmciOnsiZWZmb3J0IjoibWVkaXVtIn0sIm1heF9vdXRwdXRfdG9rZW5zIjpudWxsLCJ0ZXh0Ijp7ImZvcm1hdCI6eyJ0eXBlIjoidGV4dCJ9fSwidG9vbHMiOltdLCJ0b29sX2Nob2ljZSI6ImF1dG8iLCJ0cnVuY2F0aW9uIjoiZGlzYWJsZWQiLCJtZXRhZGF0YSI6e30sImdyb3EiOm51bGwsInRlbXBlcmF0dXJlIjoxLCJ0b3BfcCI6MSwidXNlciI6bnVsbCwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsImJhY2tncm91bmQiOmZhbHNlLCJlcnJvciI6bnVsbCwiaW5jb21wbGV0ZV9kZXRhaWxzIjpudWxsLCJ1c2FnZSI6eyJpbnB1dF90b2tlbnMiOjc4LCJpbnB1dF90b2tlbnNfZGV0YWlscyI6eyJjYWNoZWRfdG9rZW5zIjowfSwib3V0cHV0X3Rva2VucyI6MjgsIm91dHB1dF90b2tlbnNfZGV0YWlscyI6eyJyZWFzb25pbmdfdG9rZW5zIjo5fSwidG90YWxfdG9rZW5zIjoxMDZ9LCJwYXJhbGxlbF90b29sX2NhbGxzIjp0cnVlLCJzdG9yZSI6ZmFsc2UsInRvcF9sb2dwcm9icyI6bnVsbCwibWF4X3Rvb2xfY2FsbHMiOm51bGx9Cg==
74
+ recorded_at: Wed, 07 Oct 2026 16:48:58 GMT
75
+ recorded_with: VCR 6.4.0
@@ -0,0 +1,153 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.groq.com/openai/v1/responses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"What''s
9
+ the weather in Berlin? Use 52.5200, 13.4050."}],"stream":false,"store":false,"tools":[{"type":"function","name":"weather","description":"Gets
10
+ current weather for a location","parameters":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}},"required":["latitude","longitude"],"additionalProperties":false,"strict":true},"strict":false}]}'
11
+ headers:
12
+ User-Agent:
13
+ - Faraday v2.14.4
14
+ Authorization:
15
+ - Bearer <AUTH_TOKEN>
16
+ Content-Type:
17
+ - application/json
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ Accept:
21
+ - "*/*"
22
+ response:
23
+ status:
24
+ code: 200
25
+ message: OK
26
+ headers:
27
+ Date:
28
+ - Wed, 07 Oct 2026 16:49:00 GMT
29
+ Content-Type:
30
+ - application/json
31
+ Transfer-Encoding:
32
+ - chunked
33
+ Connection:
34
+ - keep-alive
35
+ Cache-Control:
36
+ - private, max-age=0, no-store, no-cache, must-revalidate
37
+ Server:
38
+ - cloudflare
39
+ Vary:
40
+ - Origin
41
+ X-Groq-Region:
42
+ - dls
43
+ X-Ratelimit-Limit-Requests:
44
+ - '1000'
45
+ X-Ratelimit-Limit-Tokens:
46
+ - '8000'
47
+ X-Ratelimit-Remaining-Requests:
48
+ - '990'
49
+ X-Ratelimit-Remaining-Tokens:
50
+ - '7059'
51
+ X-Ratelimit-Reset-Requests:
52
+ - 14m24s
53
+ X-Ratelimit-Reset-Tokens:
54
+ - 7.057s
55
+ X-Request-Id:
56
+ - req_01m4bm9c0te488wb5pam99ztks
57
+ Via:
58
+ - 1.1 google
59
+ Alt-Svc:
60
+ - h3=":443"; ma=86400
61
+ Cf-Cache-Status:
62
+ - DYNAMIC
63
+ Set-Cookie:
64
+ - __cf_bm=MjoFml5SgykWCDISiGMnUF.JsV8s3iEJgsqtjFlKH_o-1791391739.8451312-1.0.1.1-eSV6mf1jS.w3j0xabsvzBsWjLoIpDAiwuV2MsBcfp90sAYDL.SZnn.2LB9xMFJGW_o..eyLR1gu4RGtsrxHuIPyBswArOOmplgj_uKi36rAdBoWSUweURLRxCH5.sZhH;
65
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
66
+ Oct 2026 17:19:00 GMT
67
+ Strict-Transport-Security:
68
+ - max-age=15552000
69
+ Cf-Ray:
70
+ - a46e65860de04bc8-HEL
71
+ body:
72
+ encoding: ASCII-8BIT
73
+ string: '{"id":"resp_01m4bm9ccbey7rs6a6vj82etrq","object":"response","status":"completed","created_at":1791391740,"output":[{"type":"reasoning","id":"resp_01m4bm9ccbey88sccs9ekvmpvp","status":"completed","content":[{"type":"reasoning_text","text":"We
74
+ need to get weather for Berlin coordinates. Use function weather."}],"summary":[]},{"type":"function_call","id":"fc_c71719a7-da70-4ddb-800e-b30a3141f55d","status":"completed","call_id":"fc_c71719a7-da70-4ddb-800e-b30a3141f55d","name":"weather","arguments":"{\"latitude\":\"52.5200\",\"longitude\":\"13.4050\"}"}],"previous_response_id":null,"model":"openai/gpt-oss-120b","reasoning":{"effort":"medium"},"max_output_tokens":null,"text":{"format":{"type":"text"}},"tools":[{"type":"function","name":"weather","description":"Gets
75
+ current weather for a location","parameters":{"additionalProperties":false,"properties":{"latitude":{"description":"Latitude","type":"string"},"longitude":{"description":"Longitude","type":"string"}},"required":["latitude","longitude"],"strict":true,"type":"object"},"strict":false}],"tool_choice":"auto","truncation":"disabled","metadata":{},"groq":null,"temperature":1,"top_p":1,"user":null,"service_tier":"default","background":false,"error":null,"incomplete_details":null,"usage":{"input_tokens":152,"input_tokens_details":{"cached_tokens":0},"output_tokens":53,"output_tokens_details":{"reasoning_tokens":14},"total_tokens":205},"parallel_tool_calls":true,"store":false,"top_logprobs":null,"max_tool_calls":null}
76
+
77
+ '
78
+ recorded_at: Wed, 07 Oct 2026 16:49:00 GMT
79
+ - request:
80
+ method: post
81
+ uri: https://api.groq.com/openai/v1/responses
82
+ body:
83
+ encoding: UTF-8
84
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"What''s
85
+ the weather in Berlin? Use 52.5200, 13.4050."},{"type":"function_call","call_id":"fc_c71719a7-da70-4ddb-800e-b30a3141f55d","name":"weather","arguments":"{\"latitude\":\"52.5200\",\"longitude\":\"13.4050\"}"},{"type":"function_call_output","call_id":"fc_c71719a7-da70-4ddb-800e-b30a3141f55d","output":"Current
86
+ weather at 52.5200, 13.4050: 15°C, Wind: 10 km/h"}],"stream":false,"store":false,"tools":[{"type":"function","name":"weather","description":"Gets
87
+ current weather for a location","parameters":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}},"required":["latitude","longitude"],"additionalProperties":false,"strict":true},"strict":false}]}'
88
+ headers:
89
+ User-Agent:
90
+ - Faraday v2.14.4
91
+ Authorization:
92
+ - Bearer <AUTH_TOKEN>
93
+ Content-Type:
94
+ - application/json
95
+ Accept-Encoding:
96
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
97
+ Accept:
98
+ - "*/*"
99
+ response:
100
+ status:
101
+ code: 200
102
+ message: OK
103
+ headers:
104
+ Date:
105
+ - Wed, 07 Oct 2026 16:49:01 GMT
106
+ Content-Type:
107
+ - application/json
108
+ Transfer-Encoding:
109
+ - chunked
110
+ Connection:
111
+ - keep-alive
112
+ Cache-Control:
113
+ - private, max-age=0, no-store, no-cache, must-revalidate
114
+ Server:
115
+ - cloudflare
116
+ Vary:
117
+ - Origin
118
+ X-Groq-Region:
119
+ - dls
120
+ X-Ratelimit-Limit-Requests:
121
+ - '1000'
122
+ X-Ratelimit-Limit-Tokens:
123
+ - '8000'
124
+ X-Ratelimit-Remaining-Requests:
125
+ - '989'
126
+ X-Ratelimit-Remaining-Tokens:
127
+ - '7241'
128
+ X-Ratelimit-Reset-Requests:
129
+ - 15m50.4s
130
+ X-Ratelimit-Reset-Tokens:
131
+ - 5.692s
132
+ X-Request-Id:
133
+ - req_01m4bm9cnpem6r9wrvzcyd48ya
134
+ Via:
135
+ - 1.1 google
136
+ Alt-Svc:
137
+ - h3=":443"; ma=86400
138
+ Cf-Cache-Status:
139
+ - DYNAMIC
140
+ Set-Cookie:
141
+ - __cf_bm=vz5C91ZHvT1aqHaeD3HIuW3xTshGCgHAGC03QnVCOoo-1791391740.5140505-1.0.1.1-Csp09NpjizXneABo7I5cjIHIChlJ1YQYxLJehmMTs7anTzcgKZuQOSg0XcF83nOm0WG2i2X15sLhZELfImkeKSnedKsUUyHOprisp_3AljjKS3cVIS0OTxIfT0F7Lkxd;
142
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
143
+ Oct 2026 17:19:01 GMT
144
+ Strict-Transport-Security:
145
+ - max-age=15552000
146
+ Cf-Ray:
147
+ - a46e658a3f8bdfb1-HEL
148
+ body:
149
+ encoding: ASCII-8BIT
150
+ string: !binary |-
151
+ eyJpZCI6InJlc3BfMDFtNGJtOWQyMGU0MnRxNDc2NDUxMTg1NmQiLCJvYmplY3QiOiJyZXNwb25zZSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNyZWF0ZWRfYXQiOjE3OTEzOTE3NDAsIm91dHB1dCI6W3sidHlwZSI6InJlYXNvbmluZyIsImlkIjoicmVzcF8wMW00Ym05ZDIwZTQzYTVkNzV3dzM3ZWhycSIsInN0YXR1cyI6ImNvbXBsZXRlZCIsImNvbnRlbnQiOlt7InR5cGUiOiJyZWFzb25pbmdfdGV4dCIsInRleHQiOiJUaGUgdXNlciBhc2tlZCBcIldoYXQncyB0aGUgd2VhdGhlciBpbiBCZXJsaW4/IFVzZSA1Mi41MjAwLCAxMy40MDUwLlwiIFdlIGhhdmUgb2J0YWluZWQgd2VhdGhlcjogMTXCsEMsIHdpbmQgMTAga20vaC4gTmVlZCB0byBwcmVzZW50IGFuc3dlci4ifV0sInN1bW1hcnkiOltdfSx7InR5cGUiOiJtZXNzYWdlIiwiaWQiOiJtc2dfMDFtNGJtOWQyMGU0M3Ntc21yd2p0cnF2NG4iLCJzdGF0dXMiOiJjb21wbGV0ZWQiLCJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6W3sidHlwZSI6Im91dHB1dF90ZXh0IiwidGV4dCI6IlRoZSBjdXJyZW50IHdlYXRoZXIgaW4gQmVybGluIChjb29yZGluYXRlc+KArzUyLjUyMDDigK9OLOKArzEzLjQwNTDigK9FKSBpczpcblxuLSAqKlRlbXBlcmF0dXJlOioq4oCvMTXigK/CsEMgIFxuLSAqKldpbmQ6KirigK8xMOKAr2ttL2ggIFxuXG5MZXQgbWUga25vdyBpZiB5b3XigJlkIGxpa2UgYSBmb3JlY2FzdCwgZGV0YWlscyBvbiBodW1pZGl0eSwgcHJlY2lwaXRhdGlvbiwgb3IgYW55dGhpbmcgZWxzZSEiLCJhbm5vdGF0aW9ucyI6W10sImxvZ3Byb2JzIjpudWxsfV19XSwicHJldmlvdXNfcmVzcG9uc2VfaWQiOm51bGwsIm1vZGVsIjoib3BlbmFpL2dwdC1vc3MtMTIwYiIsInJlYXNvbmluZyI6eyJlZmZvcnQiOiJtZWRpdW0ifSwibWF4X291dHB1dF90b2tlbnMiOm51bGwsInRleHQiOnsiZm9ybWF0Ijp7InR5cGUiOiJ0ZXh0In19LCJ0b29scyI6W3sidHlwZSI6ImZ1bmN0aW9uIiwibmFtZSI6IndlYXRoZXIiLCJkZXNjcmlwdGlvbiI6IkdldHMgY3VycmVudCB3ZWF0aGVyIGZvciBhIGxvY2F0aW9uIiwicGFyYW1ldGVycyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6ZmFsc2UsInByb3BlcnRpZXMiOnsibGF0aXR1ZGUiOnsiZGVzY3JpcHRpb24iOiJMYXRpdHVkZSIsInR5cGUiOiJzdHJpbmcifSwibG9uZ2l0dWRlIjp7ImRlc2NyaXB0aW9uIjoiTG9uZ2l0dWRlIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibGF0aXR1ZGUiLCJsb25naXR1ZGUiXSwic3RyaWN0Ijp0cnVlLCJ0eXBlIjoib2JqZWN0In0sInN0cmljdCI6ZmFsc2V9XSwidG9vbF9jaG9pY2UiOiJhdXRvIiwidHJ1bmNhdGlvbiI6ImRpc2FibGVkIiwibWV0YWRhdGEiOnt9LCJncm9xIjpudWxsLCJ0ZW1wZXJhdHVyZSI6MSwidG9wX3AiOjEsInVzZXIiOm51bGwsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJiYWNrZ3JvdW5kIjpmYWxzZSwiZXJyb3IiOm51bGwsImluY29tcGxldGVfZGV0YWlscyI6bnVsbCwidXNhZ2UiOnsiaW5wdXRfdG9rZW5zIjoyMTAsImlucHV0X3Rva2Vuc19kZXRhaWxzIjp7ImNhY2hlZF90b2tlbnMiOjB9LCJvdXRwdXRfdG9rZW5zIjoxMTcsIm91dHB1dF90b2tlbnNfZGV0YWlscyI6eyJyZWFzb25pbmdfdG9rZW5zIjo0NH0sInRvdGFsX3Rva2VucyI6MzI3fSwicGFyYWxsZWxfdG9vbF9jYWxscyI6dHJ1ZSwic3RvcmUiOmZhbHNlLCJ0b3BfbG9ncHJvYnMiOm51bGwsIm1heF90b29sX2NhbGxzIjpudWxsfQo=
152
+ recorded_at: Wed, 07 Oct 2026 16:49:01 GMT
153
+ recorded_with: VCR 6.4.0
@@ -0,0 +1,80 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.groq.com/openai/v1/responses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"Generate
9
+ a person named John who is 30 years old"}],"stream":false,"store":false,"text":{"format":{"type":"json_schema","name":"response","schema":{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"integer"}},"required":["name","age"],"additionalProperties":false},"strict":true}}}'
10
+ headers:
11
+ User-Agent:
12
+ - Faraday v2.14.4
13
+ Authorization:
14
+ - Bearer <AUTH_TOKEN>
15
+ Content-Type:
16
+ - application/json
17
+ Accept-Encoding:
18
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
19
+ Accept:
20
+ - "*/*"
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Date:
27
+ - Wed, 07 Oct 2026 16:48:52 GMT
28
+ Content-Type:
29
+ - application/json
30
+ Transfer-Encoding:
31
+ - chunked
32
+ Connection:
33
+ - keep-alive
34
+ Cache-Control:
35
+ - private, max-age=0, no-store, no-cache, must-revalidate
36
+ Server:
37
+ - cloudflare
38
+ Vary:
39
+ - Origin
40
+ X-Groq-Region:
41
+ - dls
42
+ X-Ratelimit-Limit-Requests:
43
+ - '1000'
44
+ X-Ratelimit-Limit-Tokens:
45
+ - '8000'
46
+ X-Ratelimit-Remaining-Requests:
47
+ - '996'
48
+ X-Ratelimit-Remaining-Tokens:
49
+ - '7463'
50
+ X-Ratelimit-Reset-Requests:
51
+ - 5m45.6s
52
+ X-Ratelimit-Reset-Tokens:
53
+ - 4.027s
54
+ X-Request-Id:
55
+ - req_01m4bm94t9eke8yh0ygg4pkq0e
56
+ Via:
57
+ - 1.1 google
58
+ Alt-Svc:
59
+ - h3=":443"; ma=86400
60
+ Cf-Cache-Status:
61
+ - DYNAMIC
62
+ Set-Cookie:
63
+ - __cf_bm=cuJMxEtP9ArHCy9eXwfvI_esm3dB3EBTqY5qjESpHvY-1791391732.4687557-1.0.1.1-XLq9aeoM47MAxzeaTv.ndWQlGQZU5dCTbVGm7WSkvsRz4O_bSk2t1_Vb77qrNvswnrlje2_0oP73eqp9zlooGRSNuG4qFn2WL_tGJe6R2P_3S6tDmJkjHlp2eOXMqj9u;
64
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
65
+ Oct 2026 17:18:52 GMT
66
+ Strict-Transport-Security:
67
+ - max-age=15552000
68
+ Cf-Ray:
69
+ - a46e6557ecc27d5e-HEL
70
+ body:
71
+ encoding: ASCII-8BIT
72
+ string: '{"id":"resp_01m4bm9548enj8dfc9r41rgc2r","object":"response","status":"completed","created_at":1791391732,"output":[{"type":"reasoning","id":"resp_01m4bm9548enjr06tddanqhaaw","status":"completed","content":[{"type":"reasoning_text","text":"We
73
+ need to output JSON matching the schema given in the response format. The
74
+ schema: object with properties name (string) and age (integer), required both.
75
+ No additionalProperties. So output: {\"name\":\"John\",\"age\":30}. Must be
76
+ compact. Also ensure it''s valid JSON. So final answer just that JSON."}],"summary":[]},{"type":"message","id":"msg_01m4bm9548enkbm8ah3temy55d","status":"completed","role":"assistant","content":[{"type":"output_text","text":"{\"name\":\"John\",\"age\":30}","annotations":[],"logprobs":null}]}],"previous_response_id":null,"model":"openai/gpt-oss-120b","reasoning":{"effort":"medium"},"max_output_tokens":null,"text":{"format":{"type":"json_schema","name":"response","schema":{"additionalProperties":false,"properties":{"age":{"type":"integer"},"name":{"type":"string"}},"required":["name","age"],"type":"object"},"strict":true}},"tools":[],"tool_choice":"auto","truncation":"disabled","metadata":{},"groq":null,"temperature":1,"top_p":1,"user":null,"service_tier":"default","background":false,"error":null,"incomplete_details":null,"usage":{"input_tokens":173,"input_tokens_details":{"cached_tokens":0},"output_tokens":87,"output_tokens_details":{"reasoning_tokens":66},"total_tokens":260},"parallel_tool_calls":true,"store":false,"top_logprobs":null,"max_tool_calls":null}
77
+
78
+ '
79
+ recorded_at: Wed, 07 Oct 2026 16:48:53 GMT
80
+ recorded_with: VCR 6.4.0
@@ -0,0 +1,79 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://api.groq.com/openai/v1/responses
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-oss-120b","input":[{"role":"user","content":"What
9
+ is the capital of France?"}],"stream":false,"store":false}'
10
+ headers:
11
+ User-Agent:
12
+ - Faraday v2.14.4
13
+ Authorization:
14
+ - Bearer <AUTH_TOKEN>
15
+ Content-Type:
16
+ - application/json
17
+ Accept-Encoding:
18
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
19
+ Accept:
20
+ - "*/*"
21
+ response:
22
+ status:
23
+ code: 200
24
+ message: OK
25
+ headers:
26
+ Date:
27
+ - Wed, 07 Oct 2026 16:48:55 GMT
28
+ Content-Type:
29
+ - application/json
30
+ Transfer-Encoding:
31
+ - chunked
32
+ Connection:
33
+ - keep-alive
34
+ Cache-Control:
35
+ - private, max-age=0, no-store, no-cache, must-revalidate
36
+ Server:
37
+ - cloudflare
38
+ Vary:
39
+ - Origin
40
+ X-Groq-Region:
41
+ - dls
42
+ X-Ratelimit-Limit-Requests:
43
+ - '1000'
44
+ X-Ratelimit-Limit-Tokens:
45
+ - '8000'
46
+ X-Ratelimit-Remaining-Requests:
47
+ - '994'
48
+ X-Ratelimit-Remaining-Tokens:
49
+ - '7168'
50
+ X-Ratelimit-Reset-Requests:
51
+ - 8m38.4s
52
+ X-Ratelimit-Reset-Tokens:
53
+ - 6.239s
54
+ X-Request-Id:
55
+ - req_01m4bm96zeedbtqd6qmwvn39y8
56
+ Via:
57
+ - 1.1 google
58
+ Alt-Svc:
59
+ - h3=":443"; ma=86400
60
+ Cf-Cache-Status:
61
+ - DYNAMIC
62
+ Set-Cookie:
63
+ - __cf_bm=nEHNif1thKX8.V7kBv3UFyL7eOMknOlvZf9eVGNemyQ-1791391734.6672235-1.0.1.1-IGhN8OjtKEsr8f01SwMieADnGKukMRY7pAuT1UJ0wsoD.AzapQTI5ouD3zV.ocEWJr9Eky2sfqZDHhetZ03EOS4XcMbrb1N0rb24HcN19SkzSuaz3xVWSHzl8qV7jtw0;
64
+ HttpOnly; SameSite=None; Secure; Path=/; Domain=groq.com; Expires=Wed, 07
65
+ Oct 2026 17:18:55 GMT
66
+ Strict-Transport-Security:
67
+ - max-age=15552000
68
+ Cf-Ray:
69
+ - a46e6565ad6b6859-HEL
70
+ body:
71
+ encoding: ASCII-8BIT
72
+ string: '{"id":"resp_01m4bm97age2z80ac2836qegwx","object":"response","status":"completed","created_at":1791391735,"output":[{"type":"reasoning","id":"resp_01m4bm97age2zr06f478qxg8at","status":"completed","content":[{"type":"reasoning_text","text":"The
73
+ user asks a simple factual question: capital of France is Paris. No policy
74
+ issues. Provide answer."}],"summary":[]},{"type":"message","id":"msg_01m4bm97age308jd64gc65t9mf","status":"completed","role":"assistant","content":[{"type":"output_text","text":"The
75
+ capital of France is **Paris**.","annotations":[],"logprobs":null}]}],"previous_response_id":null,"model":"openai/gpt-oss-120b","reasoning":{"effort":"medium"},"max_output_tokens":null,"text":{"format":{"type":"text"}},"tools":[],"tool_choice":"auto","truncation":"disabled","metadata":{},"groq":null,"temperature":1,"top_p":1,"user":null,"service_tier":"default","background":false,"error":null,"incomplete_details":null,"usage":{"input_tokens":78,"input_tokens_details":{"cached_tokens":0},"output_tokens":40,"output_tokens_details":{"reasoning_tokens":22},"total_tokens":118},"parallel_tool_calls":true,"store":false,"top_logprobs":null,"max_tool_calls":null}
76
+
77
+ '
78
+ recorded_at: Wed, 07 Oct 2026 16:48:55 GMT
79
+ recorded_with: VCR 6.4.0