kiln-ai 0.20.1__py3-none-any.whl → 0.22.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.
- kiln_ai/adapters/__init__.py +6 -0
- kiln_ai/adapters/adapter_registry.py +43 -226
- kiln_ai/adapters/chunkers/__init__.py +13 -0
- kiln_ai/adapters/chunkers/base_chunker.py +42 -0
- kiln_ai/adapters/chunkers/chunker_registry.py +16 -0
- kiln_ai/adapters/chunkers/fixed_window_chunker.py +39 -0
- kiln_ai/adapters/chunkers/helpers.py +23 -0
- kiln_ai/adapters/chunkers/test_base_chunker.py +63 -0
- kiln_ai/adapters/chunkers/test_chunker_registry.py +28 -0
- kiln_ai/adapters/chunkers/test_fixed_window_chunker.py +346 -0
- kiln_ai/adapters/chunkers/test_helpers.py +75 -0
- kiln_ai/adapters/data_gen/test_data_gen_task.py +9 -3
- kiln_ai/adapters/embedding/__init__.py +0 -0
- kiln_ai/adapters/embedding/base_embedding_adapter.py +44 -0
- kiln_ai/adapters/embedding/embedding_registry.py +32 -0
- kiln_ai/adapters/embedding/litellm_embedding_adapter.py +199 -0
- kiln_ai/adapters/embedding/test_base_embedding_adapter.py +283 -0
- kiln_ai/adapters/embedding/test_embedding_registry.py +166 -0
- kiln_ai/adapters/embedding/test_litellm_embedding_adapter.py +1149 -0
- kiln_ai/adapters/eval/eval_runner.py +6 -2
- kiln_ai/adapters/eval/test_base_eval.py +1 -3
- kiln_ai/adapters/eval/test_g_eval.py +1 -1
- kiln_ai/adapters/extractors/__init__.py +18 -0
- kiln_ai/adapters/extractors/base_extractor.py +72 -0
- kiln_ai/adapters/extractors/encoding.py +20 -0
- kiln_ai/adapters/extractors/extractor_registry.py +44 -0
- kiln_ai/adapters/extractors/extractor_runner.py +112 -0
- kiln_ai/adapters/extractors/litellm_extractor.py +406 -0
- kiln_ai/adapters/extractors/test_base_extractor.py +244 -0
- kiln_ai/adapters/extractors/test_encoding.py +54 -0
- kiln_ai/adapters/extractors/test_extractor_registry.py +181 -0
- kiln_ai/adapters/extractors/test_extractor_runner.py +181 -0
- kiln_ai/adapters/extractors/test_litellm_extractor.py +1290 -0
- kiln_ai/adapters/fine_tune/test_dataset_formatter.py +2 -2
- kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +2 -6
- kiln_ai/adapters/fine_tune/test_together_finetune.py +2 -6
- kiln_ai/adapters/ml_embedding_model_list.py +494 -0
- kiln_ai/adapters/ml_model_list.py +876 -18
- kiln_ai/adapters/model_adapters/litellm_adapter.py +40 -75
- kiln_ai/adapters/model_adapters/test_litellm_adapter.py +79 -1
- 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 +9 -10
- kiln_ai/adapters/ollama_tools.py +69 -12
- kiln_ai/adapters/provider_tools.py +190 -46
- kiln_ai/adapters/rag/deduplication.py +49 -0
- kiln_ai/adapters/rag/progress.py +252 -0
- kiln_ai/adapters/rag/rag_runners.py +844 -0
- kiln_ai/adapters/rag/test_deduplication.py +195 -0
- kiln_ai/adapters/rag/test_progress.py +785 -0
- kiln_ai/adapters/rag/test_rag_runners.py +2376 -0
- kiln_ai/adapters/remote_config.py +80 -8
- kiln_ai/adapters/test_adapter_registry.py +579 -86
- kiln_ai/adapters/test_ml_embedding_model_list.py +239 -0
- kiln_ai/adapters/test_ml_model_list.py +202 -0
- kiln_ai/adapters/test_ollama_tools.py +340 -1
- kiln_ai/adapters/test_prompt_builders.py +1 -1
- kiln_ai/adapters/test_provider_tools.py +199 -8
- kiln_ai/adapters/test_remote_config.py +551 -56
- kiln_ai/adapters/vector_store/__init__.py +1 -0
- kiln_ai/adapters/vector_store/base_vector_store_adapter.py +83 -0
- kiln_ai/adapters/vector_store/lancedb_adapter.py +389 -0
- kiln_ai/adapters/vector_store/test_base_vector_store.py +160 -0
- kiln_ai/adapters/vector_store/test_lancedb_adapter.py +1841 -0
- kiln_ai/adapters/vector_store/test_vector_store_registry.py +199 -0
- kiln_ai/adapters/vector_store/vector_store_registry.py +33 -0
- kiln_ai/datamodel/__init__.py +16 -13
- kiln_ai/datamodel/basemodel.py +201 -4
- kiln_ai/datamodel/chunk.py +158 -0
- kiln_ai/datamodel/datamodel_enums.py +27 -0
- kiln_ai/datamodel/embedding.py +64 -0
- kiln_ai/datamodel/external_tool_server.py +206 -54
- kiln_ai/datamodel/extraction.py +317 -0
- kiln_ai/datamodel/project.py +33 -1
- kiln_ai/datamodel/rag.py +79 -0
- kiln_ai/datamodel/task.py +5 -0
- kiln_ai/datamodel/task_output.py +41 -11
- kiln_ai/datamodel/test_attachment.py +649 -0
- kiln_ai/datamodel/test_basemodel.py +270 -14
- kiln_ai/datamodel/test_chunk_models.py +317 -0
- kiln_ai/datamodel/test_dataset_split.py +1 -1
- kiln_ai/datamodel/test_datasource.py +50 -0
- kiln_ai/datamodel/test_embedding_models.py +448 -0
- kiln_ai/datamodel/test_eval_model.py +6 -6
- kiln_ai/datamodel/test_external_tool_server.py +534 -152
- kiln_ai/datamodel/test_extraction_chunk.py +206 -0
- kiln_ai/datamodel/test_extraction_model.py +501 -0
- kiln_ai/datamodel/test_rag.py +641 -0
- kiln_ai/datamodel/test_task.py +35 -1
- kiln_ai/datamodel/test_tool_id.py +187 -1
- kiln_ai/datamodel/test_vector_store.py +320 -0
- kiln_ai/datamodel/tool_id.py +58 -0
- kiln_ai/datamodel/vector_store.py +141 -0
- kiln_ai/tools/base_tool.py +12 -3
- kiln_ai/tools/built_in_tools/math_tools.py +12 -4
- kiln_ai/tools/kiln_task_tool.py +158 -0
- kiln_ai/tools/mcp_server_tool.py +2 -2
- kiln_ai/tools/mcp_session_manager.py +51 -22
- kiln_ai/tools/rag_tools.py +164 -0
- 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 +187 -227
- kiln_ai/tools/test_rag_tools.py +929 -0
- kiln_ai/tools/test_tool_registry.py +290 -7
- kiln_ai/tools/tool_registry.py +69 -16
- kiln_ai/utils/__init__.py +3 -0
- kiln_ai/utils/async_job_runner.py +62 -17
- kiln_ai/utils/config.py +2 -2
- kiln_ai/utils/env.py +15 -0
- kiln_ai/utils/filesystem.py +14 -0
- kiln_ai/utils/filesystem_cache.py +60 -0
- kiln_ai/utils/litellm.py +94 -0
- kiln_ai/utils/lock.py +100 -0
- kiln_ai/utils/mime_type.py +38 -0
- kiln_ai/utils/open_ai_types.py +19 -2
- kiln_ai/utils/pdf_utils.py +59 -0
- kiln_ai/utils/test_async_job_runner.py +151 -35
- kiln_ai/utils/test_env.py +142 -0
- kiln_ai/utils/test_filesystem_cache.py +316 -0
- kiln_ai/utils/test_litellm.py +206 -0
- kiln_ai/utils/test_lock.py +185 -0
- kiln_ai/utils/test_mime_type.py +66 -0
- kiln_ai/utils/test_open_ai_types.py +88 -12
- kiln_ai/utils/test_pdf_utils.py +86 -0
- kiln_ai/utils/test_uuid.py +111 -0
- kiln_ai/utils/test_validation.py +524 -0
- kiln_ai/utils/uuid.py +9 -0
- kiln_ai/utils/validation.py +90 -0
- {kiln_ai-0.20.1.dist-info → kiln_ai-0.22.0.dist-info}/METADATA +9 -1
- kiln_ai-0.22.0.dist-info/RECORD +213 -0
- kiln_ai-0.20.1.dist-info/RECORD +0 -138
- {kiln_ai-0.20.1.dist-info → kiln_ai-0.22.0.dist-info}/WHEEL +0 -0
- {kiln_ai-0.20.1.dist-info → kiln_ai-0.22.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -5,6 +5,7 @@ from pydantic import BaseModel
|
|
|
5
5
|
|
|
6
6
|
from kiln_ai.datamodel.datamodel_enums import (
|
|
7
7
|
ChatStrategy,
|
|
8
|
+
KilnMimeType,
|
|
8
9
|
ModelProviderName,
|
|
9
10
|
StructuredOutputMode,
|
|
10
11
|
)
|
|
@@ -39,6 +40,8 @@ class ModelFamily(str, Enum):
|
|
|
39
40
|
ernie = "ernie"
|
|
40
41
|
minimax = "minimax"
|
|
41
42
|
pangu = "pangu"
|
|
43
|
+
bytedance = "bytedance"
|
|
44
|
+
stepfun = "stepfun"
|
|
42
45
|
|
|
43
46
|
|
|
44
47
|
# Where models have instruct and raw versions, instruct is default and raw is specified
|
|
@@ -88,6 +91,7 @@ class ModelName(str, Enum):
|
|
|
88
91
|
mistral_large = "mistral_large"
|
|
89
92
|
mistral_nemo = "mistral_nemo"
|
|
90
93
|
mistral_small_3 = "mistral_small_3"
|
|
94
|
+
mistral_medium_3_1 = "mistral_medium_3_1"
|
|
91
95
|
magistral_medium = "magistral_medium"
|
|
92
96
|
magistral_medium_thinking = "magistral_medium_thinking"
|
|
93
97
|
gemma_2_2b = "gemma_2_2b"
|
|
@@ -105,7 +109,9 @@ class ModelName(str, Enum):
|
|
|
105
109
|
claude_3_7_sonnet = "claude_3_7_sonnet"
|
|
106
110
|
claude_3_7_sonnet_thinking = "claude_3_7_sonnet_thinking"
|
|
107
111
|
claude_sonnet_4 = "claude_sonnet_4"
|
|
112
|
+
claude_sonnet_4_5 = "claude_sonnet_4_5"
|
|
108
113
|
claude_opus_4 = "claude_opus_4"
|
|
114
|
+
claude_opus_4_1 = "claude_opus_4_1"
|
|
109
115
|
gemini_1_5_flash = "gemini_1_5_flash"
|
|
110
116
|
gemini_1_5_flash_8b = "gemini_1_5_flash_8b"
|
|
111
117
|
gemini_1_5_pro = "gemini_1_5_pro"
|
|
@@ -119,8 +125,13 @@ class ModelName(str, Enum):
|
|
|
119
125
|
qwen_2p5_7b = "qwen_2p5_7b"
|
|
120
126
|
qwen_2p5_14b = "qwen_2p5_14b"
|
|
121
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"
|
|
122
132
|
qwq_32b = "qwq_32b"
|
|
123
133
|
deepseek_3_1 = "deepseek_3_1"
|
|
134
|
+
deepseek_3_1_terminus = "deepseek_3_1_terminus"
|
|
124
135
|
deepseek_3 = "deepseek_3"
|
|
125
136
|
deepseek_r1 = "deepseek_r1"
|
|
126
137
|
deepseek_r1_0528 = "deepseek_r1_0528"
|
|
@@ -136,6 +147,9 @@ class ModelName(str, Enum):
|
|
|
136
147
|
grok_3 = "grok_3"
|
|
137
148
|
grok_3_mini = "grok_3_mini"
|
|
138
149
|
grok_4 = "grok_4"
|
|
150
|
+
qwen_3_next_80b_a3b = "qwen_3_next_80b_a3b"
|
|
151
|
+
qwen_3_next_80b_a3b_thinking = "qwen_3_next_80b_a3b_thinking"
|
|
152
|
+
qwen_3_max = "qwen_3_max"
|
|
139
153
|
qwen_3_0p6b = "qwen_3_0p6b"
|
|
140
154
|
qwen_3_0p6b_no_thinking = "qwen_3_0p6b_no_thinking"
|
|
141
155
|
qwen_3_1p7b = "qwen_3_1p7b"
|
|
@@ -156,9 +170,13 @@ class ModelName(str, Enum):
|
|
|
156
170
|
qwen_3_235b_a22b = "qwen_3_235b_a22b"
|
|
157
171
|
qwen_3_235b_a22b_2507_no_thinking = "qwen_3_235b_a22b_2507_no_thinking"
|
|
158
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"
|
|
159
174
|
qwen_long_l1_32b = "qwen_long_l1_32b"
|
|
160
175
|
kimi_k2 = "kimi_k2"
|
|
176
|
+
kimi_k2_0905 = "kimi_k2_0905"
|
|
161
177
|
kimi_dev_72b = "kimi_dev_72b"
|
|
178
|
+
glm_4_6 = "glm_4_6"
|
|
179
|
+
glm_4_5v = "glm_4_5v"
|
|
162
180
|
glm_4_5 = "glm_4_5"
|
|
163
181
|
glm_4_5_air = "glm_4_5_air"
|
|
164
182
|
glm_4_1v_9b_thinking = "glm_4_1v_9b_thinking"
|
|
@@ -169,6 +187,8 @@ class ModelName(str, Enum):
|
|
|
169
187
|
hunyuan_a13b_no_thinking = "hunyuan_a13b_no_thinking"
|
|
170
188
|
minimax_m1_80k = "minimax_m1_80k"
|
|
171
189
|
pangu_pro_moe_72b_a16b = "pangu_pro_moe_72b_a16b"
|
|
190
|
+
bytedance_seed_oss_36b = "bytedance_seed_oss_36b"
|
|
191
|
+
stepfun_step3 = "stepfun_step3"
|
|
172
192
|
|
|
173
193
|
|
|
174
194
|
class ModelParserID(str, Enum):
|
|
@@ -202,6 +222,11 @@ class KilnModelProvider(BaseModel):
|
|
|
202
222
|
parser: A parser to use for the model, if applicable
|
|
203
223
|
reasoning_capable: Whether the model is designed to output thinking in a structured format (eg <think></think>). If so we don't use COT across 2 calls, and ask for thinking and final response in the same call.
|
|
204
224
|
tuned_chat_strategy: Used when a model is finetuned with a specific chat strategy, and it's best to use it at call time.
|
|
225
|
+
supports_doc_extraction: Whether the provider is meant to support document extraction
|
|
226
|
+
suggested_for_doc_extraction: Whether the model is suggested for document extraction
|
|
227
|
+
multimodal_capable: Whether the model supports multimodal inputs (e.g. images, audio, video, PDFs, etc.)
|
|
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
|
|
205
230
|
"""
|
|
206
231
|
|
|
207
232
|
name: ModelProviderName
|
|
@@ -221,6 +246,11 @@ class KilnModelProvider(BaseModel):
|
|
|
221
246
|
uncensored: bool = False
|
|
222
247
|
suggested_for_uncensored_data_gen: bool = False
|
|
223
248
|
tuned_chat_strategy: ChatStrategy | None = None
|
|
249
|
+
supports_doc_extraction: bool = False
|
|
250
|
+
suggested_for_doc_extraction: bool = False
|
|
251
|
+
multimodal_capable: bool = False
|
|
252
|
+
multimodal_mime_types: List[str] | None = None
|
|
253
|
+
multimodal_requires_pdf_as_image: bool = False
|
|
224
254
|
|
|
225
255
|
# We need a more generalized way to handle custom provider parameters.
|
|
226
256
|
# Making them quite declarative here for now, isolating provider specific logic
|
|
@@ -233,6 +263,8 @@ class KilnModelProvider(BaseModel):
|
|
|
233
263
|
ollama_model_aliases: List[str] | None = None
|
|
234
264
|
anthropic_extended_thinking: bool = False
|
|
235
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
|
|
236
268
|
|
|
237
269
|
# some models on siliconflow allow dynamically disabling thinking
|
|
238
270
|
# currently only supported by Qwen3 and tencent/Hunyuan-A13B-Instruct
|
|
@@ -243,6 +275,11 @@ class KilnModelProvider(BaseModel):
|
|
|
243
275
|
# this is not uniform nor documented, so we need to test each model
|
|
244
276
|
reasoning_optional_for_structured_output: bool | None = None
|
|
245
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
|
+
|
|
246
283
|
|
|
247
284
|
class KilnModel(BaseModel):
|
|
248
285
|
"""
|
|
@@ -275,6 +312,17 @@ built_in_models: List[KilnModel] = [
|
|
|
275
312
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
276
313
|
suggested_for_data_gen=True,
|
|
277
314
|
suggested_for_evals=True,
|
|
315
|
+
supports_doc_extraction=True,
|
|
316
|
+
multimodal_capable=True,
|
|
317
|
+
multimodal_mime_types=[
|
|
318
|
+
# documents
|
|
319
|
+
KilnMimeType.PDF,
|
|
320
|
+
KilnMimeType.TXT,
|
|
321
|
+
KilnMimeType.MD,
|
|
322
|
+
# images
|
|
323
|
+
KilnMimeType.JPG,
|
|
324
|
+
KilnMimeType.PNG,
|
|
325
|
+
],
|
|
278
326
|
),
|
|
279
327
|
KilnModelProvider(
|
|
280
328
|
name=ModelProviderName.openrouter,
|
|
@@ -282,6 +330,17 @@ built_in_models: List[KilnModel] = [
|
|
|
282
330
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
283
331
|
suggested_for_data_gen=True,
|
|
284
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
|
+
],
|
|
285
344
|
),
|
|
286
345
|
],
|
|
287
346
|
),
|
|
@@ -297,6 +356,17 @@ built_in_models: List[KilnModel] = [
|
|
|
297
356
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
298
357
|
suggested_for_evals=True,
|
|
299
358
|
suggested_for_data_gen=True,
|
|
359
|
+
supports_doc_extraction=True,
|
|
360
|
+
multimodal_capable=True,
|
|
361
|
+
multimodal_mime_types=[
|
|
362
|
+
# documents
|
|
363
|
+
KilnMimeType.PDF,
|
|
364
|
+
KilnMimeType.TXT,
|
|
365
|
+
KilnMimeType.MD,
|
|
366
|
+
# images
|
|
367
|
+
KilnMimeType.JPG,
|
|
368
|
+
KilnMimeType.PNG,
|
|
369
|
+
],
|
|
300
370
|
),
|
|
301
371
|
KilnModelProvider(
|
|
302
372
|
name=ModelProviderName.openrouter,
|
|
@@ -304,6 +374,17 @@ built_in_models: List[KilnModel] = [
|
|
|
304
374
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
305
375
|
suggested_for_evals=True,
|
|
306
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
|
+
],
|
|
307
388
|
),
|
|
308
389
|
],
|
|
309
390
|
),
|
|
@@ -317,11 +398,33 @@ built_in_models: List[KilnModel] = [
|
|
|
317
398
|
name=ModelProviderName.openai,
|
|
318
399
|
model_id="gpt-5-nano",
|
|
319
400
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
401
|
+
supports_doc_extraction=True,
|
|
402
|
+
multimodal_capable=True,
|
|
403
|
+
multimodal_mime_types=[
|
|
404
|
+
# documents
|
|
405
|
+
KilnMimeType.PDF,
|
|
406
|
+
KilnMimeType.TXT,
|
|
407
|
+
KilnMimeType.MD,
|
|
408
|
+
# images
|
|
409
|
+
KilnMimeType.JPG,
|
|
410
|
+
KilnMimeType.PNG,
|
|
411
|
+
],
|
|
320
412
|
),
|
|
321
413
|
KilnModelProvider(
|
|
322
414
|
name=ModelProviderName.openrouter,
|
|
323
415
|
model_id="openai/gpt-5-nano",
|
|
324
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
|
+
],
|
|
325
428
|
),
|
|
326
429
|
],
|
|
327
430
|
),
|
|
@@ -354,6 +457,15 @@ built_in_models: List[KilnModel] = [
|
|
|
354
457
|
supports_logprobs=True,
|
|
355
458
|
suggested_for_evals=True,
|
|
356
459
|
suggested_for_data_gen=True,
|
|
460
|
+
supports_doc_extraction=True,
|
|
461
|
+
multimodal_capable=True,
|
|
462
|
+
multimodal_mime_types=[
|
|
463
|
+
# documents
|
|
464
|
+
KilnMimeType.PDF,
|
|
465
|
+
# images
|
|
466
|
+
KilnMimeType.JPG,
|
|
467
|
+
KilnMimeType.PNG,
|
|
468
|
+
],
|
|
357
469
|
),
|
|
358
470
|
KilnModelProvider(
|
|
359
471
|
name=ModelProviderName.openrouter,
|
|
@@ -362,6 +474,15 @@ built_in_models: List[KilnModel] = [
|
|
|
362
474
|
supports_logprobs=True,
|
|
363
475
|
suggested_for_evals=True,
|
|
364
476
|
suggested_for_data_gen=True,
|
|
477
|
+
supports_doc_extraction=True,
|
|
478
|
+
multimodal_capable=True,
|
|
479
|
+
multimodal_mime_types=[
|
|
480
|
+
# documents
|
|
481
|
+
KilnMimeType.PDF,
|
|
482
|
+
# images
|
|
483
|
+
KilnMimeType.JPG,
|
|
484
|
+
KilnMimeType.PNG,
|
|
485
|
+
],
|
|
365
486
|
),
|
|
366
487
|
KilnModelProvider(
|
|
367
488
|
name=ModelProviderName.azure_openai,
|
|
@@ -816,6 +937,25 @@ built_in_models: List[KilnModel] = [
|
|
|
816
937
|
),
|
|
817
938
|
],
|
|
818
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
|
+
),
|
|
819
959
|
# Claude Sonnet 4
|
|
820
960
|
KilnModel(
|
|
821
961
|
family=ModelFamily.claude,
|
|
@@ -902,6 +1042,25 @@ built_in_models: List[KilnModel] = [
|
|
|
902
1042
|
),
|
|
903
1043
|
],
|
|
904
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
|
+
),
|
|
905
1064
|
# Claude Opus 4
|
|
906
1065
|
KilnModel(
|
|
907
1066
|
family=ModelFamily.claude,
|
|
@@ -933,6 +1092,20 @@ built_in_models: List[KilnModel] = [
|
|
|
933
1092
|
suggested_for_data_gen=True,
|
|
934
1093
|
suggested_for_evals=True,
|
|
935
1094
|
reasoning_capable=True,
|
|
1095
|
+
supports_doc_extraction=True,
|
|
1096
|
+
suggested_for_doc_extraction=True,
|
|
1097
|
+
multimodal_capable=True,
|
|
1098
|
+
multimodal_mime_types=[
|
|
1099
|
+
# documents
|
|
1100
|
+
KilnMimeType.PDF,
|
|
1101
|
+
KilnMimeType.CSV,
|
|
1102
|
+
KilnMimeType.TXT,
|
|
1103
|
+
KilnMimeType.HTML,
|
|
1104
|
+
KilnMimeType.MD,
|
|
1105
|
+
# images
|
|
1106
|
+
KilnMimeType.JPG,
|
|
1107
|
+
KilnMimeType.PNG,
|
|
1108
|
+
],
|
|
936
1109
|
gemini_reasoning_enabled=True,
|
|
937
1110
|
thinking_level="medium",
|
|
938
1111
|
),
|
|
@@ -942,9 +1115,31 @@ built_in_models: List[KilnModel] = [
|
|
|
942
1115
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
943
1116
|
suggested_for_data_gen=True,
|
|
944
1117
|
suggested_for_evals=True,
|
|
1118
|
+
supports_doc_extraction=True,
|
|
1119
|
+
suggested_for_doc_extraction=True,
|
|
1120
|
+
multimodal_capable=True,
|
|
1121
|
+
multimodal_mime_types=[
|
|
1122
|
+
# documents
|
|
1123
|
+
KilnMimeType.PDF,
|
|
1124
|
+
KilnMimeType.CSV,
|
|
1125
|
+
KilnMimeType.TXT,
|
|
1126
|
+
KilnMimeType.HTML,
|
|
1127
|
+
KilnMimeType.MD,
|
|
1128
|
+
# images
|
|
1129
|
+
KilnMimeType.JPG,
|
|
1130
|
+
KilnMimeType.PNG,
|
|
1131
|
+
# audio
|
|
1132
|
+
KilnMimeType.MP3,
|
|
1133
|
+
KilnMimeType.WAV,
|
|
1134
|
+
KilnMimeType.OGG,
|
|
1135
|
+
# video
|
|
1136
|
+
KilnMimeType.MP4,
|
|
1137
|
+
KilnMimeType.MOV,
|
|
1138
|
+
],
|
|
945
1139
|
reasoning_capable=True,
|
|
946
1140
|
gemini_reasoning_enabled=True,
|
|
947
1141
|
thinking_level="medium",
|
|
1142
|
+
max_parallel_requests=2,
|
|
948
1143
|
),
|
|
949
1144
|
KilnModelProvider(
|
|
950
1145
|
name=ModelProviderName.vertex,
|
|
@@ -969,6 +1164,20 @@ built_in_models: List[KilnModel] = [
|
|
|
969
1164
|
model_id="google/gemini-2.5-flash",
|
|
970
1165
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
971
1166
|
reasoning_capable=True,
|
|
1167
|
+
supports_doc_extraction=True,
|
|
1168
|
+
suggested_for_doc_extraction=True,
|
|
1169
|
+
multimodal_capable=True,
|
|
1170
|
+
multimodal_mime_types=[
|
|
1171
|
+
# documents
|
|
1172
|
+
KilnMimeType.PDF,
|
|
1173
|
+
KilnMimeType.CSV,
|
|
1174
|
+
KilnMimeType.TXT,
|
|
1175
|
+
KilnMimeType.HTML,
|
|
1176
|
+
KilnMimeType.MD,
|
|
1177
|
+
# images
|
|
1178
|
+
KilnMimeType.JPG,
|
|
1179
|
+
KilnMimeType.PNG,
|
|
1180
|
+
],
|
|
972
1181
|
gemini_reasoning_enabled=True,
|
|
973
1182
|
),
|
|
974
1183
|
KilnModelProvider(
|
|
@@ -977,6 +1186,27 @@ built_in_models: List[KilnModel] = [
|
|
|
977
1186
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
978
1187
|
reasoning_capable=True,
|
|
979
1188
|
thinking_level="medium",
|
|
1189
|
+
supports_doc_extraction=True,
|
|
1190
|
+
suggested_for_doc_extraction=True,
|
|
1191
|
+
multimodal_capable=True,
|
|
1192
|
+
multimodal_mime_types=[
|
|
1193
|
+
# documents
|
|
1194
|
+
KilnMimeType.PDF,
|
|
1195
|
+
KilnMimeType.CSV,
|
|
1196
|
+
KilnMimeType.TXT,
|
|
1197
|
+
KilnMimeType.HTML,
|
|
1198
|
+
KilnMimeType.MD,
|
|
1199
|
+
# images
|
|
1200
|
+
KilnMimeType.JPG,
|
|
1201
|
+
KilnMimeType.PNG,
|
|
1202
|
+
# audio
|
|
1203
|
+
KilnMimeType.MP3,
|
|
1204
|
+
KilnMimeType.WAV,
|
|
1205
|
+
KilnMimeType.OGG,
|
|
1206
|
+
# video
|
|
1207
|
+
KilnMimeType.MP4,
|
|
1208
|
+
KilnMimeType.MOV,
|
|
1209
|
+
],
|
|
980
1210
|
),
|
|
981
1211
|
KilnModelProvider(
|
|
982
1212
|
name=ModelProviderName.vertex,
|
|
@@ -996,11 +1226,44 @@ built_in_models: List[KilnModel] = [
|
|
|
996
1226
|
KilnModelProvider(
|
|
997
1227
|
name=ModelProviderName.openrouter,
|
|
998
1228
|
model_id="google/gemini-2.0-flash-001",
|
|
1229
|
+
supports_doc_extraction=True,
|
|
1230
|
+
multimodal_capable=True,
|
|
1231
|
+
multimodal_mime_types=[
|
|
1232
|
+
# documents
|
|
1233
|
+
KilnMimeType.PDF,
|
|
1234
|
+
KilnMimeType.CSV,
|
|
1235
|
+
KilnMimeType.TXT,
|
|
1236
|
+
KilnMimeType.HTML,
|
|
1237
|
+
KilnMimeType.MD,
|
|
1238
|
+
# images
|
|
1239
|
+
KilnMimeType.JPG,
|
|
1240
|
+
KilnMimeType.PNG,
|
|
1241
|
+
],
|
|
999
1242
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1000
1243
|
),
|
|
1001
1244
|
KilnModelProvider(
|
|
1002
1245
|
name=ModelProviderName.gemini_api,
|
|
1003
1246
|
model_id="gemini-2.0-flash",
|
|
1247
|
+
supports_doc_extraction=True,
|
|
1248
|
+
multimodal_capable=True,
|
|
1249
|
+
multimodal_mime_types=[
|
|
1250
|
+
# documents
|
|
1251
|
+
KilnMimeType.PDF,
|
|
1252
|
+
KilnMimeType.CSV,
|
|
1253
|
+
KilnMimeType.TXT,
|
|
1254
|
+
KilnMimeType.HTML,
|
|
1255
|
+
KilnMimeType.MD,
|
|
1256
|
+
# images
|
|
1257
|
+
KilnMimeType.JPG,
|
|
1258
|
+
KilnMimeType.PNG,
|
|
1259
|
+
# audio
|
|
1260
|
+
KilnMimeType.MP3,
|
|
1261
|
+
KilnMimeType.WAV,
|
|
1262
|
+
KilnMimeType.OGG,
|
|
1263
|
+
# video
|
|
1264
|
+
KilnMimeType.MP4,
|
|
1265
|
+
KilnMimeType.MOV,
|
|
1266
|
+
],
|
|
1004
1267
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1005
1268
|
),
|
|
1006
1269
|
KilnModelProvider(
|
|
@@ -1020,11 +1283,44 @@ built_in_models: List[KilnModel] = [
|
|
|
1020
1283
|
KilnModelProvider(
|
|
1021
1284
|
name=ModelProviderName.openrouter,
|
|
1022
1285
|
model_id="google/gemini-2.0-flash-lite-001",
|
|
1286
|
+
supports_doc_extraction=True,
|
|
1287
|
+
multimodal_capable=True,
|
|
1288
|
+
multimodal_mime_types=[
|
|
1289
|
+
# documents
|
|
1290
|
+
KilnMimeType.PDF,
|
|
1291
|
+
KilnMimeType.CSV,
|
|
1292
|
+
KilnMimeType.TXT,
|
|
1293
|
+
KilnMimeType.HTML,
|
|
1294
|
+
KilnMimeType.MD,
|
|
1295
|
+
# images
|
|
1296
|
+
KilnMimeType.JPG,
|
|
1297
|
+
KilnMimeType.PNG,
|
|
1298
|
+
],
|
|
1023
1299
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1024
1300
|
),
|
|
1025
1301
|
KilnModelProvider(
|
|
1026
1302
|
name=ModelProviderName.gemini_api,
|
|
1027
1303
|
model_id="gemini-2.0-flash-lite",
|
|
1304
|
+
supports_doc_extraction=True,
|
|
1305
|
+
multimodal_capable=True,
|
|
1306
|
+
multimodal_mime_types=[
|
|
1307
|
+
# documents
|
|
1308
|
+
KilnMimeType.PDF,
|
|
1309
|
+
KilnMimeType.CSV,
|
|
1310
|
+
KilnMimeType.TXT,
|
|
1311
|
+
KilnMimeType.HTML,
|
|
1312
|
+
KilnMimeType.MD,
|
|
1313
|
+
# images
|
|
1314
|
+
KilnMimeType.JPG,
|
|
1315
|
+
KilnMimeType.PNG,
|
|
1316
|
+
# audio
|
|
1317
|
+
KilnMimeType.MP3,
|
|
1318
|
+
KilnMimeType.WAV,
|
|
1319
|
+
KilnMimeType.OGG,
|
|
1320
|
+
# video
|
|
1321
|
+
KilnMimeType.MP4,
|
|
1322
|
+
KilnMimeType.MOV,
|
|
1323
|
+
],
|
|
1028
1324
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1029
1325
|
),
|
|
1030
1326
|
KilnModelProvider(
|
|
@@ -1322,6 +1618,19 @@ built_in_models: List[KilnModel] = [
|
|
|
1322
1618
|
),
|
|
1323
1619
|
],
|
|
1324
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
|
+
),
|
|
1325
1634
|
# Magistral Medium (Thinking)
|
|
1326
1635
|
KilnModel(
|
|
1327
1636
|
family=ModelFamily.mistral,
|
|
@@ -1941,45 +2250,232 @@ built_in_models: List[KilnModel] = [
|
|
|
1941
2250
|
),
|
|
1942
2251
|
],
|
|
1943
2252
|
),
|
|
1944
|
-
# Qwen 2.5
|
|
2253
|
+
# Qwen 2.5 VL 72B
|
|
1945
2254
|
KilnModel(
|
|
1946
2255
|
family=ModelFamily.qwen,
|
|
1947
|
-
name=ModelName.
|
|
1948
|
-
friendly_name="Qwen 2.5
|
|
2256
|
+
name=ModelName.qwen_2p5_vl_72b,
|
|
2257
|
+
friendly_name="Qwen 2.5 VL 72B (Vision-Language)",
|
|
1949
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
|
+
),
|
|
1950
2276
|
KilnModelProvider(
|
|
1951
2277
|
name=ModelProviderName.openrouter,
|
|
1952
|
-
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",
|
|
1953
2311
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
1954
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,
|
|
1955
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=[
|
|
1956
2333
|
KilnModelProvider(
|
|
1957
2334
|
name=ModelProviderName.ollama,
|
|
1958
|
-
model_id="qwen2.
|
|
2335
|
+
model_id="qwen2.5vl:32b",
|
|
2336
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1959
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,
|
|
1960
2349
|
),
|
|
1961
2350
|
KilnModelProvider(
|
|
1962
|
-
name=ModelProviderName.
|
|
1963
|
-
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,
|
|
1964
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,
|
|
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,
|
|
1965
2397
|
),
|
|
1966
2398
|
],
|
|
1967
2399
|
),
|
|
1968
|
-
# Qwen 2.5
|
|
2400
|
+
# Qwen 2.5 VL 7B
|
|
1969
2401
|
KilnModel(
|
|
1970
2402
|
family=ModelFamily.qwen,
|
|
1971
|
-
name=ModelName.
|
|
1972
|
-
friendly_name="Qwen 2.5
|
|
2403
|
+
name=ModelName.qwen_2p5_vl_7b,
|
|
2404
|
+
friendly_name="Qwen 2.5 VL 7B (Vision-Language)",
|
|
1973
2405
|
providers=[
|
|
1974
2406
|
KilnModelProvider(
|
|
1975
|
-
name=ModelProviderName.
|
|
1976
|
-
|
|
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,
|
|
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,
|
|
1977
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=[
|
|
1978
2463
|
KilnModelProvider(
|
|
1979
2464
|
name=ModelProviderName.ollama,
|
|
1980
|
-
model_id="qwen2.
|
|
1981
|
-
|
|
2465
|
+
model_id="qwen2.5vl:3b",
|
|
2466
|
+
supports_structured_output=False,
|
|
1982
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,
|
|
1983
2479
|
),
|
|
1984
2480
|
],
|
|
1985
2481
|
),
|
|
@@ -2007,6 +2503,48 @@ built_in_models: List[KilnModel] = [
|
|
|
2007
2503
|
),
|
|
2008
2504
|
],
|
|
2009
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
|
+
),
|
|
2010
2548
|
# Mistral Small 3
|
|
2011
2549
|
KilnModel(
|
|
2012
2550
|
family=ModelFamily.mistral,
|
|
@@ -2098,6 +2636,29 @@ built_in_models: List[KilnModel] = [
|
|
|
2098
2636
|
),
|
|
2099
2637
|
],
|
|
2100
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
|
+
),
|
|
2101
2662
|
# DeepSeek 3.1
|
|
2102
2663
|
KilnModel(
|
|
2103
2664
|
family=ModelFamily.deepseek,
|
|
@@ -2107,7 +2668,7 @@ built_in_models: List[KilnModel] = [
|
|
|
2107
2668
|
KilnModelProvider(
|
|
2108
2669
|
name=ModelProviderName.openrouter,
|
|
2109
2670
|
model_id="deepseek/deepseek-chat-v3.1",
|
|
2110
|
-
structured_output_mode=StructuredOutputMode.
|
|
2671
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2111
2672
|
supports_data_gen=True,
|
|
2112
2673
|
),
|
|
2113
2674
|
KilnModelProvider(
|
|
@@ -2116,6 +2677,12 @@ built_in_models: List[KilnModel] = [
|
|
|
2116
2677
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2117
2678
|
supports_data_gen=True,
|
|
2118
2679
|
),
|
|
2680
|
+
KilnModelProvider(
|
|
2681
|
+
name=ModelProviderName.siliconflow_cn,
|
|
2682
|
+
model_id="Pro/deepseek-ai/DeepSeek-V3.1",
|
|
2683
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2684
|
+
supports_data_gen=True,
|
|
2685
|
+
),
|
|
2119
2686
|
],
|
|
2120
2687
|
),
|
|
2121
2688
|
# DeepSeek 3
|
|
@@ -2521,6 +3088,76 @@ built_in_models: List[KilnModel] = [
|
|
|
2521
3088
|
),
|
|
2522
3089
|
],
|
|
2523
3090
|
),
|
|
3091
|
+
# Qwen 3 Next 80B A3B
|
|
3092
|
+
KilnModel(
|
|
3093
|
+
family=ModelFamily.qwen,
|
|
3094
|
+
name=ModelName.qwen_3_next_80b_a3b,
|
|
3095
|
+
friendly_name="Qwen 3 Next 80B A3B (Instruct)",
|
|
3096
|
+
providers=[
|
|
3097
|
+
KilnModelProvider(
|
|
3098
|
+
name=ModelProviderName.openrouter,
|
|
3099
|
+
model_id="qwen/qwen3-next-80b-a3b-instruct",
|
|
3100
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
3101
|
+
supports_data_gen=True,
|
|
3102
|
+
supports_function_calling=True,
|
|
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
|
+
),
|
|
3118
|
+
],
|
|
3119
|
+
),
|
|
3120
|
+
# Qwen 3 Next 80B A3B (Thinking)
|
|
3121
|
+
KilnModel(
|
|
3122
|
+
family=ModelFamily.qwen,
|
|
3123
|
+
name=ModelName.qwen_3_next_80b_a3b_thinking,
|
|
3124
|
+
friendly_name="Qwen 3 Next 80B A3B (Thinking)",
|
|
3125
|
+
providers=[
|
|
3126
|
+
KilnModelProvider(
|
|
3127
|
+
name=ModelProviderName.openrouter,
|
|
3128
|
+
model_id="qwen/qwen3-next-80b-a3b-thinking",
|
|
3129
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3130
|
+
supports_data_gen=True,
|
|
3131
|
+
supports_function_calling=True,
|
|
3132
|
+
reasoning_capable=True,
|
|
3133
|
+
require_openrouter_reasoning=True,
|
|
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
|
+
),
|
|
3144
|
+
],
|
|
3145
|
+
),
|
|
3146
|
+
# Qwen 3 Max
|
|
3147
|
+
KilnModel(
|
|
3148
|
+
family=ModelFamily.qwen,
|
|
3149
|
+
name=ModelName.qwen_3_max,
|
|
3150
|
+
friendly_name="Qwen 3 Max",
|
|
3151
|
+
providers=[
|
|
3152
|
+
KilnModelProvider(
|
|
3153
|
+
name=ModelProviderName.openrouter,
|
|
3154
|
+
model_id="qwen/qwen3-max",
|
|
3155
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
3156
|
+
supports_data_gen=True,
|
|
3157
|
+
supports_function_calling=True,
|
|
3158
|
+
),
|
|
3159
|
+
],
|
|
3160
|
+
),
|
|
2524
3161
|
# Qwen 3 0.6B
|
|
2525
3162
|
KilnModel(
|
|
2526
3163
|
family=ModelFamily.qwen,
|
|
@@ -3011,6 +3648,34 @@ built_in_models: List[KilnModel] = [
|
|
|
3011
3648
|
),
|
|
3012
3649
|
],
|
|
3013
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
|
+
),
|
|
3014
3679
|
# Qwen 3 235B (22B Active) 2507 Version
|
|
3015
3680
|
KilnModel(
|
|
3016
3681
|
family=ModelFamily.qwen,
|
|
@@ -3204,6 +3869,75 @@ built_in_models: List[KilnModel] = [
|
|
|
3204
3869
|
),
|
|
3205
3870
|
],
|
|
3206
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
|
+
),
|
|
3207
3941
|
# GLM 4.5
|
|
3208
3942
|
KilnModel(
|
|
3209
3943
|
family=ModelFamily.glm,
|
|
@@ -3222,6 +3956,13 @@ built_in_models: List[KilnModel] = [
|
|
|
3222
3956
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3223
3957
|
reasoning_capable=True,
|
|
3224
3958
|
),
|
|
3959
|
+
KilnModelProvider(
|
|
3960
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3961
|
+
model_id="zai-org/GLM-4.5",
|
|
3962
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3963
|
+
reasoning_capable=True,
|
|
3964
|
+
reasoning_optional_for_structured_output=True,
|
|
3965
|
+
),
|
|
3225
3966
|
],
|
|
3226
3967
|
),
|
|
3227
3968
|
# GLM 4.5 AIR
|
|
@@ -3249,6 +3990,13 @@ built_in_models: List[KilnModel] = [
|
|
|
3249
3990
|
reasoning_capable=True,
|
|
3250
3991
|
parser=ModelParserID.r1_thinking,
|
|
3251
3992
|
),
|
|
3993
|
+
KilnModelProvider(
|
|
3994
|
+
name=ModelProviderName.siliconflow_cn,
|
|
3995
|
+
model_id="zai-org/GLM-4.5-Air",
|
|
3996
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
3997
|
+
reasoning_capable=True,
|
|
3998
|
+
reasoning_optional_for_structured_output=True,
|
|
3999
|
+
),
|
|
3252
4000
|
],
|
|
3253
4001
|
),
|
|
3254
4002
|
# Kimi K2 Instruct
|
|
@@ -3260,8 +4008,9 @@ built_in_models: List[KilnModel] = [
|
|
|
3260
4008
|
KilnModelProvider(
|
|
3261
4009
|
name=ModelProviderName.fireworks_ai,
|
|
3262
4010
|
model_id="accounts/fireworks/models/kimi-k2-instruct",
|
|
3263
|
-
structured_output_mode=StructuredOutputMode.
|
|
3264
|
-
|
|
4011
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4012
|
+
supports_data_gen=True,
|
|
4013
|
+
suggested_for_evals=True,
|
|
3265
4014
|
),
|
|
3266
4015
|
KilnModelProvider(
|
|
3267
4016
|
name=ModelProviderName.openrouter,
|
|
@@ -3281,7 +4030,7 @@ built_in_models: List[KilnModel] = [
|
|
|
3281
4030
|
name=ModelProviderName.groq,
|
|
3282
4031
|
model_id="moonshotai/kimi-k2-instruct",
|
|
3283
4032
|
supports_data_gen=True,
|
|
3284
|
-
structured_output_mode=StructuredOutputMode.
|
|
4033
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
3285
4034
|
suggested_for_evals=True,
|
|
3286
4035
|
),
|
|
3287
4036
|
KilnModelProvider(
|
|
@@ -3293,6 +4042,51 @@ built_in_models: List[KilnModel] = [
|
|
|
3293
4042
|
),
|
|
3294
4043
|
],
|
|
3295
4044
|
),
|
|
4045
|
+
# Kimi K2 Instruct 0905
|
|
4046
|
+
KilnModel(
|
|
4047
|
+
family=ModelFamily.kimi,
|
|
4048
|
+
name=ModelName.kimi_k2_0905,
|
|
4049
|
+
friendly_name="Kimi K2 0905",
|
|
4050
|
+
providers=[
|
|
4051
|
+
KilnModelProvider(
|
|
4052
|
+
name=ModelProviderName.openrouter,
|
|
4053
|
+
model_id="moonshotai/kimi-k2-0905",
|
|
4054
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4055
|
+
supports_data_gen=True,
|
|
4056
|
+
suggested_for_evals=True,
|
|
4057
|
+
),
|
|
4058
|
+
KilnModelProvider(
|
|
4059
|
+
name=ModelProviderName.fireworks_ai,
|
|
4060
|
+
model_id="accounts/fireworks/models/kimi-k2-instruct-0905",
|
|
4061
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4062
|
+
supports_data_gen=True,
|
|
4063
|
+
suggested_for_evals=True,
|
|
4064
|
+
),
|
|
4065
|
+
KilnModelProvider(
|
|
4066
|
+
name=ModelProviderName.together_ai,
|
|
4067
|
+
model_id="moonshotai/Kimi-K2-Instruct-0905",
|
|
4068
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
4069
|
+
supports_data_gen=True,
|
|
4070
|
+
suggested_for_evals=True,
|
|
4071
|
+
# this model on this provider currently fails the tool call test, but might work in the future
|
|
4072
|
+
supports_function_calling=False,
|
|
4073
|
+
),
|
|
4074
|
+
KilnModelProvider(
|
|
4075
|
+
name=ModelProviderName.groq,
|
|
4076
|
+
model_id="moonshotai/kimi-k2-instruct-0905",
|
|
4077
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4078
|
+
supports_data_gen=True,
|
|
4079
|
+
suggested_for_evals=True,
|
|
4080
|
+
),
|
|
4081
|
+
KilnModelProvider(
|
|
4082
|
+
name=ModelProviderName.siliconflow_cn,
|
|
4083
|
+
model_id="Pro/moonshotai/Kimi-K2-Instruct-0905",
|
|
4084
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4085
|
+
supports_data_gen=True,
|
|
4086
|
+
suggested_for_evals=True,
|
|
4087
|
+
),
|
|
4088
|
+
],
|
|
4089
|
+
),
|
|
3296
4090
|
KilnModel(
|
|
3297
4091
|
family=ModelFamily.kimi,
|
|
3298
4092
|
name=ModelName.kimi_dev_72b,
|
|
@@ -3442,6 +4236,59 @@ built_in_models: List[KilnModel] = [
|
|
|
3442
4236
|
),
|
|
3443
4237
|
],
|
|
3444
4238
|
),
|
|
4239
|
+
# Bytedance
|
|
4240
|
+
KilnModel(
|
|
4241
|
+
family=ModelFamily.bytedance,
|
|
4242
|
+
name=ModelName.bytedance_seed_oss_36b,
|
|
4243
|
+
friendly_name="ByteDance Seed OSS 36B",
|
|
4244
|
+
providers=[
|
|
4245
|
+
KilnModelProvider(
|
|
4246
|
+
name=ModelProviderName.openrouter,
|
|
4247
|
+
model_id="bytedance/seed-oss-36b-instruct",
|
|
4248
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4249
|
+
reasoning_capable=True,
|
|
4250
|
+
supports_data_gen=True,
|
|
4251
|
+
supports_function_calling=False,
|
|
4252
|
+
),
|
|
4253
|
+
KilnModelProvider(
|
|
4254
|
+
name=ModelProviderName.siliconflow_cn,
|
|
4255
|
+
model_id="ByteDance-Seed/Seed-OSS-36B-Instruct",
|
|
4256
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
4257
|
+
reasoning_capable=True,
|
|
4258
|
+
supports_data_gen=True,
|
|
4259
|
+
supports_function_calling=False,
|
|
4260
|
+
reasoning_optional_for_structured_output=True,
|
|
4261
|
+
),
|
|
4262
|
+
],
|
|
4263
|
+
),
|
|
4264
|
+
# StepFun
|
|
4265
|
+
KilnModel(
|
|
4266
|
+
family=ModelFamily.stepfun,
|
|
4267
|
+
name=ModelName.stepfun_step3,
|
|
4268
|
+
friendly_name="StepFun Step3",
|
|
4269
|
+
providers=[
|
|
4270
|
+
KilnModelProvider(
|
|
4271
|
+
name=ModelProviderName.openrouter,
|
|
4272
|
+
model_id="stepfun-ai/step3",
|
|
4273
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
4274
|
+
reasoning_capable=True,
|
|
4275
|
+
supports_function_calling=False,
|
|
4276
|
+
),
|
|
4277
|
+
KilnModelProvider(
|
|
4278
|
+
name=ModelProviderName.siliconflow_cn,
|
|
4279
|
+
model_id="stepfun-ai/step3",
|
|
4280
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
4281
|
+
reasoning_capable=True,
|
|
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
|
+
],
|
|
4289
|
+
),
|
|
4290
|
+
],
|
|
4291
|
+
),
|
|
3445
4292
|
]
|
|
3446
4293
|
|
|
3447
4294
|
|
|
@@ -3452,6 +4299,17 @@ def get_model_by_name(name: ModelName) -> KilnModel:
|
|
|
3452
4299
|
raise ValueError(f"Model {name} not found in the list of built-in models")
|
|
3453
4300
|
|
|
3454
4301
|
|
|
4302
|
+
def built_in_models_from_provider(
|
|
4303
|
+
provider_name: ModelProviderName, model_name: str
|
|
4304
|
+
) -> KilnModelProvider | None:
|
|
4305
|
+
for model in built_in_models:
|
|
4306
|
+
if model.name == model_name:
|
|
4307
|
+
for p in model.providers:
|
|
4308
|
+
if p.name == provider_name:
|
|
4309
|
+
return p
|
|
4310
|
+
return None
|
|
4311
|
+
|
|
4312
|
+
|
|
3455
4313
|
def default_structured_output_mode_for_model_provider(
|
|
3456
4314
|
model_name: str,
|
|
3457
4315
|
provider: ModelProviderName,
|