qualspec 0.1.2 → 0.2.0

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 +4 -4
  2. data/.rubocop.yml +14 -0
  3. data/.rubocop_todo.yml +1 -1
  4. data/CHANGELOG.md +31 -0
  5. data/README.md +27 -5
  6. data/config/models.yml +23 -0
  7. data/docs/alpha_readiness.md +94 -0
  8. data/docs/configuration.md +53 -4
  9. data/docs/evaluation-suites.md +45 -2
  10. data/docs/getting-started.md +5 -2
  11. data/docs/recording.md +22 -0
  12. data/examples/EXAMPLES.md +73 -0
  13. data/examples/README.md +5 -0
  14. data/examples/best_value.rb +67 -0
  15. data/examples/cassettes/best_value.yml +649 -0
  16. data/examples/cassettes/character_consistency.yml +680 -0
  17. data/examples/cassettes/customer_service_comparison.yml +593 -0
  18. data/examples/cassettes/date_awareness_gate.yml +420 -0
  19. data/examples/cassettes/qualspec_rspec_integration_comparative_evaluation_compares_multiple_responses.yml +4 -4
  20. data/examples/character_consistency.rb +83 -0
  21. data/examples/comparison.rb +0 -0
  22. data/examples/customer_service_comparison.rb +59 -0
  23. data/examples/date_awareness_gate.rb +57 -0
  24. data/examples/model_comparison.rb +0 -0
  25. data/examples/persona_test.rb +0 -0
  26. data/examples/prompt_variants_factory.rb +0 -0
  27. data/examples/quick_test.rb +0 -0
  28. data/examples/rspec_example_spec.rb +0 -0
  29. data/examples/simple_variant_comparison.rb +0 -0
  30. data/examples/variant_comparison.rb +0 -0
  31. data/exe/qualspec +4 -4
  32. data/lib/qualspec/client.rb +14 -7
  33. data/lib/qualspec/configuration.rb +18 -5
  34. data/lib/qualspec/model_registry.rb +62 -0
  35. data/lib/qualspec/recorder.rb +41 -3
  36. data/lib/qualspec/suite/candidate.rb +7 -4
  37. data/lib/qualspec/suite/dsl.rb +16 -1
  38. data/lib/qualspec/suite/runner.rb +49 -1
  39. data/lib/qualspec/version.rb +1 -1
  40. data/lib/qualspec.rb +17 -0
  41. data/qualspec_structure.md +9 -3
  42. metadata +16 -7
@@ -0,0 +1,649 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://openrouter.ai/api/v1/chat/completions
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"deepseek/deepseek-v4-flash","messages":[{"role":"user","content":"A
9
+ bat and a ball cost $1.10 total. The bat costs $1.00 more than the ball. How
10
+ much does the ball cost? Explain your reasoning."}],"usage":{"include":true}}'
11
+ headers:
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Bearer <API_KEY>
16
+ User-Agent:
17
+ - Faraday v2.14.1
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ date:
24
+ - Sun, 28 Jun 2026 21:26:00 GMT
25
+ content-type:
26
+ - application/json
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - keep-alive
31
+ access-control-allow-origin:
32
+ - "*"
33
+ x-generation-id:
34
+ - gen-1782681959-NZfhlhY8MvNQzd0xF6Nv
35
+ access-control-expose-headers:
36
+ - X-Generation-Id,cf-ray
37
+ permissions-policy:
38
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
39
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
40
+ referrer-policy:
41
+ - no-referrer, strict-origin-when-cross-origin
42
+ x-content-type-options:
43
+ - nosniff
44
+ content-encoding:
45
+ - gzip
46
+ server:
47
+ - cloudflare
48
+ cf-ray:
49
+ - a12fc468fb6d6417-CVG
50
+ body:
51
+ encoding: ASCII-8BIT
52
+ string: "\n \n\n \n\n \n\n \n\n \n\n
53
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
54
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
55
+ \ \n{\"id\":\"gen-1782681959-NZfhlhY8MvNQzd0xF6Nv\",\"object\":\"chat.completion\",\"created\":1782681959,\"model\":\"deepseek/deepseek-v4-flash-20260423\",\"provider\":\"Parasail\",\"system_fingerprint\":null,\"service_tier\":null,\"choices\":[{\"index\":0,\"logprobs\":null,\"finish_reason\":\"stop\",\"native_finish_reason\":\"stop\",\"message\":{\"role\":\"assistant\",\"content\":\"The
56
+ ball costs $0.05.\\n\\nLet the ball's price be \\\\( x \\\\) dollars. Since
57
+ the bat costs $1.00 more, the bat's price is \\\\( x + 1.00 \\\\). Together
58
+ they cost $1.10, so:\\n\\n\\\\[\\nx + (x + 1.00) = 1.10\\n\\\\]\\n\\nSimplifying:\\n\\n\\\\[\\n2x
59
+ + 1.00 = 1.10\\n\\\\]\\n\\nSubtract 1.00 from both sides:\\n\\n\\\\[\\n2x
60
+ = 0.10\\n\\\\]\\n\\nDivide by 2:\\n\\n\\\\[\\nx = 0.05\\n\\\\]\\n\\nThus,
61
+ the ball costs $0.05, and the bat costs $1.05, making the total $1.10, with
62
+ the bat costing exactly $1.00 more.\",\"refusal\":null,\"reasoning\":\"We
63
+ need to answer: \\\"A bat and a ball cost $1.10 total. The bat costs $1.00
64
+ more than the ball. How much does the ball cost? Explain your reasoning.\\\"\\n\\nThis
65
+ is a classic puzzle. Many people initially think the ball costs $0.10, but
66
+ that is incorrect because then the bat would be $1.00, making total $1.10,
67
+ but bat would be only $0.90 more than ball? Actually if ball=$0.10, then bat=$1.00,
68
+ difference $0.90 not $1.00. So correct solution: Let ball cost x, bat costs
69
+ x+1.00, total 2x+1.00=1.10 => 2x=0.10 => x=0.05. So ball is $0.05, bat is
70
+ $1.05. So answer: $0.05.\\n\\nWe need to explain reasoning.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"We
71
+ need to answer: \\\"A bat and a ball cost $1.10 total. The bat costs $1.00
72
+ more than the ball. How much does the ball cost? Explain your reasoning.\\\"\\n\\nThis
73
+ is a classic puzzle. Many people initially think the ball costs $0.10, but
74
+ that is incorrect because then the bat would be $1.00, making total $1.10,
75
+ but bat would be only $0.90 more than ball? Actually if ball=$0.10, then bat=$1.00,
76
+ difference $0.90 not $1.00. So correct solution: Let ball cost x, bat costs
77
+ x+1.00, total 2x+1.00=1.10 => 2x=0.10 => x=0.05. So ball is $0.05, bat is
78
+ $1.05. So answer: $0.05.\\n\\nWe need to explain reasoning.\",\"format\":\"unknown\",\"index\":0}]}}],\"usage\":{\"prompt_tokens\":39,\"completion_tokens\":359,\"total_tokens\":398,\"cost\":0.00010598,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.00010598,\"upstream_inference_prompt_cost\":0.00000546,\"upstream_inference_completions_cost\":0.00010052},\"completion_tokens_details\":{\"reasoning_tokens\":152,\"image_tokens\":0,\"audio_tokens\":0}}}"
79
+ recorded_at: Sun, 28 Jun 2026 21:26:07 GMT
80
+ - request:
81
+ method: post
82
+ uri: https://openrouter.ai/api/v1/chat/completions
83
+ body:
84
+ encoding: UTF-8
85
+ string: '{"model":"z-ai/glm-5.2","messages":[{"role":"user","content":"A bat
86
+ and a ball cost $1.10 total. The bat costs $1.00 more than the ball. How much
87
+ does the ball cost? Explain your reasoning."}],"usage":{"include":true}}'
88
+ headers:
89
+ Content-Type:
90
+ - application/json
91
+ Authorization:
92
+ - Bearer <API_KEY>
93
+ User-Agent:
94
+ - Faraday v2.14.1
95
+ response:
96
+ status:
97
+ code: 200
98
+ message: OK
99
+ headers:
100
+ date:
101
+ - Sun, 28 Jun 2026 21:26:08 GMT
102
+ content-type:
103
+ - application/json
104
+ transfer-encoding:
105
+ - chunked
106
+ connection:
107
+ - keep-alive
108
+ access-control-allow-origin:
109
+ - "*"
110
+ x-generation-id:
111
+ - gen-1782681968-q5TYavE9xK8kDTaKAWcP
112
+ access-control-expose-headers:
113
+ - X-Generation-Id,cf-ray
114
+ permissions-policy:
115
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
116
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
117
+ referrer-policy:
118
+ - no-referrer, strict-origin-when-cross-origin
119
+ x-content-type-options:
120
+ - nosniff
121
+ content-encoding:
122
+ - gzip
123
+ server:
124
+ - cloudflare
125
+ cf-ray:
126
+ - a12fc49bcd2df6e4-CVG
127
+ body:
128
+ encoding: ASCII-8BIT
129
+ string: "\n \n\n \n\n \n\n \n\n \n\n
130
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
131
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
132
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
133
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
134
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
135
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
136
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
137
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
138
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
139
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
140
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
141
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
142
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
143
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
144
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
145
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
146
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
147
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
148
+ \ \n\n \n{\"id\":\"gen-1782681968-q5TYavE9xK8kDTaKAWcP\",\"object\":\"chat.completion\",\"created\":1782681968,\"model\":\"z-ai/glm-5.2-20260616\",\"provider\":\"Inceptron\",\"system_fingerprint\":\"vllm-0.23.0-dp8-ep-d5cbe26d\",\"service_tier\":null,\"choices\":[{\"index\":0,\"logprobs\":null,\"finish_reason\":\"stop\",\"native_finish_reason\":\"stop\",\"message\":{\"role\":\"assistant\",\"content\":\"The
149
+ ball costs **$0.05** (5 cents). \\n\\nHere is the reasoning:\\n\\nLet's use
150
+ algebra to solve the problem. \\n1. Let **X** be the cost of the ball.\\n2.
151
+ The bat costs $1.00 more than the ball, so the bat's cost is **X + $1.00**.\\n3.
152
+ Together, the bat and the ball cost $1.10. So, we can set up the following
153
+ equation:\\n X (cost of the ball) + (X + $1.00) (cost of the bat) = $1.10\\n4.
154
+ Combine the X's:\\n 2X + $1.00 = $1.10\\n5. Subtract $1.00 from both sides:\\n
155
+ \ 2X = $0.10\\n6. Divide by 2:\\n X = $0.05\\n\\nSo, the ball costs $0.05,
156
+ and the bat costs $1.05 ($0.05 + $1.00). \\n\\n**Why people often get this
157
+ wrong:**\\nMany people intuitively guess that the ball costs $0.10 and the
158
+ bat costs $1.00. However, if that were true, the bat would only cost $0.90
159
+ more than the ball, and the total would be $1.10, but the difference wouldn't
160
+ be exactly $1.00. The math above proves the ball must be 5 cents for the difference
161
+ to be exactly $1.00 while the total remains $1.10.\",\"refusal\":null,\"reasoning\":\"1.
162
+ \ **Analyze the input:**\\n * Total cost of bat and ball = $1.10.\\n
163
+ \ * The bat costs $1.00 *more* than the ball.\\n * Question: How
164
+ much does the ball cost? Explain reasoning.\\n\\n2. **Identify the variables:**\\n
165
+ \ * Let $x$ be the cost of the ball.\\n * Let $y$ be the cost of
166
+ the bat.\\n\\n3. **Formulate equations:**\\n * Equation 1: $x + y =
167
+ 1.10$\\n * Equation 2: $y = x + 1.00$\\n\\n4. **Solve the equations:**\\n
168
+ \ * Substitute Equation 2 into Equation 1:\\n $x + (x + 1.00) =
169
+ 1.10$\\n * Combine like terms:\\n $2x + 1.00 = 1.10$\\n * Subtract
170
+ 1.00 from both sides:\\n $2x = 0.10$\\n * Divide by 2:\\n $x
171
+ = 0.05$\\n\\n5. **Interpret the result:**\\n * The ball costs $0.05,
172
+ or 5 cents.\\n * The bat costs $1.00 more, so the bat costs $1.05.\\n
173
+ \ * Total cost = $0.05 + $1.05 = $1.10. This checks out.\\n\\n6. **Draft
174
+ the response:**\\n * State the answer clearly upfront.\\n * Provide
175
+ the algebraic explanation to show the reasoning step-by-step.\\n * Mention
176
+ the common cognitive trap (people intuitively guessing 10 cents) to add value.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"1.
177
+ \ **Analyze the input:**\\n * Total cost of bat and ball = $1.10.\\n
178
+ \ * The bat costs $1.00 *more* than the ball.\\n * Question: How
179
+ much does the ball cost? Explain reasoning.\\n\\n2. **Identify the variables:**\\n
180
+ \ * Let $x$ be the cost of the ball.\\n * Let $y$ be the cost of
181
+ the bat.\\n\\n3. **Formulate equations:**\\n * Equation 1: $x + y =
182
+ 1.10$\\n * Equation 2: $y = x + 1.00$\\n\\n4. **Solve the equations:**\\n
183
+ \ * Substitute Equation 2 into Equation 1:\\n $x + (x + 1.00) =
184
+ 1.10$\\n * Combine like terms:\\n $2x + 1.00 = 1.10$\\n * Subtract
185
+ 1.00 from both sides:\\n $2x = 0.10$\\n * Divide by 2:\\n $x
186
+ = 0.05$\\n\\n5. **Interpret the result:**\\n * The ball costs $0.05,
187
+ or 5 cents.\\n * The bat costs $1.00 more, so the bat costs $1.05.\\n
188
+ \ * Total cost = $0.05 + $1.05 = $1.10. This checks out.\\n\\n6. **Draft
189
+ the response:**\\n * State the answer clearly upfront.\\n * Provide
190
+ the algebraic explanation to show the reasoning step-by-step.\\n * Mention
191
+ the common cognitive trap (people intuitively guessing 10 cents) to add value.\",\"format\":\"unknown\",\"index\":0}]}}],\"usage\":{\"prompt_tokens\":47,\"completion_tokens\":684,\"total_tokens\":731,\"cost\":0.0029292,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.0029292,\"upstream_inference_prompt_cost\":0.0000564,\"upstream_inference_completions_cost\":0.0028728},\"completion_tokens_details\":{\"reasoning_tokens\":298,\"image_tokens\":0,\"audio_tokens\":0}}}"
192
+ recorded_at: Sun, 28 Jun 2026 21:26:56 GMT
193
+ - request:
194
+ method: post
195
+ uri: https://openrouter.ai/api/v1/chat/completions
196
+ body:
197
+ encoding: UTF-8
198
+ string: '{"model":"deepseek/deepseek-v4-pro","messages":[{"role":"user","content":"A
199
+ bat and a ball cost $1.10 total. The bat costs $1.00 more than the ball. How
200
+ much does the ball cost? Explain your reasoning."}],"usage":{"include":true}}'
201
+ headers:
202
+ Content-Type:
203
+ - application/json
204
+ Authorization:
205
+ - Bearer <API_KEY>
206
+ User-Agent:
207
+ - Faraday v2.14.1
208
+ response:
209
+ status:
210
+ code: 200
211
+ message: OK
212
+ headers:
213
+ date:
214
+ - Sun, 28 Jun 2026 21:26:56 GMT
215
+ content-type:
216
+ - application/json
217
+ transfer-encoding:
218
+ - chunked
219
+ connection:
220
+ - keep-alive
221
+ access-control-allow-origin:
222
+ - "*"
223
+ x-generation-id:
224
+ - gen-1782682016-mHJPZeikwc9jrsX0fmNn
225
+ access-control-expose-headers:
226
+ - X-Generation-Id,cf-ray
227
+ permissions-policy:
228
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
229
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
230
+ referrer-policy:
231
+ - no-referrer, strict-origin-when-cross-origin
232
+ x-content-type-options:
233
+ - nosniff
234
+ content-encoding:
235
+ - gzip
236
+ server:
237
+ - cloudflare
238
+ cf-ray:
239
+ - a12fc5cbbca3f733-CVG
240
+ body:
241
+ encoding: ASCII-8BIT
242
+ string: !binary |-
243
+ CiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCnsiaWQiOiJnZW4tMTc4MjY4MjAxNi1tSEpQWmVpa3djOWpyc1gwZm1ObiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbiIsImNyZWF0ZWQiOjE3ODI2ODIwMTYsIm1vZGVsIjoiZGVlcHNlZWsvZGVlcHNlZWstdjQtcHJvLTIwMjYwNDIzIiwicHJvdmlkZXIiOiJEaWdpdGFsT2NlYW4iLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsInNlcnZpY2VfdGllciI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImxvZ3Byb2JzIjpudWxsLCJmaW5pc2hfcmVhc29uIjoic3RvcCIsIm5hdGl2ZV9maW5pc2hfcmVhc29uIjoic3RvcCIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiJMZXTigJlzIGRlZmluZTogIFxuLSBMZXQgXFwoIGIgXFwpIGJlIHRoZSBjb3N0IG9mIHRoZSBiYWxsIChpbiBkb2xsYXJzKS4gIFxuLSBUaGVuIHRoZSBiYXQgY29zdHMgXFwoIGIgKyAxLjAwIFxcKS5cblxuVG9nZXRoZXIgdGhleSBjb3N0ICQxLjEwOiAgXG5cXFtcbmIgKyAoYiArIDEuMDApID0gMS4xMFxuXFxdICBcblxcW1xuMmIgKyAxLjAwID0gMS4xMFxuXFxdICBcblxcW1xuMmIgPSAwLjEwXG5cXF0gIFxuXFxbXG5iID0gMC4wNVxuXFxdXG5cblNvLCB0aGUgYmFsbCBjb3N0cyAqKiQwLjA1KiogKDUgY2VudHMpLiAgXG5cblRoZSBjb21tb24gbWlzdGFrZSBpcyB0byBxdWlja2x5IHRoaW5rIHRoZSBiYWxsIGlzIDEwIGNlbnRz4oCUYnV0IHRoZW4gdGhlIGJhdCB3b3VsZCBiZSAkMS4xMCwgbWFraW5nIHRoZSB0b3RhbCAkMS4yMCwgd2hpY2ggaXMgaW5jb3JyZWN0LiIsInJlZnVzYWwiOm51bGwsInJlYXNvbmluZyI6bnVsbH19XSwidXNhZ2UiOnsicHJvbXB0X3Rva2VucyI6MzksImNvbXBsZXRpb25fdG9rZW5zIjoxNTgsInRvdGFsX3Rva2VucyI6MTk3LCJjb3N0IjowLjAwMDQ5NDE2LCJpc19ieW9rIjpmYWxzZSwicHJvbXB0X3Rva2Vuc19kZXRhaWxzIjp7ImNhY2hlZF90b2tlbnMiOjAsImNhY2hlX3dyaXRlX3Rva2VucyI6MCwiYXVkaW9fdG9rZW5zIjowLCJ2aWRlb190b2tlbnMiOjB9LCJjb3N0X2RldGFpbHMiOnsidXBzdHJlYW1faW5mZXJlbmNlX2Nvc3QiOjAuMDAwNDk0MTYsInVwc3RyZWFtX2luZmVyZW5jZV9wcm9tcHRfY29zdCI6MC4wMDAwNTQyODgsInVwc3RyZWFtX2luZmVyZW5jZV9jb21wbGV0aW9uc19jb3N0IjowLjAwMDQzOTg3Mn0sImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOnsicmVhc29uaW5nX3Rva2VucyI6MCwiaW1hZ2VfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjB9fX0=
244
+ recorded_at: Sun, 28 Jun 2026 21:26:58 GMT
245
+ - request:
246
+ method: post
247
+ uri: https://openrouter.ai/api/v1/chat/completions
248
+ body:
249
+ encoding: UTF-8
250
+ string: '{"model":"openrouter/auto","messages":[{"role":"system","content":"You
251
+ are an evaluation judge comparing multiple AI responses to the same prompt.\nScore
252
+ each response on how well it meets the criteria.\n\nScoring (0-10):\n- 0:
253
+ Completely fails\n- 1-3: Mostly fails\n- 4-6: Partially meets criteria\n-
254
+ 7-8: Mostly meets criteria\n- 9-10: Excellent\n\nBe strict but fair. Compare
255
+ responses relative to each other.\n\nIMPORTANT: Use the EXACT candidate names
256
+ as given in the prompt.\n\nYou MUST respond with valid JSON with scores for
257
+ each candidate AND declare a winner.\nExample format (use actual names from
258
+ prompt, not these placeholders):\n{\n \"actual-name-1\": {\"score\": 8, \"reasoning\":
259
+ \"...\"},\n \"actual-name-2\": {\"score\": 6, \"reasoning\": \"...\"},\n \"winner\":
260
+ \"actual-name-1\"\n}\n\nUse \"winner\": \"tie\" if scores are equal or too
261
+ close to call.\n"},{"role":"user","content":"## Evaluation criteria:\n1. Reaches
262
+ the correct conclusion\n2. Shows clear, valid step-by-step reasoning\n3. Does
263
+ not pad with irrelevant filler\n## Context:\nUser prompt: A bat and a ball
264
+ cost $1.10 total. The bat costs $1.00 more than the ball. How much does the
265
+ ball cost? Explain your reasoning.\n## Candidates to evaluate: \"flash\",
266
+ \"glm\", \"pro\"\n## Responses:\n\n### flash:\n```\nThe ball costs $0.05.\n\nLet
267
+ the ball''s price be \\( x \\) dollars. Since the bat costs $1.00 more, the
268
+ bat''s price is \\( x + 1.00 \\). Together they cost $1.10, so:\n\n\\[\nx
269
+ + (x + 1.00) = 1.10\n\\]\n\nSimplifying:\n\n\\[\n2x + 1.00 = 1.10\n\\]\n\nSubtract
270
+ 1.00 from both sides:\n\n\\[\n2x = 0.10\n\\]\n\nDivide by 2:\n\n\\[\nx = 0.05\n\\]\n\nThus,
271
+ the ball costs $0.05, and the bat costs $1.05, making the total $1.10, with
272
+ the bat costing exactly $1.00 more.\n```\n\n### glm:\n```\nThe ball costs
273
+ **$0.05** (5 cents). \n\nHere is the reasoning:\n\nLet''s use algebra to solve
274
+ the problem. \n1. Let **X** be the cost of the ball.\n2. The bat costs $1.00
275
+ more than the ball, so the bat''s cost is **X + $1.00**.\n3. Together, the
276
+ bat and the ball cost $1.10. So, we can set up the following equation:\n X
277
+ (cost of the ball) + (X + $1.00) (cost of the bat) = $1.10\n4. Combine the
278
+ X''s:\n 2X + $1.00 = $1.10\n5. Subtract $1.00 from both sides:\n 2X =
279
+ $0.10\n6. Divide by 2:\n X = $0.05\n\nSo, the ball costs $0.05, and the
280
+ bat costs $1.05 ($0.05 + $1.00). \n\n**Why people often get this wrong:**\nMany
281
+ people intuitively guess that the ball costs $0.10 and the bat costs $1.00.
282
+ However, if that were true, the bat would only cost $0.90 more than the ball,
283
+ and the total would be $1.10, but the difference wouldn''t be exactly $1.00.
284
+ The math above proves the ball must be 5 cents for the difference to be exactly
285
+ $1.00 while the total remains $1.10.\n```\n\n### pro:\n```\nLet’s define: \n-
286
+ Let \\( b \\) be the cost of the ball (in dollars). \n- Then the bat costs
287
+ \\( b + 1.00 \\).\n\nTogether they cost $1.10: \n\\[\nb + (b + 1.00) = 1.10\n\\] \n\\[\n2b
288
+ + 1.00 = 1.10\n\\] \n\\[\n2b = 0.10\n\\] \n\\[\nb = 0.05\n\\]\n\nSo, the
289
+ ball costs **$0.05** (5 cents). \n\nThe common mistake is to quickly think
290
+ the ball is 10 cents—but then the bat would be $1.10, making the total $1.20,
291
+ which is incorrect.\n```\n\nScore each candidate (\"flash\", \"glm\", \"pro\")
292
+ from 0-10.\nUse these EXACT names in your JSON response. Declare a winner."}],"response_format":{"type":"json_object"}}'
293
+ headers:
294
+ Content-Type:
295
+ - application/json
296
+ Authorization:
297
+ - Bearer <API_KEY>
298
+ User-Agent:
299
+ - Faraday v2.14.1
300
+ response:
301
+ status:
302
+ code: 200
303
+ message: OK
304
+ headers:
305
+ date:
306
+ - Sun, 28 Jun 2026 21:26:59 GMT
307
+ content-type:
308
+ - application/json
309
+ transfer-encoding:
310
+ - chunked
311
+ connection:
312
+ - keep-alive
313
+ access-control-allow-origin:
314
+ - "*"
315
+ x-generation-id:
316
+ - gen-1782682018-6DuPVceTpE0tHA45BqL6
317
+ access-control-expose-headers:
318
+ - X-Generation-Id,cf-ray
319
+ permissions-policy:
320
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
321
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
322
+ referrer-policy:
323
+ - no-referrer, strict-origin-when-cross-origin
324
+ x-content-type-options:
325
+ - nosniff
326
+ content-encoding:
327
+ - gzip
328
+ server:
329
+ - cloudflare
330
+ cf-ray:
331
+ - a12fc5da4f3bfa93-CVG
332
+ body:
333
+ encoding: ASCII-8BIT
334
+ string: "\n \n\n \n\n \n\n \n\n \n\n
335
+ \ \n\n \n\n \n\n \n\n \n\n \n\n
336
+ \ \n\n \n\n \n\n \n\n \n\n \n{\"id\":\"gen-1782682018-6DuPVceTpE0tHA45BqL6\",\"object\":\"chat.completion\",\"created\":1782682019,\"model\":\"openai/gpt-5.5-20260423\",\"provider\":\"Azure\",\"system_fingerprint\":null,\"service_tier\":\"default\",\"choices\":[{\"index\":0,\"logprobs\":null,\"finish_reason\":\"stop\",\"native_finish_reason\":\"completed\",\"message\":{\"role\":\"assistant\",\"content\":\"{\\n
337
+ \ \\\"flash\\\": {\\n \\\"score\\\": 10,\\n \\\"reasoning\\\": \\\"Correct
338
+ conclusion, clear algebraic setup, valid step-by-step reasoning, and no irrelevant
339
+ filler. It also verifies the result succinctly.\\\"\\n },\\n \\\"glm\\\":
340
+ {\\n \\\"score\\\": 9,\\n \\\"reasoning\\\": \\\"Correct answer with
341
+ clear step-by-step algebra. The added explanation of the common mistake is
342
+ relevant, though slightly more verbose than necessary.\\\"\\n },\\n \\\"pro\\\":
343
+ {\\n \\\"score\\\": 9,\\n \\\"reasoning\\\": \\\"Correct conclusion
344
+ and clean reasoning. The common mistake note is relevant, though slightly
345
+ less directly aligned with the usual mistaken answer than glm's explanation.\\\"\\n
346
+ \ },\\n \\\"winner\\\": \\\"flash\\\"\\n}\",\"refusal\":null,\"reasoning\":\"**Evaluating
347
+ JSON generation**\\n\\nI need to produce JSON and evaluate it to ensure everything
348
+ is correct. The criteria include having a clear conclusion and reasoning without
349
+ filler. \\\"Flash\\\" is concise, but it includes a common mistake when saying
350
+ if a ball costs 10 cents, then a bat would cost $1.10 for a total of $1.20.
351
+ This reasoning violates the principle of difference. Scores might be Flash
352
+ 10, Pro 9, and GLM 9, with Flash being the winner. I'll need to ensure the
353
+ JSON is valid.\",\"reasoning_details\":[{\"type\":\"reasoning.summary\",\"summary\":\"**Evaluating
354
+ JSON generation**\\n\\nI need to produce JSON and evaluate it to ensure everything
355
+ is correct. The criteria include having a clear conclusion and reasoning without
356
+ filler. \\\"Flash\\\" is concise, but it includes a common mistake when saying
357
+ if a ball costs 10 cents, then a bat would cost $1.10 for a total of $1.20.
358
+ This reasoning violates the principle of difference. Scores might be Flash
359
+ 10, Pro 9, and GLM 9, with Flash being the winner. I'll need to ensure the
360
+ JSON is valid.\",\"format\":\"azure-openai-responses-v1\",\"index\":0},{\"type\":\"reasoning.encrypted\",\"data\":\"gAAAAABqQZGpFJwmsFI-xBlGg2DSAkzbpk_YDVLZWS2r_ISTEjQC7r2WUOGDg4g8TCXx3Uk4Neli3BxWpLfkI-UnDxKm_hyJ2KxUt_W5NWGoN24oS-gGF4RkngEVnLhWT7SIF2_oIzrtwCDxevYJSmL0gqMy94wwmL8vVxNIvnmte58APIpzua-Daou9Spfr54DL2B-lPMjTdfTta9ZFJR3hz5psYeW0SMj4AJwS_E5X3F9CcdQe_boKU5ImVbHrWle0qqWesxi4waSrcn1dWdR9ESmZAJe6An5MEdNbCGoT5GFx1td6JIf96A1b6C2R0wfR67U5z9lWg4MRlWyIYigVv2iqXJAIxC1evYs_qgxnJk7Hme_SKxyKq5J49EHwYeAXM2UNyAbAHf2wf_KWfzhqtWuJb3e3x4FcS2Egww7dpQLXw4I2g98Ro2yDfxHZgP5Z2RCnrtvY5-Z7qdf4YvdCSMifhoY4Lnal9zb7HQXQ88DGlHpSw-ERZ4KBhSibk7tmbhAK7OaYJE1rhT4XtlOvKymKAooz3cvcgEBON0x4wQX3RzhUinIRDkhH3jGmX_wyQKqGh7in3bNE5Q5FyvEqml43JzZtexuBjpi1Gdcj9ebOP8cBihcS_JxzWiCIDivzZxt9IzDn0I2y4_cng0QuQe_7AiVuQxizzWP5lUsk3jWy-sJ4g99pJbWoAsy1sHhGg1fqQzQ_fuQW8nf5jO4DKKu9flNf1K66YIq0IiwvdxTui1g0Kv6Qbusvd1tM7r7-4DzE15JOPJgh51f2PdXxyOh12vIC7rEbkGRH34v74G-92BySBO_ev1b8AkAeSNyl4Sd-id857Lca2s2BgqX87fjbS2qo0zg1fYT7C3kWmrzWP2c2piY1alpjbgzRH3K3hE4LhARdH01tJqBtB8yTdeQRDkswPJAX26kvo3AWC7qdKAyZv9PafBvAAbR0r7Q4oFaIXx2sfE2FxKfJXrtUuI0HeOjbKiAj2FQjPxn9b6lFdLUnwwM-7EkRF7TrNhw_M8ZOz224zUjL2FSf3_lo-wqT5HnFCLT4-umgEuYFk-_vbbsovKBu-oW1G3M4-A72bg0fFqU9GrdouBHcukgDJ0vgNr8oxEyDE-g10dPVDRsRF_5xbxZEIrDUC4Q49kWnxsLE_0JUseTZpGCpoBAho5g5BoShk-5HNo2wiN6r2zWFiWTkig_hX7PM24Kn_LlJyOFrUWTrYBj-VMBHwokKmCzTsl36zq14A31qUGs9y7NKKq08QZbFRq6hXYKSKtQwsQ14YUorCAP2yvfPF7KF0qrdFi9i1vAM3pbenwcBp4hP1a-I50om28PWnKsMwxdZRoif3KKlFPRY893ZldnDu527LT0W_UvUXpnBIBg1oGuONfP_r2M36HUgsKBMqmIzcCRnkTq-USUQeUghmTIKI4JhIfwoDWW7inbOpkg63cYfT0gJlO70P7Se43bL9NU6Vag1OeFDYJ2CklbEZ23MVjSTPz1EK5YQV22uu0J_G_GPFvhz67fRbcLw54fRIYqSjzaKeFy8q8kxJyVx77BWxlkbU-CsHZGF4XA1AGESJBIOMAeJ4ECuJpiiyjsQoBok8wEiv2n0\",\"format\":\"azure-openai-responses-v1\",\"id\":\"rs_019f968267d10c65016a4191a602e08194a67b9e4575b2d045\",\"index\":1}]}}],\"usage\":{\"prompt_tokens\":994,\"completion_tokens\":284,\"total_tokens\":1278,\"cost\":0.01349,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.01349,\"upstream_inference_prompt_cost\":0.00497,\"upstream_inference_completions_cost\":0.00852},\"completion_tokens_details\":{\"reasoning_tokens\":125,\"image_tokens\":0,\"audio_tokens\":0}}}"
361
+ recorded_at: Sun, 28 Jun 2026 21:27:06 GMT
362
+ - request:
363
+ method: post
364
+ uri: https://openrouter.ai/api/v1/chat/completions
365
+ body:
366
+ encoding: UTF-8
367
+ string: '{"model":"deepseek/deepseek-v4-flash","messages":[{"role":"user","content":"If
368
+ all Bloops are Razzies and all Razzies are Lazzies, are all Bloops definitely
369
+ Lazzies? Explain."}],"usage":{"include":true}}'
370
+ headers:
371
+ Content-Type:
372
+ - application/json
373
+ Authorization:
374
+ - Bearer <API_KEY>
375
+ User-Agent:
376
+ - Faraday v2.14.1
377
+ response:
378
+ status:
379
+ code: 200
380
+ message: OK
381
+ headers:
382
+ date:
383
+ - Sun, 28 Jun 2026 21:27:06 GMT
384
+ content-type:
385
+ - application/json
386
+ transfer-encoding:
387
+ - chunked
388
+ connection:
389
+ - keep-alive
390
+ access-control-allow-origin:
391
+ - "*"
392
+ x-generation-id:
393
+ - gen-1782682026-mX6oZtcxVp5c8I26FG8j
394
+ access-control-expose-headers:
395
+ - X-Generation-Id,cf-ray
396
+ permissions-policy:
397
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
398
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
399
+ referrer-policy:
400
+ - no-referrer, strict-origin-when-cross-origin
401
+ x-content-type-options:
402
+ - nosniff
403
+ content-encoding:
404
+ - gzip
405
+ server:
406
+ - cloudflare
407
+ cf-ray:
408
+ - a12fc608fe1b74cc-CVG
409
+ body:
410
+ encoding: ASCII-8BIT
411
+ string: !binary |-
412
+ CiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCnsiaWQiOiJnZW4tMTc4MjY4MjAyNi1tWDZvWnRjeFZwNWM4STI2Rkc4aiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbiIsImNyZWF0ZWQiOjE3ODI2ODIwMjYsIm1vZGVsIjoiZGVlcHNlZWsvZGVlcHNlZWstdjQtZmxhc2gtMjAyNjA0MjMiLCJwcm92aWRlciI6IkRlZXBJbmZyYSIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwic2VydmljZV90aWVyIjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwibG9ncHJvYnMiOm51bGwsImZpbmlzaF9yZWFzb24iOiJzdG9wIiwibmF0aXZlX2ZpbmlzaF9yZWFzb24iOiJzdG9wIiwibWVzc2FnZSI6eyJyb2xlIjoiYXNzaXN0YW50IiwiY29udGVudCI6IlllcywgYWxsIEJsb29wcyBhcmUgZGVmaW5pdGVseSBMYXp6aWVzLlxuXG5IZXJlJ3MgdGhlIGV4cGxhbmF0aW9uIHVzaW5nIGxvZ2ljOlxuXG4xLiAgKipQcmVtaXNlIDE6KiogQWxsIEJsb29wcyBhcmUgUmF6emllcy4gKElmIHNvbWV0aGluZyBpcyBhIEJsb29wLCBpdCBtdXN0IGJlIGEgUmF6emllLilcbjIuICAqKlByZW1pc2UgMjoqKiBBbGwgUmF6emllcyBhcmUgTGF6emllcy4gKElmIHNvbWV0aGluZyBpcyBhIFJhenppZSwgaXQgbXVzdCBiZSBhIExhenppZS4pXG5cblNpbmNlIGV2ZXJ5IEJsb29wIGlzIGEgUmF6emllLCBhbmQgZXZlcnkgUmF6emllIGlzIGEgTGF6emllLCB0aGVuIGV2ZXJ5IEJsb29wIG11c3QgYWxzbyBiZSBhIExhenppZS4gVGhpcyBpcyBhIGNsYXNzaWMgZXhhbXBsZSBvZiBhICoqc3lsbG9naXNtKirigJRhIGxvZ2ljYWwgYXJndW1lbnQgd2hlcmUgYSBjb25jbHVzaW9uIGlzIGRlZHVjZWQgZnJvbSB0d28gZ2l2ZW4gcHJvcG9zaXRpb25zLlxuXG5JbiBzZXQgdGhlb3J5IHRlcm1zLCB0aGUgc2V0IG9mIFwiQmxvb3BzXCIgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgc2V0IG9mIFwiUmF6emllcyxcIiB3aGljaCBpcyBpdHNlbGYgY29udGFpbmVkIHdpdGhpbiB0aGUgc2V0IG9mIFwiTGF6emllcy5cIiBUaGVyZWZvcmUsIHRoZSBzZXQgb2YgXCJCbG9vcHNcIiBpcyBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgc2V0IG9mIFwiTGF6emllcy5cIiIsInJlZnVzYWwiOm51bGwsInJlYXNvbmluZyI6bnVsbH19XSwidXNhZ2UiOnsicHJvbXB0X3Rva2VucyI6MzMsImNvbXBsZXRpb25fdG9rZW5zIjoxOTYsInRvdGFsX3Rva2VucyI6MjI5LCJjb3N0IjowLjAwMDA0MjUsImlzX2J5b2siOmZhbHNlLCJwcm9tcHRfdG9rZW5zX2RldGFpbHMiOnsiY2FjaGVkX3Rva2VucyI6MCwiY2FjaGVfd3JpdGVfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjAsInZpZGVvX3Rva2VucyI6MH0sImNvc3RfZGV0YWlscyI6eyJ1cHN0cmVhbV9pbmZlcmVuY2VfY29zdCI6MC4wMDAwNDI1LCJ1cHN0cmVhbV9pbmZlcmVuY2VfcHJvbXB0X2Nvc3QiOjAuMDAwMDAzMywidXBzdHJlYW1faW5mZXJlbmNlX2NvbXBsZXRpb25zX2Nvc3QiOjAuMDAwMDM5Mn0sImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOnsicmVhc29uaW5nX3Rva2VucyI6MCwiaW1hZ2VfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjB9fX0=
413
+ recorded_at: Sun, 28 Jun 2026 21:27:16 GMT
414
+ - request:
415
+ method: post
416
+ uri: https://openrouter.ai/api/v1/chat/completions
417
+ body:
418
+ encoding: UTF-8
419
+ string: '{"model":"z-ai/glm-5.2","messages":[{"role":"user","content":"If all
420
+ Bloops are Razzies and all Razzies are Lazzies, are all Bloops definitely
421
+ Lazzies? Explain."}],"usage":{"include":true}}'
422
+ headers:
423
+ Content-Type:
424
+ - application/json
425
+ Authorization:
426
+ - Bearer <API_KEY>
427
+ User-Agent:
428
+ - Faraday v2.14.1
429
+ response:
430
+ status:
431
+ code: 200
432
+ message: OK
433
+ headers:
434
+ date:
435
+ - Sun, 28 Jun 2026 21:27:17 GMT
436
+ content-type:
437
+ - application/json
438
+ transfer-encoding:
439
+ - chunked
440
+ connection:
441
+ - keep-alive
442
+ access-control-allow-origin:
443
+ - "*"
444
+ x-generation-id:
445
+ - gen-1782682036-rODYnFZzbWZeDjsmE2MF
446
+ access-control-expose-headers:
447
+ - X-Generation-Id,cf-ray
448
+ permissions-policy:
449
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
450
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
451
+ referrer-policy:
452
+ - no-referrer, strict-origin-when-cross-origin
453
+ x-content-type-options:
454
+ - nosniff
455
+ content-encoding:
456
+ - gzip
457
+ server:
458
+ - cloudflare
459
+ cf-ray:
460
+ - a12fc6480de3f730-CVG
461
+ body:
462
+ encoding: ASCII-8BIT
463
+ string: "\n \n\n \n\n \n\n \n\n \n\n
464
+ \ \n\n \n\n \n\n \n{\"id\":\"gen-1782682036-rODYnFZzbWZeDjsmE2MF\",\"object\":\"chat.completion\",\"created\":1782682036,\"model\":\"z-ai/glm-5.2-20260616\",\"provider\":\"Decart\",\"system_fingerprint\":null,\"service_tier\":null,\"choices\":[{\"index\":0,\"logprobs\":null,\"finish_reason\":\"stop\",\"native_finish_reason\":\"stop\",\"message\":{\"role\":\"assistant\",\"content\":\"Yes,
465
+ all Bloops are definitely Lazzies. \\n\\nHere is the explanation:\\n\\nThis
466
+ is an example of a logical deduction known as a **categorical syllogism**,
467
+ and it relies on the transitive property. Here is how the logic breaks down
468
+ step-by-step:\\n\\n1. **All Bloops are Razzies:** This means that if you have
469
+ a Bloop, it automatically belongs to the category of Razzies. \\n2. **All
470
+ Razzies are Lazzies:** This means that everything in the category of Razzies
471
+ also belongs to the broader category of Lazzies. \\n3. **Conclusion:** Since
472
+ Bloops are entirely contained within the Razzies group, and the Razzies group
473
+ is entirely contained within the Lazzies group, the Bloops must also be contained
474
+ within the Lazzies group. \\n\\nTo put it in more familiar terms:\\n* If all
475
+ cats (Bloops) are mammals (Razzies), and all mammals (Razzies) are animals
476
+ (Lazzies), then all cats (Bloops) are definitely animals (Lazzies).\",\"refusal\":null,\"reasoning\":\"1.
477
+ \ **Analyze the Request:** The user is asking a classic syllogism question:
478
+ If A = B and B = C, is A = C? They want to know if all Bloops are definitely
479
+ Lazzies, and an explanation.\\n2. **Analyze the Premises:**\\n * Premise
480
+ 1: All Bloops are Razzies. (A $\\\\subset$ B)\\n * Premise 2: All Razzies
481
+ are Lazzies. (B $\\\\subset$ C)\\n3. **Evaluate the Conclusion:**\\n *
482
+ \ Are all Bloops definitely Lazzies? Yes. (A $\\\\subset$ C)\\n4. **Formulate
483
+ the Explanation:**\\n * State the answer clearly (Yes).\\n * Explain
484
+ the logical structure (transitive property of categorical logic).\\n *
485
+ \ Use an analogy to make it intuitive (e.g., All cats are mammals, all mammals
486
+ are animals, therefore all cats are animals).\\n5. **Review and Refine:**
487
+ Keep it clear, concise, and logically sound.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"1.
488
+ \ **Analyze the Request:** The user is asking a classic syllogism question:
489
+ If A = B and B = C, is A = C? They want to know if all Bloops are definitely
490
+ Lazzies, and an explanation.\\n2. **Analyze the Premises:**\\n * Premise
491
+ 1: All Bloops are Razzies. (A $\\\\subset$ B)\\n * Premise 2: All Razzies
492
+ are Lazzies. (B $\\\\subset$ C)\\n3. **Evaluate the Conclusion:**\\n *
493
+ \ Are all Bloops definitely Lazzies? Yes. (A $\\\\subset$ C)\\n4. **Formulate
494
+ the Explanation:**\\n * State the answer clearly (Yes).\\n * Explain
495
+ the logical structure (transitive property of categorical logic).\\n *
496
+ \ Use an analogy to make it intuitive (e.g., All cats are mammals, all mammals
497
+ are animals, therefore all cats are animals).\\n5. **Review and Refine:**
498
+ Keep it clear, concise, and logically sound.\",\"format\":\"unknown\",\"index\":0}]}}],\"usage\":{\"prompt_tokens\":41,\"completion_tokens\":453,\"total_tokens\":494,\"cost\":0.0019188,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":33,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.0019188,\"upstream_inference_prompt_cost\":0.0000162,\"upstream_inference_completions_cost\":0.0019026},\"completion_tokens_details\":{\"reasoning_tokens\":225,\"image_tokens\":0,\"audio_tokens\":0}}}"
499
+ recorded_at: Sun, 28 Jun 2026 21:27:20 GMT
500
+ - request:
501
+ method: post
502
+ uri: https://openrouter.ai/api/v1/chat/completions
503
+ body:
504
+ encoding: UTF-8
505
+ string: '{"model":"deepseek/deepseek-v4-pro","messages":[{"role":"user","content":"If
506
+ all Bloops are Razzies and all Razzies are Lazzies, are all Bloops definitely
507
+ Lazzies? Explain."}],"usage":{"include":true}}'
508
+ headers:
509
+ Content-Type:
510
+ - application/json
511
+ Authorization:
512
+ - Bearer <API_KEY>
513
+ User-Agent:
514
+ - Faraday v2.14.1
515
+ response:
516
+ status:
517
+ code: 200
518
+ message: OK
519
+ headers:
520
+ date:
521
+ - Sun, 28 Jun 2026 21:27:23 GMT
522
+ content-type:
523
+ - application/json
524
+ transfer-encoding:
525
+ - chunked
526
+ connection:
527
+ - keep-alive
528
+ access-control-allow-origin:
529
+ - "*"
530
+ x-generation-id:
531
+ - gen-1782682040-Mx71Rg6JxG3FKAHgHBg3
532
+ access-control-expose-headers:
533
+ - X-Generation-Id,cf-ray
534
+ permissions-policy:
535
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
536
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
537
+ referrer-policy:
538
+ - no-referrer, strict-origin-when-cross-origin
539
+ x-content-type-options:
540
+ - nosniff
541
+ content-encoding:
542
+ - gzip
543
+ server:
544
+ - cloudflare
545
+ cf-ray:
546
+ - a12fc661af9af733-CVG
547
+ body:
548
+ encoding: ASCII-8BIT
549
+ string: !binary |-
550
+ CiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCnsiaWQiOiJnZW4tMTc4MjY4MjA0MC1NeDcxUmc2SnhHM0ZLQUhnSEJnMyIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbiIsImNyZWF0ZWQiOjE3ODI2ODIwNDAsIm1vZGVsIjoiZGVlcHNlZWsvZGVlcHNlZWstdjQtcHJvLTIwMjYwNDIzIiwicHJvdmlkZXIiOiJTdHJlYW1MYWtlIiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJzZXJ2aWNlX3RpZXIiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJsb2dwcm9icyI6bnVsbCwiZmluaXNoX3JlYXNvbiI6InN0b3AiLCJuYXRpdmVfZmluaXNoX3JlYXNvbiI6InN0b3AiLCJtZXNzYWdlIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiWWVzLCBhbGwgQmxvb3BzIGFyZSBkZWZpbml0ZWx5IExhenppZXMuIFRoaXMgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSB2YWxpZCBzeWxsb2dpc20gaW4gbG9naWMuIEhlcmUncyB0aGUgcmVhc29uaW5nOlxuXG4tIFwiQWxsIEJsb29wcyBhcmUgUmF6emllc1wiIG1lYW5zIHRoYXQgdGhlIHNldCBvZiBCbG9vcHMgaXMgZW50aXJlbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgc2V0IG9mIFJhenppZXMuXG4tIFwiQWxsIFJhenppZXMgYXJlIExhenppZXNcIiBtZWFucyB0aGF0IHRoZSBzZXQgb2YgUmF6emllcyBpcyBlbnRpcmVseSBjb250YWluZWQgd2l0aGluIHRoZSBzZXQgb2YgTGF6emllcy5cblxuU2luY2UgZXZlcnkgQmxvb3AgaXMgYSBSYXp6eSwgYW5kIGV2ZXJ5IFJhenp5IGlzIGEgTGF6enksIGl0IGZvbGxvd3MgbmVjZXNzYXJpbHkgdGhhdCBldmVyeSBCbG9vcCBtdXN0IGFsc28gYmUgYSBMYXp6eS4gSW4gdGVybXMgb2Ygc2V0cywgaWYgQiDiioYgUiBhbmQgUiDiioYgTCwgdGhlbiBCIOKKhiBMLiBUaGVyZSBpcyBubyBwb3NzaWJsZSBzY2VuYXJpbyB3aGVyZSB0aGlzIGNoYWluIG9mIGluY2x1c2lvbiBmYWlscywgc28gdGhlIGNvbmNsdXNpb24gaXMgZGVmaW5pdGUuIiwicmVmdXNhbCI6bnVsbCwicmVhc29uaW5nIjoiV2UgYXJlIGFza2VkOiBcIklmIGFsbCBCbG9vcHMgYXJlIFJhenppZXMgYW5kIGFsbCBSYXp6aWVzIGFyZSBMYXp6aWVzLCBhcmUgYWxsIEJsb29wcyBkZWZpbml0ZWx5IExhenppZXM/IEV4cGxhaW4uXCJcblxuVGhpcyBpcyBhIGNsYXNzaWMgc3lsbG9naXNtOiBBbGwgQSBhcmUgQiwgYWxsIEIgYXJlIEMsIHRoZXJlZm9yZSBhbGwgQSBhcmUgQy4gVGhlIGFuc3dlciBpcyB5ZXMsIGFsbCBCbG9vcHMgYXJlIGRlZmluaXRlbHkgTGF6emllcy4gVGhlIGV4cGxhbmF0aW9uIHNob3VsZCB1c2UgbG9naWNhbCByZWFzb25pbmcsIG1heWJlIHdpdGggc2V0cyBvciBWZW5uIGRpYWdyYW1zLiIsInJlYXNvbmluZ19kZXRhaWxzIjpbeyJ0eXBlIjoicmVhc29uaW5nLnRleHQiLCJ0ZXh0IjoiV2UgYXJlIGFza2VkOiBcIklmIGFsbCBCbG9vcHMgYXJlIFJhenppZXMgYW5kIGFsbCBSYXp6aWVzIGFyZSBMYXp6aWVzLCBhcmUgYWxsIEJsb29wcyBkZWZpbml0ZWx5IExhenppZXM/IEV4cGxhaW4uXCJcblxuVGhpcyBpcyBhIGNsYXNzaWMgc3lsbG9naXNtOiBBbGwgQSBhcmUgQiwgYWxsIEIgYXJlIEMsIHRoZXJlZm9yZSBhbGwgQSBhcmUgQy4gVGhlIGFuc3dlciBpcyB5ZXMsIGFsbCBCbG9vcHMgYXJlIGRlZmluaXRlbHkgTGF6emllcy4gVGhlIGV4cGxhbmF0aW9uIHNob3VsZCB1c2UgbG9naWNhbCByZWFzb25pbmcsIG1heWJlIHdpdGggc2V0cyBvciBWZW5uIGRpYWdyYW1zLiIsImZvcm1hdCI6InVua25vd24iLCJpbmRleCI6MH1dfX1dLCJ1c2FnZSI6eyJwcm9tcHRfdG9rZW5zIjozMywiY29tcGxldGlvbl90b2tlbnMiOjI0NSwidG90YWxfdG9rZW5zIjoyNzgsImNvc3QiOjAuMDAwNDU1MDEsImlzX2J5b2siOmZhbHNlLCJwcm9tcHRfdG9rZW5zX2RldGFpbHMiOnsiY2FjaGVkX3Rva2VucyI6MCwiY2FjaGVfd3JpdGVfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjAsInZpZGVvX3Rva2VucyI6MH0sImNvc3RfZGV0YWlscyI6eyJ1cHN0cmVhbV9pbmZlcmVuY2VfY29zdCI6MC4wMDA0NTUwMSwidXBzdHJlYW1faW5mZXJlbmNlX3Byb21wdF9jb3N0IjowLjAwMDAyODcxLCJ1cHN0cmVhbV9pbmZlcmVuY2VfY29tcGxldGlvbnNfY29zdCI6MC4wMDA0MjYzfSwiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6eyJyZWFzb25pbmdfdG9rZW5zIjo4NiwiaW1hZ2VfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjB9fX0=
551
+ recorded_at: Sun, 28 Jun 2026 21:27:25 GMT
552
+ - request:
553
+ method: post
554
+ uri: https://openrouter.ai/api/v1/chat/completions
555
+ body:
556
+ encoding: UTF-8
557
+ string: '{"model":"openrouter/auto","messages":[{"role":"system","content":"You
558
+ are an evaluation judge comparing multiple AI responses to the same prompt.\nScore
559
+ each response on how well it meets the criteria.\n\nScoring (0-10):\n- 0:
560
+ Completely fails\n- 1-3: Mostly fails\n- 4-6: Partially meets criteria\n-
561
+ 7-8: Mostly meets criteria\n- 9-10: Excellent\n\nBe strict but fair. Compare
562
+ responses relative to each other.\n\nIMPORTANT: Use the EXACT candidate names
563
+ as given in the prompt.\n\nYou MUST respond with valid JSON with scores for
564
+ each candidate AND declare a winner.\nExample format (use actual names from
565
+ prompt, not these placeholders):\n{\n \"actual-name-1\": {\"score\": 8, \"reasoning\":
566
+ \"...\"},\n \"actual-name-2\": {\"score\": 6, \"reasoning\": \"...\"},\n \"winner\":
567
+ \"actual-name-1\"\n}\n\nUse \"winner\": \"tie\" if scores are equal or too
568
+ close to call.\n"},{"role":"user","content":"## Evaluation criteria:\n1. Reaches
569
+ the correct conclusion\n2. Shows clear, valid step-by-step reasoning\n3. Does
570
+ not pad with irrelevant filler\n## Context:\nUser prompt: If all Bloops are
571
+ Razzies and all Razzies are Lazzies, are all Bloops definitely Lazzies? Explain.\n##
572
+ Candidates to evaluate: \"flash\", \"glm\", \"pro\"\n## Responses:\n\n###
573
+ flash:\n```\nYes, all Bloops are definitely Lazzies.\n\nHere''s the explanation
574
+ using logic:\n\n1. **Premise 1:** All Bloops are Razzies. (If something is
575
+ a Bloop, it must be a Razzie.)\n2. **Premise 2:** All Razzies are Lazzies.
576
+ (If something is a Razzie, it must be a Lazzie.)\n\nSince every Bloop is a
577
+ Razzie, and every Razzie is a Lazzie, then every Bloop must also be a Lazzie.
578
+ This is a classic example of a **syllogism**—a logical argument where a conclusion
579
+ is deduced from two given propositions.\n\nIn set theory terms, the set of
580
+ \"Bloops\" is contained within the set of \"Razzies,\" which is itself contained
581
+ within the set of \"Lazzies.\" Therefore, the set of \"Bloops\" is definitely
582
+ within the set of \"Lazzies.\"\n```\n\n### glm:\n```\nYes, all Bloops are
583
+ definitely Lazzies. \n\nHere is the explanation:\n\nThis is an example of
584
+ a logical deduction known as a **categorical syllogism**, and it relies on
585
+ the transitive property. Here is how the logic breaks down step-by-step:\n\n1.
586
+ **All Bloops are Razzies:** This means that if you have a Bloop, it automatically
587
+ belongs to the category of Razzies. \n2. **All Razzies are Lazzies:** This
588
+ means that everything in the category of Razzies also belongs to the broader
589
+ category of Lazzies. \n3. **Conclusion:** Since Bloops are entirely contained
590
+ within the Razzies group, and the Razzies group is entirely contained within
591
+ the Lazzies group, the Bloops must also be contained within the Lazzies group.
592
+ \n\nTo put it in more familiar terms:\n* If all cats (Bloops) are mammals
593
+ (Razzies), and all mammals (Razzies) are animals (Lazzies), then all cats
594
+ (Bloops) are definitely animals (Lazzies).\n```\n\n### pro:\n```\nYes, all
595
+ Bloops are definitely Lazzies. This is a classic example of a valid syllogism
596
+ in logic. Here''s the reasoning:\n\n- \"All Bloops are Razzies\" means that
597
+ the set of Bloops is entirely contained within the set of Razzies.\n- \"All
598
+ Razzies are Lazzies\" means that the set of Razzies is entirely contained
599
+ within the set of Lazzies.\n\nSince every Bloop is a Razzy, and every Razzy
600
+ is a Lazzy, it follows necessarily that every Bloop must also be a Lazzy.
601
+ In terms of sets, if B ⊆ R and R ⊆ L, then B ⊆ L. There is no possible scenario
602
+ where this chain of inclusion fails, so the conclusion is definite.\n```\n\nScore
603
+ each candidate (\"flash\", \"glm\", \"pro\") from 0-10.\nUse these EXACT names
604
+ in your JSON response. Declare a winner."}],"response_format":{"type":"json_object"}}'
605
+ headers:
606
+ Content-Type:
607
+ - application/json
608
+ Authorization:
609
+ - Bearer <API_KEY>
610
+ User-Agent:
611
+ - Faraday v2.14.1
612
+ response:
613
+ status:
614
+ code: 200
615
+ message: OK
616
+ headers:
617
+ date:
618
+ - Sun, 28 Jun 2026 21:27:25 GMT
619
+ content-type:
620
+ - application/json
621
+ transfer-encoding:
622
+ - chunked
623
+ connection:
624
+ - keep-alive
625
+ access-control-allow-origin:
626
+ - "*"
627
+ x-generation-id:
628
+ - gen-1782682045-bVmCybMLq5egKrLtAJaL
629
+ access-control-expose-headers:
630
+ - X-Generation-Id,cf-ray
631
+ permissions-policy:
632
+ - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com"
633
+ "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com")
634
+ referrer-policy:
635
+ - no-referrer, strict-origin-when-cross-origin
636
+ x-content-type-options:
637
+ - nosniff
638
+ content-encoding:
639
+ - gzip
640
+ server:
641
+ - cloudflare
642
+ cf-ray:
643
+ - a12fc67fec49e6f3-CVG
644
+ body:
645
+ encoding: ASCII-8BIT
646
+ string: !binary |-
647
+ CiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAoKICAgICAgICAgCgogICAgICAgICAKCiAgICAgICAgIAp7ImlkIjoiZ2VuLTE3ODI2ODIwNDUtYlZtQ3liTUxxNWVnS3JMdEFKYUwiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24iLCJjcmVhdGVkIjoxNzgyNjgyMDQ1LCJtb2RlbCI6Im9wZW5haS9ncHQtNS41LTIwMjYwNDIzIiwicHJvdmlkZXIiOiJBenVyZSIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsImNob2ljZXMiOlt7ImluZGV4IjowLCJsb2dwcm9icyI6bnVsbCwiZmluaXNoX3JlYXNvbiI6InN0b3AiLCJuYXRpdmVfZmluaXNoX3JlYXNvbiI6ImNvbXBsZXRlZCIsIm1lc3NhZ2UiOnsicm9sZSI6ImFzc2lzdGFudCIsImNvbnRlbnQiOiJ7XG4gIFwiZmxhc2hcIjoge1xuICAgIFwic2NvcmVcIjogOSxcbiAgICBcInJlYXNvbmluZ1wiOiBcIlJlYWNoZXMgdGhlIGNvcnJlY3QgY29uY2x1c2lvbiBhbmQgZ2l2ZXMgY2xlYXIgc3RlcC1ieS1zdGVwIHJlYXNvbmluZyB1c2luZyBib3RoIHN5bGxvZ2lzbSBhbmQgc2V0IGNvbnRhaW5tZW50LiBTbGlnaHRseSBtb3JlIGV4cGxhbmF0b3J5IHRoYW4gbmVjZXNzYXJ5LCBidXQgbm90IGlycmVsZXZhbnQuXCJcbiAgfSxcbiAgXCJnbG1cIjoge1xuICAgIFwic2NvcmVcIjogOSxcbiAgICBcInJlYXNvbmluZ1wiOiBcIkNvcnJlY3QgY29uY2x1c2lvbiB3aXRoIHZhbGlkIHN0ZXAtYnktc3RlcCByZWFzb25pbmcgYW5kIGEgaGVscGZ1bCBhbmFsb2d5LiBUaGUgYW5hbG9neSBhZGRzIGEgYml0IG9mIGV4dHJhIGxlbmd0aCwgYnV0IGl0IHJlbWFpbnMgcmVsZXZhbnQgYW5kIGNsZWFyLlwiXG4gIH0sXG4gIFwicHJvXCI6IHtcbiAgICBcInNjb3JlXCI6IDEwLFxuICAgIFwicmVhc29uaW5nXCI6IFwiQ29ycmVjdCBjb25jbHVzaW9uLCBjb25jaXNlIGFuZCBwcmVjaXNlIHJlYXNvbmluZywgY2xlYXIgc2V0LXRoZW9yZXRpYyBleHBsYW5hdGlvbiwgYW5kIG5vIGlycmVsZXZhbnQgZmlsbGVyLlwiXG4gIH0sXG4gIFwid2lubmVyXCI6IFwicHJvXCJcbn0iLCJyZWZ1c2FsIjpudWxsLCJyZWFzb25pbmciOiIqKkV2YWx1YXRpbmcgc2NvcmluZyBjcml0ZXJpYSoqXG5cbkkgbmVlZCB0byBjcmVhdGUgYSBzdHJ1Y3R1cmVkIGp1ZGdtZW50IGFuZCBlbnN1cmUgSSd2ZSBnb3QgdGhlIEpTT04gcmlnaHQuIFRoZSBjcml0ZXJpYSBmb3IgZXZhbHVhdGlvbiBzZWVtIHNvbGlkLCB3aXRoIGEgZm9jdXMgb24gcmVhc29uaW5nIGFuZCBjbGFyaXR5IHdpdGhvdXQgdW5uZWNlc3NhcnkgZmlsbGVyLiBJIHRoaW5rIEZsYXNoIGlzIGdvb2QsIHRob3VnaCBpdCBtaWdodCBiZSBzbGlnaHRseSB2ZXJib3NlIHdpdGggc2V0IHRoZW9yeS4gR0xNIHByb3ZpZGVzIGZhbWlsaWFyIGV4YW1wbGVzLCB3aGlsZSBQcm8gaXMgY29uY2lzZS4gSSdtIGNvbnNpZGVyaW5nIHNjb3JlczogRmxhc2ggYW5kIEdMTSBjb3VsZCBib3RoIGdldCBhIDksIGFuZCBQcm8gZGVzZXJ2ZXMgYSAxMC4gVWx0aW1hdGVseSwgUHJvIGlzIHRoZSB3aW5uZXIgc2luY2UgaXTigJlzIHN0cmljdGx5IGV4Y2VsbGVudC4gSeKAmWxsIGZpbmFsaXplIHRoaXMgd2l0aCB2YWxpZCBKU09OLiIsInJlYXNvbmluZ19kZXRhaWxzIjpbeyJ0eXBlIjoicmVhc29uaW5nLnN1bW1hcnkiLCJzdW1tYXJ5IjoiKipFdmFsdWF0aW5nIHNjb3JpbmcgY3JpdGVyaWEqKlxuXG5JIG5lZWQgdG8gY3JlYXRlIGEgc3RydWN0dXJlZCBqdWRnbWVudCBhbmQgZW5zdXJlIEkndmUgZ290IHRoZSBKU09OIHJpZ2h0LiBUaGUgY3JpdGVyaWEgZm9yIGV2YWx1YXRpb24gc2VlbSBzb2xpZCwgd2l0aCBhIGZvY3VzIG9uIHJlYXNvbmluZyBhbmQgY2xhcml0eSB3aXRob3V0IHVubmVjZXNzYXJ5IGZpbGxlci4gSSB0aGluayBGbGFzaCBpcyBnb29kLCB0aG91Z2ggaXQgbWlnaHQgYmUgc2xpZ2h0bHkgdmVyYm9zZSB3aXRoIHNldCB0aGVvcnkuIEdMTSBwcm92aWRlcyBmYW1pbGlhciBleGFtcGxlcywgd2hpbGUgUHJvIGlzIGNvbmNpc2UuIEknbSBjb25zaWRlcmluZyBzY29yZXM6IEZsYXNoIGFuZCBHTE0gY291bGQgYm90aCBnZXQgYSA5LCBhbmQgUHJvIGRlc2VydmVzIGEgMTAuIFVsdGltYXRlbHksIFBybyBpcyB0aGUgd2lubmVyIHNpbmNlIGl04oCZcyBzdHJpY3RseSBleGNlbGxlbnQuIEnigJlsbCBmaW5hbGl6ZSB0aGlzIHdpdGggdmFsaWQgSlNPTi4iLCJmb3JtYXQiOiJhenVyZS1vcGVuYWktcmVzcG9uc2VzLXYxIiwiaW5kZXgiOjB9LHsidHlwZSI6InJlYXNvbmluZy5lbmNyeXB0ZWQiLCJkYXRhIjoiZ0FBQUFBQnFRWkhGY0tfTFhvdk9NeHV0MUI1SXpHbDg1cS1wR21qbm1BNzRoOFlGU1Q1dDZRWXF2WXBYLXF0cUVfMkFuYWtOZVQ0aVZFNTZPdUR2aU9fQ0lFdTJ2bDRwYlNIbXhBVWFCcWE0bUQ0XzdtRFlBVG1NVXFIWERZWVVQVEJGWENkd1NhMjNlR096QzJoaTFlX3JKVUNabUxuU0RwUUpRYTM3OURDN3BUQXJjbG9QLThyb2RtSkVubF9kNmR1OXRHMXg0X3FSMGRVdFpMcE81NnRNcXNpdFhtWV9tSzh4UWNfWExUaFl0aENDUkF3NjVSdkpxb3c4cFFja2Z3X2RaX25nZGwtNlRDX0FGd3M1UHFzZ0lIUVFRYTFXdTlkZnIwT3B6TzlXay00QlZpY3p1aFNEeldCX1lad3BzdTdLa0pMYk0weE5JS0I4ZlY1OTBxZmw4S09acmJqZHZoQ3hQUXlFYVdCM2hMSEQ3SjdGS1IwN0owX1ViRmlxT19yLVpSZlN1djBIWU8ya3lvcEtHbHJZdklBdEdZWVNRYUxXTTI0bnVqMjBLNlpCYXBtQjcyLWlVdGdtRkQ4V2F3N2trRTZwbHVxQTZMVzlXR19SYUZGRmVyMm95cDNCQkNmTUJuaVVhRENJOFFPNWZPTTdvaHlObG9icDdSVElLOVJBM2k3WjZ3b1otYU02Q29KZUFTRURZSGxqLXNvNmpqaEx3aEtCRlBJci1mcG8tRmZ3SFBQeXlRWXJvbjAwX0NQYm9OUU5tTkNHbU9jUElDblBaa29kZ183VVFZZVRZOElMdjljd044dDVvSjRYZ01FOWtuNnVnWGRuZXp5eHYtV1R3V0NXTG1iOFFHSmt1UDQxOXpJaVR3bHpzaFJPU0pZZ2lTbWZFbVFyS0Y1N2R6OGF6dzJTR0NBVFlqVGdLYUQyV3RiTGc1UmdNNWl4SDJNTWx6UlA2Vi0ybnRlREgzMmw1UUs2TG1WMldIS2dRSk9TRTExSXBQcmVXSW1hb1dVcE9DcGZTVEpMbXV3T1piaEpMcks3UnpJMG5jQ1FBaHlqLVVNdi05UEdWZG81UUp1TnVZVzRiajhmSzBIU2FPbzVKc3VEajBleUdBQWZWODRKSEk5aFVjMi1MTnV2SkNGM291ajB6bGhWZDNIVkc5QmcwckVRSUVLaGQ5aWJ2MUdGWnBiaW5iaTNYRHRoNS1vcXlvcXIySFp6azBCWkt0WEFscGd6MEhaVHlZWmt0Q2gtTXFzZ3NTT2hrOUl2WlpQOWwybkhKOEw5LWtMQmNHWjE1eW0yb0daWFN2d1hNanhsT3ozRmNqZzduc3h5VlhITHRPUng1UGdJYkh5UElRbmtvcHB3aklranJNS1B2czNtUVNjVzBwMk1LVE1Rd0ZvTkNPSUxmZ1FzaFN3cDRiTmlGaUpZUVhkSVRqZkxfZ0NVa3BRMEREeWItRWIycl9EejU0SkdVaHJsZE9UNEJlSW8weVRMeTM3WmxzWmJ6cy1BUFdUWVhVNFpQSEhmbHZHVVNRUWtWOWNrV3M5LXlWd1V2TmpTSUhTRWUtV2YtZHc1djg3NXB2SXNaVEtZbTBrUjJyek5zVU93R18teUhMTVpQUkJVY2kwYVpzVFE0bzR2ZXpXU2RNemZma0FSOWtKQzhlVnIxVE1MbmxaWVc2b3NoUXhxdU1nQ19GdExCcHdmSXc5VkNXemJHaXRFMHdKS2tKUmRJZ3VRblcyZVhDNFd2T0h0TG1WdmVrcXMtSXliSGVSSzYtTElZNkRKcGZWc3ZoYU92SFhzWUlMTC1fMDZPUkZmSVRYWXVQSWZnT0NBSlgwem9nMU4yZmt0WmctRUVfdFY4U3VvODZTV1Fxa1dtOG9HVk10aThoWmJzQmJ6VThkQWFWQ1djT3g1SldUVG9wZHVQdW5PZmdrZlpqQ05hSkE9IiwiZm9ybWF0IjoiYXp1cmUtb3BlbmFpLXJlc3BvbnNlcy12MSIsImlkIjoicnNfMDI2ZTIwZDI2M2FjNDM0MTAxNmE0MTkxYzFkNzgwODE5MGJlZmNmYThmY2ZlODkzMmIiLCJpbmRleCI6MX1dfX1dLCJ1c2FnZSI6eyJwcm9tcHRfdG9rZW5zIjo5MjYsImNvbXBsZXRpb25fdG9rZW5zIjoyNTUsInRvdGFsX3Rva2VucyI6MTE4MSwiY29zdCI6MC4wMTIyOCwiaXNfYnlvayI6ZmFsc2UsInByb21wdF90b2tlbnNfZGV0YWlscyI6eyJjYWNoZWRfdG9rZW5zIjowLCJjYWNoZV93cml0ZV90b2tlbnMiOjAsImF1ZGlvX3Rva2VucyI6MCwidmlkZW9fdG9rZW5zIjowfSwiY29zdF9kZXRhaWxzIjp7InVwc3RyZWFtX2luZmVyZW5jZV9jb3N0IjowLjAxMjI4LCJ1cHN0cmVhbV9pbmZlcmVuY2VfcHJvbXB0X2Nvc3QiOjAuMDA0NjMsInVwc3RyZWFtX2luZmVyZW5jZV9jb21wbGV0aW9uc19jb3N0IjowLjAwNzY1fSwiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6eyJyZWFzb25pbmdfdG9rZW5zIjo5NiwiaW1hZ2VfdG9rZW5zIjowLCJhdWRpb190b2tlbnMiOjB9fX0=
648
+ recorded_at: Sun, 28 Jun 2026 21:27:33 GMT
649
+ recorded_with: VCR 6.4.0