kiln-ai 0.14.0__py3-none-any.whl → 0.16.0__py3-none-any.whl

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 (58) hide show
  1. kiln_ai/adapters/eval/base_eval.py +7 -2
  2. kiln_ai/adapters/eval/eval_runner.py +5 -64
  3. kiln_ai/adapters/eval/g_eval.py +3 -3
  4. kiln_ai/adapters/fine_tune/base_finetune.py +6 -3
  5. kiln_ai/adapters/fine_tune/dataset_formatter.py +128 -38
  6. kiln_ai/adapters/fine_tune/finetune_registry.py +2 -0
  7. kiln_ai/adapters/fine_tune/fireworks_finetune.py +2 -1
  8. kiln_ai/adapters/fine_tune/test_base_finetune.py +7 -0
  9. kiln_ai/adapters/fine_tune/test_dataset_formatter.py +267 -10
  10. kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +1 -1
  11. kiln_ai/adapters/fine_tune/test_vertex_finetune.py +586 -0
  12. kiln_ai/adapters/fine_tune/vertex_finetune.py +217 -0
  13. kiln_ai/adapters/ml_model_list.py +817 -62
  14. kiln_ai/adapters/model_adapters/base_adapter.py +33 -10
  15. kiln_ai/adapters/model_adapters/litellm_adapter.py +51 -12
  16. kiln_ai/adapters/model_adapters/test_base_adapter.py +74 -2
  17. kiln_ai/adapters/model_adapters/test_litellm_adapter.py +65 -1
  18. kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +3 -2
  19. kiln_ai/adapters/model_adapters/test_structured_output.py +4 -6
  20. kiln_ai/adapters/parsers/base_parser.py +0 -3
  21. kiln_ai/adapters/parsers/parser_registry.py +5 -3
  22. kiln_ai/adapters/parsers/r1_parser.py +17 -2
  23. kiln_ai/adapters/parsers/request_formatters.py +40 -0
  24. kiln_ai/adapters/parsers/test_parser_registry.py +2 -2
  25. kiln_ai/adapters/parsers/test_r1_parser.py +44 -1
  26. kiln_ai/adapters/parsers/test_request_formatters.py +76 -0
  27. kiln_ai/adapters/prompt_builders.py +14 -1
  28. kiln_ai/adapters/provider_tools.py +25 -1
  29. kiln_ai/adapters/repair/test_repair_task.py +3 -2
  30. kiln_ai/adapters/test_prompt_builders.py +24 -3
  31. kiln_ai/adapters/test_provider_tools.py +86 -1
  32. kiln_ai/datamodel/__init__.py +2 -0
  33. kiln_ai/datamodel/datamodel_enums.py +14 -0
  34. kiln_ai/datamodel/dataset_filters.py +69 -1
  35. kiln_ai/datamodel/dataset_split.py +4 -0
  36. kiln_ai/datamodel/eval.py +8 -0
  37. kiln_ai/datamodel/finetune.py +1 -0
  38. kiln_ai/datamodel/json_schema.py +24 -7
  39. kiln_ai/datamodel/prompt_id.py +1 -0
  40. kiln_ai/datamodel/task_output.py +10 -6
  41. kiln_ai/datamodel/task_run.py +68 -12
  42. kiln_ai/datamodel/test_basemodel.py +3 -7
  43. kiln_ai/datamodel/test_dataset_filters.py +82 -0
  44. kiln_ai/datamodel/test_dataset_split.py +2 -0
  45. kiln_ai/datamodel/test_example_models.py +158 -3
  46. kiln_ai/datamodel/test_json_schema.py +22 -3
  47. kiln_ai/datamodel/test_model_perf.py +3 -2
  48. kiln_ai/datamodel/test_models.py +50 -2
  49. kiln_ai/utils/async_job_runner.py +106 -0
  50. kiln_ai/utils/dataset_import.py +80 -18
  51. kiln_ai/utils/test_async_job_runner.py +199 -0
  52. kiln_ai/utils/test_dataset_import.py +242 -10
  53. {kiln_ai-0.14.0.dist-info → kiln_ai-0.16.0.dist-info}/METADATA +3 -2
  54. kiln_ai-0.16.0.dist-info/RECORD +108 -0
  55. kiln_ai/adapters/test_generate_docs.py +0 -69
  56. kiln_ai-0.14.0.dist-info/RECORD +0 -103
  57. {kiln_ai-0.14.0.dist-info → kiln_ai-0.16.0.dist-info}/WHEEL +0 -0
  58. {kiln_ai-0.14.0.dist-info → kiln_ai-0.16.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -70,9 +70,18 @@ class ModelName(str, Enum):
70
70
  llama_3_3_70b = "llama_3_3_70b"
71
71
  gpt_4o_mini = "gpt_4o_mini"
72
72
  gpt_4o = "gpt_4o"
73
+ gpt_4_1 = "gpt_4_1"
74
+ gpt_4_1_mini = "gpt_4_1_mini"
75
+ gpt_4_1_nano = "gpt_4_1_nano"
76
+ gpt_o3_low = "gpt_o3_low"
77
+ gpt_o3_medium = "gpt_o3_medium"
78
+ gpt_o3_high = "gpt_o3_high"
73
79
  gpt_o1_low = "gpt_o1_low"
74
80
  gpt_o1_medium = "gpt_o1_medium"
75
81
  gpt_o1_high = "gpt_o1_high"
82
+ gpt_o4_mini_low = "gpt_o4_mini_low"
83
+ gpt_o4_mini_medium = "gpt_o4_mini_medium"
84
+ gpt_o4_mini_high = "gpt_o4_mini_high"
76
85
  gpt_o3_mini_low = "gpt_o3_mini_low"
77
86
  gpt_o3_mini_medium = "gpt_o3_mini_medium"
78
87
  gpt_o3_mini_high = "gpt_o3_mini_high"
@@ -97,6 +106,9 @@ class ModelName(str, Enum):
97
106
  gemini_1_5_flash_8b = "gemini_1_5_flash_8b"
98
107
  gemini_1_5_pro = "gemini_1_5_pro"
99
108
  gemini_2_0_flash = "gemini_2_0_flash"
109
+ gemini_2_0_flash_lite = "gemini_2_0_flash_lite"
110
+ gemini_2_5_pro = "gemini_2_5_pro"
111
+ gemini_2_5_flash = "gemini_2_5_flash"
100
112
  nemotron_70b = "nemotron_70b"
101
113
  mixtral_8x7b = "mixtral_8x7b"
102
114
  qwen_2p5_7b = "qwen_2p5_7b"
@@ -114,6 +126,22 @@ class ModelName(str, Enum):
114
126
  deepseek_r1_distill_llama_8b = "deepseek_r1_distill_llama_8b"
115
127
  dolphin_2_9_8x22b = "dolphin_2_9_8x22b"
116
128
  grok_2 = "grok_2"
129
+ qwen_3_0p6b = "qwen_3_0p6b"
130
+ qwen_3_0p6b_no_thinking = "qwen_3_0p6b_no_thinking"
131
+ qwen_3_1p7b = "qwen_3_1p7b"
132
+ qwen_3_1p7b_no_thinking = "qwen_3_1p7b_no_thinking"
133
+ qwen_3_4b = "qwen_3_4b"
134
+ qwen_3_4b_no_thinking = "qwen_3_4b_no_thinking"
135
+ qwen_3_8b = "qwen_3_8b"
136
+ qwen_3_8b_no_thinking = "qwen_3_8b_no_thinking"
137
+ qwen_3_14b = "qwen_3_14b"
138
+ qwen_3_14b_no_thinking = "qwen_3_14b_no_thinking"
139
+ qwen_3_30b_a3b = "qwen_3_30b_a3b"
140
+ qwen_3_30b_a3b_no_thinking = "qwen_3_30b_a3b_no_thinking"
141
+ qwen_3_32b = "qwen_3_32b"
142
+ qwen_3_32b_no_thinking = "qwen_3_32b_no_thinking"
143
+ qwen_3_235b_a22b = "qwen_3_235b_a22b"
144
+ qwen_3_235b_a22b_no_thinking = "qwen_3_235b_a22b_no_thinking"
117
145
 
118
146
 
119
147
  class ModelParserID(str, Enum):
@@ -122,6 +150,15 @@ class ModelParserID(str, Enum):
122
150
  """
123
151
 
124
152
  r1_thinking = "r1_thinking"
153
+ optional_r1_thinking = "optional_r1_thinking"
154
+
155
+
156
+ class ModelFormatterID(str, Enum):
157
+ """
158
+ Enumeration of supported model formatters.
159
+ """
160
+
161
+ qwen3_style_no_think = "qwen3_style_no_think"
125
162
 
126
163
 
127
164
  class KilnModelProvider(BaseModel):
@@ -143,12 +180,15 @@ class KilnModelProvider(BaseModel):
143
180
  model_id: str | None = None
144
181
  supports_structured_output: bool = True
145
182
  supports_data_gen: bool = True
183
+ suggested_for_data_gen: bool = False
146
184
  untested_model: bool = False
147
185
  provider_finetune_id: str | None = None
148
186
  structured_output_mode: StructuredOutputMode = StructuredOutputMode.default
149
187
  parser: ModelParserID | None = None
188
+ formatter: ModelFormatterID | None = None
150
189
  reasoning_capable: bool = False
151
190
  supports_logprobs: bool = False
191
+ suggested_for_evals: bool = False
152
192
 
153
193
  # TODO P1: Need a more generalized way to handle custom provider parameters.
154
194
  # Making them quite declarative here for now, isolating provider specific logic
@@ -181,29 +221,89 @@ class KilnModel(BaseModel):
181
221
 
182
222
 
183
223
  built_in_models: List[KilnModel] = [
184
- # GPT 4o Mini
224
+ # GPT 4.1
185
225
  KilnModel(
186
226
  family=ModelFamily.gpt,
187
- name=ModelName.gpt_4o_mini,
188
- friendly_name="GPT 4o Mini",
227
+ name=ModelName.gpt_4_1,
228
+ friendly_name="GPT 4.1",
189
229
  providers=[
190
230
  KilnModelProvider(
191
231
  name=ModelProviderName.openai,
192
- model_id="gpt-4o-mini",
193
- provider_finetune_id="gpt-4o-mini-2024-07-18",
232
+ model_id="gpt-4.1",
233
+ provider_finetune_id="gpt-4.1-2025-04-14",
194
234
  structured_output_mode=StructuredOutputMode.json_schema,
195
235
  supports_logprobs=True,
236
+ suggested_for_data_gen=True,
237
+ suggested_for_evals=True,
196
238
  ),
197
239
  KilnModelProvider(
198
240
  name=ModelProviderName.openrouter,
199
- model_id="openai/gpt-4o-mini",
241
+ model_id="openai/gpt-4.1",
200
242
  structured_output_mode=StructuredOutputMode.json_schema,
201
243
  supports_logprobs=True,
202
- logprobs_openrouter_options=True,
244
+ suggested_for_data_gen=True,
245
+ suggested_for_evals=True,
203
246
  ),
204
247
  KilnModelProvider(
205
248
  name=ModelProviderName.azure_openai,
206
- model_id="gpt-4o-mini",
249
+ model_id="gpt-4.1",
250
+ suggested_for_data_gen=True,
251
+ suggested_for_evals=True,
252
+ ),
253
+ ],
254
+ ),
255
+ # GPT 4.1 Mini
256
+ KilnModel(
257
+ family=ModelFamily.gpt,
258
+ name=ModelName.gpt_4_1_mini,
259
+ friendly_name="GPT 4.1 Mini",
260
+ providers=[
261
+ KilnModelProvider(
262
+ name=ModelProviderName.openai,
263
+ model_id="gpt-4.1-mini",
264
+ provider_finetune_id="gpt-4.1-mini-2025-04-14",
265
+ structured_output_mode=StructuredOutputMode.json_schema,
266
+ supports_logprobs=True,
267
+ suggested_for_data_gen=True,
268
+ suggested_for_evals=True,
269
+ ),
270
+ KilnModelProvider(
271
+ name=ModelProviderName.openrouter,
272
+ model_id="openai/gpt-4.1-mini",
273
+ structured_output_mode=StructuredOutputMode.json_schema,
274
+ supports_logprobs=True,
275
+ suggested_for_data_gen=True,
276
+ suggested_for_evals=True,
277
+ ),
278
+ KilnModelProvider(
279
+ name=ModelProviderName.azure_openai,
280
+ model_id="gpt-4.1-mini",
281
+ suggested_for_data_gen=True,
282
+ suggested_for_evals=True,
283
+ ),
284
+ ],
285
+ ),
286
+ # GPT 4.1 Nano
287
+ KilnModel(
288
+ family=ModelFamily.gpt,
289
+ name=ModelName.gpt_4_1_nano,
290
+ friendly_name="GPT 4.1 Nano",
291
+ providers=[
292
+ KilnModelProvider(
293
+ name=ModelProviderName.openai,
294
+ model_id="gpt-4.1-nano",
295
+ structured_output_mode=StructuredOutputMode.json_schema,
296
+ supports_logprobs=True,
297
+ ),
298
+ KilnModelProvider(
299
+ name=ModelProviderName.openrouter,
300
+ model_id="openai/gpt-4.1-nano",
301
+ structured_output_mode=StructuredOutputMode.json_schema,
302
+ supports_logprobs=True,
303
+ ),
304
+ KilnModelProvider(
305
+ name=ModelProviderName.azure_openai,
306
+ model_id="gpt-4.1-nano",
207
307
  ),
208
308
  ],
209
309
  ),
@@ -233,6 +333,102 @@ built_in_models: List[KilnModel] = [
233
333
  ),
234
334
  ],
235
335
  ),
336
+ # GPT 4o Mini
337
+ KilnModel(
338
+ family=ModelFamily.gpt,
339
+ name=ModelName.gpt_4o_mini,
340
+ friendly_name="GPT 4o Mini",
341
+ providers=[
342
+ KilnModelProvider(
343
+ name=ModelProviderName.openai,
344
+ model_id="gpt-4o-mini",
345
+ provider_finetune_id="gpt-4o-mini-2024-07-18",
346
+ structured_output_mode=StructuredOutputMode.json_schema,
347
+ supports_logprobs=True,
348
+ ),
349
+ KilnModelProvider(
350
+ name=ModelProviderName.openrouter,
351
+ model_id="openai/gpt-4o-mini",
352
+ structured_output_mode=StructuredOutputMode.json_schema,
353
+ supports_logprobs=True,
354
+ logprobs_openrouter_options=True,
355
+ ),
356
+ KilnModelProvider(
357
+ name=ModelProviderName.azure_openai,
358
+ model_id="gpt-4o-mini",
359
+ ),
360
+ ],
361
+ ),
362
+ # GPT o4 Mini Low
363
+ KilnModel(
364
+ family=ModelFamily.gpt,
365
+ name=ModelName.gpt_o4_mini_low,
366
+ friendly_name="GPT o4 Mini - Low",
367
+ providers=[
368
+ KilnModelProvider(
369
+ name=ModelProviderName.openai,
370
+ model_id="o4-mini",
371
+ thinking_level="low",
372
+ structured_output_mode=StructuredOutputMode.json_schema,
373
+ ),
374
+ KilnModelProvider(
375
+ name=ModelProviderName.azure_openai,
376
+ model_id="o4-mini",
377
+ structured_output_mode=StructuredOutputMode.json_schema,
378
+ thinking_level="low",
379
+ ),
380
+ ],
381
+ ),
382
+ # GPT o4 Mini Medium
383
+ KilnModel(
384
+ family=ModelFamily.gpt,
385
+ name=ModelName.gpt_o4_mini_medium,
386
+ friendly_name="GPT o4 Mini - Medium",
387
+ providers=[
388
+ KilnModelProvider(
389
+ name=ModelProviderName.openai,
390
+ model_id="o4-mini",
391
+ thinking_level="medium",
392
+ structured_output_mode=StructuredOutputMode.json_schema,
393
+ ),
394
+ KilnModelProvider(
395
+ name=ModelProviderName.azure_openai,
396
+ model_id="o4-mini",
397
+ structured_output_mode=StructuredOutputMode.json_schema,
398
+ thinking_level="medium",
399
+ ),
400
+ KilnModelProvider(
401
+ name=ModelProviderName.openrouter,
402
+ model_id="openai/o4-mini",
403
+ structured_output_mode=StructuredOutputMode.json_schema,
404
+ ),
405
+ ],
406
+ ),
407
+ # GPT o4 Mini High
408
+ KilnModel(
409
+ family=ModelFamily.gpt,
410
+ name=ModelName.gpt_o4_mini_high,
411
+ friendly_name="GPT o4 Mini - High",
412
+ providers=[
413
+ KilnModelProvider(
414
+ name=ModelProviderName.openai,
415
+ model_id="o4-mini",
416
+ thinking_level="high",
417
+ structured_output_mode=StructuredOutputMode.json_schema,
418
+ ),
419
+ KilnModelProvider(
420
+ name=ModelProviderName.azure_openai,
421
+ model_id="o4-mini",
422
+ structured_output_mode=StructuredOutputMode.json_schema,
423
+ thinking_level="high",
424
+ ),
425
+ KilnModelProvider(
426
+ name=ModelProviderName.openrouter,
427
+ model_id="openai/o4-mini-high",
428
+ structured_output_mode=StructuredOutputMode.json_schema,
429
+ ),
430
+ ],
431
+ ),
236
432
  # GPT o3 Mini Low
237
433
  KilnModel(
238
434
  family=ModelFamily.gpt,
@@ -293,6 +489,66 @@ built_in_models: List[KilnModel] = [
293
489
  ),
294
490
  ],
295
491
  ),
492
+ # GPT o3 Low
493
+ KilnModel(
494
+ family=ModelFamily.gpt,
495
+ name=ModelName.gpt_o3_low,
496
+ friendly_name="GPT o3 - Low",
497
+ providers=[
498
+ KilnModelProvider(
499
+ name=ModelProviderName.openai,
500
+ model_id="o3",
501
+ thinking_level="low",
502
+ structured_output_mode=StructuredOutputMode.json_schema,
503
+ ),
504
+ KilnModelProvider(
505
+ name=ModelProviderName.azure_openai,
506
+ model_id="o3",
507
+ structured_output_mode=StructuredOutputMode.json_schema,
508
+ thinking_level="low",
509
+ ),
510
+ ],
511
+ ),
512
+ # GPT o3 Medium
513
+ KilnModel(
514
+ family=ModelFamily.gpt,
515
+ name=ModelName.gpt_o3_medium,
516
+ friendly_name="GPT o3 - Medium",
517
+ providers=[
518
+ KilnModelProvider(
519
+ name=ModelProviderName.openai,
520
+ model_id="o3",
521
+ thinking_level="medium",
522
+ structured_output_mode=StructuredOutputMode.json_schema,
523
+ ),
524
+ KilnModelProvider(
525
+ name=ModelProviderName.azure_openai,
526
+ model_id="o3",
527
+ structured_output_mode=StructuredOutputMode.json_schema,
528
+ thinking_level="medium",
529
+ ),
530
+ ],
531
+ ),
532
+ # GPT o3 High
533
+ KilnModel(
534
+ family=ModelFamily.gpt,
535
+ name=ModelName.gpt_o3_high,
536
+ friendly_name="GPT o3 - High",
537
+ providers=[
538
+ KilnModelProvider(
539
+ name=ModelProviderName.openai,
540
+ model_id="o3",
541
+ thinking_level="high",
542
+ structured_output_mode=StructuredOutputMode.json_schema,
543
+ ),
544
+ KilnModelProvider(
545
+ name=ModelProviderName.azure_openai,
546
+ model_id="o3",
547
+ structured_output_mode=StructuredOutputMode.json_schema,
548
+ thinking_level="high",
549
+ ),
550
+ ],
551
+ ),
296
552
  # GPT o1 Low
297
553
  KilnModel(
298
554
  family=ModelFamily.gpt,
@@ -409,11 +665,15 @@ built_in_models: List[KilnModel] = [
409
665
  name=ModelProviderName.openrouter,
410
666
  structured_output_mode=StructuredOutputMode.function_calling,
411
667
  model_id="anthropic/claude-3.7-sonnet",
668
+ suggested_for_data_gen=True,
669
+ suggested_for_evals=True,
412
670
  ),
413
671
  KilnModelProvider(
414
672
  name=ModelProviderName.anthropic,
415
673
  model_id="claude-3-7-sonnet-20250219",
416
674
  structured_output_mode=StructuredOutputMode.function_calling,
675
+ suggested_for_data_gen=True,
676
+ suggested_for_evals=True,
417
677
  ),
418
678
  ],
419
679
  ),
@@ -440,118 +700,195 @@ built_in_models: List[KilnModel] = [
440
700
  ),
441
701
  ],
442
702
  ),
443
- # Gemini 1.5 Pro
703
+ # Gemini 2.5 Pro
444
704
  KilnModel(
445
705
  family=ModelFamily.gemini,
446
- name=ModelName.gemini_1_5_pro,
447
- friendly_name="Gemini 1.5 Pro",
706
+ name=ModelName.gemini_2_5_pro,
707
+ friendly_name="Gemini 2.5 Pro",
448
708
  providers=[
449
709
  KilnModelProvider(
450
710
  name=ModelProviderName.openrouter,
451
- model_id="google/gemini-pro-1.5",
452
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
711
+ model_id="google/gemini-2.5-pro-preview-03-25",
712
+ structured_output_mode=StructuredOutputMode.json_schema,
713
+ suggested_for_data_gen=True,
714
+ suggested_for_evals=True,
453
715
  ),
454
716
  KilnModelProvider(
455
717
  name=ModelProviderName.gemini_api,
456
- model_id="gemini-1.5-pro",
457
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
718
+ model_id="gemini-2.5-pro-preview-03-25",
719
+ structured_output_mode=StructuredOutputMode.json_schema,
720
+ suggested_for_data_gen=True,
721
+ suggested_for_evals=True,
458
722
  ),
459
723
  KilnModelProvider(
460
724
  name=ModelProviderName.vertex,
461
- model_id="gemini-1.5-pro",
462
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
725
+ model_id="gemini-2.5-pro-preview-03-25",
726
+ structured_output_mode=StructuredOutputMode.json_schema,
727
+ suggested_for_data_gen=True,
728
+ suggested_for_evals=True,
463
729
  ),
464
730
  ],
465
731
  ),
466
- # Gemini 1.5 Flash
732
+ # Gemini 2.5 Flash
467
733
  KilnModel(
468
734
  family=ModelFamily.gemini,
469
- name=ModelName.gemini_1_5_flash,
470
- friendly_name="Gemini 1.5 Flash",
735
+ name=ModelName.gemini_2_5_flash,
736
+ friendly_name="Gemini 2.5 Flash",
471
737
  providers=[
472
738
  KilnModelProvider(
473
739
  name=ModelProviderName.openrouter,
474
- model_id="google/gemini-flash-1.5",
475
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
740
+ model_id="google/gemini-2.5-flash-preview",
741
+ structured_output_mode=StructuredOutputMode.json_schema,
476
742
  ),
477
743
  KilnModelProvider(
478
744
  name=ModelProviderName.gemini_api,
479
- model_id="gemini-1.5-flash",
480
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
745
+ model_id="gemini-2.5-flash-preview-04-17",
746
+ structured_output_mode=StructuredOutputMode.json_schema,
481
747
  ),
482
748
  KilnModelProvider(
483
749
  name=ModelProviderName.vertex,
484
- model_id="gemini-1.5-flash",
485
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
750
+ model_id="gemini-2.5-flash-preview-04-17",
751
+ structured_output_mode=StructuredOutputMode.json_schema,
486
752
  ),
487
753
  ],
488
754
  ),
489
- # Gemini 1.5 Flash 8B
755
+ # Gemini 2.0 Flash
490
756
  KilnModel(
491
757
  family=ModelFamily.gemini,
492
- name=ModelName.gemini_1_5_flash_8b,
493
- friendly_name="Gemini 1.5 Flash 8B",
758
+ name=ModelName.gemini_2_0_flash,
759
+ friendly_name="Gemini 2.0 Flash",
494
760
  providers=[
495
761
  KilnModelProvider(
496
762
  name=ModelProviderName.openrouter,
497
- model_id="google/gemini-flash-1.5-8b",
763
+ model_id="google/gemini-2.0-flash-001",
498
764
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
499
- supports_data_gen=False,
500
765
  ),
501
766
  KilnModelProvider(
502
767
  name=ModelProviderName.gemini_api,
503
- model_id="gemini-1.5-flash-8b",
768
+ model_id="gemini-2.0-flash",
504
769
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
505
- supports_data_gen=False,
770
+ ),
771
+ KilnModelProvider(
772
+ name=ModelProviderName.vertex,
773
+ model_id="gemini-2.0-flash",
774
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
775
+ provider_finetune_id="gemini-2.0-flash-001",
506
776
  ),
507
777
  ],
508
778
  ),
509
- # Gemini 2.0 Flash
779
+ # Gemini 2.0 Flash Lite
510
780
  KilnModel(
511
781
  family=ModelFamily.gemini,
512
- name=ModelName.gemini_2_0_flash,
513
- friendly_name="Gemini 2.0 Flash",
782
+ name=ModelName.gemini_2_0_flash_lite,
783
+ friendly_name="Gemini 2.0 Flash Lite",
514
784
  providers=[
515
785
  KilnModelProvider(
516
786
  name=ModelProviderName.openrouter,
517
- model_id="google/gemini-2.0-flash-001",
787
+ model_id="google/gemini-2.0-flash-lite-001",
518
788
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
519
789
  ),
520
790
  KilnModelProvider(
521
791
  name=ModelProviderName.gemini_api,
522
- model_id="gemini-2.0-flash",
792
+ model_id="gemini-2.0-flash-lite",
523
793
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
524
794
  ),
525
795
  KilnModelProvider(
526
796
  name=ModelProviderName.vertex,
527
- model_id="gemini-2.0-flash",
797
+ model_id="gemini-2.0-flash-lite",
528
798
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
799
+ provider_finetune_id="gemini-2.0-flash-lite-001",
529
800
  ),
530
801
  ],
531
802
  ),
532
- # Nemotron 70B
803
+ # Gemini 1.5 Pro
533
804
  KilnModel(
534
- family=ModelFamily.llama,
535
- name=ModelName.nemotron_70b,
536
- friendly_name="Nemotron 70B",
805
+ family=ModelFamily.gemini,
806
+ name=ModelName.gemini_1_5_pro,
807
+ friendly_name="Gemini 1.5 Pro",
537
808
  providers=[
538
809
  KilnModelProvider(
539
810
  name=ModelProviderName.openrouter,
540
- supports_structured_output=False,
541
- supports_data_gen=False,
542
- model_id="nvidia/llama-3.1-nemotron-70b-instruct",
811
+ model_id="google/gemini-pro-1.5",
812
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
813
+ ),
814
+ KilnModelProvider(
815
+ name=ModelProviderName.gemini_api,
816
+ model_id="gemini-1.5-pro",
817
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
818
+ ),
819
+ KilnModelProvider(
820
+ name=ModelProviderName.vertex,
821
+ model_id="gemini-1.5-pro",
822
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
543
823
  ),
544
824
  ],
545
825
  ),
546
- # Llama 3.1-8b
826
+ # Gemini 1.5 Flash
547
827
  KilnModel(
548
- family=ModelFamily.llama,
549
- name=ModelName.llama_3_1_8b,
550
- friendly_name="Llama 3.1 8B",
828
+ family=ModelFamily.gemini,
829
+ name=ModelName.gemini_1_5_flash,
830
+ friendly_name="Gemini 1.5 Flash",
551
831
  providers=[
552
832
  KilnModelProvider(
553
- name=ModelProviderName.groq,
554
- model_id="llama-3.1-8b-instant",
833
+ name=ModelProviderName.openrouter,
834
+ model_id="google/gemini-flash-1.5",
835
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
836
+ ),
837
+ KilnModelProvider(
838
+ name=ModelProviderName.gemini_api,
839
+ model_id="gemini-1.5-flash",
840
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
841
+ ),
842
+ KilnModelProvider(
843
+ name=ModelProviderName.vertex,
844
+ model_id="gemini-1.5-flash",
845
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
846
+ ),
847
+ ],
848
+ ),
849
+ # Gemini 1.5 Flash 8B
850
+ KilnModel(
851
+ family=ModelFamily.gemini,
852
+ name=ModelName.gemini_1_5_flash_8b,
853
+ friendly_name="Gemini 1.5 Flash 8B",
854
+ providers=[
855
+ KilnModelProvider(
856
+ name=ModelProviderName.openrouter,
857
+ model_id="google/gemini-flash-1.5-8b",
858
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
859
+ supports_data_gen=False,
860
+ ),
861
+ KilnModelProvider(
862
+ name=ModelProviderName.gemini_api,
863
+ model_id="gemini-1.5-flash-8b",
864
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
865
+ supports_data_gen=False,
866
+ ),
867
+ ],
868
+ ),
869
+ # Nemotron 70B
870
+ KilnModel(
871
+ family=ModelFamily.llama,
872
+ name=ModelName.nemotron_70b,
873
+ friendly_name="Nemotron 70B",
874
+ providers=[
875
+ KilnModelProvider(
876
+ name=ModelProviderName.openrouter,
877
+ supports_structured_output=False,
878
+ supports_data_gen=False,
879
+ model_id="nvidia/llama-3.1-nemotron-70b-instruct",
880
+ ),
881
+ ],
882
+ ),
883
+ # Llama 3.1-8b
884
+ KilnModel(
885
+ family=ModelFamily.llama,
886
+ name=ModelName.llama_3_1_8b,
887
+ friendly_name="Llama 3.1 8B",
888
+ providers=[
889
+ KilnModelProvider(
890
+ name=ModelProviderName.groq,
891
+ model_id="llama-3.1-8b-instant",
555
892
  ),
556
893
  KilnModelProvider(
557
894
  name=ModelProviderName.amazon_bedrock,
@@ -760,12 +1097,6 @@ built_in_models: List[KilnModel] = [
760
1097
  supports_data_gen=False,
761
1098
  model_id="llama3.2",
762
1099
  ),
763
- KilnModelProvider(
764
- name=ModelProviderName.fireworks_ai,
765
- supports_structured_output=False,
766
- supports_data_gen=False,
767
- model_id="accounts/fireworks/models/llama-v3p2-3b-instruct",
768
- ),
769
1100
  KilnModelProvider(
770
1101
  name=ModelProviderName.huggingface,
771
1102
  model_id="meta-llama/Llama-3.2-3B-Instruct",
@@ -787,10 +1118,6 @@ built_in_models: List[KilnModel] = [
787
1118
  name=ModelName.llama_3_2_11b,
788
1119
  friendly_name="Llama 3.2 11B",
789
1120
  providers=[
790
- KilnModelProvider(
791
- name=ModelProviderName.groq,
792
- model_id="llama-3.2-11b-vision-preview",
793
- ),
794
1121
  KilnModelProvider(
795
1122
  name=ModelProviderName.openrouter,
796
1123
  # Best mode, but fails to often to enable without warning
@@ -1297,6 +1624,8 @@ built_in_models: List[KilnModel] = [
1297
1624
  reasoning_capable=True,
1298
1625
  r1_openrouter_options=True,
1299
1626
  require_openrouter_reasoning=True,
1627
+ suggested_for_data_gen=True,
1628
+ suggested_for_evals=True,
1300
1629
  ),
1301
1630
  KilnModelProvider(
1302
1631
  name=ModelProviderName.fireworks_ai,
@@ -1304,6 +1633,8 @@ built_in_models: List[KilnModel] = [
1304
1633
  parser=ModelParserID.r1_thinking,
1305
1634
  structured_output_mode=StructuredOutputMode.json_instructions,
1306
1635
  reasoning_capable=True,
1636
+ suggested_for_data_gen=True,
1637
+ suggested_for_evals=True,
1307
1638
  ),
1308
1639
  KilnModelProvider(
1309
1640
  # I want your RAM
@@ -1312,6 +1643,8 @@ built_in_models: List[KilnModel] = [
1312
1643
  parser=ModelParserID.r1_thinking,
1313
1644
  structured_output_mode=StructuredOutputMode.json_instructions,
1314
1645
  reasoning_capable=True,
1646
+ suggested_for_data_gen=True,
1647
+ suggested_for_evals=True,
1315
1648
  ),
1316
1649
  KilnModelProvider(
1317
1650
  name=ModelProviderName.together_ai,
@@ -1319,6 +1652,8 @@ built_in_models: List[KilnModel] = [
1319
1652
  structured_output_mode=StructuredOutputMode.json_instructions,
1320
1653
  parser=ModelParserID.r1_thinking,
1321
1654
  reasoning_capable=True,
1655
+ suggested_for_data_gen=True,
1656
+ suggested_for_evals=True,
1322
1657
  ),
1323
1658
  ],
1324
1659
  ),
@@ -1538,4 +1873,424 @@ built_in_models: List[KilnModel] = [
1538
1873
  ),
1539
1874
  ],
1540
1875
  ),
1876
+ # Qwen 3 0.6B
1877
+ KilnModel(
1878
+ family=ModelFamily.qwen,
1879
+ name=ModelName.qwen_3_0p6b,
1880
+ friendly_name="Qwen 3 0.6B",
1881
+ providers=[
1882
+ KilnModelProvider(
1883
+ name=ModelProviderName.openrouter,
1884
+ model_id="qwen/qwen3-0.6b-04-28:free",
1885
+ structured_output_mode=StructuredOutputMode.json_instructions,
1886
+ reasoning_capable=True,
1887
+ require_openrouter_reasoning=True,
1888
+ r1_openrouter_options=True,
1889
+ parser=ModelParserID.r1_thinking,
1890
+ supports_data_gen=False,
1891
+ ),
1892
+ KilnModelProvider(
1893
+ name=ModelProviderName.ollama,
1894
+ model_id="qwen3:0.6b",
1895
+ supports_data_gen=False,
1896
+ reasoning_capable=True,
1897
+ structured_output_mode=StructuredOutputMode.json_schema,
1898
+ ),
1899
+ ],
1900
+ ),
1901
+ # Qwen 3 0.6B Non-Thinking -- not respecting /no_think tag, skipping
1902
+ # Qwen 3 1.7B
1903
+ KilnModel(
1904
+ family=ModelFamily.qwen,
1905
+ name=ModelName.qwen_3_1p7b,
1906
+ friendly_name="Qwen 3 1.7B",
1907
+ providers=[
1908
+ KilnModelProvider(
1909
+ name=ModelProviderName.openrouter,
1910
+ model_id="qwen/qwen3-1.7b:free",
1911
+ structured_output_mode=StructuredOutputMode.json_instructions,
1912
+ reasoning_capable=True,
1913
+ require_openrouter_reasoning=True,
1914
+ r1_openrouter_options=True,
1915
+ parser=ModelParserID.r1_thinking,
1916
+ supports_data_gen=False,
1917
+ ),
1918
+ KilnModelProvider(
1919
+ name=ModelProviderName.ollama,
1920
+ model_id="qwen3:1.7b",
1921
+ supports_data_gen=False,
1922
+ reasoning_capable=True,
1923
+ structured_output_mode=StructuredOutputMode.json_schema,
1924
+ ),
1925
+ ],
1926
+ ),
1927
+ # Qwen 3 1.7B Non-Thinking
1928
+ KilnModel(
1929
+ family=ModelFamily.qwen,
1930
+ name=ModelName.qwen_3_1p7b_no_thinking,
1931
+ friendly_name="Qwen 3 1.7B Non-Thinking",
1932
+ providers=[
1933
+ KilnModelProvider(
1934
+ name=ModelProviderName.openrouter,
1935
+ model_id="qwen/qwen3-1.7b:free",
1936
+ structured_output_mode=StructuredOutputMode.json_instructions,
1937
+ formatter=ModelFormatterID.qwen3_style_no_think,
1938
+ supports_data_gen=False,
1939
+ parser=ModelParserID.optional_r1_thinking,
1940
+ ),
1941
+ KilnModelProvider(
1942
+ name=ModelProviderName.ollama,
1943
+ model_id="qwen3:1.7b",
1944
+ formatter=ModelFormatterID.qwen3_style_no_think,
1945
+ supports_data_gen=False,
1946
+ structured_output_mode=StructuredOutputMode.json_schema,
1947
+ ),
1948
+ ],
1949
+ ),
1950
+ # Qwen 3 4B
1951
+ KilnModel(
1952
+ family=ModelFamily.qwen,
1953
+ name=ModelName.qwen_3_4b,
1954
+ friendly_name="Qwen 3 4B",
1955
+ providers=[
1956
+ KilnModelProvider(
1957
+ name=ModelProviderName.openrouter,
1958
+ model_id="qwen/qwen3-4b:free",
1959
+ structured_output_mode=StructuredOutputMode.json_instructions,
1960
+ reasoning_capable=True,
1961
+ require_openrouter_reasoning=True,
1962
+ r1_openrouter_options=True,
1963
+ parser=ModelParserID.r1_thinking,
1964
+ supports_data_gen=False,
1965
+ ),
1966
+ KilnModelProvider(
1967
+ name=ModelProviderName.ollama,
1968
+ model_id="qwen3:4b",
1969
+ supports_data_gen=False,
1970
+ reasoning_capable=True,
1971
+ structured_output_mode=StructuredOutputMode.json_schema,
1972
+ ),
1973
+ ],
1974
+ ),
1975
+ # Qwen 3 4B Non-Thinking
1976
+ KilnModel(
1977
+ family=ModelFamily.qwen,
1978
+ name=ModelName.qwen_3_4b_no_thinking,
1979
+ friendly_name="Qwen 3 4B Non-Thinking",
1980
+ providers=[
1981
+ KilnModelProvider(
1982
+ name=ModelProviderName.openrouter,
1983
+ model_id="qwen/qwen3-4b:free",
1984
+ structured_output_mode=StructuredOutputMode.json_instructions,
1985
+ formatter=ModelFormatterID.qwen3_style_no_think,
1986
+ supports_data_gen=False,
1987
+ parser=ModelParserID.optional_r1_thinking,
1988
+ ),
1989
+ KilnModelProvider(
1990
+ name=ModelProviderName.ollama,
1991
+ model_id="qwen3:4b",
1992
+ structured_output_mode=StructuredOutputMode.json_schema,
1993
+ formatter=ModelFormatterID.qwen3_style_no_think,
1994
+ supports_data_gen=False,
1995
+ ),
1996
+ ],
1997
+ ),
1998
+ # Qwen 3 8B
1999
+ KilnModel(
2000
+ family=ModelFamily.qwen,
2001
+ name=ModelName.qwen_3_8b,
2002
+ friendly_name="Qwen 3 8B",
2003
+ providers=[
2004
+ KilnModelProvider(
2005
+ name=ModelProviderName.openrouter,
2006
+ model_id="qwen/qwen3-8b",
2007
+ supports_structured_output=True,
2008
+ structured_output_mode=StructuredOutputMode.json_instructions,
2009
+ reasoning_capable=True,
2010
+ require_openrouter_reasoning=True,
2011
+ r1_openrouter_options=True,
2012
+ parser=ModelParserID.r1_thinking,
2013
+ supports_data_gen=False,
2014
+ ),
2015
+ KilnModelProvider(
2016
+ name=ModelProviderName.ollama,
2017
+ model_id="qwen3:8b",
2018
+ supports_data_gen=False,
2019
+ reasoning_capable=True,
2020
+ structured_output_mode=StructuredOutputMode.json_schema,
2021
+ ),
2022
+ ],
2023
+ ),
2024
+ # Qwen 3 8B Non-Thinking
2025
+ KilnModel(
2026
+ family=ModelFamily.qwen,
2027
+ name=ModelName.qwen_3_8b_no_thinking,
2028
+ friendly_name="Qwen 3 8B Non-Thinking",
2029
+ providers=[
2030
+ KilnModelProvider(
2031
+ name=ModelProviderName.openrouter,
2032
+ model_id="qwen/qwen3-8b",
2033
+ structured_output_mode=StructuredOutputMode.json_instructions,
2034
+ formatter=ModelFormatterID.qwen3_style_no_think,
2035
+ supports_data_gen=False,
2036
+ parser=ModelParserID.optional_r1_thinking,
2037
+ ),
2038
+ KilnModelProvider(
2039
+ name=ModelProviderName.ollama,
2040
+ model_id="qwen3:8b",
2041
+ structured_output_mode=StructuredOutputMode.json_schema,
2042
+ formatter=ModelFormatterID.qwen3_style_no_think,
2043
+ supports_data_gen=False,
2044
+ ),
2045
+ ],
2046
+ ),
2047
+ # Qwen 3 14B
2048
+ KilnModel(
2049
+ family=ModelFamily.qwen,
2050
+ name=ModelName.qwen_3_14b,
2051
+ friendly_name="Qwen 3 14B",
2052
+ providers=[
2053
+ KilnModelProvider(
2054
+ name=ModelProviderName.openrouter,
2055
+ model_id="qwen/qwen3-14b",
2056
+ structured_output_mode=StructuredOutputMode.json_instructions,
2057
+ reasoning_capable=True,
2058
+ require_openrouter_reasoning=True,
2059
+ r1_openrouter_options=True,
2060
+ parser=ModelParserID.r1_thinking,
2061
+ supports_data_gen=True,
2062
+ ),
2063
+ KilnModelProvider(
2064
+ name=ModelProviderName.ollama,
2065
+ model_id="qwen3:14b",
2066
+ supports_data_gen=True,
2067
+ reasoning_capable=True,
2068
+ structured_output_mode=StructuredOutputMode.json_schema,
2069
+ ),
2070
+ ],
2071
+ ),
2072
+ # Qwen 3 14B Non-Thinking
2073
+ KilnModel(
2074
+ family=ModelFamily.qwen,
2075
+ name=ModelName.qwen_3_14b_no_thinking,
2076
+ friendly_name="Qwen 3 14B Non-Thinking",
2077
+ providers=[
2078
+ KilnModelProvider(
2079
+ name=ModelProviderName.openrouter,
2080
+ model_id="qwen/qwen3-14b",
2081
+ structured_output_mode=StructuredOutputMode.json_instructions,
2082
+ formatter=ModelFormatterID.qwen3_style_no_think,
2083
+ supports_data_gen=True,
2084
+ parser=ModelParserID.optional_r1_thinking,
2085
+ ),
2086
+ KilnModelProvider(
2087
+ name=ModelProviderName.ollama,
2088
+ model_id="qwen3:14b",
2089
+ formatter=ModelFormatterID.qwen3_style_no_think,
2090
+ supports_data_gen=True,
2091
+ structured_output_mode=StructuredOutputMode.json_schema,
2092
+ ),
2093
+ ],
2094
+ ),
2095
+ # Qwen 3 30B (3B Active)
2096
+ KilnModel(
2097
+ family=ModelFamily.qwen,
2098
+ name=ModelName.qwen_3_30b_a3b,
2099
+ friendly_name="Qwen 3 30B (3B Active)",
2100
+ providers=[
2101
+ KilnModelProvider(
2102
+ name=ModelProviderName.openrouter,
2103
+ model_id="qwen/qwen3-30b-a3b",
2104
+ structured_output_mode=StructuredOutputMode.json_instructions,
2105
+ reasoning_capable=True,
2106
+ require_openrouter_reasoning=True,
2107
+ r1_openrouter_options=True,
2108
+ parser=ModelParserID.r1_thinking,
2109
+ supports_data_gen=True,
2110
+ ),
2111
+ KilnModelProvider(
2112
+ name=ModelProviderName.ollama,
2113
+ model_id="qwen3:30b-a3b",
2114
+ supports_data_gen=True,
2115
+ reasoning_capable=True,
2116
+ structured_output_mode=StructuredOutputMode.json_schema,
2117
+ ),
2118
+ KilnModelProvider(
2119
+ name=ModelProviderName.fireworks_ai,
2120
+ model_id="accounts/fireworks/models/qwen3-30b-a3b",
2121
+ supports_data_gen=True,
2122
+ reasoning_capable=True,
2123
+ structured_output_mode=StructuredOutputMode.json_instructions,
2124
+ parser=ModelParserID.r1_thinking,
2125
+ ),
2126
+ ],
2127
+ ),
2128
+ # Qwen 3 30B (3B Active) Non-Thinking
2129
+ KilnModel(
2130
+ family=ModelFamily.qwen,
2131
+ name=ModelName.qwen_3_30b_a3b_no_thinking,
2132
+ friendly_name="Qwen 3 30B (3B Active) Non-Thinking",
2133
+ providers=[
2134
+ KilnModelProvider(
2135
+ name=ModelProviderName.openrouter,
2136
+ model_id="qwen/qwen3-30b-a3b",
2137
+ structured_output_mode=StructuredOutputMode.json_instructions,
2138
+ formatter=ModelFormatterID.qwen3_style_no_think,
2139
+ supports_data_gen=True,
2140
+ parser=ModelParserID.optional_r1_thinking,
2141
+ ),
2142
+ KilnModelProvider(
2143
+ name=ModelProviderName.ollama,
2144
+ model_id="qwen3:30b-a3b",
2145
+ structured_output_mode=StructuredOutputMode.json_schema,
2146
+ formatter=ModelFormatterID.qwen3_style_no_think,
2147
+ supports_data_gen=True,
2148
+ ),
2149
+ KilnModelProvider(
2150
+ name=ModelProviderName.fireworks_ai,
2151
+ model_id="accounts/fireworks/models/qwen3-30b-a3b",
2152
+ supports_data_gen=True,
2153
+ formatter=ModelFormatterID.qwen3_style_no_think,
2154
+ structured_output_mode=StructuredOutputMode.json_instructions,
2155
+ parser=ModelParserID.optional_r1_thinking,
2156
+ ),
2157
+ ],
2158
+ ),
2159
+ # Qwen 3 32B
2160
+ KilnModel(
2161
+ family=ModelFamily.qwen,
2162
+ name=ModelName.qwen_3_32b,
2163
+ friendly_name="Qwen 3 32B",
2164
+ providers=[
2165
+ KilnModelProvider(
2166
+ name=ModelProviderName.openrouter,
2167
+ model_id="qwen/qwen3-32b",
2168
+ reasoning_capable=True,
2169
+ require_openrouter_reasoning=True,
2170
+ r1_openrouter_options=True,
2171
+ structured_output_mode=StructuredOutputMode.json_instructions,
2172
+ parser=ModelParserID.r1_thinking,
2173
+ supports_data_gen=True,
2174
+ ),
2175
+ KilnModelProvider(
2176
+ name=ModelProviderName.ollama,
2177
+ model_id="qwen3:32b",
2178
+ supports_data_gen=True,
2179
+ reasoning_capable=True,
2180
+ structured_output_mode=StructuredOutputMode.json_schema,
2181
+ ),
2182
+ ],
2183
+ ),
2184
+ # Qwen 3 32B No Thinking
2185
+ KilnModel(
2186
+ family=ModelFamily.qwen,
2187
+ name=ModelName.qwen_3_32b_no_thinking,
2188
+ friendly_name="Qwen 3 32B Non-Thinking",
2189
+ providers=[
2190
+ KilnModelProvider(
2191
+ name=ModelProviderName.openrouter,
2192
+ model_id="qwen/qwen3-32b",
2193
+ structured_output_mode=StructuredOutputMode.json_instructions,
2194
+ formatter=ModelFormatterID.qwen3_style_no_think,
2195
+ supports_data_gen=True,
2196
+ parser=ModelParserID.optional_r1_thinking,
2197
+ ),
2198
+ KilnModelProvider(
2199
+ name=ModelProviderName.ollama,
2200
+ model_id="qwen3:32b",
2201
+ structured_output_mode=StructuredOutputMode.json_schema,
2202
+ formatter=ModelFormatterID.qwen3_style_no_think,
2203
+ supports_data_gen=True,
2204
+ ),
2205
+ ],
2206
+ ),
2207
+ # Qwen 3 235B (22B Active)
2208
+ KilnModel(
2209
+ family=ModelFamily.qwen,
2210
+ name=ModelName.qwen_3_235b_a22b,
2211
+ friendly_name="Qwen 3 235B (22B Active)",
2212
+ providers=[
2213
+ KilnModelProvider(
2214
+ name=ModelProviderName.openrouter,
2215
+ model_id="qwen/qwen3-235b-a22b",
2216
+ reasoning_capable=True,
2217
+ require_openrouter_reasoning=True,
2218
+ supports_data_gen=True,
2219
+ suggested_for_data_gen=True,
2220
+ r1_openrouter_options=True,
2221
+ structured_output_mode=StructuredOutputMode.json_instructions,
2222
+ parser=ModelParserID.r1_thinking,
2223
+ ),
2224
+ KilnModelProvider(
2225
+ name=ModelProviderName.ollama,
2226
+ model_id="qwen3:235b-a22b",
2227
+ supports_data_gen=True,
2228
+ reasoning_capable=True,
2229
+ structured_output_mode=StructuredOutputMode.json_schema,
2230
+ ),
2231
+ KilnModelProvider(
2232
+ name=ModelProviderName.fireworks_ai,
2233
+ model_id="accounts/fireworks/models/qwen3-235b-a22b",
2234
+ supports_data_gen=True,
2235
+ reasoning_capable=True,
2236
+ structured_output_mode=StructuredOutputMode.json_instructions,
2237
+ parser=ModelParserID.r1_thinking,
2238
+ ),
2239
+ KilnModelProvider(
2240
+ name=ModelProviderName.together_ai,
2241
+ model_id="Qwen/Qwen3-235B-A22B-fp8-tput",
2242
+ supports_data_gen=True,
2243
+ reasoning_capable=True,
2244
+ structured_output_mode=StructuredOutputMode.json_instructions,
2245
+ parser=ModelParserID.r1_thinking,
2246
+ ),
2247
+ ],
2248
+ ),
2249
+ # Qwen 3 235B (22B Active) Non-Thinking
2250
+ KilnModel(
2251
+ family=ModelFamily.qwen,
2252
+ name=ModelName.qwen_3_235b_a22b_no_thinking,
2253
+ friendly_name="Qwen 3 235B (22B Active) Non-Thinking",
2254
+ providers=[
2255
+ KilnModelProvider(
2256
+ name=ModelProviderName.openrouter,
2257
+ model_id="qwen/qwen3-235b-a22b",
2258
+ structured_output_mode=StructuredOutputMode.json_instructions,
2259
+ formatter=ModelFormatterID.qwen3_style_no_think,
2260
+ supports_data_gen=True,
2261
+ reasoning_capable=False,
2262
+ parser=ModelParserID.optional_r1_thinking,
2263
+ ),
2264
+ KilnModelProvider(
2265
+ name=ModelProviderName.ollama,
2266
+ model_id="qwen3:235b-a22b",
2267
+ structured_output_mode=StructuredOutputMode.json_schema,
2268
+ formatter=ModelFormatterID.qwen3_style_no_think,
2269
+ supports_data_gen=True,
2270
+ ),
2271
+ KilnModelProvider(
2272
+ name=ModelProviderName.fireworks_ai,
2273
+ model_id="accounts/fireworks/models/qwen3-235b-a22b",
2274
+ supports_data_gen=True,
2275
+ formatter=ModelFormatterID.qwen3_style_no_think,
2276
+ structured_output_mode=StructuredOutputMode.json_instructions,
2277
+ parser=ModelParserID.optional_r1_thinking,
2278
+ ),
2279
+ KilnModelProvider(
2280
+ name=ModelProviderName.together_ai,
2281
+ model_id="Qwen/Qwen3-235B-A22B-fp8-tput",
2282
+ supports_data_gen=True,
2283
+ formatter=ModelFormatterID.qwen3_style_no_think,
2284
+ structured_output_mode=StructuredOutputMode.json_instructions,
2285
+ parser=ModelParserID.optional_r1_thinking,
2286
+ ),
2287
+ ],
2288
+ ),
1541
2289
  ]
2290
+
2291
+
2292
+ def get_model_by_name(name: ModelName) -> KilnModel:
2293
+ for model in built_in_models:
2294
+ if model.name == name:
2295
+ return model
2296
+ raise ValueError(f"Model {name} not found in the list of built-in models")