ruby_llm-providers-qiniu 0.1.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 (90) hide show
  1. checksums.yaml +7 -0
  2. data/.flayignore +1 -0
  3. data/.github/workflows/ci.yml +28 -0
  4. data/.github/workflows/gitleaks.yml +23 -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 +114 -0
  12. data/lib/ruby_llm/providers/qiniu.rb +134 -0
  13. data/models.json +859 -0
  14. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_can_handle_a_multi_turn_conversation.yml +154 -0
  15. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_can_have_a_basic_conversation.yml +61 -0
  16. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_can_use_tools.yml +121 -0
  17. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_returns_structured_output.yml +62 -0
  18. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_returns_the_raw_response.yml +66 -0
  19. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_anthropic_claude_sonnet_5_supports_streaming_responses.yml +105 -0
  20. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_can_handle_a_multi_turn_conversation.yml +127 -0
  21. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_can_have_a_basic_conversation.yml +58 -0
  22. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_can_use_tools.yml +119 -0
  23. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_returns_structured_output.yml +59 -0
  24. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_returns_the_raw_response.yml +58 -0
  25. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_deepseek_deepseek_v4_1_flash_supports_streaming_responses.yml +89 -0
  26. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_can_handle_a_multi_turn_conversation.yml +195 -0
  27. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_can_have_a_basic_conversation.yml +96 -0
  28. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_can_use_tools.yml +165 -0
  29. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_returns_structured_output.yml +97 -0
  30. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_returns_the_raw_response.yml +97 -0
  31. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_gemini_3_1_flash_lite_preview_supports_streaming_responses.yml +70 -0
  32. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_can_handle_a_multi_turn_conversation.yml +194 -0
  33. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_can_have_a_basic_conversation.yml +96 -0
  34. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_can_use_tools.yml +165 -0
  35. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_returns_structured_output.yml +97 -0
  36. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_returns_the_raw_response.yml +97 -0
  37. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_1_flash_lite_supports_streaming_responses.yml +70 -0
  38. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_can_handle_a_multi_turn_conversation.yml +199 -0
  39. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_can_have_a_basic_conversation.yml +97 -0
  40. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_can_use_tools.yml +166 -0
  41. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_returns_structured_output.yml +98 -0
  42. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_returns_the_raw_response.yml +98 -0
  43. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_google_gemini_3_8_flash_supports_streaming_responses.yml +71 -0
  44. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_can_handle_a_multi_turn_conversation.yml +419 -0
  45. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_can_have_a_basic_conversation.yml +210 -0
  46. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_can_use_tools.yml +468 -0
  47. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_returns_structured_output.yml +229 -0
  48. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_returns_the_raw_response.yml +210 -0
  49. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_2_supports_streaming_responses.yml +102 -0
  50. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_can_handle_a_multi_turn_conversation.yml +421 -0
  51. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_can_have_a_basic_conversation.yml +157 -0
  52. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_can_use_tools.yml +469 -0
  53. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_can_handle_a_multi_turn_conversation.yml +422 -0
  54. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_can_have_a_basic_conversation.yml +211 -0
  55. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_can_use_tools.yml +469 -0
  56. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_returns_structured_output.yml +230 -0
  57. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_returns_the_raw_response.yml +211 -0
  58. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_mini_supports_streaming_responses.yml +102 -0
  59. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_returns_structured_output.yml +230 -0
  60. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_returns_the_raw_response.yml +157 -0
  61. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_4_supports_streaming_responses.yml +102 -0
  62. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_can_handle_a_multi_turn_conversation.yml +389 -0
  63. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_can_have_a_basic_conversation.yml +241 -0
  64. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_can_use_tools.yml +437 -0
  65. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_returns_structured_output.yml +214 -0
  66. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_returns_the_raw_response.yml +241 -0
  67. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_5_6_luna_supports_streaming_responses.yml +106 -0
  68. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_can_handle_a_multi_turn_conversation.yml +389 -0
  69. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_can_have_a_basic_conversation.yml +202 -0
  70. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_can_use_tools.yml +437 -0
  71. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_returns_structured_output.yml +221 -0
  72. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_returns_the_raw_response.yml +202 -0
  73. data/spec/fixtures/vcr_cassettes/rubyllm_chat_qiniu_openai_gpt_6_luna_supports_streaming_responses.yml +112 -0
  74. data/spec/ruby_llm/chat_schema_spec.rb +30 -0
  75. data/spec/ruby_llm/chat_spec.rb +35 -0
  76. data/spec/ruby_llm/chat_streaming_spec.rb +22 -0
  77. data/spec/ruby_llm/chat_tools_spec.rb +32 -0
  78. data/spec/ruby_llm/embedding_spec.rb +49 -0
  79. data/spec/ruby_llm/image_spec.rb +23 -0
  80. data/spec/ruby_llm/models_spec.rb +11 -0
  81. data/spec/ruby_llm/moderation_spec.rb +22 -0
  82. data/spec/ruby_llm/providers/qiniu_spec.rb +103 -0
  83. data/spec/ruby_llm/rerank_spec.rb +23 -0
  84. data/spec/ruby_llm/speech_spec.rb +25 -0
  85. data/spec/ruby_llm/video_spec.rb +27 -0
  86. data/spec/spec_helper.rb +26 -0
  87. data/spec/support/models.rb +30 -0
  88. data/spec/support/rubyllm_configuration.rb +14 -0
  89. data/spec/support/vcr_configuration.rb +16 -0
  90. metadata +147 -0
@@ -0,0 +1,389 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: "<QINIU_BASE_URL>/bypass/openai/v1/responses"
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-6-luna","input":[{"role":"user","content":"Who
9
+ created the programming language Ruby?"}],"stream":false,"store":false,"include":["reasoning.encrypted_content"]}'
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
+ Content-Type:
27
+ - application/json
28
+ Access-Control-Allow-Credentials:
29
+ - 'true'
30
+ Access-Control-Allow-Headers:
31
+ - ''
32
+ Access-Control-Allow-Methods:
33
+ - GET, POST, PUT, PATCH, DELETE, OPTIONS
34
+ Access-Control-Allow-Origin:
35
+ - ''
36
+ Access-Control-Expose-Headers:
37
+ - Http_x_reqid
38
+ Http-X-Reqid:
39
+ - chatptrsp-cc7ee4b228714b4298265ec22ff3fc7b
40
+ X-Ratelimit-Abusepenalty-Active:
41
+ - 'False'
42
+ X-Ratelimit-Key:
43
+ - gpt-6-luna
44
+ X-Ratelimit-Limit-Requests:
45
+ - '15000'
46
+ X-Ratelimit-Limit-Tokens:
47
+ - '15000000'
48
+ X-Ratelimit-Remaining-Requests:
49
+ - '14999'
50
+ X-Ratelimit-Remaining-Tokens:
51
+ - '14999990'
52
+ X-Ratelimit-Renewalperiod-Requests:
53
+ - '60'
54
+ X-Ratelimit-Renewalperiod-Tokens:
55
+ - '60'
56
+ X-Ratelimit-Reset-Requests:
57
+ - '0'
58
+ X-Ratelimit-Reset-Tokens:
59
+ - '0'
60
+ X-Request-Id:
61
+ - '058a9c7d-80bb-4bff-aba1-62de6d05d439'
62
+ Server:
63
+ - APISIX
64
+ Cache-Control:
65
+ - no-cache
66
+ Transfer-Encoding:
67
+ - chunked
68
+ Connection:
69
+ - keep-alive
70
+ Date:
71
+ - Wed, 30 Sep 2026 04:44:06 GMT
72
+ Eo-Log-Uuid:
73
+ - '6944633783108417699'
74
+ Eo-Cache-Status:
75
+ - MISS
76
+ body:
77
+ encoding: UTF-8
78
+ string: |-
79
+ {
80
+ "id": "resp_0f6e704bcac456d9016abc9396b4cc8190a9a61d64df09cff4",
81
+ "object": "response",
82
+ "created_at": 1790743446,
83
+ "status": "completed",
84
+ "background": false,
85
+ "completed_at": 1790743449,
86
+ "content_filters": [
87
+ {
88
+ "blocked": false,
89
+ "source_type": "prompt",
90
+ "content_filter_raw": [],
91
+ "content_filter_results": {},
92
+ "content_filter_offsets": {
93
+ "start_offset": 0,
94
+ "end_offset": 820,
95
+ "check_offset": 0
96
+ }
97
+ },
98
+ {
99
+ "blocked": false,
100
+ "source_type": "completion",
101
+ "content_filter_raw": [],
102
+ "content_filter_results": {},
103
+ "content_filter_offsets": {
104
+ "start_offset": 0,
105
+ "end_offset": 78,
106
+ "check_offset": 0
107
+ }
108
+ }
109
+ ],
110
+ "error": null,
111
+ "frequency_penalty": 0.0,
112
+ "incomplete_details": null,
113
+ "instructions": null,
114
+ "max_output_tokens": null,
115
+ "max_tool_calls": null,
116
+ "model": "openai/gpt-6-luna",
117
+ "moderation": null,
118
+ "output": [
119
+ {
120
+ "id": "msg_0f6e704bcac456d9016abc9398838c81909970af6a206a95f6",
121
+ "type": "message",
122
+ "status": "completed",
123
+ "content": [
124
+ {
125
+ "type": "output_text",
126
+ "annotations": [],
127
+ "logprobs": [],
128
+ "text": "Ruby was created by Japanese computer scientist **Yukihiro \u201cMatz\u201d Matsumoto**."
129
+ }
130
+ ],
131
+ "phase": "final_answer",
132
+ "role": "assistant"
133
+ }
134
+ ],
135
+ "parallel_tool_calls": true,
136
+ "presence_penalty": 0.0,
137
+ "previous_response_id": null,
138
+ "prompt_cache_key": null,
139
+ "prompt_cache_retention": "24h",
140
+ "reasoning": {
141
+ "context": "all_turns",
142
+ "effort": "medium",
143
+ "mode": "standard",
144
+ "summary": null
145
+ },
146
+ "safety_identifier": null,
147
+ "service_tier": "default",
148
+ "store": false,
149
+ "temperature": 1.0,
150
+ "text": {
151
+ "format": {
152
+ "type": "text"
153
+ },
154
+ "verbosity": "medium"
155
+ },
156
+ "tool_choice": "auto",
157
+ "tool_usage": {
158
+ "image_gen": {
159
+ "input_tokens": 0,
160
+ "input_tokens_details": {
161
+ "image_tokens": 0,
162
+ "text_tokens": 0
163
+ },
164
+ "output_tokens": 0,
165
+ "output_tokens_details": {
166
+ "image_tokens": 0,
167
+ "text_tokens": 0
168
+ },
169
+ "total_tokens": 0
170
+ },
171
+ "web_search": {
172
+ "num_requests": 0
173
+ }
174
+ },
175
+ "tools": [],
176
+ "top_logprobs": 0,
177
+ "top_p": 0.98,
178
+ "truncation": "disabled",
179
+ "usage": {
180
+ "input_tokens": 13,
181
+ "input_tokens_details": {
182
+ "cache_write_tokens": 0,
183
+ "cached_tokens": 0
184
+ },
185
+ "output_tokens": 25,
186
+ "output_tokens_details": {
187
+ "reasoning_tokens": 0
188
+ },
189
+ "total_tokens": 38
190
+ },
191
+ "user": null,
192
+ "metadata": {}
193
+ }
194
+ recorded_at: Wed, 30 Sep 2026 04:44:09 GMT
195
+ - request:
196
+ method: post
197
+ uri: "<QINIU_BASE_URL>/bypass/openai/v1/responses"
198
+ body:
199
+ encoding: UTF-8
200
+ string: '{"model":"openai/gpt-6-luna","input":[{"role":"user","content":"Who
201
+ created the programming language Ruby?"},{"role":"assistant","content":[{"type":"output_text","text":"Ruby
202
+ was created by Japanese computer scientist **Yukihiro “Matz” Matsumoto**."}]},{"role":"user","content":"What
203
+ year was Ruby first released?"}],"stream":false,"store":false,"include":["reasoning.encrypted_content"]}'
204
+ headers:
205
+ User-Agent:
206
+ - Faraday v2.14.4
207
+ Authorization:
208
+ - Bearer <AUTH_TOKEN>
209
+ Content-Type:
210
+ - application/json
211
+ Accept-Encoding:
212
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
213
+ Accept:
214
+ - "*/*"
215
+ response:
216
+ status:
217
+ code: 200
218
+ message: OK
219
+ headers:
220
+ Content-Type:
221
+ - application/json
222
+ Access-Control-Allow-Credentials:
223
+ - 'true'
224
+ Access-Control-Allow-Headers:
225
+ - ''
226
+ Access-Control-Allow-Methods:
227
+ - GET, POST, PUT, PATCH, DELETE, OPTIONS
228
+ Access-Control-Allow-Origin:
229
+ - ''
230
+ Access-Control-Expose-Headers:
231
+ - Http_x_reqid
232
+ Http-X-Reqid:
233
+ - chatptrsp-1418142e8ab64890a6a801e5e8631e31
234
+ X-Ratelimit-Abusepenalty-Active:
235
+ - 'False'
236
+ X-Ratelimit-Key:
237
+ - gpt-6-luna
238
+ X-Ratelimit-Limit-Requests:
239
+ - '15000'
240
+ X-Ratelimit-Limit-Tokens:
241
+ - '15000000'
242
+ X-Ratelimit-Remaining-Requests:
243
+ - '14999'
244
+ X-Ratelimit-Remaining-Tokens:
245
+ - '14999962'
246
+ X-Ratelimit-Renewalperiod-Requests:
247
+ - '60'
248
+ X-Ratelimit-Renewalperiod-Tokens:
249
+ - '60'
250
+ X-Ratelimit-Reset-Requests:
251
+ - '0'
252
+ X-Ratelimit-Reset-Tokens:
253
+ - '0'
254
+ X-Request-Id:
255
+ - 94ba64f2-a376-4dfa-8909-c3aff8e3ca0d
256
+ Server:
257
+ - APISIX
258
+ Cache-Control:
259
+ - no-cache
260
+ Transfer-Encoding:
261
+ - chunked
262
+ Connection:
263
+ - keep-alive
264
+ Date:
265
+ - Wed, 30 Sep 2026 04:44:09 GMT
266
+ Eo-Log-Uuid:
267
+ - '4383666122716500270'
268
+ Eo-Cache-Status:
269
+ - MISS
270
+ body:
271
+ encoding: UTF-8
272
+ string: |-
273
+ {
274
+ "id": "resp_03c62531757b755d016abc9399ff548193b74dc9aa07b903d1",
275
+ "object": "response",
276
+ "created_at": 1790743450,
277
+ "status": "completed",
278
+ "background": false,
279
+ "completed_at": 1790743450,
280
+ "content_filters": [
281
+ {
282
+ "blocked": false,
283
+ "source_type": "prompt",
284
+ "content_filter_raw": [],
285
+ "content_filter_results": {},
286
+ "content_filter_offsets": {
287
+ "start_offset": 0,
288
+ "end_offset": 1003,
289
+ "check_offset": 0
290
+ }
291
+ },
292
+ {
293
+ "blocked": false,
294
+ "source_type": "completion",
295
+ "content_filter_raw": [],
296
+ "content_filter_results": {},
297
+ "content_filter_offsets": {
298
+ "start_offset": 0,
299
+ "end_offset": 45,
300
+ "check_offset": 0
301
+ }
302
+ }
303
+ ],
304
+ "error": null,
305
+ "frequency_penalty": 0.0,
306
+ "incomplete_details": null,
307
+ "instructions": null,
308
+ "max_output_tokens": null,
309
+ "max_tool_calls": null,
310
+ "model": "openai/gpt-6-luna",
311
+ "moderation": null,
312
+ "output": [
313
+ {
314
+ "id": "msg_03c62531757b755d016abc939a70e08193bfdc6b6d4b39fbb9",
315
+ "type": "message",
316
+ "status": "completed",
317
+ "content": [
318
+ {
319
+ "type": "output_text",
320
+ "annotations": [],
321
+ "logprobs": [],
322
+ "text": "Ruby was first publicly released in **1995**."
323
+ }
324
+ ],
325
+ "phase": "final_answer",
326
+ "role": "assistant"
327
+ }
328
+ ],
329
+ "parallel_tool_calls": true,
330
+ "presence_penalty": 0.0,
331
+ "previous_response_id": null,
332
+ "prompt_cache_key": null,
333
+ "prompt_cache_retention": "24h",
334
+ "reasoning": {
335
+ "context": "all_turns",
336
+ "effort": "medium",
337
+ "mode": "standard",
338
+ "summary": null
339
+ },
340
+ "safety_identifier": null,
341
+ "service_tier": "default",
342
+ "store": false,
343
+ "temperature": 1.0,
344
+ "text": {
345
+ "format": {
346
+ "type": "text"
347
+ },
348
+ "verbosity": "medium"
349
+ },
350
+ "tool_choice": "auto",
351
+ "tool_usage": {
352
+ "image_gen": {
353
+ "input_tokens": 0,
354
+ "input_tokens_details": {
355
+ "image_tokens": 0,
356
+ "text_tokens": 0
357
+ },
358
+ "output_tokens": 0,
359
+ "output_tokens_details": {
360
+ "image_tokens": 0,
361
+ "text_tokens": 0
362
+ },
363
+ "total_tokens": 0
364
+ },
365
+ "web_search": {
366
+ "num_requests": 0
367
+ }
368
+ },
369
+ "tools": [],
370
+ "top_logprobs": 0,
371
+ "top_p": 0.98,
372
+ "truncation": "disabled",
373
+ "usage": {
374
+ "input_tokens": 51,
375
+ "input_tokens_details": {
376
+ "cache_write_tokens": 0,
377
+ "cached_tokens": 0
378
+ },
379
+ "output_tokens": 15,
380
+ "output_tokens_details": {
381
+ "reasoning_tokens": 0
382
+ },
383
+ "total_tokens": 66
384
+ },
385
+ "user": null,
386
+ "metadata": {}
387
+ }
388
+ recorded_at: Wed, 30 Sep 2026 04:44:10 GMT
389
+ recorded_with: VCR 6.4.0
@@ -0,0 +1,202 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: "<QINIU_BASE_URL>/bypass/openai/v1/responses"
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"model":"openai/gpt-6-luna","input":[{"role":"user","content":"What''s
9
+ 2 + 2?"}],"stream":false,"store":false,"include":["reasoning.encrypted_content"]}'
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
+ Content-Type:
27
+ - application/json
28
+ Access-Control-Allow-Credentials:
29
+ - 'true'
30
+ Access-Control-Allow-Headers:
31
+ - ''
32
+ Access-Control-Allow-Methods:
33
+ - GET, POST, PUT, PATCH, DELETE, OPTIONS
34
+ Access-Control-Allow-Origin:
35
+ - ''
36
+ Access-Control-Expose-Headers:
37
+ - Http_x_reqid
38
+ Http-X-Reqid:
39
+ - chatptrsp-1984a36e12ec4678a040cbbc5b957101
40
+ X-Ratelimit-Abusepenalty-Active:
41
+ - 'False'
42
+ X-Ratelimit-Key:
43
+ - gpt-6-luna
44
+ X-Ratelimit-Limit-Requests:
45
+ - '15000'
46
+ X-Ratelimit-Limit-Tokens:
47
+ - '15000000'
48
+ X-Ratelimit-Remaining-Requests:
49
+ - '14999'
50
+ X-Ratelimit-Remaining-Tokens:
51
+ - '14999997'
52
+ X-Ratelimit-Renewalperiod-Requests:
53
+ - '60'
54
+ X-Ratelimit-Renewalperiod-Tokens:
55
+ - '60'
56
+ X-Ratelimit-Reset-Requests:
57
+ - '0'
58
+ X-Ratelimit-Reset-Tokens:
59
+ - '0'
60
+ X-Request-Id:
61
+ - e7a64916-04b5-4011-b32a-47bb88795d6b
62
+ Server:
63
+ - APISIX
64
+ Cache-Control:
65
+ - no-cache
66
+ Transfer-Encoding:
67
+ - chunked
68
+ Connection:
69
+ - keep-alive
70
+ Date:
71
+ - Wed, 30 Sep 2026 04:44:10 GMT
72
+ Eo-Log-Uuid:
73
+ - '7065096260475744716'
74
+ Eo-Cache-Status:
75
+ - MISS
76
+ body:
77
+ encoding: UTF-8
78
+ string: |-
79
+ {
80
+ "id": "resp_02f1e50b2432d9c0016abc939ba39c8197a1feaa693ee01a25",
81
+ "object": "response",
82
+ "created_at": 1790743451,
83
+ "status": "completed",
84
+ "background": false,
85
+ "completed_at": 1790743452,
86
+ "content_filters": [
87
+ {
88
+ "blocked": false,
89
+ "source_type": "prompt",
90
+ "content_filter_raw": [],
91
+ "content_filter_results": {},
92
+ "content_filter_offsets": {
93
+ "start_offset": 0,
94
+ "end_offset": 791,
95
+ "check_offset": 0
96
+ }
97
+ },
98
+ {
99
+ "blocked": false,
100
+ "source_type": "completion",
101
+ "content_filter_raw": [],
102
+ "content_filter_results": {},
103
+ "content_filter_offsets": {
104
+ "start_offset": 0,
105
+ "end_offset": 23,
106
+ "check_offset": 0
107
+ }
108
+ }
109
+ ],
110
+ "error": null,
111
+ "frequency_penalty": 0.0,
112
+ "incomplete_details": null,
113
+ "instructions": null,
114
+ "max_output_tokens": null,
115
+ "max_tool_calls": null,
116
+ "model": "openai/gpt-6-luna",
117
+ "moderation": null,
118
+ "output": [
119
+ {
120
+ "id": "rs_02f1e50b2432d9c0016abc939bf7888197952f0435c5110b0b",
121
+ "type": "reasoning",
122
+ "content": [],
123
+ "encrypted_content": "gAAAAABqvJOcxkjpliZFmSghIhXW94DgAYvGaIsHoOLEzdnl5T0cN46pbF0_SAGHVhaNIcZVZqbY6-QQZL2oVzWzCGAD6U3gvQYHwQruqNfiwFu8km1TGyGmT5CiC5ZGvuRzn16lHr-eiuLrllzSuBVfreHI4AkIBvK7W4JOqJcKSByoH_hyApQjF2lnOQpQfkom4-1y4acCf6jnwpwHtKcxAYgLFSzNyfZwpYKwjMj4sUbLF4Fr8ezEa-3Y9lvWFInQ0ZrQWxr9eTLmgYPilHWr7BMZsRaysfylomYV_2CeK3YNosHiuWSVYeAkqnYftHOlT6aC5wot3deS4ooUrVcE0rVifLbV8jiK5YV6ZZwxWEPl8sRWr01w-1zhIWlUOX0XiwtkFJYu8T4V9UgxCysMpwlr4Ob4mP-Bo5pHZ-nvmhHf0qWN-1IN4LNb8_vYAsTllzHIXo4YyWmrgRkUo-CDDj6b5XW4xnkmQVLD1fXid049DMkn0R7qv3ezcVl5iq2fPcYEhATquSvwrwFOoKZPMwPcOokG3Ct-x5LIlAT7ygOw_uAxdiiABCBa8B6CTOmUxbyP-D_9zaSYbrUAvcVjQ3j0646qikeRvRQlmqF0TFjAsyWBIBYLXO_XNpz-PqBArr4_9Ro73czMb5NxFbCYqUHqw4q3hmWQbAkkCpqezYIDz2aK83lrQ2WZYyLufQz4RXiaiJeW7ndV-JW-bQAu3EoXPjIjb2SerWIN2uA-rrtUpEP95VnLU7qdJEPBY_sS_Bfogq67E3kmZfhwaiMrfD1SMhiyasQKazJS9FTr6uSpmIlGZy_ueZzfQ2z6DK1t_gC8qu_KsWvv8r9MiAKrZlyPoO2qdY2mBt-Y7lbOydR2rkYqqrhJdTIuZdgBPymhP1YZ2PAQ4cU69AXXCUbTYwrGTO9f7rzUx0tHoOQEiodb3sxwmJ0NMBNINyyzcObsAKMQNVOU2aqeOqoqOkS6HKcegi5QAyCMf7wsjo4umPrZh-LagkHkK0CPk-gH0y5vN3OKEO9xsXEAPuYK1afoJRcD-XCepfvLMBJkBqecLRifeuqzNEwEIjfPeNMcQafy2Bjr9vYPS6XgmN4qR3yNTpq0kepRe3spO7vkJsewh98UD1youVa-Pp07iGNgToKdIKeTrCML",
124
+ "summary": []
125
+ },
126
+ {
127
+ "id": "msg_02f1e50b2432d9c0016abc939c015881978bed967bfc237e93",
128
+ "type": "message",
129
+ "status": "completed",
130
+ "content": [
131
+ {
132
+ "type": "output_text",
133
+ "annotations": [],
134
+ "logprobs": [],
135
+ "text": "4"
136
+ }
137
+ ],
138
+ "phase": "final_answer",
139
+ "role": "assistant"
140
+ }
141
+ ],
142
+ "parallel_tool_calls": true,
143
+ "presence_penalty": 0.0,
144
+ "previous_response_id": null,
145
+ "prompt_cache_key": null,
146
+ "prompt_cache_retention": "24h",
147
+ "reasoning": {
148
+ "context": "all_turns",
149
+ "effort": "medium",
150
+ "mode": "standard",
151
+ "summary": null
152
+ },
153
+ "safety_identifier": null,
154
+ "service_tier": "default",
155
+ "store": false,
156
+ "temperature": 1.0,
157
+ "text": {
158
+ "format": {
159
+ "type": "text"
160
+ },
161
+ "verbosity": "medium"
162
+ },
163
+ "tool_choice": "auto",
164
+ "tool_usage": {
165
+ "image_gen": {
166
+ "input_tokens": 0,
167
+ "input_tokens_details": {
168
+ "image_tokens": 0,
169
+ "text_tokens": 0
170
+ },
171
+ "output_tokens": 0,
172
+ "output_tokens_details": {
173
+ "image_tokens": 0,
174
+ "text_tokens": 0
175
+ },
176
+ "total_tokens": 0
177
+ },
178
+ "web_search": {
179
+ "num_requests": 0
180
+ }
181
+ },
182
+ "tools": [],
183
+ "top_logprobs": 0,
184
+ "top_p": 0.98,
185
+ "truncation": "disabled",
186
+ "usage": {
187
+ "input_tokens": 13,
188
+ "input_tokens_details": {
189
+ "cache_write_tokens": 0,
190
+ "cached_tokens": 0
191
+ },
192
+ "output_tokens": 16,
193
+ "output_tokens_details": {
194
+ "reasoning_tokens": 9
195
+ },
196
+ "total_tokens": 29
197
+ },
198
+ "user": null,
199
+ "metadata": {}
200
+ }
201
+ recorded_at: Wed, 30 Sep 2026 04:44:12 GMT
202
+ recorded_with: VCR 6.4.0