kiln-ai 0.18.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 (42) hide show
  1. kiln_ai/adapters/adapter_registry.py +28 -0
  2. kiln_ai/adapters/data_gen/data_gen_task.py +2 -2
  3. kiln_ai/adapters/data_gen/test_data_gen_task.py +7 -3
  4. kiln_ai/adapters/eval/test_eval_runner.py +6 -12
  5. kiln_ai/adapters/eval/test_g_eval_data.py +1 -1
  6. kiln_ai/adapters/fine_tune/base_finetune.py +1 -0
  7. kiln_ai/adapters/fine_tune/fireworks_finetune.py +32 -20
  8. kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +30 -21
  9. kiln_ai/adapters/ml_model_list.py +635 -83
  10. kiln_ai/adapters/model_adapters/base_adapter.py +11 -7
  11. kiln_ai/adapters/model_adapters/litellm_adapter.py +14 -1
  12. kiln_ai/adapters/model_adapters/test_base_adapter.py +1 -1
  13. kiln_ai/adapters/model_adapters/test_litellm_adapter.py +22 -3
  14. kiln_ai/adapters/model_adapters/test_structured_output.py +10 -10
  15. kiln_ai/adapters/parsers/test_r1_parser.py +1 -1
  16. kiln_ai/adapters/provider_tools.py +20 -19
  17. kiln_ai/adapters/remote_config.py +57 -10
  18. kiln_ai/adapters/repair/repair_task.py +1 -1
  19. kiln_ai/adapters/test_adapter_registry.py +30 -2
  20. kiln_ai/adapters/test_ml_model_list.py +12 -0
  21. kiln_ai/adapters/test_provider_tools.py +18 -12
  22. kiln_ai/adapters/test_remote_config.py +372 -16
  23. kiln_ai/datamodel/basemodel.py +54 -28
  24. kiln_ai/datamodel/datamodel_enums.py +2 -0
  25. kiln_ai/datamodel/dataset_split.py +5 -3
  26. kiln_ai/datamodel/eval.py +3 -3
  27. kiln_ai/datamodel/finetune.py +2 -2
  28. kiln_ai/datamodel/project.py +3 -3
  29. kiln_ai/datamodel/prompt.py +2 -2
  30. kiln_ai/datamodel/prompt_id.py +4 -4
  31. kiln_ai/datamodel/task.py +6 -6
  32. kiln_ai/datamodel/task_output.py +1 -1
  33. kiln_ai/datamodel/test_basemodel.py +210 -18
  34. kiln_ai/datamodel/test_eval_model.py +6 -6
  35. kiln_ai/datamodel/test_model_perf.py +1 -1
  36. kiln_ai/datamodel/test_prompt_id.py +5 -1
  37. kiln_ai/datamodel/test_task.py +5 -0
  38. kiln_ai/utils/config.py +10 -0
  39. {kiln_ai-0.18.0.dist-info → kiln_ai-0.19.0.dist-info}/METADATA +32 -2
  40. {kiln_ai-0.18.0.dist-info → kiln_ai-0.19.0.dist-info}/RECORD +42 -42
  41. {kiln_ai-0.18.0.dist-info → kiln_ai-0.19.0.dist-info}/WHEEL +0 -0
  42. {kiln_ai-0.18.0.dist-info → kiln_ai-0.19.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -34,6 +34,11 @@ class ModelFamily(str, Enum):
34
34
  dolphin = "dolphin"
35
35
  grok = "grok"
36
36
  kimi = "kimi"
37
+ hunyuan = "hunyuan"
38
+ glm = "glm"
39
+ ernie = "ernie"
40
+ minimax = "minimax"
41
+ pangu = "pangu"
37
42
 
38
43
 
39
44
  # Where models have instruct and raw versions, instruct is default and raw is specified
@@ -53,6 +58,10 @@ class ModelName(str, Enum):
53
58
  llama_3_3_70b = "llama_3_3_70b"
54
59
  llama_4_maverick = "llama_4_maverick"
55
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"
56
65
  gpt_4o_mini = "gpt_4o_mini"
57
66
  gpt_4o = "gpt_4o"
58
67
  gpt_4_1 = "gpt_4_1"
@@ -61,6 +70,8 @@ class ModelName(str, Enum):
61
70
  gpt_o3_low = "gpt_o3_low"
62
71
  gpt_o3_medium = "gpt_o3_medium"
63
72
  gpt_o3_high = "gpt_o3_high"
73
+ gpt_oss_20b = "gpt_oss_20b"
74
+ gpt_oss_120b = "gpt_oss_120b"
64
75
  gpt_o1_low = "gpt_o1_low"
65
76
  gpt_o1_medium = "gpt_o1_medium"
66
77
  gpt_o1_high = "gpt_o1_high"
@@ -111,6 +122,7 @@ class ModelName(str, Enum):
111
122
  deepseek_3 = "deepseek_3"
112
123
  deepseek_r1 = "deepseek_r1"
113
124
  deepseek_r1_0528 = "deepseek_r1_0528"
125
+ deepseek_r1_0528_distill_qwen3_8b = "deepseek_r1_0528_distill_qwen3_8b"
114
126
  deepseek_r1_distill_qwen_32b = "deepseek_r1_distill_qwen_32b"
115
127
  deepseek_r1_distill_llama_70b = "deepseek_r1_distill_llama_70b"
116
128
  deepseek_r1_distill_qwen_14b = "deepseek_r1_distill_qwen_14b"
@@ -132,13 +144,27 @@ class ModelName(str, Enum):
132
144
  qwen_3_8b_no_thinking = "qwen_3_8b_no_thinking"
133
145
  qwen_3_14b = "qwen_3_14b"
134
146
  qwen_3_14b_no_thinking = "qwen_3_14b_no_thinking"
147
+ qwen_3_30b_a3b_2507 = "qwen_3_30b_a3b_2507"
135
148
  qwen_3_30b_a3b = "qwen_3_30b_a3b"
149
+ qwen_3_30b_a3b_2507_no_thinking = "qwen_3_30b_a3b_2507_no_thinking"
136
150
  qwen_3_30b_a3b_no_thinking = "qwen_3_30b_a3b_no_thinking"
137
151
  qwen_3_32b = "qwen_3_32b"
138
152
  qwen_3_32b_no_thinking = "qwen_3_32b_no_thinking"
153
+ qwen_3_235b_a22b_2507 = "qwen_3_235b_a22b_2507"
139
154
  qwen_3_235b_a22b = "qwen_3_235b_a22b"
155
+ qwen_3_235b_a22b_2507_no_thinking = "qwen_3_235b_a22b_2507_no_thinking"
140
156
  qwen_3_235b_a22b_no_thinking = "qwen_3_235b_a22b_no_thinking"
157
+ qwen_long_l1_32b = "qwen_long_l1_32b"
141
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"
142
168
 
143
169
 
144
170
  class ModelParserID(str, Enum):
@@ -191,7 +217,7 @@ class KilnModelProvider(BaseModel):
191
217
  suggested_for_uncensored_data_gen: bool = False
192
218
  tuned_chat_strategy: ChatStrategy | None = None
193
219
 
194
- # TODO P1: Need a more generalized way to handle custom provider parameters.
220
+ # We need a more generalized way to handle custom provider parameters.
195
221
  # Making them quite declarative here for now, isolating provider specific logic
196
222
  # to this file. Later I should be able to override anything in this file via config.
197
223
  r1_openrouter_options: bool = False
@@ -201,6 +227,16 @@ class KilnModelProvider(BaseModel):
201
227
  thinking_level: Literal["low", "medium", "high"] | None = None
202
228
  ollama_model_aliases: List[str] | None = None
203
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
204
240
 
205
241
 
206
242
  class KilnModel(BaseModel):
@@ -222,6 +258,63 @@ class KilnModel(BaseModel):
222
258
 
223
259
 
224
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
+ ),
225
318
  # GPT 4.1
226
319
  KilnModel(
227
320
  family=ModelFamily.gpt,
@@ -234,7 +327,6 @@ built_in_models: List[KilnModel] = [
234
327
  provider_finetune_id="gpt-4.1-2025-04-14",
235
328
  structured_output_mode=StructuredOutputMode.json_schema,
236
329
  supports_logprobs=True,
237
- suggested_for_data_gen=True,
238
330
  suggested_for_evals=True,
239
331
  ),
240
332
  KilnModelProvider(
@@ -242,13 +334,11 @@ built_in_models: List[KilnModel] = [
242
334
  model_id="openai/gpt-4.1",
243
335
  structured_output_mode=StructuredOutputMode.json_schema,
244
336
  supports_logprobs=True,
245
- suggested_for_data_gen=True,
246
337
  suggested_for_evals=True,
247
338
  ),
248
339
  KilnModelProvider(
249
340
  name=ModelProviderName.azure_openai,
250
341
  model_id="gpt-4.1",
251
- suggested_for_data_gen=True,
252
342
  suggested_for_evals=True,
253
343
  ),
254
344
  ],
@@ -289,6 +379,7 @@ built_in_models: List[KilnModel] = [
289
379
  model_id="gpt-4.1-nano",
290
380
  structured_output_mode=StructuredOutputMode.json_schema,
291
381
  supports_logprobs=True,
382
+ provider_finetune_id="gpt-4.1-nano-2025-04-14",
292
383
  ),
293
384
  KilnModelProvider(
294
385
  name=ModelProviderName.openrouter,
@@ -550,6 +641,70 @@ built_in_models: List[KilnModel] = [
550
641
  ),
551
642
  ],
552
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
+ ),
553
708
  # GPT o1 Low
554
709
  KilnModel(
555
710
  family=ModelFamily.gpt,
@@ -750,6 +905,8 @@ built_in_models: List[KilnModel] = [
750
905
  suggested_for_data_gen=True,
751
906
  suggested_for_evals=True,
752
907
  reasoning_capable=True,
908
+ gemini_reasoning_enabled=True,
909
+ thinking_level="medium",
753
910
  ),
754
911
  KilnModelProvider(
755
912
  name=ModelProviderName.gemini_api,
@@ -757,9 +914,9 @@ built_in_models: List[KilnModel] = [
757
914
  structured_output_mode=StructuredOutputMode.json_schema,
758
915
  suggested_for_data_gen=True,
759
916
  suggested_for_evals=True,
760
- # TODO: Gemini API doesn't return reasoning here, so we don't ask for it. Strange.
761
- # reasoning_capable=True,
762
- # thinking_level="medium",
917
+ reasoning_capable=True,
918
+ gemini_reasoning_enabled=True,
919
+ thinking_level="medium",
763
920
  ),
764
921
  KilnModelProvider(
765
922
  name=ModelProviderName.vertex,
@@ -767,9 +924,9 @@ built_in_models: List[KilnModel] = [
767
924
  structured_output_mode=StructuredOutputMode.json_schema,
768
925
  suggested_for_data_gen=True,
769
926
  suggested_for_evals=True,
770
- # TODO: Vertex doesn't return reasoning here, so we don't ask for it. Strange.
771
- # reasoning_capable=True,
772
- # thinking_level="medium",
927
+ reasoning_capable=True,
928
+ gemini_reasoning_enabled=True,
929
+ thinking_level="medium",
773
930
  ),
774
931
  ],
775
932
  ),
@@ -784,6 +941,7 @@ built_in_models: List[KilnModel] = [
784
941
  model_id="google/gemini-2.5-flash",
785
942
  structured_output_mode=StructuredOutputMode.json_schema,
786
943
  reasoning_capable=True,
944
+ gemini_reasoning_enabled=True,
787
945
  ),
788
946
  KilnModelProvider(
789
947
  name=ModelProviderName.gemini_api,
@@ -810,17 +968,17 @@ built_in_models: List[KilnModel] = [
810
968
  KilnModelProvider(
811
969
  name=ModelProviderName.openrouter,
812
970
  model_id="google/gemini-2.0-flash-001",
813
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
971
+ structured_output_mode=StructuredOutputMode.json_schema,
814
972
  ),
815
973
  KilnModelProvider(
816
974
  name=ModelProviderName.gemini_api,
817
975
  model_id="gemini-2.0-flash",
818
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
976
+ structured_output_mode=StructuredOutputMode.json_schema,
819
977
  ),
820
978
  KilnModelProvider(
821
979
  name=ModelProviderName.vertex,
822
980
  model_id="gemini-2.0-flash",
823
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
981
+ structured_output_mode=StructuredOutputMode.json_schema,
824
982
  provider_finetune_id="gemini-2.0-flash-001",
825
983
  ),
826
984
  ],
@@ -834,17 +992,17 @@ built_in_models: List[KilnModel] = [
834
992
  KilnModelProvider(
835
993
  name=ModelProviderName.openrouter,
836
994
  model_id="google/gemini-2.0-flash-lite-001",
837
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
995
+ structured_output_mode=StructuredOutputMode.json_schema,
838
996
  ),
839
997
  KilnModelProvider(
840
998
  name=ModelProviderName.gemini_api,
841
999
  model_id="gemini-2.0-flash-lite",
842
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1000
+ structured_output_mode=StructuredOutputMode.json_schema,
843
1001
  ),
844
1002
  KilnModelProvider(
845
1003
  name=ModelProviderName.vertex,
846
1004
  model_id="gemini-2.0-flash-lite",
847
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1005
+ structured_output_mode=StructuredOutputMode.json_schema,
848
1006
  provider_finetune_id="gemini-2.0-flash-lite-001",
849
1007
  ),
850
1008
  ],
@@ -858,12 +1016,12 @@ built_in_models: List[KilnModel] = [
858
1016
  KilnModelProvider(
859
1017
  name=ModelProviderName.openrouter,
860
1018
  model_id="google/gemini-pro-1.5",
861
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1019
+ structured_output_mode=StructuredOutputMode.json_schema,
862
1020
  ),
863
1021
  KilnModelProvider(
864
1022
  name=ModelProviderName.gemini_api,
865
1023
  model_id="gemini-1.5-pro",
866
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1024
+ structured_output_mode=StructuredOutputMode.json_schema,
867
1025
  ),
868
1026
  KilnModelProvider(
869
1027
  name=ModelProviderName.vertex,
@@ -881,12 +1039,12 @@ built_in_models: List[KilnModel] = [
881
1039
  KilnModelProvider(
882
1040
  name=ModelProviderName.openrouter,
883
1041
  model_id="google/gemini-flash-1.5",
884
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1042
+ structured_output_mode=StructuredOutputMode.json_schema,
885
1043
  ),
886
1044
  KilnModelProvider(
887
1045
  name=ModelProviderName.gemini_api,
888
1046
  model_id="gemini-1.5-flash",
889
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1047
+ structured_output_mode=StructuredOutputMode.json_schema,
890
1048
  ),
891
1049
  KilnModelProvider(
892
1050
  name=ModelProviderName.vertex,
@@ -904,13 +1062,13 @@ built_in_models: List[KilnModel] = [
904
1062
  KilnModelProvider(
905
1063
  name=ModelProviderName.openrouter,
906
1064
  model_id="google/gemini-flash-1.5-8b",
907
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1065
+ structured_output_mode=StructuredOutputMode.json_schema,
908
1066
  supports_data_gen=False,
909
1067
  ),
910
1068
  KilnModelProvider(
911
1069
  name=ModelProviderName.gemini_api,
912
1070
  model_id="gemini-1.5-flash-8b",
913
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1071
+ structured_output_mode=StructuredOutputMode.json_schema,
914
1072
  supports_data_gen=False,
915
1073
  ),
916
1074
  ],
@@ -950,6 +1108,11 @@ built_in_models: List[KilnModel] = [
950
1108
  model_id="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
951
1109
  structured_output_mode=StructuredOutputMode.json_schema,
952
1110
  ),
1111
+ KilnModelProvider(
1112
+ name=ModelProviderName.cerebras,
1113
+ model_id="llama-4-maverick-17b-128e-instruct",
1114
+ structured_output_mode=StructuredOutputMode.json_schema,
1115
+ ),
953
1116
  ],
954
1117
  ),
955
1118
  # Llama 4 Scout Basic
@@ -973,6 +1136,11 @@ built_in_models: List[KilnModel] = [
973
1136
  model_id="meta-llama/Llama-4-Scout-17B-16E-Instruct",
974
1137
  structured_output_mode=StructuredOutputMode.json_schema,
975
1138
  ),
1139
+ KilnModelProvider(
1140
+ name=ModelProviderName.cerebras,
1141
+ model_id="llama-4-scout-17b-16e-instruct",
1142
+ structured_output_mode=StructuredOutputMode.json_schema,
1143
+ ),
976
1144
  ],
977
1145
  ),
978
1146
  # Llama 3.1-8b
@@ -1017,6 +1185,13 @@ built_in_models: List[KilnModel] = [
1017
1185
  structured_output_mode=StructuredOutputMode.function_calling_weak,
1018
1186
  provider_finetune_id="meta-llama/Meta-Llama-3.1-8B-Instruct-Reference",
1019
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
+ ),
1020
1195
  ],
1021
1196
  ),
1022
1197
  # Llama 3.1 70b
@@ -1170,12 +1345,6 @@ built_in_models: List[KilnModel] = [
1170
1345
  name=ModelName.llama_3_2_1b,
1171
1346
  friendly_name="Llama 3.2 1B",
1172
1347
  providers=[
1173
- KilnModelProvider(
1174
- name=ModelProviderName.groq,
1175
- model_id="llama-3.2-1b-preview",
1176
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1177
- supports_data_gen=False,
1178
- ),
1179
1348
  KilnModelProvider(
1180
1349
  name=ModelProviderName.openrouter,
1181
1350
  supports_structured_output=False,
@@ -1197,11 +1366,6 @@ built_in_models: List[KilnModel] = [
1197
1366
  name=ModelName.llama_3_2_3b,
1198
1367
  friendly_name="Llama 3.2 3B",
1199
1368
  providers=[
1200
- KilnModelProvider(
1201
- name=ModelProviderName.groq,
1202
- model_id="llama-3.2-3b-preview",
1203
- supports_data_gen=False,
1204
- ),
1205
1369
  KilnModelProvider(
1206
1370
  name=ModelProviderName.openrouter,
1207
1371
  supports_structured_output=False,
@@ -1241,19 +1405,6 @@ built_in_models: List[KilnModel] = [
1241
1405
  structured_output_mode=StructuredOutputMode.json_schema,
1242
1406
  model_id="llama3.2-vision",
1243
1407
  ),
1244
- KilnModelProvider(
1245
- name=ModelProviderName.fireworks_ai,
1246
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1247
- model_id="accounts/fireworks/models/llama-v3p2-11b-vision-instruct",
1248
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1249
- supports_data_gen=False,
1250
- ),
1251
- KilnModelProvider(
1252
- name=ModelProviderName.huggingface,
1253
- model_id="meta-llama/Llama-3.2-11B-Vision-Instruct",
1254
- supports_structured_output=False,
1255
- supports_data_gen=False,
1256
- ),
1257
1408
  KilnModelProvider(
1258
1409
  name=ModelProviderName.together_ai,
1259
1410
  model_id="meta-llama/Llama-3.2-11B-Vision-Instruct-Turbo",
@@ -1278,13 +1429,6 @@ built_in_models: List[KilnModel] = [
1278
1429
  structured_output_mode=StructuredOutputMode.json_schema,
1279
1430
  model_id="llama3.2-vision:90b",
1280
1431
  ),
1281
- KilnModelProvider(
1282
- name=ModelProviderName.fireworks_ai,
1283
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1284
- model_id="accounts/fireworks/models/llama-v3p2-90b-vision-instruct",
1285
- structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1286
- supports_data_gen=False,
1287
- ),
1288
1432
  KilnModelProvider(
1289
1433
  name=ModelProviderName.together_ai,
1290
1434
  model_id="meta-llama/Llama-3.2-90B-Vision-Instruct-Turbo",
@@ -1327,7 +1471,7 @@ built_in_models: List[KilnModel] = [
1327
1471
  KilnModelProvider(
1328
1472
  name=ModelProviderName.vertex,
1329
1473
  model_id="meta/llama-3.3-70b-instruct-maas",
1330
- # Doesn't work, TODO to debug
1474
+ # Doesn't work yet; needs debugging
1331
1475
  supports_structured_output=False,
1332
1476
  supports_data_gen=False,
1333
1477
  ),
@@ -1358,13 +1502,6 @@ built_in_models: List[KilnModel] = [
1358
1502
  model_id="microsoft/phi-3.5-mini-128k-instruct",
1359
1503
  structured_output_mode=StructuredOutputMode.json_schema,
1360
1504
  ),
1361
- KilnModelProvider(
1362
- name=ModelProviderName.fireworks_ai,
1363
- # No finetune support. https://docs.fireworks.ai/fine-tuning/fine-tuning-models
1364
- supports_structured_output=False,
1365
- supports_data_gen=False,
1366
- model_id="accounts/fireworks/models/phi-3-vision-128k-instruct",
1367
- ),
1368
1505
  ],
1369
1506
  ),
1370
1507
  # Phi 4
@@ -1479,13 +1616,6 @@ built_in_models: List[KilnModel] = [
1479
1616
  supports_structured_output=False,
1480
1617
  supports_data_gen=False,
1481
1618
  ),
1482
- KilnModelProvider(
1483
- name=ModelProviderName.openrouter,
1484
- # TODO: swap to non-free model when available (more reliable)
1485
- model_id="google/gemma-3-1b-it:free",
1486
- supports_structured_output=False,
1487
- supports_data_gen=False,
1488
- ),
1489
1619
  ],
1490
1620
  ),
1491
1621
  # Gemma 3 4B
@@ -1502,8 +1632,7 @@ built_in_models: List[KilnModel] = [
1502
1632
  KilnModelProvider(
1503
1633
  name=ModelProviderName.openrouter,
1504
1634
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1505
- # TODO: swap to non-free model when available (more reliable)
1506
- model_id="google/gemma-3-4b-it:free",
1635
+ model_id="google/gemma-3-4b-it",
1507
1636
  ),
1508
1637
  ],
1509
1638
  ),
@@ -1520,8 +1649,7 @@ built_in_models: List[KilnModel] = [
1520
1649
  KilnModelProvider(
1521
1650
  name=ModelProviderName.openrouter,
1522
1651
  structured_output_mode=StructuredOutputMode.json_instruction_and_object,
1523
- # TODO: swap to non-free model when available (more reliable)
1524
- model_id="google/gemma-3-12b-it:free",
1652
+ model_id="google/gemma-3-12b-it",
1525
1653
  ),
1526
1654
  ],
1527
1655
  ),
@@ -1636,17 +1764,16 @@ built_in_models: List[KilnModel] = [
1636
1764
  structured_output_mode=StructuredOutputMode.json_instructions,
1637
1765
  ),
1638
1766
  KilnModelProvider(
1639
- name=ModelProviderName.groq,
1640
- model_id="qwen-qwq-32b",
1641
- reasoning_capable=True,
1642
- parser=ModelParserID.r1_thinking,
1767
+ name=ModelProviderName.together_ai,
1768
+ model_id="Qwen/QwQ-32B",
1643
1769
  structured_output_mode=StructuredOutputMode.json_instructions,
1770
+ parser=ModelParserID.r1_thinking,
1771
+ reasoning_capable=True,
1644
1772
  ),
1645
1773
  KilnModelProvider(
1646
- name=ModelProviderName.together_ai,
1774
+ name=ModelProviderName.siliconflow_cn,
1647
1775
  model_id="Qwen/QwQ-32B",
1648
1776
  structured_output_mode=StructuredOutputMode.json_instructions,
1649
- parser=ModelParserID.r1_thinking,
1650
1777
  reasoning_capable=True,
1651
1778
  ),
1652
1779
  ],
@@ -1766,6 +1893,38 @@ built_in_models: List[KilnModel] = [
1766
1893
  reasoning_capable=True,
1767
1894
  supports_data_gen=True,
1768
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,
1927
+ ),
1769
1928
  ],
1770
1929
  ),
1771
1930
  # DeepSeek 3
@@ -1791,6 +1950,11 @@ built_in_models: List[KilnModel] = [
1791
1950
  model_id="deepseek-ai/DeepSeek-V3",
1792
1951
  structured_output_mode=StructuredOutputMode.json_instructions,
1793
1952
  ),
1953
+ KilnModelProvider(
1954
+ name=ModelProviderName.siliconflow_cn,
1955
+ model_id="Pro/deepseek-ai/DeepSeek-V3",
1956
+ structured_output_mode=StructuredOutputMode.json_schema,
1957
+ ),
1794
1958
  ],
1795
1959
  ),
1796
1960
  # DeepSeek R1
@@ -1848,11 +2012,11 @@ built_in_models: List[KilnModel] = [
1848
2012
  model_id="deepseek-r1:32b",
1849
2013
  ),
1850
2014
  KilnModelProvider(
1851
- name=ModelProviderName.together_ai,
1852
- model_id="deepseek-ai/DeepSeek-R1-Distill-Qwen-14B",
1853
- structured_output_mode=StructuredOutputMode.json_instructions,
1854
- 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,
1855
2018
  reasoning_capable=True,
2019
+ reasoning_optional_for_structured_output=True,
1856
2020
  ),
1857
2021
  ],
1858
2022
  ),
@@ -1918,6 +2082,14 @@ built_in_models: List[KilnModel] = [
1918
2082
  structured_output_mode=StructuredOutputMode.json_instructions,
1919
2083
  parser=ModelParserID.r1_thinking,
1920
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
+ ),
1921
2093
  ],
1922
2094
  ),
1923
2095
  # DeepSeek R1 Distill Llama 8B
@@ -1957,6 +2129,17 @@ built_in_models: List[KilnModel] = [
1957
2129
  name=ModelName.deepseek_r1_distill_qwen_7b,
1958
2130
  friendly_name="DeepSeek R1 Distill Qwen 7B",
1959
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
+ ),
1960
2143
  KilnModelProvider(
1961
2144
  name=ModelProviderName.ollama,
1962
2145
  # Best mode, but fails to often to enable without warning
@@ -1967,6 +2150,16 @@ built_in_models: List[KilnModel] = [
1967
2150
  structured_output_mode=StructuredOutputMode.json_instructions,
1968
2151
  model_id="deepseek-r1:7b",
1969
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
+ ),
1970
2163
  ],
1971
2164
  ),
1972
2165
  # DeepSeek R1 Distill Qwen 1.5B
@@ -2242,6 +2435,15 @@ built_in_models: List[KilnModel] = [
2242
2435
  reasoning_capable=True,
2243
2436
  structured_output_mode=StructuredOutputMode.json_schema,
2244
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
+ ),
2245
2447
  ],
2246
2448
  ),
2247
2449
  # Qwen 3 8B Non-Thinking
@@ -2265,6 +2467,13 @@ built_in_models: List[KilnModel] = [
2265
2467
  formatter=ModelFormatterID.qwen3_style_no_think,
2266
2468
  supports_data_gen=False,
2267
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
+ ),
2268
2477
  ],
2269
2478
  ),
2270
2479
  # Qwen 3 14B
@@ -2290,6 +2499,15 @@ built_in_models: List[KilnModel] = [
2290
2499
  reasoning_capable=True,
2291
2500
  structured_output_mode=StructuredOutputMode.json_schema,
2292
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
+ ),
2293
2511
  ],
2294
2512
  ),
2295
2513
  # Qwen 3 14B Non-Thinking
@@ -2313,6 +2531,28 @@ built_in_models: List[KilnModel] = [
2313
2531
  supports_data_gen=True,
2314
2532
  structured_output_mode=StructuredOutputMode.json_schema,
2315
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
+ ),
2316
2556
  ],
2317
2557
  ),
2318
2558
  # Qwen 3 30B (3B Active)
@@ -2346,6 +2586,33 @@ built_in_models: List[KilnModel] = [
2346
2586
  structured_output_mode=StructuredOutputMode.json_instructions,
2347
2587
  parser=ModelParserID.r1_thinking,
2348
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
+ ),
2349
2616
  ],
2350
2617
  ),
2351
2618
  # Qwen 3 30B (3B Active) Non-Thinking
@@ -2385,6 +2652,14 @@ built_in_models: List[KilnModel] = [
2385
2652
  name=ModelName.qwen_3_32b,
2386
2653
  friendly_name="Qwen 3 32B",
2387
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
+ ),
2388
2663
  KilnModelProvider(
2389
2664
  name=ModelProviderName.openrouter,
2390
2665
  model_id="qwen/qwen3-32b",
@@ -2402,6 +2677,22 @@ built_in_models: List[KilnModel] = [
2402
2677
  reasoning_capable=True,
2403
2678
  structured_output_mode=StructuredOutputMode.json_schema,
2404
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
+ ),
2405
2696
  ],
2406
2697
  ),
2407
2698
  # Qwen 3 32B No Thinking
@@ -2425,6 +2716,56 @@ built_in_models: List[KilnModel] = [
2425
2716
  formatter=ModelFormatterID.qwen3_style_no_think,
2426
2717
  supports_data_gen=True,
2427
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
+ ),
2428
2769
  ],
2429
2770
  ),
2430
2771
  # Qwen 3 235B (22B Active)
@@ -2439,7 +2780,6 @@ built_in_models: List[KilnModel] = [
2439
2780
  reasoning_capable=True,
2440
2781
  require_openrouter_reasoning=True,
2441
2782
  supports_data_gen=True,
2442
- suggested_for_data_gen=True,
2443
2783
  r1_openrouter_options=True,
2444
2784
  structured_output_mode=StructuredOutputMode.json_instructions,
2445
2785
  parser=ModelParserID.r1_thinking,
@@ -2467,6 +2807,49 @@ built_in_models: List[KilnModel] = [
2467
2807
  structured_output_mode=StructuredOutputMode.json_instructions,
2468
2808
  parser=ModelParserID.r1_thinking,
2469
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
+ ),
2470
2853
  ],
2471
2854
  ),
2472
2855
  # Qwen 3 235B (22B Active) Non-Thinking
@@ -2507,6 +2890,28 @@ built_in_models: List[KilnModel] = [
2507
2890
  structured_output_mode=StructuredOutputMode.json_instructions,
2508
2891
  parser=ModelParserID.optional_r1_thinking,
2509
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
+ ),
2510
2915
  ],
2511
2916
  ),
2512
2917
  # Kimi K2 Instruct
@@ -2542,6 +2947,153 @@ built_in_models: List[KilnModel] = [
2542
2947
  structured_output_mode=StructuredOutputMode.function_calling,
2543
2948
  suggested_for_evals=True,
2544
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
+ ),
2545
3097
  ],
2546
3098
  ),
2547
3099
  ]