kiln-ai 0.16.0__py3-none-any.whl → 0.18.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.
- kiln_ai/adapters/__init__.py +2 -0
- kiln_ai/adapters/adapter_registry.py +22 -44
- kiln_ai/adapters/chat/__init__.py +8 -0
- kiln_ai/adapters/chat/chat_formatter.py +233 -0
- kiln_ai/adapters/chat/test_chat_formatter.py +131 -0
- kiln_ai/adapters/data_gen/data_gen_prompts.py +121 -36
- kiln_ai/adapters/data_gen/data_gen_task.py +49 -36
- kiln_ai/adapters/data_gen/test_data_gen_task.py +330 -40
- kiln_ai/adapters/eval/base_eval.py +7 -6
- kiln_ai/adapters/eval/eval_runner.py +9 -2
- kiln_ai/adapters/eval/g_eval.py +40 -17
- kiln_ai/adapters/eval/test_base_eval.py +174 -17
- kiln_ai/adapters/eval/test_eval_runner.py +3 -0
- kiln_ai/adapters/eval/test_g_eval.py +116 -5
- kiln_ai/adapters/fine_tune/base_finetune.py +3 -8
- kiln_ai/adapters/fine_tune/dataset_formatter.py +135 -273
- kiln_ai/adapters/fine_tune/test_base_finetune.py +10 -10
- kiln_ai/adapters/fine_tune/test_dataset_formatter.py +287 -353
- kiln_ai/adapters/fine_tune/test_fireworks_tinetune.py +3 -3
- kiln_ai/adapters/fine_tune/test_openai_finetune.py +6 -6
- kiln_ai/adapters/fine_tune/test_together_finetune.py +1 -0
- kiln_ai/adapters/fine_tune/test_vertex_finetune.py +6 -11
- kiln_ai/adapters/fine_tune/together_finetune.py +13 -2
- kiln_ai/adapters/ml_model_list.py +370 -84
- kiln_ai/adapters/model_adapters/base_adapter.py +73 -26
- kiln_ai/adapters/model_adapters/litellm_adapter.py +88 -97
- kiln_ai/adapters/model_adapters/litellm_config.py +3 -2
- kiln_ai/adapters/model_adapters/test_base_adapter.py +235 -61
- kiln_ai/adapters/model_adapters/test_litellm_adapter.py +104 -21
- kiln_ai/adapters/model_adapters/test_saving_adapter_results.py +41 -0
- kiln_ai/adapters/model_adapters/test_structured_output.py +44 -12
- kiln_ai/adapters/parsers/parser_registry.py +0 -2
- kiln_ai/adapters/parsers/r1_parser.py +0 -1
- kiln_ai/adapters/prompt_builders.py +0 -16
- kiln_ai/adapters/provider_tools.py +27 -9
- kiln_ai/adapters/remote_config.py +66 -0
- kiln_ai/adapters/repair/repair_task.py +1 -6
- kiln_ai/adapters/repair/test_repair_task.py +24 -3
- kiln_ai/adapters/test_adapter_registry.py +88 -28
- kiln_ai/adapters/test_ml_model_list.py +176 -0
- kiln_ai/adapters/test_prompt_adaptors.py +17 -7
- kiln_ai/adapters/test_prompt_builders.py +3 -16
- kiln_ai/adapters/test_provider_tools.py +69 -20
- kiln_ai/adapters/test_remote_config.py +100 -0
- kiln_ai/datamodel/__init__.py +0 -2
- kiln_ai/datamodel/datamodel_enums.py +38 -13
- kiln_ai/datamodel/eval.py +32 -0
- kiln_ai/datamodel/finetune.py +12 -8
- kiln_ai/datamodel/task.py +68 -7
- kiln_ai/datamodel/task_output.py +0 -2
- kiln_ai/datamodel/task_run.py +0 -2
- kiln_ai/datamodel/test_basemodel.py +2 -1
- kiln_ai/datamodel/test_dataset_split.py +0 -8
- kiln_ai/datamodel/test_eval_model.py +146 -4
- kiln_ai/datamodel/test_models.py +33 -10
- kiln_ai/datamodel/test_task.py +168 -2
- kiln_ai/utils/config.py +3 -2
- kiln_ai/utils/dataset_import.py +1 -1
- kiln_ai/utils/logging.py +166 -0
- kiln_ai/utils/test_config.py +23 -0
- kiln_ai/utils/test_dataset_import.py +30 -0
- {kiln_ai-0.16.0.dist-info → kiln_ai-0.18.0.dist-info}/METADATA +2 -2
- kiln_ai-0.18.0.dist-info/RECORD +115 -0
- kiln_ai-0.16.0.dist-info/RECORD +0 -108
- {kiln_ai-0.16.0.dist-info → kiln_ai-0.18.0.dist-info}/WHEEL +0 -0
- {kiln_ai-0.16.0.dist-info → kiln_ai-0.18.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import List, Literal
|
|
3
3
|
|
|
4
4
|
from pydantic import BaseModel
|
|
5
5
|
|
|
6
|
-
from kiln_ai.datamodel import
|
|
6
|
+
from kiln_ai.datamodel.datamodel_enums import (
|
|
7
|
+
ChatStrategy,
|
|
8
|
+
ModelProviderName,
|
|
9
|
+
StructuredOutputMode,
|
|
10
|
+
)
|
|
7
11
|
|
|
8
12
|
"""
|
|
9
13
|
Provides model configuration and management for various LLM providers and models.
|
|
@@ -12,28 +16,6 @@ including configuration, validation, and instantiation of language models.
|
|
|
12
16
|
"""
|
|
13
17
|
|
|
14
18
|
|
|
15
|
-
class ModelProviderName(str, Enum):
|
|
16
|
-
"""
|
|
17
|
-
Enumeration of supported AI model providers.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
openai = "openai"
|
|
21
|
-
groq = "groq"
|
|
22
|
-
amazon_bedrock = "amazon_bedrock"
|
|
23
|
-
ollama = "ollama"
|
|
24
|
-
openrouter = "openrouter"
|
|
25
|
-
fireworks_ai = "fireworks_ai"
|
|
26
|
-
kiln_fine_tune = "kiln_fine_tune"
|
|
27
|
-
kiln_custom_registry = "kiln_custom_registry"
|
|
28
|
-
openai_compatible = "openai_compatible"
|
|
29
|
-
anthropic = "anthropic"
|
|
30
|
-
gemini_api = "gemini_api"
|
|
31
|
-
azure_openai = "azure_openai"
|
|
32
|
-
huggingface = "huggingface"
|
|
33
|
-
vertex = "vertex"
|
|
34
|
-
together_ai = "together_ai"
|
|
35
|
-
|
|
36
|
-
|
|
37
19
|
class ModelFamily(str, Enum):
|
|
38
20
|
"""
|
|
39
21
|
Enumeration of supported model families/architectures.
|
|
@@ -51,6 +33,7 @@ class ModelFamily(str, Enum):
|
|
|
51
33
|
deepseek = "deepseek"
|
|
52
34
|
dolphin = "dolphin"
|
|
53
35
|
grok = "grok"
|
|
36
|
+
kimi = "kimi"
|
|
54
37
|
|
|
55
38
|
|
|
56
39
|
# Where models have instruct and raw versions, instruct is default and raw is specified
|
|
@@ -68,6 +51,8 @@ class ModelName(str, Enum):
|
|
|
68
51
|
llama_3_2_11b = "llama_3_2_11b"
|
|
69
52
|
llama_3_2_90b = "llama_3_2_90b"
|
|
70
53
|
llama_3_3_70b = "llama_3_3_70b"
|
|
54
|
+
llama_4_maverick = "llama_4_maverick"
|
|
55
|
+
llama_4_scout = "llama_4_scout"
|
|
71
56
|
gpt_4o_mini = "gpt_4o_mini"
|
|
72
57
|
gpt_4o = "gpt_4o"
|
|
73
58
|
gpt_4_1 = "gpt_4_1"
|
|
@@ -91,6 +76,9 @@ class ModelName(str, Enum):
|
|
|
91
76
|
phi_4_mini = "phi_4_mini"
|
|
92
77
|
mistral_large = "mistral_large"
|
|
93
78
|
mistral_nemo = "mistral_nemo"
|
|
79
|
+
mistral_small_3 = "mistral_small_3"
|
|
80
|
+
magistral_medium = "magistral_medium"
|
|
81
|
+
magistral_medium_thinking = "magistral_medium_thinking"
|
|
94
82
|
gemma_2_2b = "gemma_2_2b"
|
|
95
83
|
gemma_2_9b = "gemma_2_9b"
|
|
96
84
|
gemma_2_27b = "gemma_2_27b"
|
|
@@ -98,10 +86,14 @@ class ModelName(str, Enum):
|
|
|
98
86
|
gemma_3_4b = "gemma_3_4b"
|
|
99
87
|
gemma_3_12b = "gemma_3_12b"
|
|
100
88
|
gemma_3_27b = "gemma_3_27b"
|
|
89
|
+
gemma_3n_2b = "gemma_3n_2b"
|
|
90
|
+
gemma_3n_4b = "gemma_3n_4b"
|
|
101
91
|
claude_3_5_haiku = "claude_3_5_haiku"
|
|
102
92
|
claude_3_5_sonnet = "claude_3_5_sonnet"
|
|
103
93
|
claude_3_7_sonnet = "claude_3_7_sonnet"
|
|
104
94
|
claude_3_7_sonnet_thinking = "claude_3_7_sonnet_thinking"
|
|
95
|
+
claude_sonnet_4 = "claude_sonnet_4"
|
|
96
|
+
claude_opus_4 = "claude_opus_4"
|
|
105
97
|
gemini_1_5_flash = "gemini_1_5_flash"
|
|
106
98
|
gemini_1_5_flash_8b = "gemini_1_5_flash_8b"
|
|
107
99
|
gemini_1_5_pro = "gemini_1_5_pro"
|
|
@@ -109,6 +101,7 @@ class ModelName(str, Enum):
|
|
|
109
101
|
gemini_2_0_flash_lite = "gemini_2_0_flash_lite"
|
|
110
102
|
gemini_2_5_pro = "gemini_2_5_pro"
|
|
111
103
|
gemini_2_5_flash = "gemini_2_5_flash"
|
|
104
|
+
gemini_2_5_flash_lite = "gemini_2_5_flash_lite"
|
|
112
105
|
nemotron_70b = "nemotron_70b"
|
|
113
106
|
mixtral_8x7b = "mixtral_8x7b"
|
|
114
107
|
qwen_2p5_7b = "qwen_2p5_7b"
|
|
@@ -117,7 +110,7 @@ class ModelName(str, Enum):
|
|
|
117
110
|
qwq_32b = "qwq_32b"
|
|
118
111
|
deepseek_3 = "deepseek_3"
|
|
119
112
|
deepseek_r1 = "deepseek_r1"
|
|
120
|
-
|
|
113
|
+
deepseek_r1_0528 = "deepseek_r1_0528"
|
|
121
114
|
deepseek_r1_distill_qwen_32b = "deepseek_r1_distill_qwen_32b"
|
|
122
115
|
deepseek_r1_distill_llama_70b = "deepseek_r1_distill_llama_70b"
|
|
123
116
|
deepseek_r1_distill_qwen_14b = "deepseek_r1_distill_qwen_14b"
|
|
@@ -126,6 +119,9 @@ class ModelName(str, Enum):
|
|
|
126
119
|
deepseek_r1_distill_llama_8b = "deepseek_r1_distill_llama_8b"
|
|
127
120
|
dolphin_2_9_8x22b = "dolphin_2_9_8x22b"
|
|
128
121
|
grok_2 = "grok_2"
|
|
122
|
+
grok_3 = "grok_3"
|
|
123
|
+
grok_3_mini = "grok_3_mini"
|
|
124
|
+
grok_4 = "grok_4"
|
|
129
125
|
qwen_3_0p6b = "qwen_3_0p6b"
|
|
130
126
|
qwen_3_0p6b_no_thinking = "qwen_3_0p6b_no_thinking"
|
|
131
127
|
qwen_3_1p7b = "qwen_3_1p7b"
|
|
@@ -142,6 +138,7 @@ class ModelName(str, Enum):
|
|
|
142
138
|
qwen_3_32b_no_thinking = "qwen_3_32b_no_thinking"
|
|
143
139
|
qwen_3_235b_a22b = "qwen_3_235b_a22b"
|
|
144
140
|
qwen_3_235b_a22b_no_thinking = "qwen_3_235b_a22b_no_thinking"
|
|
141
|
+
kimi_k2 = "kimi_k2"
|
|
145
142
|
|
|
146
143
|
|
|
147
144
|
class ModelParserID(str, Enum):
|
|
@@ -174,6 +171,7 @@ class KilnModelProvider(BaseModel):
|
|
|
174
171
|
structured_output_mode: The mode we should use to call the model for structured output, if it was trained with structured output.
|
|
175
172
|
parser: A parser to use for the model, if applicable
|
|
176
173
|
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.
|
|
174
|
+
tuned_chat_strategy: Used when a model is finetuned with a specific chat strategy, and it's best to use it at call time.
|
|
177
175
|
"""
|
|
178
176
|
|
|
179
177
|
name: ModelProviderName
|
|
@@ -189,6 +187,9 @@ class KilnModelProvider(BaseModel):
|
|
|
189
187
|
reasoning_capable: bool = False
|
|
190
188
|
supports_logprobs: bool = False
|
|
191
189
|
suggested_for_evals: bool = False
|
|
190
|
+
uncensored: bool = False
|
|
191
|
+
suggested_for_uncensored_data_gen: bool = False
|
|
192
|
+
tuned_chat_strategy: ChatStrategy | None = None
|
|
192
193
|
|
|
193
194
|
# TODO P1: Need a more generalized way to handle custom provider parameters.
|
|
194
195
|
# Making them quite declarative here for now, isolating provider specific logic
|
|
@@ -264,22 +265,16 @@ built_in_models: List[KilnModel] = [
|
|
|
264
265
|
provider_finetune_id="gpt-4.1-mini-2025-04-14",
|
|
265
266
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
266
267
|
supports_logprobs=True,
|
|
267
|
-
suggested_for_data_gen=True,
|
|
268
|
-
suggested_for_evals=True,
|
|
269
268
|
),
|
|
270
269
|
KilnModelProvider(
|
|
271
270
|
name=ModelProviderName.openrouter,
|
|
272
271
|
model_id="openai/gpt-4.1-mini",
|
|
273
272
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
274
273
|
supports_logprobs=True,
|
|
275
|
-
suggested_for_data_gen=True,
|
|
276
|
-
suggested_for_evals=True,
|
|
277
274
|
),
|
|
278
275
|
KilnModelProvider(
|
|
279
276
|
name=ModelProviderName.azure_openai,
|
|
280
277
|
model_id="gpt-4.1-mini",
|
|
281
|
-
suggested_for_data_gen=True,
|
|
282
|
-
suggested_for_evals=True,
|
|
283
278
|
),
|
|
284
279
|
],
|
|
285
280
|
),
|
|
@@ -319,6 +314,8 @@ built_in_models: List[KilnModel] = [
|
|
|
319
314
|
provider_finetune_id="gpt-4o-2024-08-06",
|
|
320
315
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
321
316
|
supports_logprobs=True,
|
|
317
|
+
suggested_for_data_gen=True,
|
|
318
|
+
suggested_for_evals=True,
|
|
322
319
|
),
|
|
323
320
|
KilnModelProvider(
|
|
324
321
|
name=ModelProviderName.openrouter,
|
|
@@ -326,10 +323,14 @@ built_in_models: List[KilnModel] = [
|
|
|
326
323
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
327
324
|
supports_logprobs=True,
|
|
328
325
|
logprobs_openrouter_options=True,
|
|
326
|
+
suggested_for_data_gen=True,
|
|
327
|
+
suggested_for_evals=True,
|
|
329
328
|
),
|
|
330
329
|
KilnModelProvider(
|
|
331
330
|
name=ModelProviderName.azure_openai,
|
|
332
331
|
model_id="gpt-4o",
|
|
332
|
+
suggested_for_data_gen=True,
|
|
333
|
+
suggested_for_evals=True,
|
|
333
334
|
),
|
|
334
335
|
],
|
|
335
336
|
),
|
|
@@ -665,15 +666,11 @@ built_in_models: List[KilnModel] = [
|
|
|
665
666
|
name=ModelProviderName.openrouter,
|
|
666
667
|
structured_output_mode=StructuredOutputMode.function_calling,
|
|
667
668
|
model_id="anthropic/claude-3.7-sonnet",
|
|
668
|
-
suggested_for_data_gen=True,
|
|
669
|
-
suggested_for_evals=True,
|
|
670
669
|
),
|
|
671
670
|
KilnModelProvider(
|
|
672
671
|
name=ModelProviderName.anthropic,
|
|
673
672
|
model_id="claude-3-7-sonnet-20250219",
|
|
674
673
|
structured_output_mode=StructuredOutputMode.function_calling,
|
|
675
|
-
suggested_for_data_gen=True,
|
|
676
|
-
suggested_for_evals=True,
|
|
677
674
|
),
|
|
678
675
|
],
|
|
679
676
|
),
|
|
@@ -700,6 +697,46 @@ built_in_models: List[KilnModel] = [
|
|
|
700
697
|
),
|
|
701
698
|
],
|
|
702
699
|
),
|
|
700
|
+
# Claude Sonnet 4
|
|
701
|
+
KilnModel(
|
|
702
|
+
family=ModelFamily.claude,
|
|
703
|
+
name=ModelName.claude_sonnet_4,
|
|
704
|
+
friendly_name="Claude Sonnet 4",
|
|
705
|
+
providers=[
|
|
706
|
+
KilnModelProvider(
|
|
707
|
+
name=ModelProviderName.openrouter,
|
|
708
|
+
model_id="anthropic/claude-sonnet-4",
|
|
709
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
710
|
+
suggested_for_data_gen=True,
|
|
711
|
+
suggested_for_evals=True,
|
|
712
|
+
),
|
|
713
|
+
KilnModelProvider(
|
|
714
|
+
name=ModelProviderName.anthropic,
|
|
715
|
+
model_id="claude-sonnet-4-20250514",
|
|
716
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
717
|
+
suggested_for_data_gen=True,
|
|
718
|
+
suggested_for_evals=True,
|
|
719
|
+
),
|
|
720
|
+
],
|
|
721
|
+
),
|
|
722
|
+
# Claude Opus 4
|
|
723
|
+
KilnModel(
|
|
724
|
+
family=ModelFamily.claude,
|
|
725
|
+
name=ModelName.claude_opus_4,
|
|
726
|
+
friendly_name="Claude Opus 4",
|
|
727
|
+
providers=[
|
|
728
|
+
KilnModelProvider(
|
|
729
|
+
name=ModelProviderName.openrouter,
|
|
730
|
+
model_id="anthropic/claude-opus-4",
|
|
731
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
732
|
+
),
|
|
733
|
+
KilnModelProvider(
|
|
734
|
+
name=ModelProviderName.anthropic,
|
|
735
|
+
model_id="claude-opus-4-20250514",
|
|
736
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
737
|
+
),
|
|
738
|
+
],
|
|
739
|
+
),
|
|
703
740
|
# Gemini 2.5 Pro
|
|
704
741
|
KilnModel(
|
|
705
742
|
family=ModelFamily.gemini,
|
|
@@ -708,24 +745,31 @@ built_in_models: List[KilnModel] = [
|
|
|
708
745
|
providers=[
|
|
709
746
|
KilnModelProvider(
|
|
710
747
|
name=ModelProviderName.openrouter,
|
|
711
|
-
model_id="google/gemini-2.5-pro
|
|
748
|
+
model_id="google/gemini-2.5-pro",
|
|
712
749
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
713
750
|
suggested_for_data_gen=True,
|
|
714
751
|
suggested_for_evals=True,
|
|
752
|
+
reasoning_capable=True,
|
|
715
753
|
),
|
|
716
754
|
KilnModelProvider(
|
|
717
755
|
name=ModelProviderName.gemini_api,
|
|
718
|
-
model_id="gemini-2.5-pro
|
|
756
|
+
model_id="gemini-2.5-pro",
|
|
719
757
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
720
758
|
suggested_for_data_gen=True,
|
|
721
759
|
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",
|
|
722
763
|
),
|
|
723
764
|
KilnModelProvider(
|
|
724
765
|
name=ModelProviderName.vertex,
|
|
725
|
-
model_id="gemini-2.5-pro
|
|
766
|
+
model_id="gemini-2.5-pro",
|
|
726
767
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
727
768
|
suggested_for_data_gen=True,
|
|
728
769
|
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",
|
|
729
773
|
),
|
|
730
774
|
],
|
|
731
775
|
),
|
|
@@ -737,18 +781,23 @@ built_in_models: List[KilnModel] = [
|
|
|
737
781
|
providers=[
|
|
738
782
|
KilnModelProvider(
|
|
739
783
|
name=ModelProviderName.openrouter,
|
|
740
|
-
model_id="google/gemini-2.5-flash
|
|
784
|
+
model_id="google/gemini-2.5-flash",
|
|
741
785
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
786
|
+
reasoning_capable=True,
|
|
742
787
|
),
|
|
743
788
|
KilnModelProvider(
|
|
744
789
|
name=ModelProviderName.gemini_api,
|
|
745
|
-
model_id="gemini-2.5-flash
|
|
790
|
+
model_id="gemini-2.5-flash",
|
|
746
791
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
792
|
+
reasoning_capable=True,
|
|
793
|
+
thinking_level="medium",
|
|
747
794
|
),
|
|
748
795
|
KilnModelProvider(
|
|
749
796
|
name=ModelProviderName.vertex,
|
|
750
|
-
model_id="gemini-2.5-flash
|
|
797
|
+
model_id="gemini-2.5-flash",
|
|
751
798
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
799
|
+
reasoning_capable=True,
|
|
800
|
+
thinking_level="medium",
|
|
752
801
|
),
|
|
753
802
|
],
|
|
754
803
|
),
|
|
@@ -880,6 +929,52 @@ built_in_models: List[KilnModel] = [
|
|
|
880
929
|
),
|
|
881
930
|
],
|
|
882
931
|
),
|
|
932
|
+
# Llama 4 Maverick Basic
|
|
933
|
+
KilnModel(
|
|
934
|
+
family=ModelFamily.llama,
|
|
935
|
+
name=ModelName.llama_4_maverick,
|
|
936
|
+
friendly_name="Llama 4 Maverick",
|
|
937
|
+
providers=[
|
|
938
|
+
KilnModelProvider(
|
|
939
|
+
name=ModelProviderName.openrouter,
|
|
940
|
+
model_id="meta-llama/llama-4-maverick",
|
|
941
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
942
|
+
),
|
|
943
|
+
KilnModelProvider(
|
|
944
|
+
name=ModelProviderName.fireworks_ai,
|
|
945
|
+
model_id="accounts/fireworks/models/llama4-maverick-instruct-basic",
|
|
946
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
947
|
+
),
|
|
948
|
+
KilnModelProvider(
|
|
949
|
+
name=ModelProviderName.together_ai,
|
|
950
|
+
model_id="meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",
|
|
951
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
952
|
+
),
|
|
953
|
+
],
|
|
954
|
+
),
|
|
955
|
+
# Llama 4 Scout Basic
|
|
956
|
+
KilnModel(
|
|
957
|
+
family=ModelFamily.llama,
|
|
958
|
+
name=ModelName.llama_4_scout,
|
|
959
|
+
friendly_name="Llama 4 Scout",
|
|
960
|
+
providers=[
|
|
961
|
+
KilnModelProvider(
|
|
962
|
+
name=ModelProviderName.openrouter,
|
|
963
|
+
model_id="meta-llama/llama-4-scout",
|
|
964
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
965
|
+
),
|
|
966
|
+
KilnModelProvider(
|
|
967
|
+
name=ModelProviderName.fireworks_ai,
|
|
968
|
+
model_id="accounts/fireworks/models/llama4-scout-instruct-basic",
|
|
969
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
970
|
+
),
|
|
971
|
+
KilnModelProvider(
|
|
972
|
+
name=ModelProviderName.together_ai,
|
|
973
|
+
model_id="meta-llama/Llama-4-Scout-17B-16E-Instruct",
|
|
974
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
975
|
+
),
|
|
976
|
+
],
|
|
977
|
+
),
|
|
883
978
|
# Llama 3.1-8b
|
|
884
979
|
KilnModel(
|
|
885
980
|
family=ModelFamily.llama,
|
|
@@ -920,7 +1015,7 @@ built_in_models: List[KilnModel] = [
|
|
|
920
1015
|
model_id="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
|
|
921
1016
|
supports_data_gen=False,
|
|
922
1017
|
structured_output_mode=StructuredOutputMode.function_calling_weak,
|
|
923
|
-
provider_finetune_id="meta-llama/Meta-Llama-3.1-8B-Instruct",
|
|
1018
|
+
provider_finetune_id="meta-llama/Meta-Llama-3.1-8B-Instruct-Reference",
|
|
924
1019
|
),
|
|
925
1020
|
],
|
|
926
1021
|
),
|
|
@@ -939,8 +1034,7 @@ built_in_models: List[KilnModel] = [
|
|
|
939
1034
|
KilnModelProvider(
|
|
940
1035
|
name=ModelProviderName.openrouter,
|
|
941
1036
|
supports_data_gen=False,
|
|
942
|
-
|
|
943
|
-
structured_output_mode=StructuredOutputMode.function_calling_weak,
|
|
1037
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
944
1038
|
model_id="meta-llama/llama-3.1-70b-instruct",
|
|
945
1039
|
supports_logprobs=True,
|
|
946
1040
|
logprobs_openrouter_options=True,
|
|
@@ -961,7 +1055,7 @@ built_in_models: List[KilnModel] = [
|
|
|
961
1055
|
model_id="meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
|
|
962
1056
|
supports_data_gen=False,
|
|
963
1057
|
structured_output_mode=StructuredOutputMode.function_calling_weak,
|
|
964
|
-
provider_finetune_id="meta-llama/Meta-Llama-3.1-70B-Instruct",
|
|
1058
|
+
provider_finetune_id="meta-llama/Meta-Llama-3.1-70B-Instruct-Reference",
|
|
965
1059
|
),
|
|
966
1060
|
],
|
|
967
1061
|
),
|
|
@@ -1001,6 +1095,33 @@ built_in_models: List[KilnModel] = [
|
|
|
1001
1095
|
),
|
|
1002
1096
|
],
|
|
1003
1097
|
),
|
|
1098
|
+
# Magistral Medium (Thinking)
|
|
1099
|
+
KilnModel(
|
|
1100
|
+
family=ModelFamily.mistral,
|
|
1101
|
+
name=ModelName.magistral_medium_thinking,
|
|
1102
|
+
friendly_name="Magistral Medium (Thinking)",
|
|
1103
|
+
providers=[
|
|
1104
|
+
KilnModelProvider(
|
|
1105
|
+
name=ModelProviderName.openrouter,
|
|
1106
|
+
model_id="mistralai/magistral-medium-2506:thinking",
|
|
1107
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1108
|
+
# Thinking tokens are hidden by Mistral so not "reasoning" from Kiln API POV
|
|
1109
|
+
),
|
|
1110
|
+
],
|
|
1111
|
+
),
|
|
1112
|
+
# Magistral Medium (No Thinking)
|
|
1113
|
+
KilnModel(
|
|
1114
|
+
family=ModelFamily.mistral,
|
|
1115
|
+
name=ModelName.magistral_medium,
|
|
1116
|
+
friendly_name="Magistral Medium (No Thinking)",
|
|
1117
|
+
providers=[
|
|
1118
|
+
KilnModelProvider(
|
|
1119
|
+
name=ModelProviderName.openrouter,
|
|
1120
|
+
model_id="mistralai/magistral-medium-2506",
|
|
1121
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1122
|
+
),
|
|
1123
|
+
],
|
|
1124
|
+
),
|
|
1004
1125
|
# Mistral Nemo
|
|
1005
1126
|
KilnModel(
|
|
1006
1127
|
family=ModelFamily.mistral,
|
|
@@ -1024,16 +1145,22 @@ built_in_models: List[KilnModel] = [
|
|
|
1024
1145
|
name=ModelProviderName.amazon_bedrock,
|
|
1025
1146
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1026
1147
|
model_id="mistral.mistral-large-2407-v1:0",
|
|
1148
|
+
uncensored=True,
|
|
1149
|
+
suggested_for_uncensored_data_gen=True,
|
|
1027
1150
|
),
|
|
1028
1151
|
KilnModelProvider(
|
|
1029
1152
|
name=ModelProviderName.openrouter,
|
|
1030
1153
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1031
1154
|
model_id="mistralai/mistral-large",
|
|
1155
|
+
uncensored=True,
|
|
1156
|
+
suggested_for_uncensored_data_gen=True,
|
|
1032
1157
|
),
|
|
1033
1158
|
KilnModelProvider(
|
|
1034
1159
|
name=ModelProviderName.ollama,
|
|
1035
1160
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1036
1161
|
model_id="mistral-large",
|
|
1162
|
+
uncensored=True,
|
|
1163
|
+
suggested_for_uncensored_data_gen=True,
|
|
1037
1164
|
),
|
|
1038
1165
|
],
|
|
1039
1166
|
),
|
|
@@ -1062,16 +1189,6 @@ built_in_models: List[KilnModel] = [
|
|
|
1062
1189
|
supports_data_gen=False,
|
|
1063
1190
|
model_id="llama3.2:1b",
|
|
1064
1191
|
),
|
|
1065
|
-
KilnModelProvider(
|
|
1066
|
-
name=ModelProviderName.huggingface,
|
|
1067
|
-
model_id="meta-llama/Llama-3.2-1B-Instruct",
|
|
1068
|
-
supports_structured_output=False,
|
|
1069
|
-
supports_data_gen=False,
|
|
1070
|
-
),
|
|
1071
|
-
KilnModelProvider(
|
|
1072
|
-
name=ModelProviderName.together_ai,
|
|
1073
|
-
provider_finetune_id="meta-llama/Llama-3.2-1B-Instruct",
|
|
1074
|
-
),
|
|
1075
1192
|
],
|
|
1076
1193
|
),
|
|
1077
1194
|
# Llama 3.2 3B
|
|
@@ -1097,18 +1214,11 @@ built_in_models: List[KilnModel] = [
|
|
|
1097
1214
|
supports_data_gen=False,
|
|
1098
1215
|
model_id="llama3.2",
|
|
1099
1216
|
),
|
|
1100
|
-
KilnModelProvider(
|
|
1101
|
-
name=ModelProviderName.huggingface,
|
|
1102
|
-
model_id="meta-llama/Llama-3.2-3B-Instruct",
|
|
1103
|
-
supports_structured_output=False,
|
|
1104
|
-
supports_data_gen=False,
|
|
1105
|
-
),
|
|
1106
1217
|
KilnModelProvider(
|
|
1107
1218
|
name=ModelProviderName.together_ai,
|
|
1108
1219
|
model_id="meta-llama/Llama-3.2-3B-Instruct-Turbo",
|
|
1109
1220
|
supports_structured_output=False,
|
|
1110
1221
|
supports_data_gen=False,
|
|
1111
|
-
provider_finetune_id="meta-llama/Llama-3.2-3B-Instruct",
|
|
1112
1222
|
),
|
|
1113
1223
|
],
|
|
1114
1224
|
),
|
|
@@ -1158,10 +1268,6 @@ built_in_models: List[KilnModel] = [
|
|
|
1158
1268
|
name=ModelName.llama_3_2_90b,
|
|
1159
1269
|
friendly_name="Llama 3.2 90B",
|
|
1160
1270
|
providers=[
|
|
1161
|
-
KilnModelProvider(
|
|
1162
|
-
name=ModelProviderName.groq,
|
|
1163
|
-
model_id="llama-3.2-90b-vision-preview",
|
|
1164
|
-
),
|
|
1165
1271
|
KilnModelProvider(
|
|
1166
1272
|
name=ModelProviderName.openrouter,
|
|
1167
1273
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
@@ -1434,10 +1540,51 @@ built_in_models: List[KilnModel] = [
|
|
|
1434
1540
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
1435
1541
|
model_id="google/gemma-3-27b-it",
|
|
1436
1542
|
),
|
|
1543
|
+
],
|
|
1544
|
+
),
|
|
1545
|
+
# Gemma 3n 2B
|
|
1546
|
+
KilnModel(
|
|
1547
|
+
family=ModelFamily.gemma,
|
|
1548
|
+
name=ModelName.gemma_3n_2b,
|
|
1549
|
+
friendly_name="Gemma 3n 2B",
|
|
1550
|
+
providers=[
|
|
1437
1551
|
KilnModelProvider(
|
|
1438
|
-
name=ModelProviderName.
|
|
1439
|
-
model_id="
|
|
1552
|
+
name=ModelProviderName.ollama,
|
|
1553
|
+
model_id="gemma3n:e2b",
|
|
1554
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1555
|
+
supports_data_gen=False,
|
|
1556
|
+
),
|
|
1557
|
+
KilnModelProvider(
|
|
1558
|
+
name=ModelProviderName.gemini_api,
|
|
1559
|
+
model_id="gemma-3n-e2b-it",
|
|
1560
|
+
supports_structured_output=False,
|
|
1561
|
+
supports_data_gen=False,
|
|
1562
|
+
),
|
|
1563
|
+
],
|
|
1564
|
+
),
|
|
1565
|
+
# Gemma 3n 4B
|
|
1566
|
+
KilnModel(
|
|
1567
|
+
family=ModelFamily.gemma,
|
|
1568
|
+
name=ModelName.gemma_3n_4b,
|
|
1569
|
+
friendly_name="Gemma 3n 4B",
|
|
1570
|
+
providers=[
|
|
1571
|
+
KilnModelProvider(
|
|
1572
|
+
name=ModelProviderName.openrouter,
|
|
1573
|
+
model_id="google/gemma-3n-e4b-it",
|
|
1574
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
1575
|
+
supports_data_gen=False,
|
|
1576
|
+
),
|
|
1577
|
+
KilnModelProvider(
|
|
1578
|
+
name=ModelProviderName.ollama,
|
|
1579
|
+
model_id="gemma3n:e4b",
|
|
1580
|
+
supports_data_gen=False,
|
|
1581
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1582
|
+
),
|
|
1583
|
+
KilnModelProvider(
|
|
1584
|
+
name=ModelProviderName.gemini_api,
|
|
1585
|
+
model_id="gemma-3n-e4b-it",
|
|
1440
1586
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1587
|
+
supports_data_gen=False,
|
|
1441
1588
|
),
|
|
1442
1589
|
],
|
|
1443
1590
|
),
|
|
@@ -1578,10 +1725,46 @@ built_in_models: List[KilnModel] = [
|
|
|
1578
1725
|
name=ModelProviderName.openrouter,
|
|
1579
1726
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
1580
1727
|
model_id="mistralai/mistral-small-24b-instruct-2501",
|
|
1728
|
+
uncensored=True,
|
|
1581
1729
|
),
|
|
1582
1730
|
KilnModelProvider(
|
|
1583
1731
|
name=ModelProviderName.ollama,
|
|
1584
1732
|
model_id="mistral-small:24b",
|
|
1733
|
+
uncensored=True,
|
|
1734
|
+
),
|
|
1735
|
+
],
|
|
1736
|
+
),
|
|
1737
|
+
# DeepSeek R1 0528
|
|
1738
|
+
KilnModel(
|
|
1739
|
+
family=ModelFamily.deepseek,
|
|
1740
|
+
name=ModelName.deepseek_r1_0528,
|
|
1741
|
+
friendly_name="DeepSeek R1 0528",
|
|
1742
|
+
providers=[
|
|
1743
|
+
KilnModelProvider(
|
|
1744
|
+
name=ModelProviderName.openrouter,
|
|
1745
|
+
model_id="deepseek/deepseek-r1-0528",
|
|
1746
|
+
parser=ModelParserID.r1_thinking,
|
|
1747
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1748
|
+
reasoning_capable=True,
|
|
1749
|
+
r1_openrouter_options=True,
|
|
1750
|
+
require_openrouter_reasoning=True,
|
|
1751
|
+
supports_data_gen=True,
|
|
1752
|
+
),
|
|
1753
|
+
KilnModelProvider(
|
|
1754
|
+
name=ModelProviderName.fireworks_ai,
|
|
1755
|
+
model_id="accounts/fireworks/models/deepseek-r1-0528",
|
|
1756
|
+
parser=ModelParserID.r1_thinking,
|
|
1757
|
+
supports_data_gen=True,
|
|
1758
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1759
|
+
reasoning_capable=True,
|
|
1760
|
+
),
|
|
1761
|
+
KilnModelProvider(
|
|
1762
|
+
name=ModelProviderName.together_ai,
|
|
1763
|
+
model_id="deepseek-ai/DeepSeek-R1", # Note: Together remapped the R1 endpoint to this 0528 model
|
|
1764
|
+
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1765
|
+
parser=ModelParserID.r1_thinking,
|
|
1766
|
+
reasoning_capable=True,
|
|
1767
|
+
supports_data_gen=True,
|
|
1585
1768
|
),
|
|
1586
1769
|
],
|
|
1587
1770
|
),
|
|
@@ -1614,7 +1797,7 @@ built_in_models: List[KilnModel] = [
|
|
|
1614
1797
|
KilnModel(
|
|
1615
1798
|
family=ModelFamily.deepseek,
|
|
1616
1799
|
name=ModelName.deepseek_r1,
|
|
1617
|
-
friendly_name="DeepSeek R1",
|
|
1800
|
+
friendly_name="DeepSeek R1 (Original)",
|
|
1618
1801
|
providers=[
|
|
1619
1802
|
KilnModelProvider(
|
|
1620
1803
|
name=ModelProviderName.openrouter,
|
|
@@ -1624,8 +1807,6 @@ built_in_models: List[KilnModel] = [
|
|
|
1624
1807
|
reasoning_capable=True,
|
|
1625
1808
|
r1_openrouter_options=True,
|
|
1626
1809
|
require_openrouter_reasoning=True,
|
|
1627
|
-
suggested_for_data_gen=True,
|
|
1628
|
-
suggested_for_evals=True,
|
|
1629
1810
|
),
|
|
1630
1811
|
KilnModelProvider(
|
|
1631
1812
|
name=ModelProviderName.fireworks_ai,
|
|
@@ -1633,8 +1814,6 @@ built_in_models: List[KilnModel] = [
|
|
|
1633
1814
|
parser=ModelParserID.r1_thinking,
|
|
1634
1815
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1635
1816
|
reasoning_capable=True,
|
|
1636
|
-
suggested_for_data_gen=True,
|
|
1637
|
-
suggested_for_evals=True,
|
|
1638
1817
|
),
|
|
1639
1818
|
KilnModelProvider(
|
|
1640
1819
|
# I want your RAM
|
|
@@ -1643,17 +1822,6 @@ built_in_models: List[KilnModel] = [
|
|
|
1643
1822
|
parser=ModelParserID.r1_thinking,
|
|
1644
1823
|
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1645
1824
|
reasoning_capable=True,
|
|
1646
|
-
suggested_for_data_gen=True,
|
|
1647
|
-
suggested_for_evals=True,
|
|
1648
|
-
),
|
|
1649
|
-
KilnModelProvider(
|
|
1650
|
-
name=ModelProviderName.together_ai,
|
|
1651
|
-
model_id="deepseek-ai/DeepSeek-R1",
|
|
1652
|
-
structured_output_mode=StructuredOutputMode.json_instructions,
|
|
1653
|
-
parser=ModelParserID.r1_thinking,
|
|
1654
|
-
reasoning_capable=True,
|
|
1655
|
-
suggested_for_data_gen=True,
|
|
1656
|
-
suggested_for_evals=True,
|
|
1657
1825
|
),
|
|
1658
1826
|
],
|
|
1659
1827
|
),
|
|
@@ -1849,12 +2017,67 @@ built_in_models: List[KilnModel] = [
|
|
|
1849
2017
|
structured_output_mode=StructuredOutputMode.json_schema,
|
|
1850
2018
|
supports_data_gen=True,
|
|
1851
2019
|
model_id="dolphin-mixtral:8x22b",
|
|
2020
|
+
uncensored=True,
|
|
2021
|
+
suggested_for_uncensored_data_gen=True,
|
|
1852
2022
|
),
|
|
1853
2023
|
KilnModelProvider(
|
|
1854
2024
|
name=ModelProviderName.openrouter,
|
|
1855
2025
|
supports_data_gen=True,
|
|
1856
2026
|
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
1857
2027
|
model_id="cognitivecomputations/dolphin-mixtral-8x22b",
|
|
2028
|
+
uncensored=True,
|
|
2029
|
+
suggested_for_uncensored_data_gen=True,
|
|
2030
|
+
),
|
|
2031
|
+
],
|
|
2032
|
+
),
|
|
2033
|
+
# Grok 4
|
|
2034
|
+
KilnModel(
|
|
2035
|
+
family=ModelFamily.grok,
|
|
2036
|
+
name=ModelName.grok_4,
|
|
2037
|
+
friendly_name="Grok 4",
|
|
2038
|
+
providers=[
|
|
2039
|
+
KilnModelProvider(
|
|
2040
|
+
name=ModelProviderName.openrouter,
|
|
2041
|
+
model_id="x-ai/grok-4",
|
|
2042
|
+
supports_structured_output=True,
|
|
2043
|
+
supports_data_gen=True,
|
|
2044
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2045
|
+
suggested_for_data_gen=True,
|
|
2046
|
+
uncensored=True,
|
|
2047
|
+
suggested_for_uncensored_data_gen=True,
|
|
2048
|
+
),
|
|
2049
|
+
],
|
|
2050
|
+
),
|
|
2051
|
+
# Grok 3
|
|
2052
|
+
KilnModel(
|
|
2053
|
+
family=ModelFamily.grok,
|
|
2054
|
+
name=ModelName.grok_3,
|
|
2055
|
+
friendly_name="Grok 3",
|
|
2056
|
+
providers=[
|
|
2057
|
+
KilnModelProvider(
|
|
2058
|
+
name=ModelProviderName.openrouter,
|
|
2059
|
+
model_id="x-ai/grok-3",
|
|
2060
|
+
supports_structured_output=True,
|
|
2061
|
+
supports_data_gen=True,
|
|
2062
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2063
|
+
suggested_for_data_gen=True,
|
|
2064
|
+
uncensored=True,
|
|
2065
|
+
),
|
|
2066
|
+
],
|
|
2067
|
+
),
|
|
2068
|
+
# Grok 3 Mini
|
|
2069
|
+
KilnModel(
|
|
2070
|
+
family=ModelFamily.grok,
|
|
2071
|
+
name=ModelName.grok_3_mini,
|
|
2072
|
+
friendly_name="Grok 3 Mini",
|
|
2073
|
+
providers=[
|
|
2074
|
+
KilnModelProvider(
|
|
2075
|
+
name=ModelProviderName.openrouter,
|
|
2076
|
+
model_id="x-ai/grok-3-mini",
|
|
2077
|
+
supports_structured_output=True,
|
|
2078
|
+
supports_data_gen=True,
|
|
2079
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2080
|
+
uncensored=True,
|
|
1858
2081
|
),
|
|
1859
2082
|
],
|
|
1860
2083
|
),
|
|
@@ -2286,6 +2509,41 @@ built_in_models: List[KilnModel] = [
|
|
|
2286
2509
|
),
|
|
2287
2510
|
],
|
|
2288
2511
|
),
|
|
2512
|
+
# Kimi K2 Instruct
|
|
2513
|
+
KilnModel(
|
|
2514
|
+
family=ModelFamily.kimi,
|
|
2515
|
+
name=ModelName.kimi_k2,
|
|
2516
|
+
friendly_name="Kimi K2",
|
|
2517
|
+
providers=[
|
|
2518
|
+
KilnModelProvider(
|
|
2519
|
+
name=ModelProviderName.fireworks_ai,
|
|
2520
|
+
model_id="accounts/fireworks/models/kimi-k2-instruct",
|
|
2521
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2522
|
+
# Ignoring json mode for now, so not suggested for evals
|
|
2523
|
+
),
|
|
2524
|
+
KilnModelProvider(
|
|
2525
|
+
name=ModelProviderName.openrouter,
|
|
2526
|
+
model_id="moonshotai/kimi-k2",
|
|
2527
|
+
structured_output_mode=StructuredOutputMode.json_schema,
|
|
2528
|
+
supports_data_gen=True,
|
|
2529
|
+
suggested_for_evals=True,
|
|
2530
|
+
),
|
|
2531
|
+
KilnModelProvider(
|
|
2532
|
+
name=ModelProviderName.together_ai,
|
|
2533
|
+
model_id="moonshotai/Kimi-K2-Instruct",
|
|
2534
|
+
supports_data_gen=True,
|
|
2535
|
+
structured_output_mode=StructuredOutputMode.json_instruction_and_object,
|
|
2536
|
+
suggested_for_evals=True,
|
|
2537
|
+
),
|
|
2538
|
+
KilnModelProvider(
|
|
2539
|
+
name=ModelProviderName.groq,
|
|
2540
|
+
model_id="moonshotai/kimi-k2-instruct",
|
|
2541
|
+
supports_data_gen=True,
|
|
2542
|
+
structured_output_mode=StructuredOutputMode.function_calling,
|
|
2543
|
+
suggested_for_evals=True,
|
|
2544
|
+
),
|
|
2545
|
+
],
|
|
2546
|
+
),
|
|
2289
2547
|
]
|
|
2290
2548
|
|
|
2291
2549
|
|
|
@@ -2294,3 +2552,31 @@ def get_model_by_name(name: ModelName) -> KilnModel:
|
|
|
2294
2552
|
if model.name == name:
|
|
2295
2553
|
return model
|
|
2296
2554
|
raise ValueError(f"Model {name} not found in the list of built-in models")
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
def default_structured_output_mode_for_model_provider(
|
|
2558
|
+
model_name: str,
|
|
2559
|
+
provider: ModelProviderName,
|
|
2560
|
+
default: StructuredOutputMode = StructuredOutputMode.default,
|
|
2561
|
+
disallowed_modes: List[StructuredOutputMode] = [],
|
|
2562
|
+
) -> StructuredOutputMode:
|
|
2563
|
+
"""
|
|
2564
|
+
We don't expose setting this manually in the UI, so pull a recommended mode from ml_model_list
|
|
2565
|
+
"""
|
|
2566
|
+
try:
|
|
2567
|
+
# Convert string to ModelName enum
|
|
2568
|
+
model_name_enum = ModelName(model_name)
|
|
2569
|
+
model = get_model_by_name(model_name_enum)
|
|
2570
|
+
except (ValueError, KeyError):
|
|
2571
|
+
# If model not found, return default
|
|
2572
|
+
return default
|
|
2573
|
+
|
|
2574
|
+
# Find the provider within the model's providers
|
|
2575
|
+
for model_provider in model.providers:
|
|
2576
|
+
if model_provider.name == provider:
|
|
2577
|
+
mode = model_provider.structured_output_mode
|
|
2578
|
+
if mode not in disallowed_modes:
|
|
2579
|
+
return mode
|
|
2580
|
+
|
|
2581
|
+
# If provider not found, return default
|
|
2582
|
+
return default
|