kiln-ai 0.17.0__py3-none-any.whl → 0.19.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.

Potentially problematic release.


This version of kiln-ai might be problematic. Click here for more details.

Files changed (58) hide show
  1. kiln_ai/adapters/adapter_registry.py +28 -0
  2. kiln_ai/adapters/chat/chat_formatter.py +0 -1
  3. kiln_ai/adapters/data_gen/data_gen_prompts.py +121 -36
  4. kiln_ai/adapters/data_gen/data_gen_task.py +51 -38
  5. kiln_ai/adapters/data_gen/test_data_gen_task.py +318 -37
  6. kiln_ai/adapters/eval/base_eval.py +6 -7
  7. kiln_ai/adapters/eval/eval_runner.py +5 -1
  8. kiln_ai/adapters/eval/g_eval.py +17 -12
  9. kiln_ai/adapters/eval/test_base_eval.py +8 -2
  10. kiln_ai/adapters/eval/test_eval_runner.py +6 -12
  11. kiln_ai/adapters/eval/test_g_eval.py +115 -5
  12. kiln_ai/adapters/eval/test_g_eval_data.py +1 -1
  13. kiln_ai/adapters/fine_tune/base_finetune.py +2 -6
  14. kiln_ai/adapters/fine_tune/dataset_formatter.py +1 -5
  15. kiln_ai/adapters/fine_tune/fireworks_finetune.py +32 -20
  16. kiln_ai/adapters/fine_tune/test_dataset_formatter.py +1 -1
  17. kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +30 -21
  18. kiln_ai/adapters/fine_tune/test_vertex_finetune.py +2 -7
  19. kiln_ai/adapters/fine_tune/together_finetune.py +1 -1
  20. kiln_ai/adapters/ml_model_list.py +926 -125
  21. kiln_ai/adapters/model_adapters/base_adapter.py +11 -7
  22. kiln_ai/adapters/model_adapters/litellm_adapter.py +23 -1
  23. kiln_ai/adapters/model_adapters/test_base_adapter.py +1 -2
  24. kiln_ai/adapters/model_adapters/test_litellm_adapter.py +70 -3
  25. kiln_ai/adapters/model_adapters/test_structured_output.py +13 -13
  26. kiln_ai/adapters/parsers/parser_registry.py +0 -2
  27. kiln_ai/adapters/parsers/r1_parser.py +0 -1
  28. kiln_ai/adapters/parsers/test_r1_parser.py +1 -1
  29. kiln_ai/adapters/provider_tools.py +20 -19
  30. kiln_ai/adapters/remote_config.py +113 -0
  31. kiln_ai/adapters/repair/repair_task.py +2 -7
  32. kiln_ai/adapters/test_adapter_registry.py +30 -2
  33. kiln_ai/adapters/test_ml_model_list.py +30 -0
  34. kiln_ai/adapters/test_prompt_adaptors.py +0 -4
  35. kiln_ai/adapters/test_provider_tools.py +18 -12
  36. kiln_ai/adapters/test_remote_config.py +456 -0
  37. kiln_ai/datamodel/basemodel.py +54 -28
  38. kiln_ai/datamodel/datamodel_enums.py +2 -0
  39. kiln_ai/datamodel/dataset_split.py +5 -3
  40. kiln_ai/datamodel/eval.py +35 -3
  41. kiln_ai/datamodel/finetune.py +2 -3
  42. kiln_ai/datamodel/project.py +3 -3
  43. kiln_ai/datamodel/prompt.py +2 -2
  44. kiln_ai/datamodel/prompt_id.py +4 -4
  45. kiln_ai/datamodel/task.py +6 -6
  46. kiln_ai/datamodel/task_output.py +1 -3
  47. kiln_ai/datamodel/task_run.py +0 -2
  48. kiln_ai/datamodel/test_basemodel.py +210 -18
  49. kiln_ai/datamodel/test_eval_model.py +152 -10
  50. kiln_ai/datamodel/test_model_perf.py +1 -1
  51. kiln_ai/datamodel/test_prompt_id.py +5 -1
  52. kiln_ai/datamodel/test_task.py +5 -0
  53. kiln_ai/utils/config.py +10 -0
  54. kiln_ai/utils/logging.py +4 -3
  55. {kiln_ai-0.17.0.dist-info → kiln_ai-0.19.0.dist-info}/METADATA +33 -3
  56. {kiln_ai-0.17.0.dist-info → kiln_ai-0.19.0.dist-info}/RECORD +58 -56
  57. {kiln_ai-0.17.0.dist-info → kiln_ai-0.19.0.dist-info}/WHEEL +0 -0
  58. {kiln_ai-0.17.0.dist-info → kiln_ai-0.19.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  from enum import Enum
2
- from typing import Dict, List, Literal
2
+ from typing import List, Literal
3
3
 
4
4
  from pydantic import BaseModel
5
5
 
@@ -33,6 +33,12 @@ class ModelFamily(str, Enum):
33
33
  deepseek = "deepseek"
34
34
  dolphin = "dolphin"
35
35
  grok = "grok"
36
+ kimi = "kimi"
37
+ hunyuan = "hunyuan"
38
+ glm = "glm"
39
+ ernie = "ernie"
40
+ minimax = "minimax"
41
+ pangu = "pangu"
36
42
 
37
43
 
38
44
  # Where models have instruct and raw versions, instruct is default and raw is specified
@@ -50,6 +56,12 @@ class ModelName(str, Enum):
50
56
  llama_3_2_11b = "llama_3_2_11b"
51
57
  llama_3_2_90b = "llama_3_2_90b"
52
58
  llama_3_3_70b = "llama_3_3_70b"
59
+ llama_4_maverick = "llama_4_maverick"
60
+ llama_4_scout = "llama_4_scout"
61
+ gpt_5 = "gpt_5"
62
+ gpt_5_chat = "gpt_5_chat"
63
+ gpt_5_mini = "gpt_5_mini"
64
+ gpt_5_nano = "gpt_5_nano"
53
65
  gpt_4o_mini = "gpt_4o_mini"
54
66
  gpt_4o = "gpt_4o"
55
67
  gpt_4_1 = "gpt_4_1"
@@ -58,6 +70,8 @@ class ModelName(str, Enum):
58
70
  gpt_o3_low = "gpt_o3_low"
59
71
  gpt_o3_medium = "gpt_o3_medium"
60
72
  gpt_o3_high = "gpt_o3_high"
73
+ gpt_oss_20b = "gpt_oss_20b"
74
+ gpt_oss_120b = "gpt_oss_120b"
61
75
  gpt_o1_low = "gpt_o1_low"
62
76
  gpt_o1_medium = "gpt_o1_medium"
63
77
  gpt_o1_high = "gpt_o1_high"
@@ -73,6 +87,9 @@ class ModelName(str, Enum):
73
87
  phi_4_mini = "phi_4_mini"
74
88
  mistral_large = "mistral_large"
75
89
  mistral_nemo = "mistral_nemo"
90
+ mistral_small_3 = "mistral_small_3"
91
+ magistral_medium = "magistral_medium"
92
+ magistral_medium_thinking = "magistral_medium_thinking"
76
93
  gemma_2_2b = "gemma_2_2b"
77
94
  gemma_2_9b = "gemma_2_9b"
78
95
  gemma_2_27b = "gemma_2_27b"
@@ -80,6 +97,8 @@ class ModelName(str, Enum):
80
97
  gemma_3_4b = "gemma_3_4b"
81
98
  gemma_3_12b = "gemma_3_12b"
82
99
  gemma_3_27b = "gemma_3_27b"
100
+ gemma_3n_2b = "gemma_3n_2b"
101
+ gemma_3n_4b = "gemma_3n_4b"
83
102
  claude_3_5_haiku = "claude_3_5_haiku"
84
103
  claude_3_5_sonnet = "claude_3_5_sonnet"
85
104
  claude_3_7_sonnet = "claude_3_7_sonnet"
@@ -93,6 +112,7 @@ class ModelName(str, Enum):
93
112
  gemini_2_0_flash_lite = "gemini_2_0_flash_lite"
94
113
  gemini_2_5_pro = "gemini_2_5_pro"
95
114
  gemini_2_5_flash = "gemini_2_5_flash"
115
+ gemini_2_5_flash_lite = "gemini_2_5_flash_lite"
96
116
  nemotron_70b = "nemotron_70b"
97
117
  mixtral_8x7b = "mixtral_8x7b"
98
118
  qwen_2p5_7b = "qwen_2p5_7b"
@@ -101,7 +121,8 @@ class ModelName(str, Enum):
101
121
  qwq_32b = "qwq_32b"
102
122
  deepseek_3 = "deepseek_3"
103
123
  deepseek_r1 = "deepseek_r1"
104
- mistral_small_3 = "mistral_small_3"
124
+ deepseek_r1_0528 = "deepseek_r1_0528"
125
+ deepseek_r1_0528_distill_qwen3_8b = "deepseek_r1_0528_distill_qwen3_8b"
105
126
  deepseek_r1_distill_qwen_32b = "deepseek_r1_distill_qwen_32b"
106
127
  deepseek_r1_distill_llama_70b = "deepseek_r1_distill_llama_70b"
107
128
  deepseek_r1_distill_qwen_14b = "deepseek_r1_distill_qwen_14b"
@@ -110,6 +131,9 @@ class ModelName(str, Enum):
110
131
  deepseek_r1_distill_llama_8b = "deepseek_r1_distill_llama_8b"
111
132
  dolphin_2_9_8x22b = "dolphin_2_9_8x22b"
112
133
  grok_2 = "grok_2"
134
+ grok_3 = "grok_3"
135
+ grok_3_mini = "grok_3_mini"
136
+ grok_4 = "grok_4"
113
137
  qwen_3_0p6b = "qwen_3_0p6b"
114
138
  qwen_3_0p6b_no_thinking = "qwen_3_0p6b_no_thinking"
115
139
  qwen_3_1p7b = "qwen_3_1p7b"
@@ -120,12 +144,27 @@ class ModelName(str, Enum):
120
144
  qwen_3_8b_no_thinking = "qwen_3_8b_no_thinking"
121
145
  qwen_3_14b = "qwen_3_14b"
122
146
  qwen_3_14b_no_thinking = "qwen_3_14b_no_thinking"
147
+ qwen_3_30b_a3b_2507 = "qwen_3_30b_a3b_2507"
123
148
  qwen_3_30b_a3b = "qwen_3_30b_a3b"
149
+ qwen_3_30b_a3b_2507_no_thinking = "qwen_3_30b_a3b_2507_no_thinking"
124
150
  qwen_3_30b_a3b_no_thinking = "qwen_3_30b_a3b_no_thinking"
125
151
  qwen_3_32b = "qwen_3_32b"
126
152
  qwen_3_32b_no_thinking = "qwen_3_32b_no_thinking"
153
+ qwen_3_235b_a22b_2507 = "qwen_3_235b_a22b_2507"
127
154
  qwen_3_235b_a22b = "qwen_3_235b_a22b"
155
+ qwen_3_235b_a22b_2507_no_thinking = "qwen_3_235b_a22b_2507_no_thinking"
128
156
  qwen_3_235b_a22b_no_thinking = "qwen_3_235b_a22b_no_thinking"
157
+ qwen_long_l1_32b = "qwen_long_l1_32b"
158
+ kimi_k2 = "kimi_k2"
159
+ kimi_dev_72b = "kimi_dev_72b"
160
+ glm_4_1v_9b_thinking = "glm_4_1v_9b_thinking"
161
+ glm_z1_32b_0414 = "glm_z1_32b_0414"
162
+ glm_z1_9b_0414 = "glm_z1_9b_0414"
163
+ ernie_4_5_300b_a47b = "ernie_4_5_300b_a47b"
164
+ hunyuan_a13b = "hunyuan_a13b"
165
+ hunyuan_a13b_no_thinking = "hunyuan_a13b_no_thinking"
166
+ minimax_m1_80k = "minimax_m1_80k"
167
+ pangu_pro_moe_72b_a16b = "pangu_pro_moe_72b_a16b"
129
168
 
130
169
 
131
170
  class ModelParserID(str, Enum):
@@ -174,9 +213,11 @@ class KilnModelProvider(BaseModel):
174
213
  reasoning_capable: bool = False
175
214
  supports_logprobs: bool = False
176
215
  suggested_for_evals: bool = False
216
+ uncensored: bool = False
217
+ suggested_for_uncensored_data_gen: bool = False
177
218
  tuned_chat_strategy: ChatStrategy | None = None
178
219
 
179
- # TODO P1: Need a more generalized way to handle custom provider parameters.
220
+ # We need a more generalized way to handle custom provider parameters.
180
221
  # Making them quite declarative here for now, isolating provider specific logic
181
222
  # to this file. Later I should be able to override anything in this file via config.
182
223
  r1_openrouter_options: bool = False
@@ -186,6 +227,16 @@ class KilnModelProvider(BaseModel):
186
227
  thinking_level: Literal["low", "medium", "high"] | None = None
187
228
  ollama_model_aliases: List[str] | None = None
188
229
  anthropic_extended_thinking: bool = False
230
+ gemini_reasoning_enabled: bool = False
231
+
232
+ # some models on siliconflow allow dynamically disabling thinking
233
+ # currently only supported by Qwen3 and tencent/Hunyuan-A13B-Instruct
234
+ # ref: https://docs.siliconflow.cn/cn/api-reference/chat-completions/chat-completions
235
+ siliconflow_enable_thinking: bool | None = None
236
+ # enable this flag to make reasoning optional for structured output
237
+ # some reasoning models on siliconflow do not return any reasoning for structured output
238
+ # this is not uniform nor documented, so we need to test each model
239
+ reasoning_optional_for_structured_output: bool | None = None
189
240
 
190
241
 
191
242
  class KilnModel(BaseModel):
@@ -207,6 +258,63 @@ class KilnModel(BaseModel):
207
258
 
208
259
 
209
260
  built_in_models: List[KilnModel] = [
261
+ # GPT 5
262
+ KilnModel(
263
+ family=ModelFamily.gpt,
264
+ name=ModelName.gpt_5,
265
+ friendly_name="GPT-5",
266
+ providers=[
267
+ KilnModelProvider(
268
+ name=ModelProviderName.openai,
269
+ model_id="gpt-5",
270
+ structured_output_mode=StructuredOutputMode.json_schema,
271
+ suggested_for_data_gen=True,
272
+ suggested_for_evals=True,
273
+ ),
274
+ ],
275
+ ),
276
+ # GPT 5 Mini
277
+ KilnModel(
278
+ family=ModelFamily.gpt,
279
+ name=ModelName.gpt_5_mini,
280
+ friendly_name="GPT-5 Mini",
281
+ providers=[
282
+ KilnModelProvider(
283
+ name=ModelProviderName.openai,
284
+ model_id="gpt-5-mini",
285
+ structured_output_mode=StructuredOutputMode.json_schema,
286
+ suggested_for_evals=True,
287
+ suggested_for_data_gen=True,
288
+ ),
289
+ ],
290
+ ),
291
+ # GPT 5 Nano
292
+ KilnModel(
293
+ family=ModelFamily.gpt,
294
+ name=ModelName.gpt_5_nano,
295
+ friendly_name="GPT-5 Nano",
296
+ providers=[
297
+ KilnModelProvider(
298
+ name=ModelProviderName.openai,
299
+ model_id="gpt-5-nano",
300
+ structured_output_mode=StructuredOutputMode.json_schema,
301
+ ),
302
+ ],
303
+ ),
304
+ # GPT 5 Chat
305
+ KilnModel(
306
+ family=ModelFamily.gpt,
307
+ name=ModelName.gpt_5_chat,
308
+ friendly_name="GPT-5 Chat",
309
+ providers=[
310
+ KilnModelProvider(
311
+ name=ModelProviderName.openai,
312
+ model_id="gpt-5-chat-latest",
313
+ # Oddly no json_schema support for this model.
314
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
315
+ ),
316
+ ],
317
+ ),
210
318
  # GPT 4.1
211
319
  KilnModel(
212
320
  family=ModelFamily.gpt,
@@ -219,7 +327,6 @@ built_in_models: List[KilnModel] = [
219
327
  provider_finetune_id="gpt-4.1-2025-04-14",
220
328
  structured_output_mode=StructuredOutputMode.json_schema,
221
329
  supports_logprobs=True,
222
- suggested_for_data_gen=True,
223
330
  suggested_for_evals=True,
224
331
  ),
225
332
  KilnModelProvider(
@@ -227,13 +334,11 @@ built_in_models: List[KilnModel] = [
227
334
  model_id="openai/gpt-4.1",
228
335
  structured_output_mode=StructuredOutputMode.json_schema,
229
336
  supports_logprobs=True,
230
- suggested_for_data_gen=True,
231
337
  suggested_for_evals=True,
232
338
  ),
233
339
  KilnModelProvider(
234
340
  name=ModelProviderName.azure_openai,
235
341
  model_id="gpt-4.1",
236
- suggested_for_data_gen=True,
237
342
  suggested_for_evals=True,
238
343
  ),
239
344
  ],
@@ -250,22 +355,16 @@ built_in_models: List[KilnModel] = [
250
355
  provider_finetune_id="gpt-4.1-mini-2025-04-14",
251
356
  structured_output_mode=StructuredOutputMode.json_schema,
252
357
  supports_logprobs=True,
253
- suggested_for_data_gen=True,
254
- suggested_for_evals=True,
255
358
  ),
256
359
  KilnModelProvider(
257
360
  name=ModelProviderName.openrouter,
258
361
  model_id="openai/gpt-4.1-mini",
259
362
  structured_output_mode=StructuredOutputMode.json_schema,
260
363
  supports_logprobs=True,
261
- suggested_for_data_gen=True,
262
- suggested_for_evals=True,
263
364
  ),
264
365
  KilnModelProvider(
265
366
  name=ModelProviderName.azure_openai,
266
367
  model_id="gpt-4.1-mini",
267
- suggested_for_data_gen=True,
268
- suggested_for_evals=True,
269
368
  ),
270
369
  ],
271
370
  ),
@@ -280,6 +379,7 @@ built_in_models: List[KilnModel] = [
280
379
  model_id="gpt-4.1-nano",
281
380
  structured_output_mode=StructuredOutputMode.json_schema,
282
381
  supports_logprobs=True,
382
+ provider_finetune_id="gpt-4.1-nano-2025-04-14",
283
383
  ),
284
384
  KilnModelProvider(
285
385
  name=ModelProviderName.openrouter,
@@ -305,6 +405,8 @@ built_in_models: List[KilnModel] = [
305
405
  provider_finetune_id="gpt-4o-2024-08-06",
306
406
  structured_output_mode=StructuredOutputMode.json_schema,
307
407
  supports_logprobs=True,
408
+ suggested_for_data_gen=True,
409
+ suggested_for_evals=True,
308
410
  ),
309
411
  KilnModelProvider(
310
412
  name=ModelProviderName.openrouter,
@@ -312,10 +414,14 @@ built_in_models: List[KilnModel] = [
312
414
  structured_output_mode=StructuredOutputMode.json_schema,
313
415
  supports_logprobs=True,
314
416
  logprobs_openrouter_options=True,
417
+ suggested_for_data_gen=True,
418
+ suggested_for_evals=True,
315
419
  ),
316
420
  KilnModelProvider(
317
421
  name=ModelProviderName.azure_openai,
318
422
  model_id="gpt-4o",
423
+ suggested_for_data_gen=True,
424
+ suggested_for_evals=True,
319
425
  ),
320
426
  ],
321
427
  ),
@@ -535,6 +641,70 @@ built_in_models: List[KilnModel] = [
535
641
  ),
536
642
  ],
537
643
  ),
644
+ # GPT OSS 120B
645
+ KilnModel(
646
+ family=ModelFamily.gpt,
647
+ name=ModelName.gpt_oss_120b,
648
+ friendly_name="GPT OSS 120B",
649
+ providers=[
650
+ KilnModelProvider(
651
+ name=ModelProviderName.openrouter,
652
+ model_id="openai/gpt-oss-120b",
653
+ structured_output_mode=StructuredOutputMode.json_instructions,
654
+ reasoning_capable=True,
655
+ require_openrouter_reasoning=True,
656
+ ),
657
+ KilnModelProvider(
658
+ name=ModelProviderName.groq,
659
+ model_id="openai/gpt-oss-120b",
660
+ structured_output_mode=StructuredOutputMode.json_instructions,
661
+ ),
662
+ KilnModelProvider(
663
+ name=ModelProviderName.fireworks_ai,
664
+ model_id="accounts/fireworks/models/gpt-oss-120b",
665
+ structured_output_mode=StructuredOutputMode.json_instructions,
666
+ reasoning_capable=True,
667
+ ),
668
+ KilnModelProvider(
669
+ name=ModelProviderName.ollama,
670
+ model_id="gpt-oss:120b",
671
+ structured_output_mode=StructuredOutputMode.json_instructions,
672
+ reasoning_capable=True,
673
+ ),
674
+ ],
675
+ ),
676
+ # GPT OSS 20B
677
+ KilnModel(
678
+ family=ModelFamily.gpt,
679
+ name=ModelName.gpt_oss_20b,
680
+ friendly_name="GPT OSS 20B",
681
+ providers=[
682
+ KilnModelProvider(
683
+ name=ModelProviderName.openrouter,
684
+ model_id="openai/gpt-oss-20b",
685
+ structured_output_mode=StructuredOutputMode.json_instructions,
686
+ reasoning_capable=True,
687
+ require_openrouter_reasoning=True,
688
+ ),
689
+ KilnModelProvider(
690
+ name=ModelProviderName.groq,
691
+ model_id="openai/gpt-oss-20b",
692
+ structured_output_mode=StructuredOutputMode.json_instructions,
693
+ ),
694
+ KilnModelProvider(
695
+ name=ModelProviderName.fireworks_ai,
696
+ model_id="accounts/fireworks/models/gpt-oss-20b",
697
+ structured_output_mode=StructuredOutputMode.json_instructions,
698
+ reasoning_capable=True,
699
+ ),
700
+ KilnModelProvider(
701
+ name=ModelProviderName.ollama,
702
+ model_id="gpt-oss:20b",
703
+ structured_output_mode=StructuredOutputMode.json_instructions,
704
+ reasoning_capable=True,
705
+ ),
706
+ ],
707
+ ),
538
708
  # GPT o1 Low
539
709
  KilnModel(
540
710
  family=ModelFamily.gpt,
@@ -651,13 +821,11 @@ built_in_models: List[KilnModel] = [
651
821
  name=ModelProviderName.openrouter,
652
822
  structured_output_mode=StructuredOutputMode.function_calling,
653
823
  model_id="anthropic/claude-3.7-sonnet",
654
- suggested_for_data_gen=True,
655
824
  ),
656
825
  KilnModelProvider(
657
826
  name=ModelProviderName.anthropic,
658
827
  model_id="claude-3-7-sonnet-20250219",
659
828
  structured_output_mode=StructuredOutputMode.function_calling,
660
- suggested_for_data_gen=True,
661
829
  ),
662
830
  ],
663
831
  ),
@@ -732,24 +900,33 @@ built_in_models: List[KilnModel] = [
732
900
  providers=[
733
901
  KilnModelProvider(
734
902
  name=ModelProviderName.openrouter,
735
- model_id="google/gemini-2.5-pro-preview-03-25",
903
+ model_id="google/gemini-2.5-pro",
736
904
  structured_output_mode=StructuredOutputMode.json_schema,
737
905
  suggested_for_data_gen=True,
738
906
  suggested_for_evals=True,
907
+ reasoning_capable=True,
908
+ gemini_reasoning_enabled=True,
909
+ thinking_level="medium",
739
910
  ),
740
911
  KilnModelProvider(
741
912
  name=ModelProviderName.gemini_api,
742
- model_id="gemini-2.5-pro-preview-03-25",
913
+ model_id="gemini-2.5-pro",
743
914
  structured_output_mode=StructuredOutputMode.json_schema,
744
915
  suggested_for_data_gen=True,
745
916
  suggested_for_evals=True,
917
+ reasoning_capable=True,
918
+ gemini_reasoning_enabled=True,
919
+ thinking_level="medium",
746
920
  ),
747
921
  KilnModelProvider(
748
922
  name=ModelProviderName.vertex,
749
- model_id="gemini-2.5-pro-preview-03-25",
923
+ model_id="gemini-2.5-pro",
750
924
  structured_output_mode=StructuredOutputMode.json_schema,
751
925
  suggested_for_data_gen=True,
752
926
  suggested_for_evals=True,
927
+ reasoning_capable=True,
928
+ gemini_reasoning_enabled=True,
929
+ thinking_level="medium",
753
930
  ),
754
931
  ],
755
932
  ),
@@ -761,18 +938,24 @@ built_in_models: List[KilnModel] = [
761
938
  providers=[
762
939
  KilnModelProvider(
763
940
  name=ModelProviderName.openrouter,
764
- model_id="google/gemini-2.5-flash-preview",
941
+ model_id="google/gemini-2.5-flash",
765
942
  structured_output_mode=StructuredOutputMode.json_schema,
943
+ reasoning_capable=True,
944
+ gemini_reasoning_enabled=True,
766
945
  ),
767
946
  KilnModelProvider(
768
947
  name=ModelProviderName.gemini_api,
769
- model_id="gemini-2.5-flash-preview-04-17",
948
+ model_id="gemini-2.5-flash",
770
949
  structured_output_mode=StructuredOutputMode.json_schema,
950
+ reasoning_capable=True,
951
+ thinking_level="medium",
771
952
  ),
772
953
  KilnModelProvider(
773
954
  name=ModelProviderName.vertex,
774
- model_id="gemini-2.5-flash-preview-04-17",
955
+ model_id="gemini-2.5-flash",
775
956
  structured_output_mode=StructuredOutputMode.json_schema,
957
+ reasoning_capable=True,
958
+ thinking_level="medium",
776
959
  ),
777
960
  ],
778
961
  ),
@@ -785,17 +968,17 @@ built_in_models: List[KilnModel] = [
785
968
  KilnModelProvider(
786
969
  name=ModelProviderName.openrouter,
787
970
  model_id="google/gemini-2.0-flash-001",
788
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
971
+ structured_output_mode=StructuredOutputMode.json_schema,
789
972
  ),
790
973
  KilnModelProvider(
791
974
  name=ModelProviderName.gemini_api,
792
975
  model_id="gemini-2.0-flash",
793
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
976
+ structured_output_mode=StructuredOutputMode.json_schema,
794
977
  ),
795
978
  KilnModelProvider(
796
979
  name=ModelProviderName.vertex,
797
980
  model_id="gemini-2.0-flash",
798
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
981
+ structured_output_mode=StructuredOutputMode.json_schema,
799
982
  provider_finetune_id="gemini-2.0-flash-001",
800
983
  ),
801
984
  ],
@@ -809,17 +992,17 @@ built_in_models: List[KilnModel] = [
809
992
  KilnModelProvider(
810
993
  name=ModelProviderName.openrouter,
811
994
  model_id="google/gemini-2.0-flash-lite-001",
812
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
995
+ structured_output_mode=StructuredOutputMode.json_schema,
813
996
  ),
814
997
  KilnModelProvider(
815
998
  name=ModelProviderName.gemini_api,
816
999
  model_id="gemini-2.0-flash-lite",
817
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1000
+ structured_output_mode=StructuredOutputMode.json_schema,
818
1001
  ),
819
1002
  KilnModelProvider(
820
1003
  name=ModelProviderName.vertex,
821
1004
  model_id="gemini-2.0-flash-lite",
822
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1005
+ structured_output_mode=StructuredOutputMode.json_schema,
823
1006
  provider_finetune_id="gemini-2.0-flash-lite-001",
824
1007
  ),
825
1008
  ],
@@ -833,12 +1016,12 @@ built_in_models: List[KilnModel] = [
833
1016
  KilnModelProvider(
834
1017
  name=ModelProviderName.openrouter,
835
1018
  model_id="google/gemini-pro-1.5",
836
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1019
+ structured_output_mode=StructuredOutputMode.json_schema,
837
1020
  ),
838
1021
  KilnModelProvider(
839
1022
  name=ModelProviderName.gemini_api,
840
1023
  model_id="gemini-1.5-pro",
841
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1024
+ structured_output_mode=StructuredOutputMode.json_schema,
842
1025
  ),
843
1026
  KilnModelProvider(
844
1027
  name=ModelProviderName.vertex,
@@ -856,12 +1039,12 @@ built_in_models: List[KilnModel] = [
856
1039
  KilnModelProvider(
857
1040
  name=ModelProviderName.openrouter,
858
1041
  model_id="google/gemini-flash-1.5",
859
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1042
+ structured_output_mode=StructuredOutputMode.json_schema,
860
1043
  ),
861
1044
  KilnModelProvider(
862
1045
  name=ModelProviderName.gemini_api,
863
1046
  model_id="gemini-1.5-flash",
864
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1047
+ structured_output_mode=StructuredOutputMode.json_schema,
865
1048
  ),
866
1049
  KilnModelProvider(
867
1050
  name=ModelProviderName.vertex,
@@ -879,13 +1062,13 @@ built_in_models: List[KilnModel] = [
879
1062
  KilnModelProvider(
880
1063
  name=ModelProviderName.openrouter,
881
1064
  model_id="google/gemini-flash-1.5-8b",
882
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1065
+ structured_output_mode=StructuredOutputMode.json_schema,
883
1066
  supports_data_gen=False,
884
1067
  ),
885
1068
  KilnModelProvider(
886
1069
  name=ModelProviderName.gemini_api,
887
1070
  model_id="gemini-1.5-flash-8b",
888
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1071
+ structured_output_mode=StructuredOutputMode.json_schema,
889
1072
  supports_data_gen=False,
890
1073
  ),
891
1074
  ],
@@ -904,6 +1087,62 @@ built_in_models: List[KilnModel] = [
904
1087
  ),
905
1088
  ],
906
1089
  ),
1090
+ # Llama 4 Maverick Basic
1091
+ KilnModel(
1092
+ family=ModelFamily.llama,
1093
+ name=ModelName.llama_4_maverick,
1094
+ friendly_name="Llama 4 Maverick",
1095
+ providers=[
1096
+ KilnModelProvider(
1097
+ name=ModelProviderName.openrouter,
1098
+ model_id="meta-llama/llama-4-maverick",
1099
+ structured_output_mode=StructuredOutputMode.json_schema,
1100
+ ),
1101
+ KilnModelProvider(
1102
+ name=ModelProviderName.fireworks_ai,
1103
+ model_id="accounts/fireworks/models/llama4-maverick-instruct-basic",
1104
+ structured_output_mode=StructuredOutputMode.json_schema,
1105
+ ),
1106
+ KilnModelProvider(
1107
+ name=ModelProviderName.together_ai,
1108
+ model_id="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
1109
+ structured_output_mode=StructuredOutputMode.json_schema,
1110
+ ),
1111
+ KilnModelProvider(
1112
+ name=ModelProviderName.cerebras,
1113
+ model_id="llama-4-maverick-17b-128e-instruct",
1114
+ structured_output_mode=StructuredOutputMode.json_schema,
1115
+ ),
1116
+ ],
1117
+ ),
1118
+ # Llama 4 Scout Basic
1119
+ KilnModel(
1120
+ family=ModelFamily.llama,
1121
+ name=ModelName.llama_4_scout,
1122
+ friendly_name="Llama 4 Scout",
1123
+ providers=[
1124
+ KilnModelProvider(
1125
+ name=ModelProviderName.openrouter,
1126
+ model_id="meta-llama/llama-4-scout",
1127
+ structured_output_mode=StructuredOutputMode.json_schema,
1128
+ ),
1129
+ KilnModelProvider(
1130
+ name=ModelProviderName.fireworks_ai,
1131
+ model_id="accounts/fireworks/models/llama4-scout-instruct-basic",
1132
+ structured_output_mode=StructuredOutputMode.json_schema,
1133
+ ),
1134
+ KilnModelProvider(
1135
+ name=ModelProviderName.together_ai,
1136
+ model_id="meta-llama/Llama-4-Scout-17B-16E-Instruct",
1137
+ structured_output_mode=StructuredOutputMode.json_schema,
1138
+ ),
1139
+ KilnModelProvider(
1140
+ name=ModelProviderName.cerebras,
1141
+ model_id="llama-4-scout-17b-16e-instruct",
1142
+ structured_output_mode=StructuredOutputMode.json_schema,
1143
+ ),
1144
+ ],
1145
+ ),
907
1146
  # Llama 3.1-8b
908
1147
  KilnModel(
909
1148
  family=ModelFamily.llama,
@@ -946,6 +1185,13 @@ built_in_models: List[KilnModel] = [
946
1185
  structured_output_mode=StructuredOutputMode.function_calling_weak,
947
1186
  provider_finetune_id="meta-llama/Meta-Llama-3.1-8B-Instruct-Reference",
948
1187
  ),
1188
+ KilnModelProvider(
1189
+ name=ModelProviderName.cerebras,
1190
+ model_id="llama3.1-8b",
1191
+ structured_output_mode=StructuredOutputMode.function_calling,
1192
+ supports_data_gen=False,
1193
+ suggested_for_evals=False,
1194
+ ),
949
1195
  ],
950
1196
  ),
951
1197
  # Llama 3.1 70b
@@ -1024,6 +1270,33 @@ built_in_models: List[KilnModel] = [
1024
1270
  ),
1025
1271
  ],
1026
1272
  ),
1273
+ # Magistral Medium (Thinking)
1274
+ KilnModel(
1275
+ family=ModelFamily.mistral,
1276
+ name=ModelName.magistral_medium_thinking,
1277
+ friendly_name="Magistral Medium (Thinking)",
1278
+ providers=[
1279
+ KilnModelProvider(
1280
+ name=ModelProviderName.openrouter,
1281
+ model_id="mistralai/magistral-medium-2506:thinking",
1282
+ structured_output_mode=StructuredOutputMode.json_schema,
1283
+ # Thinking tokens are hidden by Mistral so not "reasoning" from Kiln API POV
1284
+ ),
1285
+ ],
1286
+ ),
1287
+ # Magistral Medium (No Thinking)
1288
+ KilnModel(
1289
+ family=ModelFamily.mistral,
1290
+ name=ModelName.magistral_medium,
1291
+ friendly_name="Magistral Medium (No Thinking)",
1292
+ providers=[
1293
+ KilnModelProvider(
1294
+ name=ModelProviderName.openrouter,
1295
+ model_id="mistralai/magistral-medium-2506",
1296
+ structured_output_mode=StructuredOutputMode.json_schema,
1297
+ ),
1298
+ ],
1299
+ ),
1027
1300
  # Mistral Nemo
1028
1301
  KilnModel(
1029
1302
  family=ModelFamily.mistral,
@@ -1047,16 +1320,22 @@ built_in_models: List[KilnModel] = [
1047
1320
  name=ModelProviderName.amazon_bedrock,
1048
1321
  structured_output_mode=StructuredOutputMode.json_instructions,
1049
1322
  model_id="mistral.mistral-large-2407-v1:0",
1323
+ uncensored=True,
1324
+ suggested_for_uncensored_data_gen=True,
1050
1325
  ),
1051
1326
  KilnModelProvider(
1052
1327
  name=ModelProviderName.openrouter,
1053
1328
  structured_output_mode=StructuredOutputMode.json_schema,
1054
1329
  model_id="mistralai/mistral-large",
1330
+ uncensored=True,
1331
+ suggested_for_uncensored_data_gen=True,
1055
1332
  ),
1056
1333
  KilnModelProvider(
1057
1334
  name=ModelProviderName.ollama,
1058
1335
  structured_output_mode=StructuredOutputMode.json_schema,
1059
1336
  model_id="mistral-large",
1337
+ uncensored=True,
1338
+ suggested_for_uncensored_data_gen=True,
1060
1339
  ),
1061
1340
  ],
1062
1341
  ),
@@ -1066,12 +1345,6 @@ built_in_models: List[KilnModel] = [
1066
1345
  name=ModelName.llama_3_2_1b,
1067
1346
  friendly_name="Llama 3.2 1B",
1068
1347
  providers=[
1069
- KilnModelProvider(
1070
- name=ModelProviderName.groq,
1071
- model_id="llama-3.2-1b-preview",
1072
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1073
- supports_data_gen=False,
1074
- ),
1075
1348
  KilnModelProvider(
1076
1349
  name=ModelProviderName.openrouter,
1077
1350
  supports_structured_output=False,
@@ -1085,12 +1358,6 @@ built_in_models: List[KilnModel] = [
1085
1358
  supports_data_gen=False,
1086
1359
  model_id="llama3.2:1b",
1087
1360
  ),
1088
- KilnModelProvider(
1089
- name=ModelProviderName.huggingface,
1090
- model_id="meta-llama/Llama-3.2-1B-Instruct",
1091
- supports_structured_output=False,
1092
- supports_data_gen=False,
1093
- ),
1094
1361
  ],
1095
1362
  ),
1096
1363
  # Llama 3.2 3B
@@ -1099,11 +1366,6 @@ built_in_models: List[KilnModel] = [
1099
1366
  name=ModelName.llama_3_2_3b,
1100
1367
  friendly_name="Llama 3.2 3B",
1101
1368
  providers=[
1102
- KilnModelProvider(
1103
- name=ModelProviderName.groq,
1104
- model_id="llama-3.2-3b-preview",
1105
- supports_data_gen=False,
1106
- ),
1107
1369
  KilnModelProvider(
1108
1370
  name=ModelProviderName.openrouter,
1109
1371
  supports_structured_output=False,
@@ -1116,12 +1378,6 @@ built_in_models: List[KilnModel] = [
1116
1378
  supports_data_gen=False,
1117
1379
  model_id="llama3.2",
1118
1380
  ),
1119
- KilnModelProvider(
1120
- name=ModelProviderName.huggingface,
1121
- model_id="meta-llama/Llama-3.2-3B-Instruct",
1122
- supports_structured_output=False,
1123
- supports_data_gen=False,
1124
- ),
1125
1381
  KilnModelProvider(
1126
1382
  name=ModelProviderName.together_ai,
1127
1383
  model_id="meta-llama/Llama-3.2-3B-Instruct-Turbo",
@@ -1149,19 +1405,6 @@ built_in_models: List[KilnModel] = [
1149
1405
  structured_output_mode=StructuredOutputMode.json_schema,
1150
1406
  model_id="llama3.2-vision",
1151
1407
  ),
1152
- KilnModelProvider(
1153
- name=ModelProviderName.fireworks_ai,
1154
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1155
- model_id="accounts/fireworks/models/llama-v3p2-11b-vision-instruct",
1156
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1157
- supports_data_gen=False,
1158
- ),
1159
- KilnModelProvider(
1160
- name=ModelProviderName.huggingface,
1161
- model_id="meta-llama/Llama-3.2-11B-Vision-Instruct",
1162
- supports_structured_output=False,
1163
- supports_data_gen=False,
1164
- ),
1165
1408
  KilnModelProvider(
1166
1409
  name=ModelProviderName.together_ai,
1167
1410
  model_id="meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo",
@@ -1186,13 +1429,6 @@ built_in_models: List[KilnModel] = [
1186
1429
  structured_output_mode=StructuredOutputMode.json_schema,
1187
1430
  model_id="llama3.2-vision:90b",
1188
1431
  ),
1189
- KilnModelProvider(
1190
- name=ModelProviderName.fireworks_ai,
1191
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1192
- model_id="accounts/fireworks/models/llama-v3p2-90b-vision-instruct",
1193
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1194
- supports_data_gen=False,
1195
- ),
1196
1432
  KilnModelProvider(
1197
1433
  name=ModelProviderName.together_ai,
1198
1434
  model_id="meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo",
@@ -1235,7 +1471,7 @@ built_in_models: List[KilnModel] = [
1235
1471
  KilnModelProvider(
1236
1472
  name=ModelProviderName.vertex,
1237
1473
  model_id="meta/llama-3.3-70b-instruct-maas",
1238
- # Doesn't work, TODO to debug
1474
+ # Doesn't work yet; needs debugging
1239
1475
  supports_structured_output=False,
1240
1476
  supports_data_gen=False,
1241
1477
  ),
@@ -1266,13 +1502,6 @@ built_in_models: List[KilnModel] = [
1266
1502
  model_id="microsoft/phi-3.5-mini-128k-instruct",
1267
1503
  structured_output_mode=StructuredOutputMode.json_schema,
1268
1504
  ),
1269
- KilnModelProvider(
1270
- name=ModelProviderName.fireworks_ai,
1271
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1272
- supports_structured_output=False,
1273
- supports_data_gen=False,
1274
- model_id="accounts/fireworks/models/phi-3-vision-128k-instruct",
1275
- ),
1276
1505
  ],
1277
1506
  ),
1278
1507
  # Phi 4
@@ -1387,13 +1616,6 @@ built_in_models: List[KilnModel] = [
1387
1616
  supports_structured_output=False,
1388
1617
  supports_data_gen=False,
1389
1618
  ),
1390
- KilnModelProvider(
1391
- name=ModelProviderName.openrouter,
1392
- # TODO: swap to non-free model when available (more reliable)
1393
- model_id="google/gemma-3-1b-it:free",
1394
- supports_structured_output=False,
1395
- supports_data_gen=False,
1396
- ),
1397
1619
  ],
1398
1620
  ),
1399
1621
  # Gemma 3 4B
@@ -1410,8 +1632,7 @@ built_in_models: List[KilnModel] = [
1410
1632
  KilnModelProvider(
1411
1633
  name=ModelProviderName.openrouter,
1412
1634
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1413
- # TODO: swap to non-free model when available (more reliable)
1414
- model_id="google/gemma-3-4b-it:free",
1635
+ model_id="google/gemma-3-4b-it",
1415
1636
  ),
1416
1637
  ],
1417
1638
  ),
@@ -1428,8 +1649,7 @@ built_in_models: List[KilnModel] = [
1428
1649
  KilnModelProvider(
1429
1650
  name=ModelProviderName.openrouter,
1430
1651
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1431
- # TODO: swap to non-free model when available (more reliable)
1432
- model_id="google/gemma-3-12b-it:free",
1652
+ model_id="google/gemma-3-12b-it",
1433
1653
  ),
1434
1654
  ],
1435
1655
  ),
@@ -1450,11 +1670,57 @@ built_in_models: List[KilnModel] = [
1450
1670
  ),
1451
1671
  ],
1452
1672
  ),
1453
- # Mixtral 8x7B
1673
+ # Gemma 3n 2B
1454
1674
  KilnModel(
1455
- family=ModelFamily.mixtral,
1456
- name=ModelName.mixtral_8x7b,
1457
- friendly_name="Mixtral 8x7B",
1675
+ family=ModelFamily.gemma,
1676
+ name=ModelName.gemma_3n_2b,
1677
+ friendly_name="Gemma 3n 2B",
1678
+ providers=[
1679
+ KilnModelProvider(
1680
+ name=ModelProviderName.ollama,
1681
+ model_id="gemma3n:e2b",
1682
+ structured_output_mode=StructuredOutputMode.json_schema,
1683
+ supports_data_gen=False,
1684
+ ),
1685
+ KilnModelProvider(
1686
+ name=ModelProviderName.gemini_api,
1687
+ model_id="gemma-3n-e2b-it",
1688
+ supports_structured_output=False,
1689
+ supports_data_gen=False,
1690
+ ),
1691
+ ],
1692
+ ),
1693
+ # Gemma 3n 4B
1694
+ KilnModel(
1695
+ family=ModelFamily.gemma,
1696
+ name=ModelName.gemma_3n_4b,
1697
+ friendly_name="Gemma 3n 4B",
1698
+ providers=[
1699
+ KilnModelProvider(
1700
+ name=ModelProviderName.openrouter,
1701
+ model_id="google/gemma-3n-e4b-it",
1702
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1703
+ supports_data_gen=False,
1704
+ ),
1705
+ KilnModelProvider(
1706
+ name=ModelProviderName.ollama,
1707
+ model_id="gemma3n:e4b",
1708
+ supports_data_gen=False,
1709
+ structured_output_mode=StructuredOutputMode.json_schema,
1710
+ ),
1711
+ KilnModelProvider(
1712
+ name=ModelProviderName.gemini_api,
1713
+ model_id="gemma-3n-e4b-it",
1714
+ structured_output_mode=StructuredOutputMode.json_instructions,
1715
+ supports_data_gen=False,
1716
+ ),
1717
+ ],
1718
+ ),
1719
+ # Mixtral 8x7B
1720
+ KilnModel(
1721
+ family=ModelFamily.mixtral,
1722
+ name=ModelName.mixtral_8x7b,
1723
+ friendly_name="Mixtral 8x7B",
1458
1724
  providers=[
1459
1725
  KilnModelProvider(
1460
1726
  name=ModelProviderName.openrouter,
@@ -1498,17 +1764,16 @@ built_in_models: List[KilnModel] = [
1498
1764
  structured_output_mode=StructuredOutputMode.json_instructions,
1499
1765
  ),
1500
1766
  KilnModelProvider(
1501
- name=ModelProviderName.groq,
1502
- model_id="qwen-qwq-32b",
1503
- reasoning_capable=True,
1504
- parser=ModelParserID.r1_thinking,
1767
+ name=ModelProviderName.together_ai,
1768
+ model_id="Qwen/QwQ-32B",
1505
1769
  structured_output_mode=StructuredOutputMode.json_instructions,
1770
+ parser=ModelParserID.r1_thinking,
1771
+ reasoning_capable=True,
1506
1772
  ),
1507
1773
  KilnModelProvider(
1508
- name=ModelProviderName.together_ai,
1774
+ name=ModelProviderName.siliconflow_cn,
1509
1775
  model_id="Qwen/QwQ-32B",
1510
1776
  structured_output_mode=StructuredOutputMode.json_instructions,
1511
- parser=ModelParserID.r1_thinking,
1512
1777
  reasoning_capable=True,
1513
1778
  ),
1514
1779
  ],
@@ -1587,10 +1852,78 @@ built_in_models: List[KilnModel] = [
1587
1852
  name=ModelProviderName.openrouter,
1588
1853
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1589
1854
  model_id="mistralai/mistral-small-24b-instruct-2501",
1855
+ uncensored=True,
1590
1856
  ),
1591
1857
  KilnModelProvider(
1592
1858
  name=ModelProviderName.ollama,
1593
1859
  model_id="mistral-small:24b",
1860
+ uncensored=True,
1861
+ ),
1862
+ ],
1863
+ ),
1864
+ # DeepSeek R1 0528
1865
+ KilnModel(
1866
+ family=ModelFamily.deepseek,
1867
+ name=ModelName.deepseek_r1_0528,
1868
+ friendly_name="DeepSeek R1 0528",
1869
+ providers=[
1870
+ KilnModelProvider(
1871
+ name=ModelProviderName.openrouter,
1872
+ model_id="deepseek/deepseek-r1-0528",
1873
+ parser=ModelParserID.r1_thinking,
1874
+ structured_output_mode=StructuredOutputMode.json_instructions,
1875
+ reasoning_capable=True,
1876
+ r1_openrouter_options=True,
1877
+ require_openrouter_reasoning=True,
1878
+ supports_data_gen=True,
1879
+ ),
1880
+ KilnModelProvider(
1881
+ name=ModelProviderName.fireworks_ai,
1882
+ model_id="accounts/fireworks/models/deepseek-r1-0528",
1883
+ parser=ModelParserID.r1_thinking,
1884
+ supports_data_gen=True,
1885
+ structured_output_mode=StructuredOutputMode.json_instructions,
1886
+ reasoning_capable=True,
1887
+ ),
1888
+ KilnModelProvider(
1889
+ name=ModelProviderName.together_ai,
1890
+ model_id="deepseek-ai/DeepSeek-R1", # Note: Together remapped the R1 endpoint to this 0528 model
1891
+ structured_output_mode=StructuredOutputMode.json_instructions,
1892
+ parser=ModelParserID.r1_thinking,
1893
+ reasoning_capable=True,
1894
+ supports_data_gen=True,
1895
+ ),
1896
+ KilnModelProvider(
1897
+ name=ModelProviderName.siliconflow_cn,
1898
+ model_id="Pro/deepseek-ai/DeepSeek-R1",
1899
+ parser=ModelParserID.optional_r1_thinking,
1900
+ structured_output_mode=StructuredOutputMode.json_instructions,
1901
+ reasoning_capable=True,
1902
+ supports_data_gen=True,
1903
+ ),
1904
+ ],
1905
+ ),
1906
+ # DeepSeek R1 0528 Distill Qwen 3 8B
1907
+ KilnModel(
1908
+ family=ModelFamily.deepseek,
1909
+ name=ModelName.deepseek_r1_0528_distill_qwen3_8b,
1910
+ friendly_name="DeepSeek R1 0528 Distill Qwen 3 8B",
1911
+ providers=[
1912
+ KilnModelProvider(
1913
+ name=ModelProviderName.openrouter,
1914
+ model_id="deepseek/deepseek-r1-0528-qwen3-8b",
1915
+ structured_output_mode=StructuredOutputMode.json_instructions,
1916
+ reasoning_capable=True,
1917
+ r1_openrouter_options=True,
1918
+ require_openrouter_reasoning=True,
1919
+ ),
1920
+ KilnModelProvider(
1921
+ name=ModelProviderName.siliconflow_cn,
1922
+ model_id="deepseek-ai/DeepSeek-R1-0528-Qwen3-8B",
1923
+ structured_output_mode=StructuredOutputMode.json_instructions,
1924
+ reasoning_capable=True,
1925
+ reasoning_optional_for_structured_output=True,
1926
+ supports_data_gen=False,
1594
1927
  ),
1595
1928
  ],
1596
1929
  ),
@@ -1617,13 +1950,18 @@ built_in_models: List[KilnModel] = [
1617
1950
  model_id="deepseek-ai/DeepSeek-V3",
1618
1951
  structured_output_mode=StructuredOutputMode.json_instructions,
1619
1952
  ),
1953
+ KilnModelProvider(
1954
+ name=ModelProviderName.siliconflow_cn,
1955
+ model_id="Pro/deepseek-ai/DeepSeek-V3",
1956
+ structured_output_mode=StructuredOutputMode.json_schema,
1957
+ ),
1620
1958
  ],
1621
1959
  ),
1622
1960
  # DeepSeek R1
1623
1961
  KilnModel(
1624
1962
  family=ModelFamily.deepseek,
1625
1963
  name=ModelName.deepseek_r1,
1626
- friendly_name="DeepSeek R1",
1964
+ friendly_name="DeepSeek R1 (Original)",
1627
1965
  providers=[
1628
1966
  KilnModelProvider(
1629
1967
  name=ModelProviderName.openrouter,
@@ -1633,8 +1971,6 @@ built_in_models: List[KilnModel] = [
1633
1971
  reasoning_capable=True,
1634
1972
  r1_openrouter_options=True,
1635
1973
  require_openrouter_reasoning=True,
1636
- suggested_for_data_gen=True,
1637
- suggested_for_evals=True,
1638
1974
  ),
1639
1975
  KilnModelProvider(
1640
1976
  name=ModelProviderName.fireworks_ai,
@@ -1642,8 +1978,6 @@ built_in_models: List[KilnModel] = [
1642
1978
  parser=ModelParserID.r1_thinking,
1643
1979
  structured_output_mode=StructuredOutputMode.json_instructions,
1644
1980
  reasoning_capable=True,
1645
- suggested_for_data_gen=True,
1646
- suggested_for_evals=True,
1647
1981
  ),
1648
1982
  KilnModelProvider(
1649
1983
  # I want your RAM
@@ -1652,17 +1986,6 @@ built_in_models: List[KilnModel] = [
1652
1986
  parser=ModelParserID.r1_thinking,
1653
1987
  structured_output_mode=StructuredOutputMode.json_instructions,
1654
1988
  reasoning_capable=True,
1655
- suggested_for_data_gen=True,
1656
- suggested_for_evals=True,
1657
- ),
1658
- KilnModelProvider(
1659
- name=ModelProviderName.together_ai,
1660
- model_id="deepseek-ai/DeepSeek-R1",
1661
- structured_output_mode=StructuredOutputMode.json_instructions,
1662
- parser=ModelParserID.r1_thinking,
1663
- reasoning_capable=True,
1664
- suggested_for_data_gen=True,
1665
- suggested_for_evals=True,
1666
1989
  ),
1667
1990
  ],
1668
1991
  ),
@@ -1689,11 +2012,11 @@ built_in_models: List[KilnModel] = [
1689
2012
  model_id="deepseek-r1:32b",
1690
2013
  ),
1691
2014
  KilnModelProvider(
1692
- name=ModelProviderName.together_ai,
1693
- model_id="deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
1694
- structured_output_mode=StructuredOutputMode.json_instructions,
1695
- parser=ModelParserID.r1_thinking,
2015
+ name=ModelProviderName.siliconflow_cn,
2016
+ model_id="deepseek-ai/DeepSeek-R1-Distill-Qwen-32B",
2017
+ structured_output_mode=StructuredOutputMode.json_schema,
1696
2018
  reasoning_capable=True,
2019
+ reasoning_optional_for_structured_output=True,
1697
2020
  ),
1698
2021
  ],
1699
2022
  ),
@@ -1759,6 +2082,14 @@ built_in_models: List[KilnModel] = [
1759
2082
  structured_output_mode=StructuredOutputMode.json_instructions,
1760
2083
  parser=ModelParserID.r1_thinking,
1761
2084
  ),
2085
+ KilnModelProvider(
2086
+ name=ModelProviderName.siliconflow_cn,
2087
+ model_id="deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
2088
+ structured_output_mode=StructuredOutputMode.json_schema,
2089
+ reasoning_capable=True,
2090
+ reasoning_optional_for_structured_output=True,
2091
+ supports_data_gen=False,
2092
+ ),
1762
2093
  ],
1763
2094
  ),
1764
2095
  # DeepSeek R1 Distill Llama 8B
@@ -1798,6 +2129,17 @@ built_in_models: List[KilnModel] = [
1798
2129
  name=ModelName.deepseek_r1_distill_qwen_7b,
1799
2130
  friendly_name="DeepSeek R1 Distill Qwen 7B",
1800
2131
  providers=[
2132
+ KilnModelProvider(
2133
+ name=ModelProviderName.openrouter,
2134
+ # Best mode, but fails to often to enable without warning
2135
+ supports_structured_output=False,
2136
+ supports_data_gen=False,
2137
+ model_id="deepseek/deepseek-r1-distill-qwen-7b",
2138
+ structured_output_mode=StructuredOutputMode.json_instructions,
2139
+ reasoning_capable=True,
2140
+ r1_openrouter_options=True,
2141
+ require_openrouter_reasoning=True,
2142
+ ),
1801
2143
  KilnModelProvider(
1802
2144
  name=ModelProviderName.ollama,
1803
2145
  # Best mode, but fails to often to enable without warning
@@ -1808,6 +2150,16 @@ built_in_models: List[KilnModel] = [
1808
2150
  structured_output_mode=StructuredOutputMode.json_instructions,
1809
2151
  model_id="deepseek-r1:7b",
1810
2152
  ),
2153
+ KilnModelProvider(
2154
+ name=ModelProviderName.siliconflow_cn,
2155
+ # Best mode, but fails to often to enable without warning
2156
+ supports_structured_output=False,
2157
+ supports_data_gen=False,
2158
+ model_id="Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B",
2159
+ structured_output_mode=StructuredOutputMode.json_instructions,
2160
+ reasoning_capable=True,
2161
+ reasoning_optional_for_structured_output=True,
2162
+ ),
1811
2163
  ],
1812
2164
  ),
1813
2165
  # DeepSeek R1 Distill Qwen 1.5B
@@ -1858,12 +2210,67 @@ built_in_models: List[KilnModel] = [
1858
2210
  structured_output_mode=StructuredOutputMode.json_schema,
1859
2211
  supports_data_gen=True,
1860
2212
  model_id="dolphin-mixtral:8x22b",
2213
+ uncensored=True,
2214
+ suggested_for_uncensored_data_gen=True,
1861
2215
  ),
1862
2216
  KilnModelProvider(
1863
2217
  name=ModelProviderName.openrouter,
1864
2218
  supports_data_gen=True,
1865
2219
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1866
2220
  model_id="cognitivecomputations/dolphin-mixtral-8x22b",
2221
+ uncensored=True,
2222
+ suggested_for_uncensored_data_gen=True,
2223
+ ),
2224
+ ],
2225
+ ),
2226
+ # Grok 4
2227
+ KilnModel(
2228
+ family=ModelFamily.grok,
2229
+ name=ModelName.grok_4,
2230
+ friendly_name="Grok 4",
2231
+ providers=[
2232
+ KilnModelProvider(
2233
+ name=ModelProviderName.openrouter,
2234
+ model_id="x-ai/grok-4",
2235
+ supports_structured_output=True,
2236
+ supports_data_gen=True,
2237
+ structured_output_mode=StructuredOutputMode.json_schema,
2238
+ suggested_for_data_gen=True,
2239
+ uncensored=True,
2240
+ suggested_for_uncensored_data_gen=True,
2241
+ ),
2242
+ ],
2243
+ ),
2244
+ # Grok 3
2245
+ KilnModel(
2246
+ family=ModelFamily.grok,
2247
+ name=ModelName.grok_3,
2248
+ friendly_name="Grok 3",
2249
+ providers=[
2250
+ KilnModelProvider(
2251
+ name=ModelProviderName.openrouter,
2252
+ model_id="x-ai/grok-3",
2253
+ supports_structured_output=True,
2254
+ supports_data_gen=True,
2255
+ structured_output_mode=StructuredOutputMode.json_schema,
2256
+ suggested_for_data_gen=True,
2257
+ uncensored=True,
2258
+ ),
2259
+ ],
2260
+ ),
2261
+ # Grok 3 Mini
2262
+ KilnModel(
2263
+ family=ModelFamily.grok,
2264
+ name=ModelName.grok_3_mini,
2265
+ friendly_name="Grok 3 Mini",
2266
+ providers=[
2267
+ KilnModelProvider(
2268
+ name=ModelProviderName.openrouter,
2269
+ model_id="x-ai/grok-3-mini",
2270
+ supports_structured_output=True,
2271
+ supports_data_gen=True,
2272
+ structured_output_mode=StructuredOutputMode.json_schema,
2273
+ uncensored=True,
1867
2274
  ),
1868
2275
  ],
1869
2276
  ),
@@ -2028,6 +2435,15 @@ built_in_models: List[KilnModel] = [
2028
2435
  reasoning_capable=True,
2029
2436
  structured_output_mode=StructuredOutputMode.json_schema,
2030
2437
  ),
2438
+ KilnModelProvider(
2439
+ name=ModelProviderName.siliconflow_cn,
2440
+ model_id="Qwen/Qwen3-8B",
2441
+ structured_output_mode=StructuredOutputMode.json_schema,
2442
+ reasoning_capable=True,
2443
+ siliconflow_enable_thinking=True,
2444
+ reasoning_optional_for_structured_output=True,
2445
+ supports_data_gen=False,
2446
+ ),
2031
2447
  ],
2032
2448
  ),
2033
2449
  # Qwen 3 8B Non-Thinking
@@ -2051,6 +2467,13 @@ built_in_models: List[KilnModel] = [
2051
2467
  formatter=ModelFormatterID.qwen3_style_no_think,
2052
2468
  supports_data_gen=False,
2053
2469
  ),
2470
+ KilnModelProvider(
2471
+ name=ModelProviderName.siliconflow_cn,
2472
+ model_id="Qwen/Qwen3-8B",
2473
+ structured_output_mode=StructuredOutputMode.json_schema,
2474
+ siliconflow_enable_thinking=False,
2475
+ supports_data_gen=False,
2476
+ ),
2054
2477
  ],
2055
2478
  ),
2056
2479
  # Qwen 3 14B
@@ -2076,6 +2499,15 @@ built_in_models: List[KilnModel] = [
2076
2499
  reasoning_capable=True,
2077
2500
  structured_output_mode=StructuredOutputMode.json_schema,
2078
2501
  ),
2502
+ KilnModelProvider(
2503
+ name=ModelProviderName.siliconflow_cn,
2504
+ model_id="Qwen/Qwen3-14B",
2505
+ structured_output_mode=StructuredOutputMode.json_schema,
2506
+ supports_data_gen=True,
2507
+ reasoning_capable=True,
2508
+ siliconflow_enable_thinking=True,
2509
+ reasoning_optional_for_structured_output=True,
2510
+ ),
2079
2511
  ],
2080
2512
  ),
2081
2513
  # Qwen 3 14B Non-Thinking
@@ -2099,6 +2531,28 @@ built_in_models: List[KilnModel] = [
2099
2531
  supports_data_gen=True,
2100
2532
  structured_output_mode=StructuredOutputMode.json_schema,
2101
2533
  ),
2534
+ KilnModelProvider(
2535
+ name=ModelProviderName.siliconflow_cn,
2536
+ model_id="Qwen/Qwen3-14B",
2537
+ formatter=ModelFormatterID.qwen3_style_no_think,
2538
+ structured_output_mode=StructuredOutputMode.json_schema,
2539
+ siliconflow_enable_thinking=False,
2540
+ supports_data_gen=True,
2541
+ ),
2542
+ ],
2543
+ ),
2544
+ # Qwen 3 30B (3B Active) 2507 Version
2545
+ KilnModel(
2546
+ family=ModelFamily.qwen,
2547
+ name=ModelName.qwen_3_30b_a3b_2507,
2548
+ friendly_name="Qwen 3 30B (3B Active) 2507",
2549
+ providers=[
2550
+ KilnModelProvider(
2551
+ name=ModelProviderName.ollama,
2552
+ model_id="qwen3:30b-a3b-thinking-2507-q4_K_M",
2553
+ reasoning_capable=True,
2554
+ structured_output_mode=StructuredOutputMode.json_schema,
2555
+ ),
2102
2556
  ],
2103
2557
  ),
2104
2558
  # Qwen 3 30B (3B Active)
@@ -2132,6 +2586,33 @@ built_in_models: List[KilnModel] = [
2132
2586
  structured_output_mode=StructuredOutputMode.json_instructions,
2133
2587
  parser=ModelParserID.r1_thinking,
2134
2588
  ),
2589
+ KilnModelProvider(
2590
+ name=ModelProviderName.siliconflow_cn,
2591
+ model_id="Qwen/Qwen3-30B-A3B",
2592
+ structured_output_mode=StructuredOutputMode.json_schema,
2593
+ reasoning_capable=True,
2594
+ reasoning_optional_for_structured_output=True,
2595
+ supports_data_gen=True,
2596
+ ),
2597
+ ],
2598
+ ),
2599
+ # Qwen 3 30B (3B Active) 2507 Version Non-Thinking
2600
+ KilnModel(
2601
+ family=ModelFamily.qwen,
2602
+ name=ModelName.qwen_3_30b_a3b_2507_no_thinking,
2603
+ friendly_name="Qwen 3 30B (3B Active) 2507 Non-Thinking",
2604
+ providers=[
2605
+ KilnModelProvider(
2606
+ name=ModelProviderName.openrouter,
2607
+ model_id="qwen/qwen3-30b-a3b-instruct-2507",
2608
+ structured_output_mode=StructuredOutputMode.json_instructions,
2609
+ ),
2610
+ KilnModelProvider(
2611
+ name=ModelProviderName.ollama,
2612
+ model_id="qwen3:30b-a3b-instruct-2507-q8_0",
2613
+ structured_output_mode=StructuredOutputMode.json_schema,
2614
+ supports_data_gen=True,
2615
+ ),
2135
2616
  ],
2136
2617
  ),
2137
2618
  # Qwen 3 30B (3B Active) Non-Thinking
@@ -2171,6 +2652,14 @@ built_in_models: List[KilnModel] = [
2171
2652
  name=ModelName.qwen_3_32b,
2172
2653
  friendly_name="Qwen 3 32B",
2173
2654
  providers=[
2655
+ KilnModelProvider(
2656
+ name=ModelProviderName.groq,
2657
+ model_id="Qwen/Qwen3-32B",
2658
+ supports_data_gen=True,
2659
+ reasoning_capable=True,
2660
+ structured_output_mode=StructuredOutputMode.json_instructions,
2661
+ parser=ModelParserID.r1_thinking,
2662
+ ),
2174
2663
  KilnModelProvider(
2175
2664
  name=ModelProviderName.openrouter,
2176
2665
  model_id="qwen/qwen3-32b",
@@ -2188,6 +2677,22 @@ built_in_models: List[KilnModel] = [
2188
2677
  reasoning_capable=True,
2189
2678
  structured_output_mode=StructuredOutputMode.json_schema,
2190
2679
  ),
2680
+ KilnModelProvider(
2681
+ name=ModelProviderName.siliconflow_cn,
2682
+ model_id="Qwen/Qwen3-32B",
2683
+ structured_output_mode=StructuredOutputMode.json_schema,
2684
+ reasoning_capable=True,
2685
+ reasoning_optional_for_structured_output=True,
2686
+ supports_data_gen=True,
2687
+ ),
2688
+ KilnModelProvider(
2689
+ name=ModelProviderName.cerebras,
2690
+ model_id="qwen-3-32b",
2691
+ structured_output_mode=StructuredOutputMode.json_instructions,
2692
+ supports_data_gen=True,
2693
+ reasoning_capable=True,
2694
+ parser=ModelParserID.r1_thinking,
2695
+ ),
2191
2696
  ],
2192
2697
  ),
2193
2698
  # Qwen 3 32B No Thinking
@@ -2211,6 +2716,56 @@ built_in_models: List[KilnModel] = [
2211
2716
  formatter=ModelFormatterID.qwen3_style_no_think,
2212
2717
  supports_data_gen=True,
2213
2718
  ),
2719
+ KilnModelProvider(
2720
+ name=ModelProviderName.cerebras,
2721
+ model_id="qwen-3-32b",
2722
+ structured_output_mode=StructuredOutputMode.json_schema,
2723
+ formatter=ModelFormatterID.qwen3_style_no_think,
2724
+ supports_data_gen=True,
2725
+ parser=ModelParserID.optional_r1_thinking,
2726
+ ),
2727
+ ],
2728
+ ),
2729
+ # Qwen 3 235B (22B Active) 2507 Version
2730
+ KilnModel(
2731
+ family=ModelFamily.qwen,
2732
+ name=ModelName.qwen_3_235b_a22b_2507,
2733
+ friendly_name="Qwen 3 235B (22B Active) 2507",
2734
+ providers=[
2735
+ KilnModelProvider(
2736
+ name=ModelProviderName.openrouter,
2737
+ model_id="qwen/qwen3-235b-a22b-thinking-2507",
2738
+ reasoning_capable=True,
2739
+ require_openrouter_reasoning=True,
2740
+ supports_data_gen=True,
2741
+ suggested_for_data_gen=True,
2742
+ r1_openrouter_options=True,
2743
+ structured_output_mode=StructuredOutputMode.json_instructions,
2744
+ parser=ModelParserID.r1_thinking,
2745
+ ),
2746
+ KilnModelProvider(
2747
+ name=ModelProviderName.ollama,
2748
+ model_id="qwen3:235b-a22b-thinking-2507-q4_K_M",
2749
+ supports_data_gen=True,
2750
+ reasoning_capable=True,
2751
+ structured_output_mode=StructuredOutputMode.json_schema,
2752
+ ),
2753
+ KilnModelProvider(
2754
+ name=ModelProviderName.fireworks_ai,
2755
+ model_id="accounts/fireworks/models/qwen3-235b-a22b-thinking-2507",
2756
+ supports_data_gen=True,
2757
+ reasoning_capable=True,
2758
+ structured_output_mode=StructuredOutputMode.json_instructions,
2759
+ parser=ModelParserID.r1_thinking,
2760
+ ),
2761
+ KilnModelProvider(
2762
+ name=ModelProviderName.together_ai,
2763
+ model_id="Qwen/Qwen3-235B-A22B-Thinking-2507",
2764
+ supports_data_gen=True,
2765
+ reasoning_capable=True,
2766
+ structured_output_mode=StructuredOutputMode.json_instructions,
2767
+ parser=ModelParserID.r1_thinking,
2768
+ ),
2214
2769
  ],
2215
2770
  ),
2216
2771
  # Qwen 3 235B (22B Active)
@@ -2225,7 +2780,6 @@ built_in_models: List[KilnModel] = [
2225
2780
  reasoning_capable=True,
2226
2781
  require_openrouter_reasoning=True,
2227
2782
  supports_data_gen=True,
2228
- suggested_for_data_gen=True,
2229
2783
  r1_openrouter_options=True,
2230
2784
  structured_output_mode=StructuredOutputMode.json_instructions,
2231
2785
  parser=ModelParserID.r1_thinking,
@@ -2253,6 +2807,49 @@ built_in_models: List[KilnModel] = [
2253
2807
  structured_output_mode=StructuredOutputMode.json_instructions,
2254
2808
  parser=ModelParserID.r1_thinking,
2255
2809
  ),
2810
+ KilnModelProvider(
2811
+ name=ModelProviderName.siliconflow_cn,
2812
+ model_id="Qwen/Qwen3-235B-A22B",
2813
+ structured_output_mode=StructuredOutputMode.json_instructions,
2814
+ reasoning_capable=True,
2815
+ siliconflow_enable_thinking=True,
2816
+ supports_data_gen=True,
2817
+ suggested_for_data_gen=True,
2818
+ ),
2819
+ ],
2820
+ ),
2821
+ # Qwen 3 235B (22B Active) 2507 Version Non-Thinking
2822
+ KilnModel(
2823
+ family=ModelFamily.qwen,
2824
+ name=ModelName.qwen_3_235b_a22b_2507_no_thinking,
2825
+ friendly_name="Qwen 3 235B (22B Active) 2507 Non-Thinking",
2826
+ providers=[
2827
+ KilnModelProvider(
2828
+ name=ModelProviderName.openrouter,
2829
+ model_id="qwen/qwen3-235b-a22b-2507",
2830
+ structured_output_mode=StructuredOutputMode.json_instructions,
2831
+ supports_data_gen=True,
2832
+ reasoning_capable=False,
2833
+ ),
2834
+ KilnModelProvider(
2835
+ name=ModelProviderName.ollama,
2836
+ model_id="qwen3:235b-a22b-instruct-2507-q4_K_M",
2837
+ structured_output_mode=StructuredOutputMode.json_schema,
2838
+ supports_data_gen=True,
2839
+ reasoning_capable=False,
2840
+ ),
2841
+ KilnModelProvider(
2842
+ name=ModelProviderName.fireworks_ai,
2843
+ model_id="accounts/fireworks/models/qwen3-235b-a22b-instruct-2507",
2844
+ supports_data_gen=True,
2845
+ structured_output_mode=StructuredOutputMode.json_instructions,
2846
+ ),
2847
+ KilnModelProvider(
2848
+ name=ModelProviderName.together_ai,
2849
+ model_id="Qwen/Qwen3-235B-A22B-Instruct-2507-tput",
2850
+ supports_data_gen=True,
2851
+ structured_output_mode=StructuredOutputMode.json_instructions,
2852
+ ),
2256
2853
  ],
2257
2854
  ),
2258
2855
  # Qwen 3 235B (22B Active) Non-Thinking
@@ -2293,6 +2890,210 @@ built_in_models: List[KilnModel] = [
2293
2890
  structured_output_mode=StructuredOutputMode.json_instructions,
2294
2891
  parser=ModelParserID.optional_r1_thinking,
2295
2892
  ),
2893
+ KilnModelProvider(
2894
+ name=ModelProviderName.siliconflow_cn,
2895
+ model_id="Qwen/Qwen3-235B-A22B",
2896
+ structured_output_mode=StructuredOutputMode.json_instructions,
2897
+ siliconflow_enable_thinking=False,
2898
+ supports_data_gen=True,
2899
+ ),
2900
+ ],
2901
+ ),
2902
+ # Qwen Long L1 32B
2903
+ KilnModel(
2904
+ family=ModelFamily.qwen,
2905
+ name=ModelName.qwen_long_l1_32b,
2906
+ friendly_name="QwenLong L1 32B",
2907
+ providers=[
2908
+ KilnModelProvider(
2909
+ name=ModelProviderName.siliconflow_cn,
2910
+ model_id="Tongyi-Zhiwen/QwenLong-L1-32B",
2911
+ structured_output_mode=StructuredOutputMode.json_schema,
2912
+ reasoning_capable=True,
2913
+ reasoning_optional_for_structured_output=True,
2914
+ ),
2915
+ ],
2916
+ ),
2917
+ # Kimi K2 Instruct
2918
+ KilnModel(
2919
+ family=ModelFamily.kimi,
2920
+ name=ModelName.kimi_k2,
2921
+ friendly_name="Kimi K2",
2922
+ providers=[
2923
+ KilnModelProvider(
2924
+ name=ModelProviderName.fireworks_ai,
2925
+ model_id="accounts/fireworks/models/kimi-k2-instruct",
2926
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
2927
+ # Ignoring json mode for now, so not suggested for evals
2928
+ ),
2929
+ KilnModelProvider(
2930
+ name=ModelProviderName.openrouter,
2931
+ model_id="moonshotai/kimi-k2",
2932
+ structured_output_mode=StructuredOutputMode.json_schema,
2933
+ supports_data_gen=True,
2934
+ suggested_for_evals=True,
2935
+ ),
2936
+ KilnModelProvider(
2937
+ name=ModelProviderName.together_ai,
2938
+ model_id="moonshotai/Kimi-K2-Instruct",
2939
+ supports_data_gen=True,
2940
+ structured_output_mode=StructuredOutputMode.json_instruction_and_object,
2941
+ suggested_for_evals=True,
2942
+ ),
2943
+ KilnModelProvider(
2944
+ name=ModelProviderName.groq,
2945
+ model_id="moonshotai/kimi-k2-instruct",
2946
+ supports_data_gen=True,
2947
+ structured_output_mode=StructuredOutputMode.function_calling,
2948
+ suggested_for_evals=True,
2949
+ ),
2950
+ KilnModelProvider(
2951
+ name=ModelProviderName.siliconflow_cn,
2952
+ model_id="Pro/moonshotai/Kimi-K2-Instruct",
2953
+ structured_output_mode=StructuredOutputMode.json_schema,
2954
+ supports_data_gen=True,
2955
+ suggested_for_evals=True,
2956
+ ),
2957
+ ],
2958
+ ),
2959
+ KilnModel(
2960
+ family=ModelFamily.kimi,
2961
+ name=ModelName.kimi_dev_72b,
2962
+ friendly_name="Kimi Dev 72B",
2963
+ providers=[
2964
+ KilnModelProvider(
2965
+ name=ModelProviderName.siliconflow_cn,
2966
+ model_id="moonshotai/Kimi-Dev-72B",
2967
+ structured_output_mode=StructuredOutputMode.json_schema,
2968
+ reasoning_capable=True,
2969
+ reasoning_optional_for_structured_output=True,
2970
+ ),
2971
+ ],
2972
+ ),
2973
+ # GLM 4.1V 9B
2974
+ KilnModel(
2975
+ family=ModelFamily.glm,
2976
+ name=ModelName.glm_4_1v_9b_thinking,
2977
+ friendly_name="GLM-4.1V 9B Thinking",
2978
+ providers=[
2979
+ KilnModelProvider(
2980
+ name=ModelProviderName.siliconflow_cn,
2981
+ model_id="Pro/THUDM/GLM-4.1V-9B-Thinking",
2982
+ structured_output_mode=StructuredOutputMode.json_instructions,
2983
+ reasoning_capable=True,
2984
+ supports_data_gen=False,
2985
+ ),
2986
+ ],
2987
+ ),
2988
+ # GLM Z1 32B 0414
2989
+ KilnModel(
2990
+ family=ModelFamily.glm,
2991
+ name=ModelName.glm_z1_32b_0414,
2992
+ friendly_name="GLM-Z1 32B 0414",
2993
+ providers=[
2994
+ KilnModelProvider(
2995
+ name=ModelProviderName.siliconflow_cn,
2996
+ model_id="THUDM/GLM-Z1-32B-0414",
2997
+ structured_output_mode=StructuredOutputMode.json_schema,
2998
+ reasoning_capable=True,
2999
+ reasoning_optional_for_structured_output=True,
3000
+ supports_data_gen=False,
3001
+ ),
3002
+ ],
3003
+ ),
3004
+ # GLM Z1 9B 0414
3005
+ KilnModel(
3006
+ family=ModelFamily.glm,
3007
+ name=ModelName.glm_z1_9b_0414,
3008
+ friendly_name="GLM-Z1 9B 0414",
3009
+ providers=[
3010
+ KilnModelProvider(
3011
+ name=ModelProviderName.siliconflow_cn,
3012
+ model_id="THUDM/GLM-Z1-9B-0414",
3013
+ structured_output_mode=StructuredOutputMode.json_schema,
3014
+ reasoning_capable=True,
3015
+ reasoning_optional_for_structured_output=True,
3016
+ supports_data_gen=False,
3017
+ ),
3018
+ ],
3019
+ ),
3020
+ # Ernie 4.5 300B A47B
3021
+ KilnModel(
3022
+ family=ModelFamily.ernie,
3023
+ name=ModelName.ernie_4_5_300b_a47b,
3024
+ friendly_name="Ernie 4.5 300B A47B",
3025
+ providers=[
3026
+ KilnModelProvider(
3027
+ name=ModelProviderName.openrouter,
3028
+ model_id="baidu/ernie-4.5-300b-a47b",
3029
+ structured_output_mode=StructuredOutputMode.json_instructions,
3030
+ supports_data_gen=True,
3031
+ r1_openrouter_options=True,
3032
+ ),
3033
+ KilnModelProvider(
3034
+ name=ModelProviderName.siliconflow_cn,
3035
+ model_id="baidu/ERNIE-4.5-300B-A47B",
3036
+ structured_output_mode=StructuredOutputMode.json_schema,
3037
+ supports_data_gen=True,
3038
+ ),
3039
+ ],
3040
+ ),
3041
+ # Hunyuan A13B Instruct
3042
+ KilnModel(
3043
+ family=ModelFamily.hunyuan,
3044
+ name=ModelName.hunyuan_a13b,
3045
+ friendly_name="Hunyuan A13B",
3046
+ providers=[
3047
+ # Openrouter provider for this model exists but currently wrongly parses the answer
3048
+ # it returns the reasoning at the right place, but wraps the answer (even JSON response)
3049
+ # between <answer> and </answer> tags
3050
+ KilnModelProvider(
3051
+ name=ModelProviderName.siliconflow_cn,
3052
+ model_id="tencent/Hunyuan-A13B-Instruct",
3053
+ structured_output_mode=StructuredOutputMode.json_schema,
3054
+ reasoning_capable=True,
3055
+ siliconflow_enable_thinking=True,
3056
+ reasoning_optional_for_structured_output=True,
3057
+ supports_data_gen=False,
3058
+ ),
3059
+ ],
3060
+ ),
3061
+ # Minimax M1 80K
3062
+ KilnModel(
3063
+ family=ModelFamily.minimax,
3064
+ name=ModelName.minimax_m1_80k,
3065
+ friendly_name="Minimax M1",
3066
+ providers=[
3067
+ KilnModelProvider(
3068
+ name=ModelProviderName.openrouter,
3069
+ model_id="minimax/minimax-m1",
3070
+ structured_output_mode=StructuredOutputMode.json_instructions,
3071
+ supports_data_gen=True,
3072
+ r1_openrouter_options=True,
3073
+ require_openrouter_reasoning=True,
3074
+ ),
3075
+ KilnModelProvider(
3076
+ name=ModelProviderName.siliconflow_cn,
3077
+ model_id="MiniMaxAI/MiniMax-M1-80k",
3078
+ structured_output_mode=StructuredOutputMode.json_instructions,
3079
+ reasoning_capable=True,
3080
+ supports_data_gen=True,
3081
+ ),
3082
+ ],
3083
+ ),
3084
+ # Pangu Pro MOE
3085
+ KilnModel(
3086
+ family=ModelFamily.pangu,
3087
+ name=ModelName.pangu_pro_moe_72b_a16b,
3088
+ friendly_name="Pangu Pro MOE 72B A16B",
3089
+ providers=[
3090
+ KilnModelProvider(
3091
+ name=ModelProviderName.siliconflow_cn,
3092
+ model_id="ascend-tribe/pangu-pro-moe",
3093
+ structured_output_mode=StructuredOutputMode.json_instructions,
3094
+ reasoning_capable=True,
3095
+ supports_data_gen=True,
3096
+ ),
2296
3097
  ],
2297
3098
  ),
2298
3099
  ]