kiln-ai 0.21.0__py3-none-any.whl → 0.22.1__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.
- kiln_ai/adapters/extractors/litellm_extractor.py +52 -32
- kiln_ai/adapters/extractors/test_litellm_extractor.py +169 -71
- kiln_ai/adapters/ml_embedding_model_list.py +330 -28
- kiln_ai/adapters/ml_model_list.py +503 -23
- kiln_ai/adapters/model_adapters/litellm_adapter.py +39 -8
- kiln_ai/adapters/model_adapters/test_litellm_adapter.py +78 -0
- kiln_ai/adapters/model_adapters/test_litellm_adapter_tools.py +119 -5
- kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +9 -3
- kiln_ai/adapters/model_adapters/test_structured_output.py +6 -9
- kiln_ai/adapters/test_ml_embedding_model_list.py +89 -279
- kiln_ai/adapters/test_ml_model_list.py +0 -10
- kiln_ai/adapters/vector_store/lancedb_adapter.py +24 -70
- kiln_ai/adapters/vector_store/lancedb_helpers.py +101 -0
- kiln_ai/adapters/vector_store/test_lancedb_adapter.py +9 -16
- kiln_ai/adapters/vector_store/test_lancedb_helpers.py +142 -0
- kiln_ai/adapters/vector_store_loaders/__init__.py +0 -0
- kiln_ai/adapters/vector_store_loaders/test_lancedb_loader.py +282 -0
- kiln_ai/adapters/vector_store_loaders/test_vector_store_loader.py +544 -0
- kiln_ai/adapters/vector_store_loaders/vector_store_loader.py +91 -0
- kiln_ai/datamodel/basemodel.py +31 -3
- kiln_ai/datamodel/external_tool_server.py +206 -54
- kiln_ai/datamodel/extraction.py +14 -0
- kiln_ai/datamodel/task.py +5 -0
- kiln_ai/datamodel/task_output.py +41 -11
- kiln_ai/datamodel/test_attachment.py +3 -3
- kiln_ai/datamodel/test_basemodel.py +269 -13
- kiln_ai/datamodel/test_datasource.py +50 -0
- kiln_ai/datamodel/test_external_tool_server.py +534 -152
- kiln_ai/datamodel/test_extraction_model.py +31 -0
- kiln_ai/datamodel/test_task.py +35 -1
- kiln_ai/datamodel/test_tool_id.py +106 -1
- kiln_ai/datamodel/tool_id.py +49 -0
- kiln_ai/tools/base_tool.py +30 -6
- kiln_ai/tools/built_in_tools/math_tools.py +12 -4
- kiln_ai/tools/kiln_task_tool.py +162 -0
- kiln_ai/tools/mcp_server_tool.py +7 -5
- kiln_ai/tools/mcp_session_manager.py +50 -24
- kiln_ai/tools/rag_tools.py +17 -6
- kiln_ai/tools/test_kiln_task_tool.py +527 -0
- kiln_ai/tools/test_mcp_server_tool.py +4 -15
- kiln_ai/tools/test_mcp_session_manager.py +186 -226
- kiln_ai/tools/test_rag_tools.py +86 -5
- kiln_ai/tools/test_tool_registry.py +199 -5
- kiln_ai/tools/tool_registry.py +49 -17
- kiln_ai/utils/filesystem.py +4 -4
- kiln_ai/utils/open_ai_types.py +19 -2
- kiln_ai/utils/pdf_utils.py +21 -0
- kiln_ai/utils/test_open_ai_types.py +88 -12
- kiln_ai/utils/test_pdf_utils.py +14 -1
- {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/METADATA +79 -1
- {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/RECORD +53 -45
- {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/WHEEL +0 -0
- {kiln_ai-0.21.0.dist-info → kiln_ai-0.22.1.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -91,6 +91,7 @@ class ModelName(str, Enum):
|
|
|
91
91
|
mistral_large = "mistral_large"
|
|
92
92
|
mistral_nemo = "mistral_nemo"
|
|
93
93
|
mistral_small_3 = "mistral_small_3"
|
|
94
|
+
mistral_medium_3_1 = "mistral_medium_3_1"
|
|
94
95
|
magistral_medium = "magistral_medium"
|
|
95
96
|
magistral_medium_thinking = "magistral_medium_thinking"
|
|
96
97
|
gemma_2_2b = "gemma_2_2b"
|
|
@@ -108,7 +109,9 @@ class ModelName(str, Enum):
|
|
|
108
109
|
claude_3_7_sonnet = "claude_3_7_sonnet"
|
|
109
110
|
claude_3_7_sonnet_thinking = "claude_3_7_sonnet_thinking"
|
|
110
111
|
claude_sonnet_4 = "claude_sonnet_4"
|
|
112
|
+
claude_sonnet_4_5 = "claude_sonnet_4_5"
|
|
111
113
|
claude_opus_4 = "claude_opus_4"
|
|
114
|
+
claude_opus_4_1 = "claude_opus_4_1"
|
|
112
115
|
gemini_1_5_flash = "gemini_1_5_flash"
|
|
113
116
|
gemini_1_5_flash_8b = "gemini_1_5_flash_8b"
|
|
114
117
|
gemini_1_5_pro = "gemini_1_5_pro"
|
|
@@ -122,8 +125,13 @@ class ModelName(str, Enum):
|
|
|
122
125
|
qwen_2p5_7b = "qwen_2p5_7b"
|
|
123
126
|
qwen_2p5_14b = "qwen_2p5_14b"
|
|
124
127
|
qwen_2p5_72b = "qwen_2p5_72b"
|
|
128
|
+
qwen_2p5_vl_3b = "qwen_2p5_vl_3b"
|
|
129
|
+
qwen_2p5_vl_7b = "qwen_2p5_vl_7b"
|
|
130
|
+
qwen_2p5_vl_32b = "qwen_2p5_vl_32b"
|
|
131
|
+
qwen_2p5_vl_72b = "qwen_2p5_vl_72b"
|
|
125
132
|
qwq_32b = "qwq_32b"
|
|
126
133
|
deepseek_3_1 = "deepseek_3_1"
|
|
134
|
+
deepseek_3_1_terminus = "deepseek_3_1_terminus"
|
|
127
135
|
deepseek_3 = "deepseek_3"
|
|
128
136
|
deepseek_r1 = "deepseek_r1"
|
|
129
137
|
deepseek_r1_0528 = "deepseek_r1_0528"
|
|
@@ -162,10 +170,13 @@ class ModelName(str, Enum):
|
|
|
162
170
|
qwen_3_235b_a22b = "qwen_3_235b_a22b"
|
|
163
171
|
qwen_3_235b_a22b_2507_no_thinking = "qwen_3_235b_a22b_2507_no_thinking"
|
|
164
172
|
qwen_3_235b_a22b_no_thinking = "qwen_3_235b_a22b_no_thinking"
|
|
173
|
+
qwen_3_vl_235b_a22b_no_thinking = "qwen_3_vl_235b_a22b_no_thinking"
|
|
165
174
|
qwen_long_l1_32b = "qwen_long_l1_32b"
|
|
166
175
|
kimi_k2 = "kimi_k2"
|
|
167
176
|
kimi_k2_0905 = "kimi_k2_0905"
|
|
168
177
|
kimi_dev_72b = "kimi_dev_72b"
|
|
178
|
+
glm_4_6 = "glm_4_6"
|
|
179
|
+
glm_4_5v = "glm_4_5v"
|
|
169
180
|
glm_4_5 = "glm_4_5"
|
|
170
181
|
glm_4_5_air = "glm_4_5_air"
|
|
171
182
|
glm_4_1v_9b_thinking = "glm_4_1v_9b_thinking"
|
|
@@ -215,6 +226,7 @@ class KilnModelProvider(BaseModel):
|
|
|
215
226
|
suggested_for_doc_extraction: Whether the model is suggested for document extraction
|
|
216
227
|
multimodal_capable: Whether the model supports multimodal inputs (e.g. images, audio, video, PDFs, etc.)
|
|
217
228
|
multimodal_mime_types: The mime types that the model supports for multimodal inputs (e.g. image/jpeg, video/mp4, application/pdf, etc.)
|
|
229
|
+
multimodal_requires_pdf_as_image: Whether the model requires PDFs to be processed as images
|
|
218
230
|
"""
|
|
219
231
|
|
|
220
232
|
name: ModelProviderName
|
|
@@ -238,6 +250,7 @@ class KilnModelProvider(BaseModel):
|
|
|
238
250
|
suggested_for_doc_extraction: bool = False
|
|
239
251
|
multimodal_capable: bool = False
|
|
240
252
|
multimodal_mime_types: List[str] | None = None
|
|
253
|
+
multimodal_requires_pdf_as_image: bool = False
|
|
241
254
|
|
|
242
255
|
# We need a more generalized way to handle custom provider parameters.
|
|
243
256
|
# Making them quite declarative here for now, isolating provider specific logic
|
|
@@ -250,6 +263,8 @@ class KilnModelProvider(BaseModel):
|
|
|
250
263
|
ollama_model_aliases: List[str] | None = None
|
|
251
264
|
anthropic_extended_thinking: bool = False
|
|
252
265
|
gemini_reasoning_enabled: bool = False
|
|
266
|
+
# Can only specify top_p or temp, not both. Opus 4.1 and Sonnet 4.5 for example.
|
|
267
|
+
temp_top_p_exclusive: bool = False
|
|
253
268
|
|
|
254
269
|
# some models on siliconflow allow dynamically disabling thinking
|
|
255
270
|
# currently only supported by Qwen3 and tencent/Hunyuan-A13B-Instruct
|
|
@@ -260,6 +275,11 @@ class KilnModelProvider(BaseModel):
|
|
|
260
275
|
# this is not uniform nor documented, so we need to test each model
|
|
261
276
|
reasoning_optional_for_structured_output: bool | None = None
|
|
262
277
|
|
|
278
|
+
# models have rate limits, which become very relevant when doing heavy processing like in RAG
|
|
279
|
+
# this RPM gives a rough estimate of how many requests we should allow to run in parallel, it is
|
|
280
|
+
# not exact and real rate limit rules are much more complex
|
|
281
|
+
max_parallel_requests: int | None = None
|
|
282
|
+
|
|
263
283
|
|
|
264
284
|
class KilnModel(BaseModel):
|
|
265
285
|
"""
|
|
@@ -297,6 +317,8 @@ built_in_models: List[KilnModel] = [
|
|
|
297
317
|
multimodal_mime_types=[
|
|
298
318
|
# documents
|
|
299
319
|
KilnMimeType.PDF,
|
|
320
|
+
KilnMimeType.TXT,
|
|
321
|
+
KilnMimeType.MD,
|
|
300
322
|
# images
|
|
301
323
|
KilnMimeType.JPG,
|
|
302
324
|
KilnMimeType.PNG,
|
|
@@ -308,6 +330,17 @@ built_in_models: List[KilnModel] = [
|
|
|
308
330
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
309
331
|
suggested_for_data_gen=True,
|
|
310
332
|
suggested_for_evals=True,
|
|
333
|
+
supports_doc_extraction=True,
|
|
334
|
+
multimodal_capable=True,
|
|
335
|
+
multimodal_mime_types=[
|
|
336
|
+
# documents
|
|
337
|
+
KilnMimeType.PDF,
|
|
338
|
+
KilnMimeType.TXT,
|
|
339
|
+
KilnMimeType.MD,
|
|
340
|
+
# images
|
|
341
|
+
KilnMimeType.JPG,
|
|
342
|
+
KilnMimeType.PNG,
|
|
343
|
+
],
|
|
311
344
|
),
|
|
312
345
|
],
|
|
313
346
|
),
|
|
@@ -328,6 +361,8 @@ built_in_models: List[KilnModel] = [
|
|
|
328
361
|
multimodal_mime_types=[
|
|
329
362
|
# documents
|
|
330
363
|
KilnMimeType.PDF,
|
|
364
|
+
KilnMimeType.TXT,
|
|
365
|
+
KilnMimeType.MD,
|
|
331
366
|
# images
|
|
332
367
|
KilnMimeType.JPG,
|
|
333
368
|
KilnMimeType.PNG,
|
|
@@ -339,6 +374,17 @@ built_in_models: List[KilnModel] = [
|
|
|
339
374
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
340
375
|
suggested_for_evals=True,
|
|
341
376
|
suggested_for_data_gen=True,
|
|
377
|
+
supports_doc_extraction=True,
|
|
378
|
+
multimodal_capable=True,
|
|
379
|
+
multimodal_mime_types=[
|
|
380
|
+
# documents
|
|
381
|
+
KilnMimeType.PDF,
|
|
382
|
+
KilnMimeType.TXT,
|
|
383
|
+
KilnMimeType.MD,
|
|
384
|
+
# images
|
|
385
|
+
KilnMimeType.JPG,
|
|
386
|
+
KilnMimeType.PNG,
|
|
387
|
+
],
|
|
342
388
|
),
|
|
343
389
|
],
|
|
344
390
|
),
|
|
@@ -357,6 +403,8 @@ built_in_models: List[KilnModel] = [
|
|
|
357
403
|
multimodal_mime_types=[
|
|
358
404
|
# documents
|
|
359
405
|
KilnMimeType.PDF,
|
|
406
|
+
KilnMimeType.TXT,
|
|
407
|
+
KilnMimeType.MD,
|
|
360
408
|
# images
|
|
361
409
|
KilnMimeType.JPG,
|
|
362
410
|
KilnMimeType.PNG,
|
|
@@ -366,6 +414,17 @@ built_in_models: List[KilnModel] = [
|
|
|
366
414
|
name=ModelProviderName.openrouter,
|
|
367
415
|
model_id="openai/gpt-5-nano",
|
|
368
416
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
417
|
+
supports_doc_extraction=True,
|
|
418
|
+
multimodal_capable=True,
|
|
419
|
+
multimodal_mime_types=[
|
|
420
|
+
# documents
|
|
421
|
+
KilnMimeType.PDF,
|
|
422
|
+
KilnMimeType.TXT,
|
|
423
|
+
KilnMimeType.MD,
|
|
424
|
+
# images
|
|
425
|
+
KilnMimeType.JPG,
|
|
426
|
+
KilnMimeType.PNG,
|
|
427
|
+
],
|
|
369
428
|
),
|
|
370
429
|
],
|
|
371
430
|
),
|
|
@@ -430,15 +489,6 @@ built_in_models: List[KilnModel] = [
|
|
|
430
489
|
model_id="gpt-4.1",
|
|
431
490
|
suggested_for_evals=True,
|
|
432
491
|
suggested_for_data_gen=True,
|
|
433
|
-
supports_doc_extraction=True,
|
|
434
|
-
multimodal_capable=True,
|
|
435
|
-
multimodal_mime_types=[
|
|
436
|
-
# documents
|
|
437
|
-
KilnMimeType.PDF,
|
|
438
|
-
# images
|
|
439
|
-
KilnMimeType.JPG,
|
|
440
|
-
KilnMimeType.PNG,
|
|
441
|
-
],
|
|
442
492
|
),
|
|
443
493
|
],
|
|
444
494
|
),
|
|
@@ -887,6 +937,25 @@ built_in_models: List[KilnModel] = [
|
|
|
887
937
|
),
|
|
888
938
|
],
|
|
889
939
|
),
|
|
940
|
+
# Claude Sonnet 4.5
|
|
941
|
+
KilnModel(
|
|
942
|
+
family=ModelFamily.claude,
|
|
943
|
+
name=ModelName.claude_sonnet_4_5,
|
|
944
|
+
friendly_name="Claude 4.5 Sonnet",
|
|
945
|
+
providers=[
|
|
946
|
+
KilnModelProvider(
|
|
947
|
+
name=ModelProviderName.openrouter,
|
|
948
|
+
model_id="anthropic/claude-4.5-sonnet",
|
|
949
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
950
|
+
),
|
|
951
|
+
KilnModelProvider(
|
|
952
|
+
name=ModelProviderName.anthropic,
|
|
953
|
+
model_id="claude-sonnet-4-5-20250929",
|
|
954
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
955
|
+
temp_top_p_exclusive=True,
|
|
956
|
+
),
|
|
957
|
+
],
|
|
958
|
+
),
|
|
890
959
|
# Claude Sonnet 4
|
|
891
960
|
KilnModel(
|
|
892
961
|
family=ModelFamily.claude,
|
|
@@ -973,6 +1042,25 @@ built_in_models: List[KilnModel] = [
|
|
|
973
1042
|
),
|
|
974
1043
|
],
|
|
975
1044
|
),
|
|
1045
|
+
# Claude Opus 4.1
|
|
1046
|
+
KilnModel(
|
|
1047
|
+
family=ModelFamily.claude,
|
|
1048
|
+
name=ModelName.claude_opus_4_1,
|
|
1049
|
+
friendly_name="Claude Opus 4.1",
|
|
1050
|
+
providers=[
|
|
1051
|
+
KilnModelProvider(
|
|
1052
|
+
name=ModelProviderName.openrouter,
|
|
1053
|
+
model_id="anthropic/claude-opus-4.1",
|
|
1054
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
1055
|
+
),
|
|
1056
|
+
KilnModelProvider(
|
|
1057
|
+
name=ModelProviderName.anthropic,
|
|
1058
|
+
model_id="claude-opus-4-1-20250805",
|
|
1059
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
1060
|
+
temp_top_p_exclusive=True,
|
|
1061
|
+
),
|
|
1062
|
+
],
|
|
1063
|
+
),
|
|
976
1064
|
# Claude Opus 4
|
|
977
1065
|
KilnModel(
|
|
978
1066
|
family=ModelFamily.claude,
|
|
@@ -1051,6 +1139,7 @@ built_in_models: List[KilnModel] = [
|
|
|
1051
1139
|
reasoning_capable=True,
|
|
1052
1140
|
gemini_reasoning_enabled=True,
|
|
1053
1141
|
thinking_level="medium",
|
|
1142
|
+
max_parallel_requests=2,
|
|
1054
1143
|
),
|
|
1055
1144
|
KilnModelProvider(
|
|
1056
1145
|
name=ModelProviderName.vertex,
|
|
@@ -1529,6 +1618,19 @@ built_in_models: List[KilnModel] = [
|
|
|
1529
1618
|
),
|
|
1530
1619
|
],
|
|
1531
1620
|
),
|
|
1621
|
+
# Mistral Medium 3.1
|
|
1622
|
+
KilnModel(
|
|
1623
|
+
family=ModelFamily.mistral,
|
|
1624
|
+
name=ModelName.mistral_medium_3_1,
|
|
1625
|
+
friendly_name="Mistral Medium 3.1",
|
|
1626
|
+
providers=[
|
|
1627
|
+
KilnModelProvider(
|
|
1628
|
+
name=ModelProviderName.openrouter,
|
|
1629
|
+
model_id="mistralai/mistral-medium-3.1",
|
|
1630
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1631
|
+
),
|
|
1632
|
+
],
|
|
1633
|
+
),
|
|
1532
1634
|
# Magistral Medium (Thinking)
|
|
1533
1635
|
KilnModel(
|
|
1534
1636
|
family=ModelFamily.mistral,
|
|
@@ -2148,45 +2250,232 @@ built_in_models: List[KilnModel] = [
|
|
|
2148
2250
|
),
|
|
2149
2251
|
],
|
|
2150
2252
|
),
|
|
2151
|
-
# Qwen 2.5
|
|
2253
|
+
# Qwen 2.5 VL 72B
|
|
2152
2254
|
KilnModel(
|
|
2153
2255
|
family=ModelFamily.qwen,
|
|
2154
|
-
name=ModelName.
|
|
2155
|
-
friendly_name="Qwen 2.5
|
|
2256
|
+
name=ModelName.qwen_2p5_vl_72b,
|
|
2257
|
+
friendly_name="Qwen 2.5 VL 72B (Vision-Language)",
|
|
2156
2258
|
providers=[
|
|
2259
|
+
KilnModelProvider(
|
|
2260
|
+
name=ModelProviderName.ollama,
|
|
2261
|
+
model_id="qwen2.5vl:72b",
|
|
2262
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2263
|
+
supports_function_calling=False,
|
|
2264
|
+
supports_doc_extraction=True,
|
|
2265
|
+
multimodal_capable=True,
|
|
2266
|
+
multimodal_mime_types=[
|
|
2267
|
+
KilnMimeType.JPG,
|
|
2268
|
+
KilnMimeType.PNG,
|
|
2269
|
+
KilnMimeType.PDF,
|
|
2270
|
+
KilnMimeType.TXT,
|
|
2271
|
+
KilnMimeType.MD,
|
|
2272
|
+
],
|
|
2273
|
+
multimodal_requires_pdf_as_image=True,
|
|
2274
|
+
max_parallel_requests=1,
|
|
2275
|
+
),
|
|
2157
2276
|
KilnModelProvider(
|
|
2158
2277
|
name=ModelProviderName.openrouter,
|
|
2159
|
-
model_id="qwen/
|
|
2278
|
+
model_id="qwen/qwen2.5-vl-72b-instruct",
|
|
2279
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2280
|
+
supports_function_calling=False,
|
|
2281
|
+
supports_doc_extraction=True,
|
|
2282
|
+
multimodal_capable=True,
|
|
2283
|
+
multimodal_mime_types=[
|
|
2284
|
+
KilnMimeType.JPG,
|
|
2285
|
+
KilnMimeType.PNG,
|
|
2286
|
+
KilnMimeType.PDF,
|
|
2287
|
+
KilnMimeType.TXT,
|
|
2288
|
+
KilnMimeType.MD,
|
|
2289
|
+
],
|
|
2290
|
+
multimodal_requires_pdf_as_image=True,
|
|
2291
|
+
),
|
|
2292
|
+
KilnModelProvider(
|
|
2293
|
+
name=ModelProviderName.siliconflow_cn,
|
|
2294
|
+
model_id="Qwen/Qwen2.5-VL-72B-Instruct",
|
|
2295
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
2296
|
+
supports_function_calling=False,
|
|
2297
|
+
supports_doc_extraction=True,
|
|
2298
|
+
multimodal_capable=True,
|
|
2299
|
+
multimodal_mime_types=[
|
|
2300
|
+
KilnMimeType.JPG,
|
|
2301
|
+
KilnMimeType.PNG,
|
|
2302
|
+
KilnMimeType.PDF,
|
|
2303
|
+
KilnMimeType.TXT,
|
|
2304
|
+
KilnMimeType.MD,
|
|
2305
|
+
],
|
|
2306
|
+
multimodal_requires_pdf_as_image=True,
|
|
2307
|
+
),
|
|
2308
|
+
KilnModelProvider(
|
|
2309
|
+
name=ModelProviderName.together_ai,
|
|
2310
|
+
model_id="Qwen/Qwen2.5-VL-72B-Instruct",
|
|
2160
2311
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2161
2312
|
supports_function_calling=False,
|
|
2313
|
+
supports_doc_extraction=True,
|
|
2314
|
+
multimodal_capable=True,
|
|
2315
|
+
multimodal_mime_types=[
|
|
2316
|
+
KilnMimeType.JPG,
|
|
2317
|
+
KilnMimeType.PNG,
|
|
2318
|
+
KilnMimeType.PDF,
|
|
2319
|
+
KilnMimeType.TXT,
|
|
2320
|
+
KilnMimeType.MD,
|
|
2321
|
+
# supports video, but LiteLLM fails request validation
|
|
2322
|
+
],
|
|
2323
|
+
multimodal_requires_pdf_as_image=True,
|
|
2162
2324
|
),
|
|
2325
|
+
],
|
|
2326
|
+
),
|
|
2327
|
+
# Qwen 2.5 VL 32B
|
|
2328
|
+
KilnModel(
|
|
2329
|
+
family=ModelFamily.qwen,
|
|
2330
|
+
name=ModelName.qwen_2p5_vl_32b,
|
|
2331
|
+
friendly_name="Qwen 2.5 VL 32B (Vision-Language)",
|
|
2332
|
+
providers=[
|
|
2163
2333
|
KilnModelProvider(
|
|
2164
2334
|
name=ModelProviderName.ollama,
|
|
2165
|
-
model_id="qwen2.
|
|
2335
|
+
model_id="qwen2.5vl:32b",
|
|
2336
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2166
2337
|
supports_function_calling=False,
|
|
2338
|
+
supports_doc_extraction=True,
|
|
2339
|
+
multimodal_capable=True,
|
|
2340
|
+
multimodal_mime_types=[
|
|
2341
|
+
KilnMimeType.JPG,
|
|
2342
|
+
KilnMimeType.PNG,
|
|
2343
|
+
KilnMimeType.PDF,
|
|
2344
|
+
KilnMimeType.TXT,
|
|
2345
|
+
KilnMimeType.MD,
|
|
2346
|
+
],
|
|
2347
|
+
multimodal_requires_pdf_as_image=True,
|
|
2348
|
+
max_parallel_requests=1,
|
|
2167
2349
|
),
|
|
2168
2350
|
KilnModelProvider(
|
|
2169
|
-
name=ModelProviderName.
|
|
2170
|
-
model_id="
|
|
2351
|
+
name=ModelProviderName.openrouter,
|
|
2352
|
+
model_id="qwen/qwen2.5-vl-32b-instruct",
|
|
2353
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2354
|
+
supports_function_calling=False,
|
|
2355
|
+
supports_doc_extraction=True,
|
|
2356
|
+
multimodal_capable=True,
|
|
2357
|
+
multimodal_mime_types=[
|
|
2358
|
+
KilnMimeType.JPG,
|
|
2359
|
+
KilnMimeType.PNG,
|
|
2360
|
+
KilnMimeType.PDF,
|
|
2361
|
+
KilnMimeType.TXT,
|
|
2362
|
+
KilnMimeType.MD,
|
|
2363
|
+
],
|
|
2364
|
+
multimodal_requires_pdf_as_image=True,
|
|
2365
|
+
),
|
|
2366
|
+
KilnModelProvider(
|
|
2367
|
+
name=ModelProviderName.siliconflow_cn,
|
|
2368
|
+
model_id="Qwen/Qwen2.5-VL-32B-Instruct",
|
|
2369
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
2370
|
+
supports_function_calling=False,
|
|
2371
|
+
supports_doc_extraction=True,
|
|
2372
|
+
multimodal_capable=True,
|
|
2373
|
+
multimodal_mime_types=[
|
|
2374
|
+
KilnMimeType.JPG,
|
|
2375
|
+
KilnMimeType.PNG,
|
|
2376
|
+
KilnMimeType.PDF,
|
|
2377
|
+
KilnMimeType.TXT,
|
|
2378
|
+
KilnMimeType.MD,
|
|
2379
|
+
],
|
|
2380
|
+
multimodal_requires_pdf_as_image=True,
|
|
2381
|
+
),
|
|
2382
|
+
KilnModelProvider(
|
|
2383
|
+
name=ModelProviderName.fireworks_ai,
|
|
2384
|
+
model_id="accounts/fireworks/models/qwen2p5-vl-32b-instruct",
|
|
2385
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2171
2386
|
supports_function_calling=False,
|
|
2387
|
+
supports_doc_extraction=True,
|
|
2388
|
+
multimodal_capable=True,
|
|
2389
|
+
multimodal_mime_types=[
|
|
2390
|
+
KilnMimeType.JPG,
|
|
2391
|
+
KilnMimeType.PNG,
|
|
2392
|
+
KilnMimeType.PDF,
|
|
2393
|
+
KilnMimeType.TXT,
|
|
2394
|
+
KilnMimeType.MD,
|
|
2395
|
+
],
|
|
2396
|
+
multimodal_requires_pdf_as_image=True,
|
|
2172
2397
|
),
|
|
2173
2398
|
],
|
|
2174
2399
|
),
|
|
2175
|
-
# Qwen 2.5
|
|
2400
|
+
# Qwen 2.5 VL 7B
|
|
2176
2401
|
KilnModel(
|
|
2177
2402
|
family=ModelFamily.qwen,
|
|
2178
|
-
name=ModelName.
|
|
2179
|
-
friendly_name="Qwen 2.5
|
|
2403
|
+
name=ModelName.qwen_2p5_vl_7b,
|
|
2404
|
+
friendly_name="Qwen 2.5 VL 7B (Vision-Language)",
|
|
2180
2405
|
providers=[
|
|
2181
2406
|
KilnModelProvider(
|
|
2182
|
-
name=ModelProviderName.
|
|
2183
|
-
|
|
2407
|
+
name=ModelProviderName.ollama,
|
|
2408
|
+
model_id="qwen2.5vl:7b",
|
|
2409
|
+
supports_structured_output=False,
|
|
2410
|
+
supports_function_calling=False,
|
|
2411
|
+
supports_doc_extraction=True,
|
|
2412
|
+
multimodal_capable=True,
|
|
2413
|
+
multimodal_mime_types=[
|
|
2414
|
+
KilnMimeType.JPG,
|
|
2415
|
+
KilnMimeType.PNG,
|
|
2416
|
+
KilnMimeType.PDF,
|
|
2417
|
+
KilnMimeType.TXT,
|
|
2418
|
+
KilnMimeType.MD,
|
|
2419
|
+
],
|
|
2420
|
+
multimodal_requires_pdf_as_image=True,
|
|
2421
|
+
max_parallel_requests=1,
|
|
2184
2422
|
),
|
|
2423
|
+
KilnModelProvider(
|
|
2424
|
+
name=ModelProviderName.openrouter,
|
|
2425
|
+
model_id="qwen/qwen-2.5-vl-7b-instruct",
|
|
2426
|
+
supports_structured_output=False,
|
|
2427
|
+
supports_function_calling=False,
|
|
2428
|
+
supports_doc_extraction=True,
|
|
2429
|
+
multimodal_capable=True,
|
|
2430
|
+
multimodal_mime_types=[
|
|
2431
|
+
KilnMimeType.JPG,
|
|
2432
|
+
KilnMimeType.PNG,
|
|
2433
|
+
KilnMimeType.PDF,
|
|
2434
|
+
KilnMimeType.TXT,
|
|
2435
|
+
KilnMimeType.MD,
|
|
2436
|
+
],
|
|
2437
|
+
multimodal_requires_pdf_as_image=True,
|
|
2438
|
+
),
|
|
2439
|
+
KilnModelProvider(
|
|
2440
|
+
name=ModelProviderName.siliconflow_cn,
|
|
2441
|
+
model_id="Pro/Qwen/Qwen2.5-VL-7B-Instruct",
|
|
2442
|
+
supports_structured_output=False,
|
|
2443
|
+
supports_function_calling=False,
|
|
2444
|
+
supports_doc_extraction=True,
|
|
2445
|
+
multimodal_capable=True,
|
|
2446
|
+
multimodal_mime_types=[
|
|
2447
|
+
KilnMimeType.JPG,
|
|
2448
|
+
KilnMimeType.PNG,
|
|
2449
|
+
KilnMimeType.PDF,
|
|
2450
|
+
KilnMimeType.TXT,
|
|
2451
|
+
KilnMimeType.MD,
|
|
2452
|
+
],
|
|
2453
|
+
multimodal_requires_pdf_as_image=True,
|
|
2454
|
+
),
|
|
2455
|
+
],
|
|
2456
|
+
),
|
|
2457
|
+
# Qwen 2.5 VL 3B
|
|
2458
|
+
KilnModel(
|
|
2459
|
+
family=ModelFamily.qwen,
|
|
2460
|
+
name=ModelName.qwen_2p5_vl_3b,
|
|
2461
|
+
friendly_name="Qwen 2.5 VL 3B (Vision-Language)",
|
|
2462
|
+
providers=[
|
|
2185
2463
|
KilnModelProvider(
|
|
2186
2464
|
name=ModelProviderName.ollama,
|
|
2187
|
-
model_id="qwen2.
|
|
2188
|
-
|
|
2465
|
+
model_id="qwen2.5vl:3b",
|
|
2466
|
+
supports_structured_output=False,
|
|
2189
2467
|
supports_function_calling=False,
|
|
2468
|
+
supports_doc_extraction=True,
|
|
2469
|
+
multimodal_capable=True,
|
|
2470
|
+
multimodal_mime_types=[
|
|
2471
|
+
KilnMimeType.JPG,
|
|
2472
|
+
KilnMimeType.PNG,
|
|
2473
|
+
KilnMimeType.PDF,
|
|
2474
|
+
KilnMimeType.TXT,
|
|
2475
|
+
KilnMimeType.MD,
|
|
2476
|
+
],
|
|
2477
|
+
multimodal_requires_pdf_as_image=True,
|
|
2478
|
+
max_parallel_requests=1,
|
|
2190
2479
|
),
|
|
2191
2480
|
],
|
|
2192
2481
|
),
|
|
@@ -2214,6 +2503,48 @@ built_in_models: List[KilnModel] = [
|
|
|
2214
2503
|
),
|
|
2215
2504
|
],
|
|
2216
2505
|
),
|
|
2506
|
+
# Qwen 2.5 14B
|
|
2507
|
+
KilnModel(
|
|
2508
|
+
family=ModelFamily.qwen,
|
|
2509
|
+
name=ModelName.qwen_2p5_14b,
|
|
2510
|
+
friendly_name="Qwen 2.5 14B",
|
|
2511
|
+
providers=[
|
|
2512
|
+
KilnModelProvider(
|
|
2513
|
+
name=ModelProviderName.together_ai,
|
|
2514
|
+
provider_finetune_id="Qwen/Qwen2.5-14B-Instruct",
|
|
2515
|
+
),
|
|
2516
|
+
KilnModelProvider(
|
|
2517
|
+
name=ModelProviderName.ollama,
|
|
2518
|
+
model_id="qwen2.5:14b",
|
|
2519
|
+
supports_data_gen=False,
|
|
2520
|
+
supports_function_calling=False,
|
|
2521
|
+
),
|
|
2522
|
+
],
|
|
2523
|
+
),
|
|
2524
|
+
# Qwen 2.5 7B
|
|
2525
|
+
KilnModel(
|
|
2526
|
+
family=ModelFamily.qwen,
|
|
2527
|
+
name=ModelName.qwen_2p5_7b,
|
|
2528
|
+
friendly_name="Qwen 2.5 7B",
|
|
2529
|
+
providers=[
|
|
2530
|
+
KilnModelProvider(
|
|
2531
|
+
name=ModelProviderName.openrouter,
|
|
2532
|
+
model_id="qwen/qwen-2.5-7b-instruct",
|
|
2533
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2534
|
+
supports_function_calling=False,
|
|
2535
|
+
),
|
|
2536
|
+
KilnModelProvider(
|
|
2537
|
+
name=ModelProviderName.ollama,
|
|
2538
|
+
model_id="qwen2.5",
|
|
2539
|
+
supports_function_calling=False,
|
|
2540
|
+
),
|
|
2541
|
+
KilnModelProvider(
|
|
2542
|
+
name=ModelProviderName.docker_model_runner,
|
|
2543
|
+
model_id="ai/qwen2.5:7B-Q4_K_M",
|
|
2544
|
+
supports_function_calling=False,
|
|
2545
|
+
),
|
|
2546
|
+
],
|
|
2547
|
+
),
|
|
2217
2548
|
# Mistral Small 3
|
|
2218
2549
|
KilnModel(
|
|
2219
2550
|
family=ModelFamily.mistral,
|
|
@@ -2305,6 +2636,29 @@ built_in_models: List[KilnModel] = [
|
|
|
2305
2636
|
),
|
|
2306
2637
|
],
|
|
2307
2638
|
),
|
|
2639
|
+
# DeepSeek 3.1 Terminus
|
|
2640
|
+
KilnModel(
|
|
2641
|
+
family=ModelFamily.deepseek,
|
|
2642
|
+
name=ModelName.deepseek_3_1_terminus,
|
|
2643
|
+
friendly_name="DeepSeek 3.1 Terminus",
|
|
2644
|
+
providers=[
|
|
2645
|
+
KilnModelProvider(
|
|
2646
|
+
name=ModelProviderName.openrouter,
|
|
2647
|
+
model_id="deepseek/deepseek-v3.1-terminus",
|
|
2648
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2649
|
+
supports_data_gen=True,
|
|
2650
|
+
),
|
|
2651
|
+
KilnModelProvider(
|
|
2652
|
+
name=ModelProviderName.fireworks_ai,
|
|
2653
|
+
model_id="accounts/fireworks/models/deepseek-v3p1-terminus",
|
|
2654
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2655
|
+
supports_data_gen=True,
|
|
2656
|
+
# the model page states it supports function calling, but our test fails
|
|
2657
|
+
# for this particular provider
|
|
2658
|
+
supports_function_calling=False,
|
|
2659
|
+
),
|
|
2660
|
+
],
|
|
2661
|
+
),
|
|
2308
2662
|
# DeepSeek 3.1
|
|
2309
2663
|
KilnModel(
|
|
2310
2664
|
family=ModelFamily.deepseek,
|
|
@@ -2747,6 +3101,20 @@ built_in_models: List[KilnModel] = [
|
|
|
2747
3101
|
supports_data_gen=True,
|
|
2748
3102
|
supports_function_calling=True,
|
|
2749
3103
|
),
|
|
3104
|
+
KilnModelProvider(
|
|
3105
|
+
name=ModelProviderName.together_ai,
|
|
3106
|
+
model_id="Qwen/Qwen3-Next-80B-A3B-Instruct",
|
|
3107
|
+
supports_data_gen=True,
|
|
3108
|
+
supports_function_calling=False,
|
|
3109
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
3110
|
+
),
|
|
3111
|
+
KilnModelProvider(
|
|
3112
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3113
|
+
model_id="Qwen/Qwen3-Next-80B-A3B-Instruct",
|
|
3114
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
3115
|
+
supports_data_gen=True,
|
|
3116
|
+
supports_function_calling=False,
|
|
3117
|
+
),
|
|
2750
3118
|
],
|
|
2751
3119
|
),
|
|
2752
3120
|
# Qwen 3 Next 80B A3B (Thinking)
|
|
@@ -2764,6 +3132,15 @@ built_in_models: List[KilnModel] = [
|
|
|
2764
3132
|
reasoning_capable=True,
|
|
2765
3133
|
require_openrouter_reasoning=True,
|
|
2766
3134
|
),
|
|
3135
|
+
KilnModelProvider(
|
|
3136
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3137
|
+
model_id="Qwen/Qwen3-Next-80B-A3B-Thinking",
|
|
3138
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3139
|
+
supports_data_gen=True,
|
|
3140
|
+
supports_function_calling=True,
|
|
3141
|
+
reasoning_capable=True,
|
|
3142
|
+
siliconflow_enable_thinking=True,
|
|
3143
|
+
),
|
|
2767
3144
|
],
|
|
2768
3145
|
),
|
|
2769
3146
|
# Qwen 3 Max
|
|
@@ -3271,6 +3648,34 @@ built_in_models: List[KilnModel] = [
|
|
|
3271
3648
|
),
|
|
3272
3649
|
],
|
|
3273
3650
|
),
|
|
3651
|
+
# Qwen 3 235B (22B Active) VL Instruct
|
|
3652
|
+
KilnModel(
|
|
3653
|
+
family=ModelFamily.qwen,
|
|
3654
|
+
name=ModelName.qwen_3_vl_235b_a22b_no_thinking,
|
|
3655
|
+
friendly_name="Qwen 3 VL Instruct 235B / 22B Active (Vision-Language)",
|
|
3656
|
+
providers=[
|
|
3657
|
+
KilnModelProvider(
|
|
3658
|
+
name=ModelProviderName.openrouter,
|
|
3659
|
+
model_id="qwen/qwen3-vl-235b-a22b-instruct",
|
|
3660
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
3661
|
+
formatter=ModelFormatterID.qwen3_style_no_think,
|
|
3662
|
+
supports_data_gen=False,
|
|
3663
|
+
reasoning_capable=False,
|
|
3664
|
+
supports_doc_extraction=True,
|
|
3665
|
+
multimodal_capable=True,
|
|
3666
|
+
multimodal_mime_types=[
|
|
3667
|
+
# images
|
|
3668
|
+
KilnMimeType.JPG,
|
|
3669
|
+
KilnMimeType.PNG,
|
|
3670
|
+
# documents
|
|
3671
|
+
KilnMimeType.PDF,
|
|
3672
|
+
KilnMimeType.TXT,
|
|
3673
|
+
KilnMimeType.MD,
|
|
3674
|
+
],
|
|
3675
|
+
multimodal_requires_pdf_as_image=True,
|
|
3676
|
+
),
|
|
3677
|
+
],
|
|
3678
|
+
),
|
|
3274
3679
|
# Qwen 3 235B (22B Active) 2507 Version
|
|
3275
3680
|
KilnModel(
|
|
3276
3681
|
family=ModelFamily.qwen,
|
|
@@ -3464,6 +3869,75 @@ built_in_models: List[KilnModel] = [
|
|
|
3464
3869
|
),
|
|
3465
3870
|
],
|
|
3466
3871
|
),
|
|
3872
|
+
# GLM 4.6
|
|
3873
|
+
KilnModel(
|
|
3874
|
+
family=ModelFamily.glm,
|
|
3875
|
+
name=ModelName.glm_4_6,
|
|
3876
|
+
friendly_name="GLM 4.6",
|
|
3877
|
+
providers=[
|
|
3878
|
+
KilnModelProvider(
|
|
3879
|
+
name=ModelProviderName.openrouter,
|
|
3880
|
+
model_id="z-ai/glm-4.6",
|
|
3881
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3882
|
+
reasoning_capable=True,
|
|
3883
|
+
reasoning_optional_for_structured_output=True,
|
|
3884
|
+
),
|
|
3885
|
+
KilnModelProvider(
|
|
3886
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3887
|
+
model_id="zai-org/GLM-4.6",
|
|
3888
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3889
|
+
),
|
|
3890
|
+
],
|
|
3891
|
+
),
|
|
3892
|
+
# GLM 4.5V
|
|
3893
|
+
KilnModel(
|
|
3894
|
+
family=ModelFamily.glm,
|
|
3895
|
+
name=ModelName.glm_4_5v,
|
|
3896
|
+
friendly_name="GLM 4.5V (Vision-Language)",
|
|
3897
|
+
providers=[
|
|
3898
|
+
KilnModelProvider(
|
|
3899
|
+
name=ModelProviderName.openrouter,
|
|
3900
|
+
model_id="z-ai/glm-4.5v",
|
|
3901
|
+
supports_structured_output=False,
|
|
3902
|
+
reasoning_capable=True,
|
|
3903
|
+
supports_data_gen=False,
|
|
3904
|
+
supports_doc_extraction=True,
|
|
3905
|
+
multimodal_capable=True,
|
|
3906
|
+
multimodal_mime_types=[
|
|
3907
|
+
# documents
|
|
3908
|
+
KilnMimeType.PDF,
|
|
3909
|
+
KilnMimeType.TXT,
|
|
3910
|
+
KilnMimeType.MD,
|
|
3911
|
+
# images
|
|
3912
|
+
KilnMimeType.JPG,
|
|
3913
|
+
KilnMimeType.PNG,
|
|
3914
|
+
],
|
|
3915
|
+
multimodal_requires_pdf_as_image=True,
|
|
3916
|
+
),
|
|
3917
|
+
KilnModelProvider(
|
|
3918
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3919
|
+
model_id="zai-org/GLM-4.5V",
|
|
3920
|
+
supports_structured_output=False,
|
|
3921
|
+
reasoning_capable=True,
|
|
3922
|
+
reasoning_optional_for_structured_output=True,
|
|
3923
|
+
supports_data_gen=False,
|
|
3924
|
+
supports_doc_extraction=True,
|
|
3925
|
+
multimodal_capable=True,
|
|
3926
|
+
multimodal_mime_types=[
|
|
3927
|
+
# documents
|
|
3928
|
+
KilnMimeType.PDF,
|
|
3929
|
+
KilnMimeType.TXT,
|
|
3930
|
+
KilnMimeType.MD,
|
|
3931
|
+
# images
|
|
3932
|
+
KilnMimeType.JPG,
|
|
3933
|
+
KilnMimeType.PNG,
|
|
3934
|
+
],
|
|
3935
|
+
multimodal_requires_pdf_as_image=True,
|
|
3936
|
+
max_parallel_requests=1,
|
|
3937
|
+
),
|
|
3938
|
+
# fireworks currently has it but not serverless
|
|
3939
|
+
],
|
|
3940
|
+
),
|
|
3467
3941
|
# GLM 4.5
|
|
3468
3942
|
KilnModel(
|
|
3469
3943
|
family=ModelFamily.glm,
|
|
@@ -3806,6 +4280,12 @@ built_in_models: List[KilnModel] = [
|
|
|
3806
4280
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3807
4281
|
reasoning_capable=True,
|
|
3808
4282
|
supports_function_calling=False,
|
|
4283
|
+
# image only is not sufficient for doc extraction
|
|
4284
|
+
multimodal_capable=True,
|
|
4285
|
+
multimodal_mime_types=[
|
|
4286
|
+
KilnMimeType.JPG,
|
|
4287
|
+
KilnMimeType.PNG,
|
|
4288
|
+
],
|
|
3809
4289
|
),
|
|
3810
4290
|
],
|
|
3811
4291
|
),
|