llm.rb 15.0.3 → 15.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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +433 -3
  3. data/README.md +188 -71
  4. data/bin/llm.rb +50 -7
  5. data/data/alibaba.json +912 -823
  6. data/data/anthropic.json +234 -187
  7. data/data/bedrock.json +3702 -2058
  8. data/data/deepinfra.json +1288 -951
  9. data/data/deepseek.json +87 -53
  10. data/data/google.json +670 -670
  11. data/data/mistral.json +501 -460
  12. data/data/moonshot.json +43 -248
  13. data/data/openai.json +1008 -914
  14. data/data/openrouter.json +14417 -0
  15. data/data/xai.json +213 -201
  16. data/data/zai.json +242 -149
  17. data/docs/deepdive/advanced/compaction.md +5 -5
  18. data/docs/deepdive/advanced/context.md +8 -6
  19. data/docs/deepdive/advanced/guard.md +2 -2
  20. data/docs/deepdive/features/builtin_tools.md +93 -22
  21. data/docs/deepdive/features/{repl.md → console.md} +28 -28
  22. data/docs/deepdive/features/database.md +3 -3
  23. data/docs/deepdive/fundamentals/agents.md +13 -12
  24. data/docs/deepdive/fundamentals/providers.md +91 -6
  25. data/docs/deepdive/fundamentals/skills.md +14 -6
  26. data/docs/deepdive/fundamentals/stream.md +4 -4
  27. data/docs/deepdive/fundamentals/tools.md +63 -31
  28. data/docs/deepdive/reference/cost.md +2 -2
  29. data/docs/deepdive/reference/model_registry.md +2 -2
  30. data/docs/deepdive/reference/tracer.md +15 -13
  31. data/docs/deepdive.md +2 -2
  32. data/lib/llm/active_record/acts_as_agent.rb +9 -5
  33. data/lib/llm/agent.rb +40 -15
  34. data/lib/llm/{repl → console}/bar.rb +3 -3
  35. data/lib/llm/{repl → console}/buffer.rb +24 -9
  36. data/lib/llm/{repl → console}/color.rb +2 -2
  37. data/lib/llm/{repl → console}/command.rb +12 -12
  38. data/lib/llm/{repl → console}/commands/exit.rb +4 -4
  39. data/lib/llm/{repl → console}/commands/help.rb +1 -1
  40. data/lib/llm/{repl/commands/compact.rb → console/commands/keep.rb} +11 -9
  41. data/lib/llm/{repl → console}/commands/model.rb +2 -2
  42. data/lib/llm/{repl → console}/input/cache.rb +2 -2
  43. data/lib/llm/{repl → console}/input/char.rb +2 -2
  44. data/lib/llm/{repl → console}/input/row.rb +1 -1
  45. data/lib/llm/{repl → console}/input.rb +18 -10
  46. data/lib/llm/console/markdown/parser.rb +78 -0
  47. data/lib/llm/{repl → console}/markdown/table.rb +8 -5
  48. data/lib/llm/{repl → console}/markdown.rb +13 -30
  49. data/lib/llm/console/node.rb +69 -0
  50. data/lib/llm/{repl → console}/status.rb +11 -11
  51. data/lib/llm/{repl → console}/stream.rb +36 -9
  52. data/lib/llm/{repl → console}/walker.rb +1 -1
  53. data/lib/llm/{repl → console}/window.rb +17 -17
  54. data/lib/llm/{repl.rb → console.rb} +39 -19
  55. data/lib/llm/context/deserializer.rb +2 -1
  56. data/lib/llm/context.rb +29 -13
  57. data/lib/llm/cost.rb +13 -0
  58. data/lib/llm/function/async/reactor.rb +20 -1
  59. data/lib/llm/function/fork/task.rb +14 -10
  60. data/lib/llm/function.rb +1 -1
  61. data/lib/llm/json_adapter.rb +40 -28
  62. data/lib/llm/message.rb +7 -0
  63. data/lib/llm/provider.rb +31 -10
  64. data/lib/llm/providers/alibaba.rb +1 -1
  65. data/lib/llm/providers/anthropic.rb +1 -1
  66. data/lib/llm/providers/bedrock/models.rb +2 -2
  67. data/lib/llm/providers/bedrock.rb +1 -1
  68. data/lib/llm/providers/deepseek.rb +1 -1
  69. data/lib/llm/providers/google.rb +1 -1
  70. data/lib/llm/providers/ollama.rb +1 -1
  71. data/lib/llm/providers/openai/responses.rb +2 -1
  72. data/lib/llm/providers/openai.rb +2 -1
  73. data/lib/llm/providers/openrouter.rb +87 -0
  74. data/lib/llm/schema/leaf.rb +34 -2
  75. data/lib/llm/schema.rb +4 -2
  76. data/lib/llm/sequel/agent.rb +9 -5
  77. data/lib/llm/skill.rb +7 -1
  78. data/lib/llm/stream.rb +8 -3
  79. data/lib/llm/tool/param.rb +5 -1
  80. data/lib/llm/tool.rb +5 -0
  81. data/lib/llm/tools/bundle.rb +53 -0
  82. data/lib/llm/tools/edit-file.rb +7 -2
  83. data/lib/llm/tools/exec.rb +78 -0
  84. data/lib/llm/tools/git.rb +27 -26
  85. data/lib/llm/tools/mkdir.rb +12 -19
  86. data/lib/llm/tools/read_file.rb +69 -9
  87. data/lib/llm/tools/rg.rb +20 -24
  88. data/lib/llm/tools/ruby.rb +17 -25
  89. data/lib/llm/tools/utils.rb +75 -2
  90. data/lib/llm/tools/write_file.rb +4 -1
  91. data/lib/llm/tracer/logger.rb +2 -2
  92. data/lib/llm/tracer/pretty_logger.rb +4 -4
  93. data/lib/llm/tracer/telemetry.rb +2 -2
  94. data/lib/llm/tracer.rb +33 -0
  95. data/lib/llm/transport/curb.rb +5 -3
  96. data/lib/llm/transport/http.rb +5 -2
  97. data/lib/llm/transport/persistent_http.rb +6 -4
  98. data/lib/llm/transport/utils.rb +8 -6
  99. data/lib/llm/version.rb +1 -1
  100. data/lib/llm.rb +18 -12
  101. data/llm.gemspec +8 -8
  102. metadata +80 -37
  103. data/lib/llm/repl/node.rb +0 -44
  104. data/lib/llm/tools/shell.rb +0 -55
data/data/xai.json CHANGED
@@ -7,38 +7,10 @@
7
7
  "name": "xAI",
8
8
  "doc": "https://docs.x.ai/docs/models",
9
9
  "models": {
10
- "grok-imagine-video": {
11
- "id": "grok-imagine-video",
12
- "name": "Grok Imagine Video",
13
- "description": "Image model for prompt-driven generation, editing, and visual design workflows",
14
- "family": "grok",
15
- "attachment": true,
16
- "reasoning": false,
17
- "tool_call": false,
18
- "temperature": false,
19
- "release_date": "2026-01-28",
20
- "last_updated": "2026-01-28",
21
- "modalities": {
22
- "input": [
23
- "text",
24
- "image",
25
- "video",
26
- "pdf"
27
- ],
28
- "output": [
29
- "video"
30
- ]
31
- },
32
- "open_weights": false,
33
- "limit": {
34
- "context": 1024,
35
- "output": 0
36
- }
37
- },
38
- "grok-4.6": {
39
- "id": "grok-4.6",
40
- "name": "Grok 4.6",
41
- "description": "xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",
10
+ "grok-4.3": {
11
+ "id": "grok-4.3",
12
+ "name": "Grok 4.3",
13
+ "description": "xAI's Grok for chat, coding, agentic tools, and lower hallucination risk",
42
14
  "family": "grok",
43
15
  "attachment": true,
44
16
  "reasoning": true,
@@ -46,19 +18,18 @@
46
18
  {
47
19
  "type": "effort",
48
20
  "values": [
21
+ "none",
49
22
  "low",
50
23
  "medium",
51
- "high",
52
- "xhigh"
24
+ "high"
53
25
  ]
54
26
  }
55
27
  ],
56
28
  "tool_call": true,
57
29
  "structured_output": true,
58
30
  "temperature": true,
59
- "knowledge": "2026-02-01",
60
- "release_date": "2026-08-12",
61
- "last_updated": "2026-08-12",
31
+ "release_date": "2026-04-17",
32
+ "last_updated": "2026-04-17",
62
33
  "modalities": {
63
34
  "input": [
64
35
  "text",
@@ -71,34 +42,18 @@
71
42
  },
72
43
  "open_weights": false,
73
44
  "limit": {
74
- "context": 500000,
75
- "output": 500000
76
- },
77
- "experimental": {
78
- "modes": {
79
- "fast": {
80
- "cost": {
81
- "input": 4,
82
- "output": 12,
83
- "cache_read": 1
84
- },
85
- "provider": {
86
- "body": {
87
- "service_tier": "priority"
88
- }
89
- }
90
- }
91
- }
45
+ "context": 1000000,
46
+ "output": 30000
92
47
  },
93
48
  "cost": {
94
- "input": 2,
95
- "output": 6,
96
- "cache_read": 0.5,
49
+ "input": 1.25,
50
+ "output": 2.5,
51
+ "cache_read": 0.2,
97
52
  "tiers": [
98
53
  {
99
- "input": 4,
100
- "output": 12,
101
- "cache_read": 1,
54
+ "input": 2.5,
55
+ "output": 5,
56
+ "cache_read": 0.4,
102
57
  "tier": {
103
58
  "type": "context",
104
59
  "size": 200000
@@ -106,34 +61,25 @@
106
61
  }
107
62
  ],
108
63
  "context_over_200k": {
109
- "input": 4,
110
- "output": 12,
111
- "cache_read": 1
64
+ "input": 2.5,
65
+ "output": 5,
66
+ "cache_read": 0.4
112
67
  }
113
68
  }
114
69
  },
115
- "grok-4.5": {
116
- "id": "grok-4.5",
117
- "name": "Grok 4.5",
118
- "description": "xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk",
70
+ "grok-4.20-0309-reasoning": {
71
+ "id": "grok-4.20-0309-reasoning",
72
+ "name": "Grok 4.20 (Reasoning)",
73
+ "description": "Reasoning Grok for document-heavy analysis and long-horizon tool use",
119
74
  "family": "grok",
120
75
  "attachment": true,
121
76
  "reasoning": true,
122
- "reasoning_options": [
123
- {
124
- "type": "effort",
125
- "values": [
126
- "low",
127
- "medium",
128
- "high"
129
- ]
130
- }
131
- ],
77
+ "reasoning_options": [],
132
78
  "tool_call": true,
133
79
  "structured_output": true,
134
80
  "temperature": true,
135
- "release_date": "2026-07-08",
136
- "last_updated": "2026-07-08",
81
+ "release_date": "2026-03-09",
82
+ "last_updated": "2026-03-09",
137
83
  "modalities": {
138
84
  "input": [
139
85
  "text",
@@ -146,18 +92,18 @@
146
92
  },
147
93
  "open_weights": false,
148
94
  "limit": {
149
- "context": 500000,
150
- "output": 500000
95
+ "context": 1000000,
96
+ "output": 30000
151
97
  },
152
98
  "cost": {
153
- "input": 2,
154
- "output": 6,
155
- "cache_read": 0.3,
99
+ "input": 1.25,
100
+ "output": 2.5,
101
+ "cache_read": 0.2,
156
102
  "tiers": [
157
103
  {
158
- "input": 4,
159
- "output": 12,
160
- "cache_read": 0.6,
104
+ "input": 2.5,
105
+ "output": 5,
106
+ "cache_read": 0.4,
161
107
  "tier": {
162
108
  "type": "context",
163
109
  "size": 200000
@@ -165,20 +111,31 @@
165
111
  }
166
112
  ],
167
113
  "context_over_200k": {
168
- "input": 4,
169
- "output": 12,
170
- "cache_read": 0.6
114
+ "input": 2.5,
115
+ "output": 5,
116
+ "cache_read": 0.4
171
117
  }
172
118
  }
173
119
  },
174
- "grok-4.20-0309-non-reasoning": {
175
- "id": "grok-4.20-0309-non-reasoning",
176
- "name": "Grok 4.20 (Non-Reasoning)",
120
+ "grok-4.20-multi-agent-0309": {
121
+ "id": "grok-4.20-multi-agent-0309",
122
+ "name": "Grok 4.20 Multi-Agent",
177
123
  "description": "Grok model for agentic tool use, reasoning, coding, and live assistance",
178
124
  "family": "grok",
179
125
  "attachment": true,
180
- "reasoning": false,
181
- "tool_call": true,
126
+ "reasoning": true,
127
+ "reasoning_options": [
128
+ {
129
+ "type": "effort",
130
+ "values": [
131
+ "low",
132
+ "medium",
133
+ "high",
134
+ "xhigh"
135
+ ]
136
+ }
137
+ ],
138
+ "tool_call": false,
182
139
  "structured_output": true,
183
140
  "temperature": true,
184
141
  "release_date": "2026-03-09",
@@ -220,75 +177,84 @@
220
177
  }
221
178
  }
222
179
  },
223
- "grok-imagine-video-1.5": {
224
- "id": "grok-imagine-video-1.5",
225
- "name": "Grok Imagine Video 1.5",
226
- "description": "Video model for image-to-video generation, editing, and extension workflows",
180
+ "grok-imagine-image": {
181
+ "id": "grok-imagine-image",
182
+ "name": "Grok Imagine Image",
183
+ "description": "Image model for prompt-driven generation, editing, and visual design workflows",
227
184
  "family": "grok",
228
185
  "attachment": true,
229
186
  "reasoning": false,
230
187
  "tool_call": false,
231
188
  "temperature": false,
232
- "release_date": "2026-05-30",
233
- "last_updated": "2026-05-30",
189
+ "release_date": "2026-01-28",
190
+ "last_updated": "2026-01-28",
234
191
  "modalities": {
235
192
  "input": [
236
193
  "text",
237
194
  "image",
238
- "audio",
239
195
  "pdf"
240
196
  ],
241
197
  "output": [
242
- "video"
198
+ "image",
199
+ "pdf"
243
200
  ]
244
201
  },
245
202
  "open_weights": false,
246
203
  "limit": {
247
- "context": 1024,
204
+ "context": 16000,
248
205
  "output": 0
249
206
  }
250
207
  },
251
- "grok-imagine-image-quality": {
252
- "id": "grok-imagine-image-quality",
253
- "name": "Grok Imagine Image Quality",
208
+ "grok-imagine-video": {
209
+ "id": "grok-imagine-video",
210
+ "name": "Grok Imagine Video",
254
211
  "description": "Image model for prompt-driven generation, editing, and visual design workflows",
255
212
  "family": "grok",
256
213
  "attachment": true,
257
214
  "reasoning": false,
258
215
  "tool_call": false,
259
216
  "temperature": false,
260
- "release_date": "2026-04-03",
261
- "last_updated": "2026-04-03",
217
+ "release_date": "2026-01-28",
218
+ "last_updated": "2026-01-28",
262
219
  "modalities": {
263
220
  "input": [
264
221
  "text",
265
222
  "image",
223
+ "video",
266
224
  "pdf"
267
225
  ],
268
226
  "output": [
269
- "image",
270
- "pdf"
227
+ "video"
271
228
  ]
272
229
  },
273
230
  "open_weights": false,
274
231
  "limit": {
275
- "context": 8000,
232
+ "context": 1024,
276
233
  "output": 0
277
234
  }
278
235
  },
279
- "grok-4.20-0309-reasoning": {
280
- "id": "grok-4.20-0309-reasoning",
281
- "name": "Grok 4.20 (Reasoning)",
282
- "description": "Reasoning Grok for document-heavy analysis and long-horizon tool use",
236
+ "grok-4.5": {
237
+ "id": "grok-4.5",
238
+ "name": "Grok 4.5",
239
+ "description": "xAI's Grok model for chat, coding, agentic tools, and lower hallucination risk",
283
240
  "family": "grok",
284
241
  "attachment": true,
285
242
  "reasoning": true,
286
- "reasoning_options": [],
243
+ "reasoning_options": [
244
+ {
245
+ "type": "effort",
246
+ "values": [
247
+ "low",
248
+ "medium",
249
+ "high"
250
+ ]
251
+ }
252
+ ],
287
253
  "tool_call": true,
288
254
  "structured_output": true,
289
255
  "temperature": true,
290
- "release_date": "2026-03-09",
291
- "last_updated": "2026-03-09",
256
+ "release_date": "2026-07-08",
257
+ "last_updated": "2026-07-08",
292
258
  "modalities": {
293
259
  "input": [
294
260
  "text",
@@ -301,18 +267,18 @@
301
267
  },
302
268
  "open_weights": false,
303
269
  "limit": {
304
- "context": 1000000,
305
- "output": 30000
270
+ "context": 500000,
271
+ "output": 500000
306
272
  },
307
273
  "cost": {
308
- "input": 1.25,
309
- "output": 2.5,
310
- "cache_read": 0.2,
274
+ "input": 2,
275
+ "output": 6,
276
+ "cache_read": 0.3,
311
277
  "tiers": [
312
278
  {
313
- "input": 2.5,
314
- "output": 5,
315
- "cache_read": 0.4,
279
+ "input": 4,
280
+ "output": 12,
281
+ "cache_read": 0.6,
316
282
  "tier": {
317
283
  "type": "context",
318
284
  "size": 200000
@@ -320,35 +286,25 @@
320
286
  }
321
287
  ],
322
288
  "context_over_200k": {
323
- "input": 2.5,
324
- "output": 5,
325
- "cache_read": 0.4
289
+ "input": 4,
290
+ "output": 12,
291
+ "cache_read": 0.6
326
292
  }
327
293
  }
328
294
  },
329
- "grok-4.20-multi-agent-0309": {
330
- "id": "grok-4.20-multi-agent-0309",
331
- "name": "Grok 4.20 Multi-Agent",
332
- "description": "Grok model for agentic tool use, reasoning, coding, and live assistance",
333
- "family": "grok",
295
+ "grok-build-0.1": {
296
+ "id": "grok-build-0.1",
297
+ "name": "Grok Build 0.1",
298
+ "description": "Fast Grok coding model tuned for agentic engineering and iterative edits",
299
+ "family": "grok-build",
334
300
  "attachment": true,
335
301
  "reasoning": true,
336
- "reasoning_options": [
337
- {
338
- "type": "effort",
339
- "values": [
340
- "low",
341
- "medium",
342
- "high",
343
- "xhigh"
344
- ]
345
- }
346
- ],
347
- "tool_call": false,
302
+ "reasoning_options": [],
303
+ "tool_call": true,
348
304
  "structured_output": true,
349
305
  "temperature": true,
350
- "release_date": "2026-03-09",
351
- "last_updated": "2026-03-09",
306
+ "release_date": "2026-04-16",
307
+ "last_updated": "2026-04-16",
352
308
  "modalities": {
353
309
  "input": [
354
310
  "text",
@@ -361,17 +317,17 @@
361
317
  },
362
318
  "open_weights": false,
363
319
  "limit": {
364
- "context": 1000000,
365
- "output": 30000
320
+ "context": 256000,
321
+ "output": 256000
366
322
  },
367
323
  "cost": {
368
- "input": 1.25,
369
- "output": 2.5,
324
+ "input": 1,
325
+ "output": 2,
370
326
  "cache_read": 0.2,
371
327
  "tiers": [
372
328
  {
373
- "input": 2.5,
374
- "output": 5,
329
+ "input": 2,
330
+ "output": 4,
375
331
  "cache_read": 0.4,
376
332
  "tier": {
377
333
  "type": "context",
@@ -380,23 +336,51 @@
380
336
  }
381
337
  ],
382
338
  "context_over_200k": {
383
- "input": 2.5,
384
- "output": 5,
339
+ "input": 2,
340
+ "output": 4,
385
341
  "cache_read": 0.4
386
342
  }
387
343
  }
388
344
  },
389
- "grok-imagine-image": {
390
- "id": "grok-imagine-image",
391
- "name": "Grok Imagine Image",
345
+ "grok-imagine-video-1.5": {
346
+ "id": "grok-imagine-video-1.5",
347
+ "name": "Grok Imagine Video 1.5",
348
+ "description": "Video model for image-to-video generation, editing, and extension workflows",
349
+ "family": "grok",
350
+ "attachment": true,
351
+ "reasoning": false,
352
+ "tool_call": false,
353
+ "temperature": false,
354
+ "release_date": "2026-05-30",
355
+ "last_updated": "2026-05-30",
356
+ "modalities": {
357
+ "input": [
358
+ "text",
359
+ "image",
360
+ "audio",
361
+ "pdf"
362
+ ],
363
+ "output": [
364
+ "video"
365
+ ]
366
+ },
367
+ "open_weights": false,
368
+ "limit": {
369
+ "context": 1024,
370
+ "output": 0
371
+ }
372
+ },
373
+ "grok-imagine-image-2.0": {
374
+ "id": "grok-imagine-image-2.0",
375
+ "name": "Grok Imagine Image 2.0",
392
376
  "description": "Image model for prompt-driven generation, editing, and visual design workflows",
393
377
  "family": "grok",
394
378
  "attachment": true,
395
379
  "reasoning": false,
396
380
  "tool_call": false,
397
381
  "temperature": false,
398
- "release_date": "2026-01-28",
399
- "last_updated": "2026-01-28",
382
+ "release_date": "2026-08-07",
383
+ "last_updated": "2026-08-07",
400
384
  "modalities": {
401
385
  "input": [
402
386
  "text",
@@ -410,23 +394,34 @@
410
394
  },
411
395
  "open_weights": false,
412
396
  "limit": {
413
- "context": 8000,
397
+ "context": 64000,
414
398
  "output": 0
415
399
  }
416
400
  },
417
- "grok-build-0.1": {
418
- "id": "grok-build-0.1",
419
- "name": "Grok Build 0.1",
420
- "description": "Fast Grok coding model tuned for agentic engineering and iterative edits",
421
- "family": "grok-build",
401
+ "grok-4.6": {
402
+ "id": "grok-4.6",
403
+ "name": "Grok 4.6",
404
+ "description": "xAI's frontier model for long-running agents, coding, knowledge work, and visual projects",
405
+ "family": "grok",
422
406
  "attachment": true,
423
407
  "reasoning": true,
424
- "reasoning_options": [],
408
+ "reasoning_options": [
409
+ {
410
+ "type": "effort",
411
+ "values": [
412
+ "low",
413
+ "medium",
414
+ "high",
415
+ "xhigh"
416
+ ]
417
+ }
418
+ ],
425
419
  "tool_call": true,
426
420
  "structured_output": true,
427
421
  "temperature": true,
428
- "release_date": "2026-04-16",
429
- "last_updated": "2026-04-16",
422
+ "knowledge": "2026-02-01",
423
+ "release_date": "2026-08-12",
424
+ "last_updated": "2026-08-12",
430
425
  "modalities": {
431
426
  "input": [
432
427
  "text",
@@ -439,18 +434,18 @@
439
434
  },
440
435
  "open_weights": false,
441
436
  "limit": {
442
- "context": 256000,
443
- "output": 256000
437
+ "context": 500000,
438
+ "output": 500000
444
439
  },
445
440
  "cost": {
446
- "input": 1,
447
- "output": 2,
448
- "cache_read": 0.2,
441
+ "input": 2,
442
+ "output": 6,
443
+ "cache_read": 0.5,
449
444
  "tiers": [
450
445
  {
451
- "input": 2,
452
- "output": 4,
453
- "cache_read": 0.4,
446
+ "input": 4,
447
+ "output": 12,
448
+ "cache_read": 1,
454
449
  "tier": {
455
450
  "type": "context",
456
451
  "size": 200000
@@ -458,35 +453,52 @@
458
453
  }
459
454
  ],
460
455
  "context_over_200k": {
461
- "input": 2,
462
- "output": 4,
463
- "cache_read": 0.4
456
+ "input": 4,
457
+ "output": 12,
458
+ "cache_read": 1
464
459
  }
465
460
  }
466
461
  },
467
- "grok-4.3": {
468
- "id": "grok-4.3",
469
- "name": "Grok 4.3",
470
- "description": "xAI's Grok for chat, coding, agentic tools, and lower hallucination risk",
462
+ "grok-imagine-image-quality": {
463
+ "id": "grok-imagine-image-quality",
464
+ "name": "Grok Imagine Image Quality",
465
+ "description": "Image model for prompt-driven generation, editing, and visual design workflows",
471
466
  "family": "grok",
472
467
  "attachment": true,
473
- "reasoning": true,
474
- "reasoning_options": [
475
- {
476
- "type": "effort",
477
- "values": [
478
- "none",
479
- "low",
480
- "medium",
481
- "high"
482
- ]
483
- }
484
- ],
468
+ "reasoning": false,
469
+ "tool_call": false,
470
+ "temperature": false,
471
+ "release_date": "2026-04-03",
472
+ "last_updated": "2026-04-03",
473
+ "modalities": {
474
+ "input": [
475
+ "text",
476
+ "image",
477
+ "pdf"
478
+ ],
479
+ "output": [
480
+ "image",
481
+ "pdf"
482
+ ]
483
+ },
484
+ "open_weights": false,
485
+ "limit": {
486
+ "context": 16000,
487
+ "output": 0
488
+ }
489
+ },
490
+ "grok-4.20-0309-non-reasoning": {
491
+ "id": "grok-4.20-0309-non-reasoning",
492
+ "name": "Grok 4.20 (Non-Reasoning)",
493
+ "description": "Grok model for agentic tool use, reasoning, coding, and live assistance",
494
+ "family": "grok",
495
+ "attachment": true,
496
+ "reasoning": false,
485
497
  "tool_call": true,
486
498
  "structured_output": true,
487
499
  "temperature": true,
488
- "release_date": "2026-04-17",
489
- "last_updated": "2026-04-17",
500
+ "release_date": "2026-03-09",
501
+ "last_updated": "2026-03-09",
490
502
  "modalities": {
491
503
  "input": [
492
504
  "text",