deepeval 3.7.4__py3-none-any.whl → 3.7.6__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.
Files changed (224) hide show
  1. deepeval/_version.py +1 -1
  2. deepeval/config/settings.py +35 -1
  3. deepeval/dataset/api.py +23 -1
  4. deepeval/dataset/golden.py +139 -2
  5. deepeval/evaluate/evaluate.py +16 -11
  6. deepeval/evaluate/execute.py +13 -181
  7. deepeval/evaluate/utils.py +6 -26
  8. deepeval/integrations/pydantic_ai/agent.py +19 -2
  9. deepeval/integrations/pydantic_ai/instrumentator.py +62 -23
  10. deepeval/key_handler.py +3 -0
  11. deepeval/metrics/__init__.py +14 -16
  12. deepeval/metrics/answer_relevancy/answer_relevancy.py +118 -116
  13. deepeval/metrics/answer_relevancy/template.py +22 -3
  14. deepeval/metrics/arena_g_eval/arena_g_eval.py +98 -96
  15. deepeval/metrics/arena_g_eval/template.py +17 -1
  16. deepeval/metrics/argument_correctness/argument_correctness.py +81 -87
  17. deepeval/metrics/argument_correctness/template.py +19 -2
  18. deepeval/metrics/base_metric.py +13 -44
  19. deepeval/metrics/bias/bias.py +102 -108
  20. deepeval/metrics/bias/template.py +14 -2
  21. deepeval/metrics/contextual_precision/contextual_precision.py +96 -94
  22. deepeval/metrics/contextual_precision/template.py +115 -66
  23. deepeval/metrics/contextual_recall/contextual_recall.py +94 -84
  24. deepeval/metrics/contextual_recall/template.py +106 -55
  25. deepeval/metrics/contextual_relevancy/contextual_relevancy.py +86 -84
  26. deepeval/metrics/contextual_relevancy/template.py +87 -58
  27. deepeval/metrics/conversation_completeness/conversation_completeness.py +101 -119
  28. deepeval/metrics/conversation_completeness/template.py +23 -3
  29. deepeval/metrics/conversational_dag/conversational_dag.py +12 -8
  30. deepeval/metrics/conversational_dag/nodes.py +66 -123
  31. deepeval/metrics/conversational_dag/templates.py +16 -0
  32. deepeval/metrics/conversational_g_eval/conversational_g_eval.py +47 -66
  33. deepeval/metrics/dag/dag.py +10 -0
  34. deepeval/metrics/dag/nodes.py +63 -126
  35. deepeval/metrics/dag/templates.py +16 -2
  36. deepeval/metrics/exact_match/exact_match.py +9 -1
  37. deepeval/metrics/faithfulness/faithfulness.py +138 -149
  38. deepeval/metrics/faithfulness/schema.py +1 -1
  39. deepeval/metrics/faithfulness/template.py +200 -115
  40. deepeval/metrics/g_eval/g_eval.py +87 -78
  41. deepeval/metrics/g_eval/template.py +18 -1
  42. deepeval/metrics/g_eval/utils.py +7 -6
  43. deepeval/metrics/goal_accuracy/goal_accuracy.py +91 -76
  44. deepeval/metrics/goal_accuracy/template.py +21 -3
  45. deepeval/metrics/hallucination/hallucination.py +60 -75
  46. deepeval/metrics/hallucination/template.py +13 -0
  47. deepeval/metrics/indicator.py +7 -10
  48. deepeval/metrics/json_correctness/json_correctness.py +40 -38
  49. deepeval/metrics/json_correctness/template.py +10 -0
  50. deepeval/metrics/knowledge_retention/knowledge_retention.py +60 -97
  51. deepeval/metrics/knowledge_retention/schema.py +9 -3
  52. deepeval/metrics/knowledge_retention/template.py +12 -0
  53. deepeval/metrics/mcp/mcp_task_completion.py +68 -38
  54. deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +92 -74
  55. deepeval/metrics/mcp/template.py +52 -0
  56. deepeval/metrics/mcp_use_metric/mcp_use_metric.py +58 -64
  57. deepeval/metrics/mcp_use_metric/template.py +12 -0
  58. deepeval/metrics/misuse/misuse.py +77 -97
  59. deepeval/metrics/misuse/template.py +15 -0
  60. deepeval/metrics/multimodal_metrics/__init__.py +0 -19
  61. deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py +59 -53
  62. deepeval/metrics/multimodal_metrics/image_editing/image_editing.py +79 -95
  63. deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py +59 -53
  64. deepeval/metrics/multimodal_metrics/image_reference/image_reference.py +59 -53
  65. deepeval/metrics/multimodal_metrics/text_to_image/text_to_image.py +111 -109
  66. deepeval/metrics/non_advice/non_advice.py +79 -105
  67. deepeval/metrics/non_advice/template.py +12 -0
  68. deepeval/metrics/pattern_match/pattern_match.py +12 -4
  69. deepeval/metrics/pii_leakage/pii_leakage.py +75 -106
  70. deepeval/metrics/pii_leakage/template.py +14 -0
  71. deepeval/metrics/plan_adherence/plan_adherence.py +63 -89
  72. deepeval/metrics/plan_adherence/template.py +11 -0
  73. deepeval/metrics/plan_quality/plan_quality.py +63 -87
  74. deepeval/metrics/plan_quality/template.py +9 -0
  75. deepeval/metrics/prompt_alignment/prompt_alignment.py +72 -83
  76. deepeval/metrics/prompt_alignment/template.py +12 -0
  77. deepeval/metrics/ragas.py +3 -3
  78. deepeval/metrics/role_adherence/role_adherence.py +48 -71
  79. deepeval/metrics/role_adherence/template.py +14 -0
  80. deepeval/metrics/role_violation/role_violation.py +75 -108
  81. deepeval/metrics/role_violation/template.py +12 -0
  82. deepeval/metrics/step_efficiency/step_efficiency.py +55 -65
  83. deepeval/metrics/step_efficiency/template.py +11 -0
  84. deepeval/metrics/summarization/summarization.py +115 -183
  85. deepeval/metrics/summarization/template.py +19 -0
  86. deepeval/metrics/task_completion/task_completion.py +67 -73
  87. deepeval/metrics/tool_correctness/tool_correctness.py +45 -44
  88. deepeval/metrics/tool_use/tool_use.py +42 -66
  89. deepeval/metrics/topic_adherence/template.py +13 -0
  90. deepeval/metrics/topic_adherence/topic_adherence.py +53 -67
  91. deepeval/metrics/toxicity/template.py +13 -0
  92. deepeval/metrics/toxicity/toxicity.py +80 -99
  93. deepeval/metrics/turn_contextual_precision/schema.py +21 -0
  94. deepeval/metrics/turn_contextual_precision/template.py +187 -0
  95. deepeval/metrics/turn_contextual_precision/turn_contextual_precision.py +592 -0
  96. deepeval/metrics/turn_contextual_recall/schema.py +21 -0
  97. deepeval/metrics/turn_contextual_recall/template.py +178 -0
  98. deepeval/metrics/turn_contextual_recall/turn_contextual_recall.py +563 -0
  99. deepeval/metrics/{multimodal_metrics/multimodal_contextual_relevancy → turn_contextual_relevancy}/schema.py +7 -1
  100. deepeval/metrics/turn_contextual_relevancy/template.py +161 -0
  101. deepeval/metrics/turn_contextual_relevancy/turn_contextual_relevancy.py +576 -0
  102. deepeval/metrics/{multimodal_metrics/multimodal_faithfulness → turn_faithfulness}/schema.py +11 -3
  103. deepeval/metrics/turn_faithfulness/template.py +218 -0
  104. deepeval/metrics/turn_faithfulness/turn_faithfulness.py +627 -0
  105. deepeval/metrics/turn_relevancy/template.py +14 -0
  106. deepeval/metrics/turn_relevancy/turn_relevancy.py +56 -69
  107. deepeval/metrics/utils.py +158 -122
  108. deepeval/models/__init__.py +0 -12
  109. deepeval/models/base_model.py +49 -33
  110. deepeval/models/embedding_models/__init__.py +7 -0
  111. deepeval/models/embedding_models/azure_embedding_model.py +79 -33
  112. deepeval/models/embedding_models/local_embedding_model.py +39 -20
  113. deepeval/models/embedding_models/ollama_embedding_model.py +52 -19
  114. deepeval/models/embedding_models/openai_embedding_model.py +42 -22
  115. deepeval/models/llms/amazon_bedrock_model.py +226 -72
  116. deepeval/models/llms/anthropic_model.py +178 -63
  117. deepeval/models/llms/azure_model.py +218 -60
  118. deepeval/models/llms/constants.py +2032 -0
  119. deepeval/models/llms/deepseek_model.py +95 -40
  120. deepeval/models/llms/gemini_model.py +209 -64
  121. deepeval/models/llms/grok_model.py +139 -68
  122. deepeval/models/llms/kimi_model.py +140 -90
  123. deepeval/models/llms/litellm_model.py +131 -37
  124. deepeval/models/llms/local_model.py +125 -21
  125. deepeval/models/llms/ollama_model.py +147 -24
  126. deepeval/models/llms/openai_model.py +222 -269
  127. deepeval/models/llms/portkey_model.py +81 -22
  128. deepeval/models/llms/utils.py +8 -3
  129. deepeval/models/retry_policy.py +17 -14
  130. deepeval/models/utils.py +106 -5
  131. deepeval/optimizer/__init__.py +5 -0
  132. deepeval/optimizer/algorithms/__init__.py +6 -0
  133. deepeval/optimizer/algorithms/base.py +29 -0
  134. deepeval/optimizer/algorithms/configs.py +18 -0
  135. deepeval/optimizer/algorithms/copro/__init__.py +5 -0
  136. deepeval/{optimization/copro/loop.py → optimizer/algorithms/copro/copro.py} +112 -113
  137. deepeval/optimizer/algorithms/gepa/__init__.py +5 -0
  138. deepeval/{optimization/gepa/loop.py → optimizer/algorithms/gepa/gepa.py} +175 -115
  139. deepeval/optimizer/algorithms/miprov2/__init__.py +17 -0
  140. deepeval/optimizer/algorithms/miprov2/bootstrapper.py +435 -0
  141. deepeval/optimizer/algorithms/miprov2/miprov2.py +752 -0
  142. deepeval/optimizer/algorithms/miprov2/proposer.py +301 -0
  143. deepeval/optimizer/algorithms/simba/__init__.py +5 -0
  144. deepeval/{optimization/simba/loop.py → optimizer/algorithms/simba/simba.py} +128 -112
  145. deepeval/{optimization → optimizer}/configs.py +5 -8
  146. deepeval/{optimization/policies/selection.py → optimizer/policies.py} +63 -2
  147. deepeval/optimizer/prompt_optimizer.py +263 -0
  148. deepeval/optimizer/rewriter/__init__.py +5 -0
  149. deepeval/optimizer/rewriter/rewriter.py +124 -0
  150. deepeval/optimizer/rewriter/utils.py +214 -0
  151. deepeval/optimizer/scorer/__init__.py +5 -0
  152. deepeval/optimizer/scorer/base.py +86 -0
  153. deepeval/optimizer/scorer/scorer.py +316 -0
  154. deepeval/optimizer/scorer/utils.py +30 -0
  155. deepeval/optimizer/types.py +148 -0
  156. deepeval/{optimization → optimizer}/utils.py +47 -165
  157. deepeval/prompt/prompt.py +5 -9
  158. deepeval/simulator/conversation_simulator.py +43 -0
  159. deepeval/simulator/template.py +13 -0
  160. deepeval/test_case/__init__.py +1 -3
  161. deepeval/test_case/api.py +26 -45
  162. deepeval/test_case/arena_test_case.py +7 -2
  163. deepeval/test_case/conversational_test_case.py +68 -1
  164. deepeval/test_case/llm_test_case.py +206 -1
  165. deepeval/test_case/utils.py +4 -8
  166. deepeval/test_run/api.py +18 -14
  167. deepeval/test_run/test_run.py +3 -3
  168. deepeval/tracing/patchers.py +9 -4
  169. deepeval/tracing/tracing.py +2 -2
  170. deepeval/utils.py +65 -0
  171. {deepeval-3.7.4.dist-info → deepeval-3.7.6.dist-info}/METADATA +1 -4
  172. {deepeval-3.7.4.dist-info → deepeval-3.7.6.dist-info}/RECORD +180 -193
  173. deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/multimodal_answer_relevancy.py +0 -343
  174. deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/schema.py +0 -19
  175. deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/template.py +0 -122
  176. deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py +0 -301
  177. deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/schema.py +0 -15
  178. deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/template.py +0 -132
  179. deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/multimodal_contextual_recall.py +0 -285
  180. deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/schema.py +0 -15
  181. deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/template.py +0 -112
  182. deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/multimodal_contextual_relevancy.py +0 -282
  183. deepeval/metrics/multimodal_metrics/multimodal_contextual_relevancy/template.py +0 -102
  184. deepeval/metrics/multimodal_metrics/multimodal_faithfulness/__init__.py +0 -0
  185. deepeval/metrics/multimodal_metrics/multimodal_faithfulness/multimodal_faithfulness.py +0 -356
  186. deepeval/metrics/multimodal_metrics/multimodal_faithfulness/template.py +0 -175
  187. deepeval/metrics/multimodal_metrics/multimodal_g_eval/__init__.py +0 -0
  188. deepeval/metrics/multimodal_metrics/multimodal_g_eval/multimodal_g_eval.py +0 -386
  189. deepeval/metrics/multimodal_metrics/multimodal_g_eval/schema.py +0 -11
  190. deepeval/metrics/multimodal_metrics/multimodal_g_eval/template.py +0 -148
  191. deepeval/metrics/multimodal_metrics/multimodal_g_eval/utils.py +0 -68
  192. deepeval/metrics/multimodal_metrics/multimodal_tool_correctness/__init__.py +0 -0
  193. deepeval/metrics/multimodal_metrics/multimodal_tool_correctness/multimodal_tool_correctness.py +0 -290
  194. deepeval/models/mlllms/__init__.py +0 -4
  195. deepeval/models/mlllms/azure_model.py +0 -343
  196. deepeval/models/mlllms/gemini_model.py +0 -313
  197. deepeval/models/mlllms/ollama_model.py +0 -175
  198. deepeval/models/mlllms/openai_model.py +0 -309
  199. deepeval/optimization/__init__.py +0 -13
  200. deepeval/optimization/adapters/__init__.py +0 -2
  201. deepeval/optimization/adapters/deepeval_scoring_adapter.py +0 -588
  202. deepeval/optimization/aggregates.py +0 -14
  203. deepeval/optimization/copro/configs.py +0 -31
  204. deepeval/optimization/gepa/__init__.py +0 -7
  205. deepeval/optimization/gepa/configs.py +0 -115
  206. deepeval/optimization/miprov2/configs.py +0 -134
  207. deepeval/optimization/miprov2/loop.py +0 -785
  208. deepeval/optimization/mutations/__init__.py +0 -0
  209. deepeval/optimization/mutations/prompt_rewriter.py +0 -458
  210. deepeval/optimization/policies/__init__.py +0 -16
  211. deepeval/optimization/policies/tie_breaker.py +0 -67
  212. deepeval/optimization/prompt_optimizer.py +0 -462
  213. deepeval/optimization/simba/__init__.py +0 -0
  214. deepeval/optimization/simba/configs.py +0 -33
  215. deepeval/optimization/types.py +0 -361
  216. deepeval/test_case/mllm_test_case.py +0 -170
  217. /deepeval/metrics/{multimodal_metrics/multimodal_answer_relevancy → turn_contextual_precision}/__init__.py +0 -0
  218. /deepeval/metrics/{multimodal_metrics/multimodal_contextual_precision → turn_contextual_recall}/__init__.py +0 -0
  219. /deepeval/metrics/{multimodal_metrics/multimodal_contextual_recall → turn_contextual_relevancy}/__init__.py +0 -0
  220. /deepeval/metrics/{multimodal_metrics/multimodal_contextual_relevancy → turn_faithfulness}/__init__.py +0 -0
  221. /deepeval/{optimization → optimizer/algorithms}/simba/types.py +0 -0
  222. {deepeval-3.7.4.dist-info → deepeval-3.7.6.dist-info}/LICENSE.md +0 -0
  223. {deepeval-3.7.4.dist-info → deepeval-3.7.6.dist-info}/WHEEL +0 -0
  224. {deepeval-3.7.4.dist-info → deepeval-3.7.6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,2032 @@
1
+ from typing import Any, Callable, Union
2
+
3
+ from deepeval.models.base_model import DeepEvalModelData
4
+
5
+
6
+ ModelDataFactory = Callable[[], DeepEvalModelData]
7
+ ModelDataValue = Union[DeepEvalModelData, ModelDataFactory]
8
+
9
+
10
+ def default_model_data() -> DeepEvalModelData:
11
+ return DeepEvalModelData()
12
+
13
+
14
+ class ModelDataRegistry(dict[str, ModelDataValue]):
15
+ def get( # type: ignore[override]
16
+ self,
17
+ key: str,
18
+ default: ModelDataValue = default_model_data,
19
+ ) -> DeepEvalModelData:
20
+ model_data_value = super().get(key, default)
21
+ return (
22
+ model_data_value()
23
+ if callable(model_data_value)
24
+ else model_data_value
25
+ )
26
+
27
+ def __getitem__(self, key: str) -> DeepEvalModelData:
28
+ model_data_value = super().__getitem__(key)
29
+ return (
30
+ model_data_value()
31
+ if callable(model_data_value)
32
+ else model_data_value
33
+ )
34
+
35
+
36
+ def make_model_data(**kwargs: Any) -> ModelDataFactory:
37
+ return lambda: DeepEvalModelData(**kwargs)
38
+
39
+
40
+ OPENAI_MODELS_DATA = ModelDataRegistry(
41
+ {
42
+ "gpt-3.5-turbo": make_model_data(
43
+ supports_log_probs=True,
44
+ supports_multimodal=False,
45
+ supports_structured_outputs=False,
46
+ supports_json=True,
47
+ input_price=0.50 / 1e6,
48
+ output_price=1.50 / 1e6,
49
+ ),
50
+ "gpt-3.5-turbo-0125": make_model_data(
51
+ supports_log_probs=True,
52
+ supports_multimodal=False,
53
+ supports_structured_outputs=False,
54
+ supports_json=True,
55
+ input_price=0.50 / 1e6,
56
+ output_price=1.50 / 1e6,
57
+ ),
58
+ "gpt-3.5-turbo-1106": make_model_data(
59
+ supports_log_probs=True,
60
+ supports_multimodal=False,
61
+ supports_structured_outputs=False,
62
+ supports_json=True,
63
+ input_price=1.00 / 1e6,
64
+ output_price=2.00 / 1e6,
65
+ ),
66
+ "gpt-4-0125-preview": make_model_data(
67
+ supports_log_probs=True,
68
+ supports_multimodal=True,
69
+ supports_structured_outputs=False,
70
+ supports_json=True,
71
+ input_price=10.00 / 1e6,
72
+ output_price=30.00 / 1e6,
73
+ ),
74
+ "gpt-4-1106-preview": make_model_data(
75
+ supports_log_probs=True,
76
+ supports_multimodal=True,
77
+ supports_structured_outputs=False,
78
+ supports_json=True,
79
+ input_price=10.00 / 1e6,
80
+ output_price=30.00 / 1e6,
81
+ ),
82
+ "gpt-4-turbo": make_model_data(
83
+ supports_log_probs=True,
84
+ supports_multimodal=True,
85
+ supports_structured_outputs=False,
86
+ supports_json=True,
87
+ input_price=10.00 / 1e6,
88
+ output_price=30.00 / 1e6,
89
+ ),
90
+ "gpt-4-turbo-2024-04-09": make_model_data(
91
+ supports_log_probs=True,
92
+ supports_multimodal=True,
93
+ supports_structured_outputs=False,
94
+ supports_json=True,
95
+ input_price=10.00 / 1e6,
96
+ output_price=30.00 / 1e6,
97
+ ),
98
+ "gpt-4-turbo-preview": make_model_data(
99
+ supports_log_probs=True,
100
+ supports_multimodal=True,
101
+ supports_structured_outputs=False,
102
+ supports_json=True,
103
+ input_price=10.00 / 1e6,
104
+ output_price=30.00 / 1e6,
105
+ ),
106
+ "gpt-4o": make_model_data(
107
+ supports_log_probs=True,
108
+ supports_multimodal=True,
109
+ supports_structured_outputs=True,
110
+ supports_json=False,
111
+ input_price=2.50 / 1e6,
112
+ output_price=10.00 / 1e6,
113
+ ),
114
+ "gpt-4": make_model_data(
115
+ supports_log_probs=True,
116
+ supports_multimodal=False,
117
+ supports_structured_outputs=True,
118
+ supports_json=True,
119
+ input_price=30.00 / 1e6,
120
+ output_price=60.00 / 1e6,
121
+ ),
122
+ "gpt-4o-2024-05-13": make_model_data(
123
+ supports_log_probs=True,
124
+ supports_multimodal=True,
125
+ supports_structured_outputs=True,
126
+ supports_json=False,
127
+ input_price=2.50 / 1e6,
128
+ output_price=10.00 / 1e6,
129
+ ),
130
+ "gpt-4o-2024-08-06": make_model_data(
131
+ supports_log_probs=True,
132
+ supports_multimodal=True,
133
+ supports_structured_outputs=True,
134
+ supports_json=False,
135
+ input_price=2.50 / 1e6,
136
+ output_price=10.00 / 1e6,
137
+ ),
138
+ "gpt-4o-2024-11-20": make_model_data(
139
+ supports_log_probs=True,
140
+ supports_multimodal=True,
141
+ supports_structured_outputs=True,
142
+ supports_json=False,
143
+ input_price=2.50 / 1e6,
144
+ output_price=10.00 / 1e6,
145
+ ),
146
+ "gpt-4o-mini": make_model_data(
147
+ supports_log_probs=True,
148
+ supports_multimodal=True,
149
+ supports_structured_outputs=True,
150
+ supports_json=False,
151
+ input_price=0.150 / 1e6,
152
+ output_price=0.600 / 1e6,
153
+ ),
154
+ "gpt-4o-mini-2024-07-18": make_model_data(
155
+ supports_log_probs=True,
156
+ supports_multimodal=True,
157
+ supports_structured_outputs=True,
158
+ supports_json=False,
159
+ input_price=0.150 / 1e6,
160
+ output_price=0.600 / 1e6,
161
+ ),
162
+ "gpt-4-32k": make_model_data(
163
+ supports_log_probs=True,
164
+ supports_multimodal=True,
165
+ supports_structured_outputs=False,
166
+ supports_json=True,
167
+ input_price=60.00 / 1e6,
168
+ output_price=120.00 / 1e6,
169
+ ),
170
+ "gpt-4-32k-0613": make_model_data(
171
+ supports_log_probs=True,
172
+ supports_multimodal=True,
173
+ supports_structured_outputs=False,
174
+ supports_json=False,
175
+ input_price=60.00 / 1e6,
176
+ output_price=120.00 / 1e6,
177
+ ),
178
+ "gpt-4.1": make_model_data(
179
+ supports_log_probs=True,
180
+ supports_multimodal=True,
181
+ supports_structured_outputs=True,
182
+ supports_json=False,
183
+ input_price=2.00 / 1e6,
184
+ output_price=8.00 / 1e6,
185
+ ),
186
+ "gpt-4.1-mini": make_model_data(
187
+ supports_log_probs=True,
188
+ supports_multimodal=True,
189
+ supports_structured_outputs=True,
190
+ supports_json=False,
191
+ input_price=0.4 / 1e6,
192
+ output_price=1.60 / 1e6,
193
+ ),
194
+ "gpt-4.1-nano": make_model_data(
195
+ supports_log_probs=True,
196
+ supports_multimodal=False,
197
+ supports_structured_outputs=True,
198
+ supports_json=False,
199
+ input_price=0.1 / 1e6,
200
+ output_price=0.4 / 1e6,
201
+ ),
202
+ "gpt-4.5-preview": make_model_data(
203
+ supports_log_probs=False,
204
+ supports_multimodal=False,
205
+ supports_structured_outputs=False,
206
+ supports_json=False,
207
+ input_price=75.00 / 1e6,
208
+ output_price=150.00 / 1e6,
209
+ ),
210
+ "gpt-4.5-preview-2025-02-27": make_model_data(
211
+ supports_log_probs=False,
212
+ supports_multimodal=False,
213
+ supports_structured_outputs=True,
214
+ supports_json=False,
215
+ input_price=75.00 / 1e6,
216
+ output_price=150.00 / 1e6,
217
+ ),
218
+ # Reasoning models - require temperature=1 (no custom temperature)
219
+ "o1": make_model_data(
220
+ supports_log_probs=False,
221
+ supports_multimodal=False,
222
+ supports_structured_outputs=True,
223
+ supports_json=False,
224
+ supports_temperature=False,
225
+ input_price=15.00 / 1e6,
226
+ output_price=60.00 / 1e6,
227
+ ),
228
+ "o1-preview": make_model_data(
229
+ supports_log_probs=False,
230
+ supports_multimodal=False,
231
+ supports_structured_outputs=True,
232
+ supports_json=False,
233
+ input_price=15.00 / 1e6,
234
+ output_price=60.00 / 1e6,
235
+ ),
236
+ "o1-2024-12-17": make_model_data(
237
+ supports_log_probs=False,
238
+ supports_multimodal=False,
239
+ supports_structured_outputs=True,
240
+ supports_json=False,
241
+ supports_temperature=False,
242
+ input_price=15.00 / 1e6,
243
+ output_price=60.00 / 1e6,
244
+ ),
245
+ "o1-preview-2024-09-12": make_model_data(
246
+ supports_log_probs=False,
247
+ supports_multimodal=False,
248
+ supports_structured_outputs=False,
249
+ supports_json=False,
250
+ input_price=15.00 / 1e6,
251
+ output_price=60.00 / 1e6,
252
+ ),
253
+ "o1-mini": make_model_data(
254
+ supports_log_probs=False,
255
+ supports_multimodal=False,
256
+ supports_structured_outputs=False,
257
+ supports_json=False,
258
+ supports_temperature=False,
259
+ input_price=None,
260
+ output_price=None,
261
+ ),
262
+ "o1-mini-2024-09-12": make_model_data(
263
+ supports_log_probs=False,
264
+ supports_multimodal=False,
265
+ supports_structured_outputs=False,
266
+ supports_json=False,
267
+ supports_temperature=False,
268
+ input_price=None,
269
+ output_price=None,
270
+ ),
271
+ "o3-mini": make_model_data(
272
+ supports_log_probs=False,
273
+ supports_multimodal=False,
274
+ supports_structured_outputs=True,
275
+ supports_json=False,
276
+ supports_temperature=False,
277
+ input_price=1.10 / 1e6,
278
+ output_price=4.40 / 1e6,
279
+ ),
280
+ "o3-mini-2025-01-31": make_model_data(
281
+ supports_log_probs=False,
282
+ supports_multimodal=False,
283
+ supports_structured_outputs=True,
284
+ supports_json=False,
285
+ supports_temperature=False,
286
+ input_price=1.10 / 1e6,
287
+ output_price=4.40 / 1e6,
288
+ ),
289
+ "o4-mini": make_model_data(
290
+ supports_log_probs=False,
291
+ supports_multimodal=False,
292
+ supports_structured_outputs=True,
293
+ supports_json=False,
294
+ supports_temperature=False,
295
+ input_price=1.10 / 1e6,
296
+ output_price=4.40 / 1e6,
297
+ ),
298
+ "o4-mini-2025-04-16": make_model_data(
299
+ supports_log_probs=False,
300
+ supports_multimodal=False,
301
+ supports_structured_outputs=True,
302
+ supports_json=False,
303
+ supports_temperature=False,
304
+ input_price=1.10 / 1e6,
305
+ output_price=4.40 / 1e6,
306
+ ),
307
+ "gpt-5": make_model_data(
308
+ supports_log_probs=False,
309
+ supports_multimodal=True,
310
+ supports_structured_outputs=True,
311
+ supports_json=False,
312
+ supports_temperature=False,
313
+ input_price=1.25 / 1e6,
314
+ output_price=10.00 / 1e6,
315
+ ),
316
+ "gpt-5-2025-08-07": make_model_data(
317
+ supports_log_probs=False,
318
+ supports_multimodal=False,
319
+ supports_structured_outputs=True,
320
+ supports_json=False,
321
+ supports_temperature=False,
322
+ input_price=1.25 / 1e6,
323
+ output_price=10.00 / 1e6,
324
+ ),
325
+ "gpt-5-mini": make_model_data(
326
+ supports_log_probs=False,
327
+ supports_multimodal=False,
328
+ supports_structured_outputs=True,
329
+ supports_json=False,
330
+ supports_temperature=False,
331
+ input_price=0.25 / 1e6,
332
+ output_price=2.00 / 1e6,
333
+ ),
334
+ "gpt-5-mini-2025-08-07": make_model_data(
335
+ supports_log_probs=False,
336
+ supports_multimodal=False,
337
+ supports_structured_outputs=True,
338
+ supports_json=False,
339
+ supports_temperature=False,
340
+ input_price=0.25 / 1e6,
341
+ output_price=2.00 / 1e6,
342
+ ),
343
+ "gpt-5-nano": make_model_data(
344
+ supports_log_probs=False,
345
+ supports_multimodal=False,
346
+ supports_structured_outputs=True,
347
+ supports_json=False,
348
+ supports_temperature=False,
349
+ input_price=0.05 / 1e6,
350
+ output_price=0.40 / 1e6,
351
+ ),
352
+ "gpt-5-nano-2025-08-07": make_model_data(
353
+ supports_log_probs=False,
354
+ supports_multimodal=False,
355
+ supports_structured_outputs=True,
356
+ supports_json=False,
357
+ supports_temperature=False,
358
+ input_price=0.05 / 1e6,
359
+ output_price=0.40 / 1e6,
360
+ ),
361
+ "gpt-5-chat-latest": make_model_data(
362
+ supports_log_probs=False,
363
+ supports_multimodal=False,
364
+ supports_structured_outputs=False,
365
+ supports_json=False,
366
+ input_price=1.25 / 1e6,
367
+ output_price=10.00 / 1e6,
368
+ ),
369
+ }
370
+ )
371
+
372
+
373
+ ANTHROPIC_MODELS_DATA = ModelDataRegistry(
374
+ {
375
+ "claude-3-opus-20240229": make_model_data(
376
+ supports_log_probs=False,
377
+ supports_multimodal=True,
378
+ supports_structured_outputs=False,
379
+ supports_json=True,
380
+ input_price=15.00 / 1e6,
381
+ output_price=75.00 / 1e6,
382
+ ),
383
+ "claude-3-sonnet-20240229": make_model_data(
384
+ supports_log_probs=False,
385
+ supports_multimodal=True,
386
+ supports_structured_outputs=False,
387
+ supports_json=True,
388
+ input_price=3.00 / 1e6,
389
+ output_price=15.00 / 1e6,
390
+ ),
391
+ "claude-3-haiku-20240307": make_model_data(
392
+ supports_log_probs=False,
393
+ supports_multimodal=True,
394
+ supports_structured_outputs=False,
395
+ supports_json=True,
396
+ input_price=0.25 / 1e6,
397
+ output_price=1.25 / 1e6,
398
+ ),
399
+ "claude-3-5-sonnet-20240620": make_model_data(
400
+ supports_log_probs=False,
401
+ supports_multimodal=True,
402
+ supports_structured_outputs=True,
403
+ supports_json=True,
404
+ input_price=3.00 / 1e6,
405
+ output_price=15.00 / 1e6,
406
+ ),
407
+ "claude-3-5-sonnet-20241022": make_model_data(
408
+ supports_log_probs=False,
409
+ supports_multimodal=True,
410
+ supports_structured_outputs=True,
411
+ supports_json=True,
412
+ input_price=3.00 / 1e6,
413
+ output_price=15.00 / 1e6,
414
+ ),
415
+ "claude-3-5-haiku-20241022": make_model_data(
416
+ supports_log_probs=False,
417
+ supports_multimodal=True,
418
+ supports_structured_outputs=True,
419
+ supports_json=True,
420
+ input_price=1.00 / 1e6,
421
+ output_price=5.00 / 1e6,
422
+ ),
423
+ "claude-3-7-sonnet-20250219": make_model_data(
424
+ supports_log_probs=False,
425
+ supports_multimodal=True,
426
+ supports_structured_outputs=True,
427
+ supports_json=True,
428
+ input_price=3.00 / 1e6,
429
+ output_price=15.00 / 1e6,
430
+ ),
431
+ "claude-opus-4-20250514": make_model_data(
432
+ supports_log_probs=False,
433
+ supports_multimodal=True,
434
+ supports_structured_outputs=True,
435
+ supports_json=True,
436
+ input_price=15.00 / 1e6,
437
+ output_price=75.00 / 1e6,
438
+ ),
439
+ "claude-opus-4-1-20250805": make_model_data(
440
+ supports_log_probs=False,
441
+ supports_multimodal=True,
442
+ supports_structured_outputs=True,
443
+ supports_json=True,
444
+ input_price=15.00 / 1e6,
445
+ output_price=75.00 / 1e6,
446
+ ),
447
+ "claude-sonnet-4-20250514": make_model_data(
448
+ supports_log_probs=False,
449
+ supports_multimodal=True,
450
+ supports_structured_outputs=True,
451
+ supports_json=True,
452
+ input_price=3.00 / 1e6,
453
+ output_price=15.00 / 1e6,
454
+ ),
455
+ "claude-sonnet-4-5-20250929": make_model_data(
456
+ supports_log_probs=False,
457
+ supports_multimodal=True,
458
+ supports_structured_outputs=True,
459
+ supports_json=True,
460
+ input_price=3.00 / 1e6,
461
+ output_price=15.00 / 1e6,
462
+ ),
463
+ "claude-haiku-4-5-20251001": make_model_data(
464
+ supports_log_probs=False,
465
+ supports_multimodal=True,
466
+ supports_structured_outputs=True,
467
+ supports_json=True,
468
+ input_price=1.00 / 1e6,
469
+ output_price=5.00 / 1e6,
470
+ ),
471
+ "claude-opus-4-5-20251124": make_model_data(
472
+ supports_log_probs=False,
473
+ supports_multimodal=True,
474
+ supports_structured_outputs=True,
475
+ supports_json=True,
476
+ input_price=15.00 / 1e6,
477
+ output_price=75.00 / 1e6,
478
+ ),
479
+ "claude-3-opus": make_model_data(
480
+ supports_log_probs=False,
481
+ supports_multimodal=True,
482
+ supports_structured_outputs=False,
483
+ supports_json=True,
484
+ input_price=15.00 / 1e6,
485
+ output_price=75.00 / 1e6,
486
+ ),
487
+ "claude-3-sonnet": make_model_data(
488
+ supports_log_probs=False,
489
+ supports_multimodal=True,
490
+ supports_structured_outputs=False,
491
+ supports_json=True,
492
+ input_price=3.00 / 1e6,
493
+ output_price=15.00 / 1e6,
494
+ ),
495
+ "claude-3-haiku": make_model_data(
496
+ supports_log_probs=False,
497
+ supports_multimodal=True,
498
+ supports_structured_outputs=False,
499
+ supports_json=True,
500
+ input_price=0.25 / 1e6,
501
+ output_price=1.25 / 1e6,
502
+ ),
503
+ "claude-3-5-sonnet": make_model_data(
504
+ supports_log_probs=False,
505
+ supports_multimodal=True,
506
+ supports_structured_outputs=True,
507
+ supports_json=True,
508
+ input_price=3.00 / 1e6,
509
+ output_price=15.00 / 1e6,
510
+ ),
511
+ "claude-3-5-haiku": make_model_data(
512
+ supports_log_probs=False,
513
+ supports_multimodal=True,
514
+ supports_structured_outputs=True,
515
+ supports_json=True,
516
+ input_price=1.00 / 1e6,
517
+ output_price=5.00 / 1e6,
518
+ ),
519
+ "claude-opus-4": make_model_data(
520
+ supports_log_probs=False,
521
+ supports_multimodal=True,
522
+ supports_structured_outputs=True,
523
+ supports_json=True,
524
+ input_price=15.00 / 1e6,
525
+ output_price=75.00 / 1e6,
526
+ ),
527
+ "claude-sonnet-4": make_model_data(
528
+ supports_log_probs=False,
529
+ supports_multimodal=True,
530
+ supports_structured_outputs=True,
531
+ supports_json=True,
532
+ input_price=3.00 / 1e6,
533
+ output_price=15.00 / 1e6,
534
+ ),
535
+ "claude-sonnet-4-5": make_model_data(
536
+ supports_log_probs=False,
537
+ supports_multimodal=True,
538
+ supports_structured_outputs=True,
539
+ supports_json=True,
540
+ input_price=3.00 / 1e6,
541
+ output_price=15.00 / 1e6,
542
+ ),
543
+ "claude-haiku-4-5": make_model_data(
544
+ supports_log_probs=False,
545
+ supports_multimodal=True,
546
+ supports_structured_outputs=True,
547
+ supports_json=True,
548
+ input_price=1.00 / 1e6,
549
+ output_price=5.00 / 1e6,
550
+ ),
551
+ "claude-opus-4-5": make_model_data(
552
+ supports_log_probs=False,
553
+ supports_multimodal=True,
554
+ supports_structured_outputs=True,
555
+ supports_json=True,
556
+ input_price=15.00 / 1e6,
557
+ output_price=75.00 / 1e6,
558
+ ),
559
+ }
560
+ )
561
+
562
+
563
+ GEMINI_MODELS_DATA = ModelDataRegistry(
564
+ {
565
+ "gemini-1.5-pro": make_model_data(
566
+ supports_log_probs=False,
567
+ supports_multimodal=True,
568
+ supports_structured_outputs=True,
569
+ supports_json=True,
570
+ input_price=1.25 / 1e6,
571
+ output_price=5.00 / 1e6,
572
+ ),
573
+ "gemini-1.5-pro-002": make_model_data(
574
+ supports_log_probs=False,
575
+ supports_multimodal=True,
576
+ supports_structured_outputs=True,
577
+ supports_json=True,
578
+ input_price=1.25 / 1e6,
579
+ output_price=5.00 / 1e6,
580
+ ),
581
+ "gemini-1.5-flash": make_model_data(
582
+ supports_log_probs=False,
583
+ supports_multimodal=True,
584
+ supports_structured_outputs=True,
585
+ supports_json=True,
586
+ input_price=0.075 / 1e6,
587
+ output_price=0.30 / 1e6,
588
+ ),
589
+ "gemini-1.5-flash-002": make_model_data(
590
+ supports_log_probs=False,
591
+ supports_multimodal=True,
592
+ supports_structured_outputs=True,
593
+ supports_json=True,
594
+ input_price=0.075 / 1e6,
595
+ output_price=0.30 / 1e6,
596
+ ),
597
+ "gemini-1.5-flash-8b": make_model_data(
598
+ supports_log_probs=False,
599
+ supports_multimodal=True,
600
+ supports_structured_outputs=True,
601
+ supports_json=True,
602
+ input_price=0.0375 / 1e6,
603
+ output_price=0.15 / 1e6,
604
+ ),
605
+ "gemini-2.0-flash": make_model_data(
606
+ supports_log_probs=False,
607
+ supports_multimodal=True,
608
+ supports_structured_outputs=True,
609
+ supports_json=True,
610
+ input_price=0.15 / 1e6,
611
+ output_price=0.60 / 1e6,
612
+ ),
613
+ "gemini-2.0-flash-lite": make_model_data(
614
+ supports_log_probs=False,
615
+ supports_multimodal=True,
616
+ supports_structured_outputs=True,
617
+ supports_json=True,
618
+ input_price=0.075 / 1e6,
619
+ output_price=0.30 / 1e6,
620
+ ),
621
+ "gemini-2.5-pro": make_model_data(
622
+ supports_log_probs=False,
623
+ supports_multimodal=True,
624
+ supports_structured_outputs=True,
625
+ supports_json=True,
626
+ input_price=1.25 / 1e6,
627
+ output_price=10.00 / 1e6,
628
+ ),
629
+ "gemini-2.5-flash": make_model_data(
630
+ supports_log_probs=False,
631
+ supports_multimodal=True,
632
+ supports_structured_outputs=True,
633
+ supports_json=True,
634
+ input_price=0.15 / 1e6,
635
+ output_price=0.60 / 1e6,
636
+ ),
637
+ "gemini-2.5-flash-lite": make_model_data(
638
+ supports_log_probs=False,
639
+ supports_multimodal=True,
640
+ supports_structured_outputs=True,
641
+ supports_json=True,
642
+ input_price=0.075 / 1e6,
643
+ output_price=0.30 / 1e6,
644
+ ),
645
+ "gemini-3-pro": make_model_data(
646
+ supports_log_probs=False,
647
+ supports_multimodal=True,
648
+ supports_structured_outputs=True,
649
+ supports_json=True,
650
+ input_price=1.25 / 1e6,
651
+ output_price=10.00 / 1e6,
652
+ ),
653
+ "gemini-3-pro-preview": make_model_data(
654
+ supports_log_probs=False,
655
+ supports_multimodal=True,
656
+ supports_structured_outputs=True,
657
+ supports_json=True,
658
+ input_price=1.25 / 1e6,
659
+ output_price=10.00 / 1e6,
660
+ ),
661
+ "gemini-pro": make_model_data(
662
+ supports_log_probs=False,
663
+ supports_multimodal=False,
664
+ supports_structured_outputs=True,
665
+ supports_json=True,
666
+ input_price=0.50 / 1e6,
667
+ output_price=1.50 / 1e6,
668
+ ),
669
+ "gemini-pro-vision": make_model_data(
670
+ supports_log_probs=False,
671
+ supports_multimodal=True,
672
+ supports_structured_outputs=True,
673
+ supports_json=True,
674
+ input_price=0.50 / 1e6,
675
+ output_price=1.50 / 1e6,
676
+ ),
677
+ }
678
+ )
679
+
680
+
681
+ GROK_MODELS_DATA = ModelDataRegistry(
682
+ {
683
+ "grok-3": make_model_data(
684
+ supports_log_probs=False,
685
+ supports_multimodal=False,
686
+ supports_structured_outputs=True,
687
+ supports_json=True,
688
+ input_price=None,
689
+ output_price=None,
690
+ ),
691
+ "grok-4": make_model_data(
692
+ supports_log_probs=False,
693
+ supports_multimodal=True,
694
+ supports_structured_outputs=True,
695
+ supports_json=True,
696
+ input_price=3.00 / 1e6,
697
+ output_price=15.00 / 1e6,
698
+ ),
699
+ "grok-4-fast": make_model_data(
700
+ supports_log_probs=False,
701
+ supports_multimodal=False,
702
+ supports_structured_outputs=True,
703
+ supports_json=True,
704
+ input_price=0.20 / 1e6,
705
+ output_price=0.50 / 1e6,
706
+ ),
707
+ "grok-4-heavy": make_model_data(
708
+ supports_log_probs=False,
709
+ supports_multimodal=True,
710
+ supports_structured_outputs=True,
711
+ supports_json=True,
712
+ input_price=3.00 / 1e6,
713
+ output_price=15.00 / 1e6,
714
+ ),
715
+ "grok-4.1": make_model_data(
716
+ supports_log_probs=False,
717
+ supports_multimodal=True,
718
+ supports_structured_outputs=True,
719
+ supports_json=True,
720
+ input_price=3.00 / 1e6,
721
+ output_price=15.00 / 1e6,
722
+ ),
723
+ "grok-beta": make_model_data(
724
+ supports_log_probs=False,
725
+ supports_multimodal=True,
726
+ supports_structured_outputs=True,
727
+ supports_json=True,
728
+ input_price=5.00 / 1e6,
729
+ output_price=15.00 / 1e6,
730
+ ),
731
+ "grok-2": make_model_data(
732
+ supports_log_probs=False,
733
+ supports_multimodal=True,
734
+ supports_structured_outputs=True,
735
+ supports_json=True,
736
+ input_price=2.00 / 1e6,
737
+ output_price=10.00 / 1e6,
738
+ ),
739
+ "grok-2-mini": make_model_data(
740
+ supports_log_probs=False,
741
+ supports_multimodal=True,
742
+ supports_structured_outputs=True,
743
+ supports_json=True,
744
+ input_price=0.50 / 1e6,
745
+ output_price=2.00 / 1e6,
746
+ ),
747
+ "grok-code-fast-1": make_model_data(
748
+ supports_log_probs=False,
749
+ supports_multimodal=False,
750
+ supports_structured_outputs=True,
751
+ supports_json=True,
752
+ input_price=0.20 / 1e6,
753
+ output_price=1.50 / 1e6,
754
+ ),
755
+ }
756
+ )
757
+
758
+
759
+ KIMI_MODELS_DATA = ModelDataRegistry(
760
+ {
761
+ "kimi-k2": make_model_data(
762
+ supports_log_probs=False,
763
+ supports_multimodal=True,
764
+ supports_structured_outputs=True,
765
+ supports_json=True,
766
+ input_price=0.58 / 1e6,
767
+ output_price=2.29 / 1e6,
768
+ ),
769
+ "kimi-k2-instruct": make_model_data(
770
+ supports_log_probs=False,
771
+ supports_multimodal=True,
772
+ supports_structured_outputs=True,
773
+ supports_json=True,
774
+ input_price=0.58 / 1e6,
775
+ output_price=2.29 / 1e6,
776
+ ),
777
+ "kimi-k2-base": make_model_data(
778
+ supports_log_probs=False,
779
+ supports_multimodal=True,
780
+ supports_structured_outputs=True,
781
+ supports_json=True,
782
+ input_price=None,
783
+ output_price=None,
784
+ ),
785
+ "moonshot-v1-8k": make_model_data(
786
+ supports_log_probs=False,
787
+ supports_multimodal=False,
788
+ supports_structured_outputs=True,
789
+ supports_json=True,
790
+ input_price=0.15 / 1e6,
791
+ output_price=2.50 / 1e6,
792
+ ),
793
+ "moonshot-v1-32k": make_model_data(
794
+ supports_log_probs=False,
795
+ supports_multimodal=False,
796
+ supports_structured_outputs=True,
797
+ supports_json=True,
798
+ input_price=0.15 / 1e6,
799
+ output_price=2.50 / 1e6,
800
+ ),
801
+ "moonshot-v1-128k": make_model_data(
802
+ supports_log_probs=False,
803
+ supports_multimodal=False,
804
+ supports_structured_outputs=True,
805
+ supports_json=True,
806
+ input_price=0.15 / 1e6,
807
+ output_price=2.50 / 1e6,
808
+ ),
809
+ }
810
+ )
811
+
812
+
813
+ DEEPSEEK_MODELS_DATA = ModelDataRegistry(
814
+ {
815
+ "deepseek-chat": make_model_data(
816
+ supports_log_probs=False,
817
+ supports_multimodal=False,
818
+ supports_structured_outputs=True,
819
+ supports_json=True,
820
+ input_price=0.028 / 1e6,
821
+ output_price=0.42 / 1e6,
822
+ ),
823
+ "deepseek-v3.2": make_model_data(
824
+ supports_log_probs=False,
825
+ supports_multimodal=False,
826
+ supports_structured_outputs=True,
827
+ supports_json=True,
828
+ input_price=0.028 / 1e6,
829
+ output_price=0.42 / 1e6,
830
+ ),
831
+ "deepseek-v3.2-exp": make_model_data(
832
+ supports_log_probs=False,
833
+ supports_multimodal=False,
834
+ supports_structured_outputs=True,
835
+ supports_json=True,
836
+ input_price=0.028 / 1e6,
837
+ output_price=0.42 / 1e6,
838
+ ),
839
+ "deepseek-v3.1": make_model_data(
840
+ supports_log_probs=False,
841
+ supports_multimodal=False,
842
+ supports_structured_outputs=True,
843
+ supports_json=True,
844
+ input_price=0.14 / 1e6,
845
+ output_price=0.28 / 1e6,
846
+ ),
847
+ "deepseek-v3": make_model_data(
848
+ supports_log_probs=False,
849
+ supports_multimodal=False,
850
+ supports_structured_outputs=True,
851
+ supports_json=True,
852
+ input_price=0.14 / 1e6,
853
+ output_price=0.28 / 1e6,
854
+ ),
855
+ "deepseek-reasoner": make_model_data(
856
+ supports_log_probs=False,
857
+ supports_multimodal=False,
858
+ supports_structured_outputs=True,
859
+ supports_json=True,
860
+ input_price=0.14 / 1e6,
861
+ output_price=2.19 / 1e6,
862
+ ),
863
+ "deepseek-r1": make_model_data(
864
+ supports_log_probs=False,
865
+ supports_multimodal=False,
866
+ supports_structured_outputs=True,
867
+ supports_json=True,
868
+ input_price=0.14 / 1e6,
869
+ output_price=2.19 / 1e6,
870
+ ),
871
+ "deepseek-r1-lite": make_model_data(
872
+ supports_log_probs=False,
873
+ supports_multimodal=False,
874
+ supports_structured_outputs=True,
875
+ supports_json=True,
876
+ input_price=0.055 / 1e6,
877
+ output_price=0.28 / 1e6,
878
+ ),
879
+ "deepseek-v2.5": make_model_data(
880
+ supports_log_probs=False,
881
+ supports_multimodal=False,
882
+ supports_structured_outputs=True,
883
+ supports_json=True,
884
+ input_price=0.14 / 1e6,
885
+ output_price=0.28 / 1e6,
886
+ ),
887
+ "deepseek-coder": make_model_data(
888
+ supports_log_probs=False,
889
+ supports_multimodal=False,
890
+ supports_structured_outputs=True,
891
+ supports_json=True,
892
+ input_price=0.14 / 1e6,
893
+ output_price=0.28 / 1e6,
894
+ ),
895
+ "deepseek-coder-6.7b": make_model_data(
896
+ supports_log_probs=False,
897
+ supports_multimodal=False,
898
+ supports_structured_outputs=True,
899
+ supports_json=True,
900
+ input_price=0.20 / 1e6,
901
+ output_price=0.40 / 1e6,
902
+ ),
903
+ "deepseek-coder-33b": make_model_data(
904
+ supports_log_probs=False,
905
+ supports_multimodal=False,
906
+ supports_structured_outputs=True,
907
+ supports_json=True,
908
+ input_price=1.00 / 1e6,
909
+ output_price=2.00 / 1e6,
910
+ ),
911
+ }
912
+ )
913
+
914
+
915
+ OLLAMA_MODELS_DATA = ModelDataRegistry(
916
+ {
917
+ "qwen3": make_model_data(
918
+ supports_log_probs=True,
919
+ supports_multimodal=False,
920
+ supports_structured_outputs=True,
921
+ supports_json=True,
922
+ input_price=None,
923
+ output_price=None,
924
+ ),
925
+ "qwen3:8b": make_model_data(
926
+ supports_log_probs=True,
927
+ supports_multimodal=False,
928
+ supports_structured_outputs=True,
929
+ supports_json=True,
930
+ input_price=None,
931
+ output_price=None,
932
+ ),
933
+ "qwen3:14b": make_model_data(
934
+ supports_log_probs=True,
935
+ supports_multimodal=False,
936
+ supports_structured_outputs=True,
937
+ supports_json=True,
938
+ input_price=None,
939
+ output_price=None,
940
+ ),
941
+ "qwen3:30b": make_model_data(
942
+ supports_log_probs=True,
943
+ supports_multimodal=False,
944
+ supports_structured_outputs=True,
945
+ supports_json=True,
946
+ input_price=None,
947
+ output_price=None,
948
+ ),
949
+ "qwen3-vl": make_model_data(
950
+ supports_log_probs=True,
951
+ supports_multimodal=True,
952
+ supports_structured_outputs=True,
953
+ supports_json=True,
954
+ input_price=None,
955
+ output_price=None,
956
+ ),
957
+ "qwen3-coder": make_model_data(
958
+ supports_log_probs=True,
959
+ supports_multimodal=False,
960
+ supports_structured_outputs=True,
961
+ supports_json=True,
962
+ input_price=None,
963
+ output_price=None,
964
+ ),
965
+ "qwen2.5": make_model_data(
966
+ supports_log_probs=True,
967
+ supports_multimodal=False,
968
+ supports_structured_outputs=True,
969
+ supports_json=True,
970
+ input_price=None,
971
+ output_price=None,
972
+ ),
973
+ "qwen2.5:7b": make_model_data(
974
+ supports_log_probs=True,
975
+ supports_multimodal=False,
976
+ supports_structured_outputs=True,
977
+ supports_json=True,
978
+ input_price=None,
979
+ output_price=None,
980
+ ),
981
+ "qwen2.5:14b": make_model_data(
982
+ supports_log_probs=True,
983
+ supports_multimodal=False,
984
+ supports_structured_outputs=True,
985
+ supports_json=True,
986
+ input_price=None,
987
+ output_price=None,
988
+ ),
989
+ "qwen2.5:32b": make_model_data(
990
+ supports_log_probs=True,
991
+ supports_multimodal=False,
992
+ supports_structured_outputs=True,
993
+ supports_json=True,
994
+ input_price=None,
995
+ output_price=None,
996
+ ),
997
+ "qwen2.5:72b": make_model_data(
998
+ supports_log_probs=True,
999
+ supports_multimodal=False,
1000
+ supports_structured_outputs=True,
1001
+ supports_json=True,
1002
+ input_price=None,
1003
+ output_price=None,
1004
+ ),
1005
+ "qwen2.5-coder": make_model_data(
1006
+ supports_log_probs=True,
1007
+ supports_multimodal=False,
1008
+ supports_structured_outputs=True,
1009
+ supports_json=True,
1010
+ input_price=None,
1011
+ output_price=None,
1012
+ ),
1013
+ "deepseek-r1": make_model_data(
1014
+ supports_log_probs=True,
1015
+ supports_multimodal=False,
1016
+ supports_structured_outputs=True,
1017
+ supports_json=True,
1018
+ input_price=None,
1019
+ output_price=None,
1020
+ ),
1021
+ "deepseek-r1:7b": make_model_data(
1022
+ supports_log_probs=True,
1023
+ supports_multimodal=False,
1024
+ supports_structured_outputs=True,
1025
+ supports_json=True,
1026
+ input_price=None,
1027
+ output_price=None,
1028
+ ),
1029
+ "deepseek-r1:14b": make_model_data(
1030
+ supports_log_probs=True,
1031
+ supports_multimodal=False,
1032
+ supports_structured_outputs=True,
1033
+ supports_json=True,
1034
+ input_price=None,
1035
+ output_price=None,
1036
+ ),
1037
+ "deepseek-r1:32b": make_model_data(
1038
+ supports_log_probs=True,
1039
+ supports_multimodal=False,
1040
+ supports_structured_outputs=True,
1041
+ supports_json=True,
1042
+ input_price=None,
1043
+ output_price=None,
1044
+ ),
1045
+ "deepseek-r1:70b": make_model_data(
1046
+ supports_log_probs=True,
1047
+ supports_multimodal=False,
1048
+ supports_structured_outputs=True,
1049
+ supports_json=True,
1050
+ input_price=None,
1051
+ output_price=None,
1052
+ ),
1053
+ "deepseek-r1:671b": make_model_data(
1054
+ supports_log_probs=True,
1055
+ supports_multimodal=False,
1056
+ supports_structured_outputs=True,
1057
+ supports_json=True,
1058
+ input_price=None,
1059
+ output_price=None,
1060
+ ),
1061
+ "deepseek-v3.1": make_model_data(
1062
+ supports_log_probs=True,
1063
+ supports_multimodal=False,
1064
+ supports_structured_outputs=True,
1065
+ supports_json=True,
1066
+ input_price=None,
1067
+ output_price=None,
1068
+ ),
1069
+ "deepseek-v3": make_model_data(
1070
+ supports_log_probs=True,
1071
+ supports_multimodal=False,
1072
+ supports_structured_outputs=True,
1073
+ supports_json=True,
1074
+ input_price=None,
1075
+ output_price=None,
1076
+ ),
1077
+ "deepseek-coder": make_model_data(
1078
+ supports_log_probs=True,
1079
+ supports_multimodal=False,
1080
+ supports_structured_outputs=True,
1081
+ supports_json=True,
1082
+ input_price=None,
1083
+ output_price=None,
1084
+ ),
1085
+ "deepseek-coder:6.7b": make_model_data(
1086
+ supports_log_probs=True,
1087
+ supports_multimodal=False,
1088
+ supports_structured_outputs=True,
1089
+ supports_json=True,
1090
+ input_price=None,
1091
+ output_price=None,
1092
+ ),
1093
+ "deepseek-coder:33b": make_model_data(
1094
+ supports_log_probs=True,
1095
+ supports_multimodal=False,
1096
+ supports_structured_outputs=True,
1097
+ supports_json=True,
1098
+ input_price=None,
1099
+ output_price=None,
1100
+ ),
1101
+ "deepseek-coder-v2": make_model_data(
1102
+ supports_log_probs=True,
1103
+ supports_multimodal=False,
1104
+ supports_structured_outputs=True,
1105
+ supports_json=True,
1106
+ input_price=None,
1107
+ output_price=None,
1108
+ ),
1109
+ "gemma3": make_model_data(
1110
+ supports_log_probs=True,
1111
+ supports_multimodal=True,
1112
+ supports_structured_outputs=True,
1113
+ supports_json=True,
1114
+ input_price=None,
1115
+ output_price=None,
1116
+ ),
1117
+ "gemma3:1b": make_model_data(
1118
+ supports_log_probs=True,
1119
+ supports_multimodal=False,
1120
+ supports_structured_outputs=True,
1121
+ supports_json=True,
1122
+ input_price=None,
1123
+ output_price=None,
1124
+ ),
1125
+ "gemma3:4b": make_model_data(
1126
+ supports_log_probs=True,
1127
+ supports_multimodal=False,
1128
+ supports_structured_outputs=True,
1129
+ supports_json=True,
1130
+ input_price=None,
1131
+ output_price=None,
1132
+ ),
1133
+ "gemma3:12b": make_model_data(
1134
+ supports_log_probs=True,
1135
+ supports_multimodal=False,
1136
+ supports_structured_outputs=True,
1137
+ supports_json=True,
1138
+ input_price=None,
1139
+ output_price=None,
1140
+ ),
1141
+ "gemma3:27b": make_model_data(
1142
+ supports_log_probs=True,
1143
+ supports_multimodal=False,
1144
+ supports_structured_outputs=True,
1145
+ supports_json=True,
1146
+ input_price=None,
1147
+ output_price=None,
1148
+ ),
1149
+ "gemma2": make_model_data(
1150
+ supports_log_probs=True,
1151
+ supports_multimodal=False,
1152
+ supports_structured_outputs=True,
1153
+ supports_json=True,
1154
+ input_price=None,
1155
+ output_price=None,
1156
+ ),
1157
+ "gemma2:2b": make_model_data(
1158
+ supports_log_probs=True,
1159
+ supports_multimodal=False,
1160
+ supports_structured_outputs=True,
1161
+ supports_json=True,
1162
+ input_price=None,
1163
+ output_price=None,
1164
+ ),
1165
+ "gemma2:9b": make_model_data(
1166
+ supports_log_probs=True,
1167
+ supports_multimodal=False,
1168
+ supports_structured_outputs=True,
1169
+ supports_json=True,
1170
+ input_price=None,
1171
+ output_price=None,
1172
+ ),
1173
+ "gemma2:27b": make_model_data(
1174
+ supports_log_probs=True,
1175
+ supports_multimodal=False,
1176
+ supports_structured_outputs=True,
1177
+ supports_json=True,
1178
+ input_price=None,
1179
+ output_price=None,
1180
+ ),
1181
+ "llama3.3": make_model_data(
1182
+ supports_log_probs=True,
1183
+ supports_multimodal=False,
1184
+ supports_structured_outputs=True,
1185
+ supports_json=True,
1186
+ input_price=None,
1187
+ output_price=None,
1188
+ ),
1189
+ "llama3.3:70b": make_model_data(
1190
+ supports_log_probs=True,
1191
+ supports_multimodal=False,
1192
+ supports_structured_outputs=True,
1193
+ supports_json=True,
1194
+ input_price=None,
1195
+ output_price=None,
1196
+ ),
1197
+ "llama3.2": make_model_data(
1198
+ supports_log_probs=True,
1199
+ supports_multimodal=False,
1200
+ supports_structured_outputs=True,
1201
+ supports_json=True,
1202
+ input_price=None,
1203
+ output_price=None,
1204
+ ),
1205
+ "llama3.2:1b": make_model_data(
1206
+ supports_log_probs=True,
1207
+ supports_multimodal=False,
1208
+ supports_structured_outputs=True,
1209
+ supports_json=True,
1210
+ input_price=None,
1211
+ output_price=None,
1212
+ ),
1213
+ "llama3.2:3b": make_model_data(
1214
+ supports_log_probs=True,
1215
+ supports_multimodal=False,
1216
+ supports_structured_outputs=True,
1217
+ supports_json=True,
1218
+ input_price=None,
1219
+ output_price=None,
1220
+ ),
1221
+ "llama3.2-vision": make_model_data(
1222
+ supports_log_probs=True,
1223
+ supports_multimodal=True,
1224
+ supports_structured_outputs=True,
1225
+ supports_json=True,
1226
+ input_price=None,
1227
+ output_price=None,
1228
+ ),
1229
+ "llama3.2-vision:11b": make_model_data(
1230
+ supports_log_probs=True,
1231
+ supports_multimodal=True,
1232
+ supports_structured_outputs=True,
1233
+ supports_json=True,
1234
+ input_price=None,
1235
+ output_price=None,
1236
+ ),
1237
+ "llama3.2-vision:90b": make_model_data(
1238
+ supports_log_probs=True,
1239
+ supports_multimodal=True,
1240
+ supports_structured_outputs=True,
1241
+ supports_json=True,
1242
+ input_price=None,
1243
+ output_price=None,
1244
+ ),
1245
+ "llama3.1": make_model_data(
1246
+ supports_log_probs=True,
1247
+ supports_multimodal=False,
1248
+ supports_structured_outputs=True,
1249
+ supports_json=True,
1250
+ input_price=None,
1251
+ output_price=None,
1252
+ ),
1253
+ "llama3.1:8b": make_model_data(
1254
+ supports_log_probs=True,
1255
+ supports_multimodal=False,
1256
+ supports_structured_outputs=True,
1257
+ supports_json=True,
1258
+ input_price=None,
1259
+ output_price=None,
1260
+ ),
1261
+ "llama3.1:70b": make_model_data(
1262
+ supports_log_probs=True,
1263
+ supports_multimodal=False,
1264
+ supports_structured_outputs=True,
1265
+ supports_json=True,
1266
+ input_price=None,
1267
+ output_price=None,
1268
+ ),
1269
+ "llama3.1:405b": make_model_data(
1270
+ supports_log_probs=True,
1271
+ supports_multimodal=False,
1272
+ supports_structured_outputs=True,
1273
+ supports_json=True,
1274
+ input_price=None,
1275
+ output_price=None,
1276
+ ),
1277
+ "llama3": make_model_data(
1278
+ supports_log_probs=True,
1279
+ supports_multimodal=False,
1280
+ supports_structured_outputs=True,
1281
+ supports_json=True,
1282
+ input_price=None,
1283
+ output_price=None,
1284
+ ),
1285
+ "llama3:8b": make_model_data(
1286
+ supports_log_probs=True,
1287
+ supports_multimodal=False,
1288
+ supports_structured_outputs=True,
1289
+ supports_json=True,
1290
+ input_price=None,
1291
+ output_price=None,
1292
+ ),
1293
+ "llama3:70b": make_model_data(
1294
+ supports_log_probs=True,
1295
+ supports_multimodal=False,
1296
+ supports_structured_outputs=True,
1297
+ supports_json=True,
1298
+ input_price=None,
1299
+ output_price=None,
1300
+ ),
1301
+ "llama2": make_model_data(
1302
+ supports_log_probs=True,
1303
+ supports_multimodal=False,
1304
+ supports_structured_outputs=True,
1305
+ supports_json=True,
1306
+ input_price=None,
1307
+ output_price=None,
1308
+ ),
1309
+ "llama2:7b": make_model_data(
1310
+ supports_log_probs=True,
1311
+ supports_multimodal=False,
1312
+ supports_structured_outputs=True,
1313
+ supports_json=True,
1314
+ input_price=None,
1315
+ output_price=None,
1316
+ ),
1317
+ "llama2:13b": make_model_data(
1318
+ supports_log_probs=True,
1319
+ supports_multimodal=False,
1320
+ supports_structured_outputs=True,
1321
+ supports_json=True,
1322
+ input_price=None,
1323
+ output_price=None,
1324
+ ),
1325
+ "llama2:70b": make_model_data(
1326
+ supports_log_probs=True,
1327
+ supports_multimodal=False,
1328
+ supports_structured_outputs=True,
1329
+ supports_json=True,
1330
+ input_price=None,
1331
+ output_price=None,
1332
+ ),
1333
+ "llama4": make_model_data(
1334
+ supports_log_probs=True,
1335
+ supports_multimodal=True,
1336
+ supports_structured_outputs=True,
1337
+ supports_json=True,
1338
+ input_price=None,
1339
+ output_price=None,
1340
+ ),
1341
+ "mistral": make_model_data(
1342
+ supports_log_probs=True,
1343
+ supports_multimodal=False,
1344
+ supports_structured_outputs=True,
1345
+ supports_json=True,
1346
+ input_price=None,
1347
+ output_price=None,
1348
+ ),
1349
+ "mistral:7b": make_model_data(
1350
+ supports_log_probs=True,
1351
+ supports_multimodal=False,
1352
+ supports_structured_outputs=True,
1353
+ supports_json=True,
1354
+ input_price=None,
1355
+ output_price=None,
1356
+ ),
1357
+ "mistral-nemo": make_model_data(
1358
+ supports_log_probs=True,
1359
+ supports_multimodal=False,
1360
+ supports_structured_outputs=True,
1361
+ supports_json=True,
1362
+ input_price=None,
1363
+ output_price=None,
1364
+ ),
1365
+ "mistral-small": make_model_data(
1366
+ supports_log_probs=True,
1367
+ supports_multimodal=False,
1368
+ supports_structured_outputs=True,
1369
+ supports_json=True,
1370
+ input_price=None,
1371
+ output_price=None,
1372
+ ),
1373
+ "mistral-large": make_model_data(
1374
+ supports_log_probs=True,
1375
+ supports_multimodal=False,
1376
+ supports_structured_outputs=True,
1377
+ supports_json=True,
1378
+ input_price=None,
1379
+ output_price=None,
1380
+ ),
1381
+ "mixtral": make_model_data(
1382
+ supports_log_probs=True,
1383
+ supports_multimodal=False,
1384
+ supports_structured_outputs=True,
1385
+ supports_json=True,
1386
+ input_price=None,
1387
+ output_price=None,
1388
+ ),
1389
+ "mixtral:8x7b": make_model_data(
1390
+ supports_log_probs=True,
1391
+ supports_multimodal=False,
1392
+ supports_structured_outputs=True,
1393
+ supports_json=True,
1394
+ input_price=None,
1395
+ output_price=None,
1396
+ ),
1397
+ "mixtral:8x22b": make_model_data(
1398
+ supports_log_probs=True,
1399
+ supports_multimodal=False,
1400
+ supports_structured_outputs=True,
1401
+ supports_json=True,
1402
+ input_price=None,
1403
+ output_price=None,
1404
+ ),
1405
+ "ministral-3": make_model_data(
1406
+ supports_log_probs=True,
1407
+ supports_multimodal=True,
1408
+ supports_structured_outputs=True,
1409
+ supports_json=True,
1410
+ input_price=None,
1411
+ output_price=None,
1412
+ ),
1413
+ "codestral": make_model_data(
1414
+ supports_log_probs=True,
1415
+ supports_multimodal=False,
1416
+ supports_structured_outputs=True,
1417
+ supports_json=True,
1418
+ input_price=None,
1419
+ output_price=None,
1420
+ ),
1421
+ "phi4": make_model_data(
1422
+ supports_log_probs=True,
1423
+ supports_multimodal=False,
1424
+ supports_structured_outputs=True,
1425
+ supports_json=True,
1426
+ input_price=None,
1427
+ output_price=None,
1428
+ ),
1429
+ "phi4:14b": make_model_data(
1430
+ supports_log_probs=True,
1431
+ supports_multimodal=False,
1432
+ supports_structured_outputs=True,
1433
+ supports_json=True,
1434
+ input_price=None,
1435
+ output_price=None,
1436
+ ),
1437
+ "phi3": make_model_data(
1438
+ supports_log_probs=True,
1439
+ supports_multimodal=False,
1440
+ supports_structured_outputs=True,
1441
+ supports_json=True,
1442
+ input_price=None,
1443
+ output_price=None,
1444
+ ),
1445
+ "phi3:3.8b": make_model_data(
1446
+ supports_log_probs=True,
1447
+ supports_multimodal=False,
1448
+ supports_structured_outputs=True,
1449
+ supports_json=True,
1450
+ input_price=None,
1451
+ output_price=None,
1452
+ ),
1453
+ "phi3:14b": make_model_data(
1454
+ supports_log_probs=True,
1455
+ supports_multimodal=False,
1456
+ supports_structured_outputs=True,
1457
+ supports_json=True,
1458
+ input_price=None,
1459
+ output_price=None,
1460
+ ),
1461
+ "llava": make_model_data(
1462
+ supports_log_probs=True,
1463
+ supports_multimodal=True,
1464
+ supports_structured_outputs=True,
1465
+ supports_json=True,
1466
+ input_price=None,
1467
+ output_price=None,
1468
+ ),
1469
+ "llava:7b": make_model_data(
1470
+ supports_log_probs=True,
1471
+ supports_multimodal=True,
1472
+ supports_structured_outputs=True,
1473
+ supports_json=True,
1474
+ input_price=None,
1475
+ output_price=None,
1476
+ ),
1477
+ "llava:13b": make_model_data(
1478
+ supports_log_probs=True,
1479
+ supports_multimodal=True,
1480
+ supports_structured_outputs=True,
1481
+ supports_json=True,
1482
+ input_price=None,
1483
+ output_price=None,
1484
+ ),
1485
+ "llava:34b": make_model_data(
1486
+ supports_log_probs=True,
1487
+ supports_multimodal=True,
1488
+ supports_structured_outputs=True,
1489
+ supports_json=True,
1490
+ input_price=None,
1491
+ output_price=None,
1492
+ ),
1493
+ "minicpm-v": make_model_data(
1494
+ supports_log_probs=True,
1495
+ supports_multimodal=True,
1496
+ supports_structured_outputs=True,
1497
+ supports_json=True,
1498
+ input_price=None,
1499
+ output_price=None,
1500
+ ),
1501
+ "moondream": make_model_data(
1502
+ supports_log_probs=True,
1503
+ supports_multimodal=True,
1504
+ supports_structured_outputs=True,
1505
+ supports_json=True,
1506
+ input_price=None,
1507
+ output_price=None,
1508
+ ),
1509
+ "codellama": make_model_data(
1510
+ supports_log_probs=True,
1511
+ supports_multimodal=False,
1512
+ supports_structured_outputs=True,
1513
+ supports_json=True,
1514
+ input_price=None,
1515
+ output_price=None,
1516
+ ),
1517
+ "codellama:7b": make_model_data(
1518
+ supports_log_probs=True,
1519
+ supports_multimodal=False,
1520
+ supports_structured_outputs=True,
1521
+ supports_json=True,
1522
+ input_price=None,
1523
+ output_price=None,
1524
+ ),
1525
+ "codellama:13b": make_model_data(
1526
+ supports_log_probs=True,
1527
+ supports_multimodal=False,
1528
+ supports_structured_outputs=True,
1529
+ supports_json=True,
1530
+ input_price=None,
1531
+ output_price=None,
1532
+ ),
1533
+ "codellama:34b": make_model_data(
1534
+ supports_log_probs=True,
1535
+ supports_multimodal=False,
1536
+ supports_structured_outputs=True,
1537
+ supports_json=True,
1538
+ input_price=None,
1539
+ output_price=None,
1540
+ ),
1541
+ "codellama:70b": make_model_data(
1542
+ supports_log_probs=True,
1543
+ supports_multimodal=False,
1544
+ supports_structured_outputs=True,
1545
+ supports_json=True,
1546
+ input_price=None,
1547
+ output_price=None,
1548
+ ),
1549
+ "starcoder2": make_model_data(
1550
+ supports_log_probs=True,
1551
+ supports_multimodal=False,
1552
+ supports_structured_outputs=True,
1553
+ supports_json=True,
1554
+ input_price=None,
1555
+ output_price=None,
1556
+ ),
1557
+ "starcoder2:3b": make_model_data(
1558
+ supports_log_probs=True,
1559
+ supports_multimodal=False,
1560
+ supports_structured_outputs=True,
1561
+ supports_json=True,
1562
+ input_price=None,
1563
+ output_price=None,
1564
+ ),
1565
+ "starcoder2:7b": make_model_data(
1566
+ supports_log_probs=True,
1567
+ supports_multimodal=False,
1568
+ supports_structured_outputs=True,
1569
+ supports_json=True,
1570
+ input_price=None,
1571
+ output_price=None,
1572
+ ),
1573
+ "starcoder2:15b": make_model_data(
1574
+ supports_log_probs=True,
1575
+ supports_multimodal=False,
1576
+ supports_structured_outputs=True,
1577
+ supports_json=True,
1578
+ input_price=None,
1579
+ output_price=None,
1580
+ ),
1581
+ "codegemma": make_model_data(
1582
+ supports_log_probs=True,
1583
+ supports_multimodal=False,
1584
+ supports_structured_outputs=True,
1585
+ supports_json=True,
1586
+ input_price=None,
1587
+ output_price=None,
1588
+ ),
1589
+ "codegemma:2b": make_model_data(
1590
+ supports_log_probs=True,
1591
+ supports_multimodal=False,
1592
+ supports_structured_outputs=True,
1593
+ supports_json=True,
1594
+ input_price=None,
1595
+ output_price=None,
1596
+ ),
1597
+ "codegemma:7b": make_model_data(
1598
+ supports_log_probs=True,
1599
+ supports_multimodal=False,
1600
+ supports_structured_outputs=True,
1601
+ supports_json=True,
1602
+ input_price=None,
1603
+ output_price=None,
1604
+ ),
1605
+ "tinyllama": make_model_data(
1606
+ supports_log_probs=True,
1607
+ supports_multimodal=False,
1608
+ supports_structured_outputs=True,
1609
+ supports_json=True,
1610
+ input_price=None,
1611
+ output_price=None,
1612
+ ),
1613
+ "tinyllama:1.1b": make_model_data(
1614
+ supports_log_probs=True,
1615
+ supports_multimodal=False,
1616
+ supports_structured_outputs=True,
1617
+ supports_json=True,
1618
+ input_price=None,
1619
+ output_price=None,
1620
+ ),
1621
+ "smollm2": make_model_data(
1622
+ supports_log_probs=True,
1623
+ supports_multimodal=False,
1624
+ supports_structured_outputs=True,
1625
+ supports_json=True,
1626
+ input_price=None,
1627
+ output_price=None,
1628
+ ),
1629
+ "smollm2:135m": make_model_data(
1630
+ supports_log_probs=True,
1631
+ supports_multimodal=False,
1632
+ supports_structured_outputs=True,
1633
+ supports_json=True,
1634
+ input_price=None,
1635
+ output_price=None,
1636
+ ),
1637
+ "smollm2:360m": make_model_data(
1638
+ supports_log_probs=True,
1639
+ supports_multimodal=False,
1640
+ supports_structured_outputs=True,
1641
+ supports_json=True,
1642
+ input_price=None,
1643
+ output_price=None,
1644
+ ),
1645
+ "smollm2:1.7b": make_model_data(
1646
+ supports_log_probs=True,
1647
+ supports_multimodal=False,
1648
+ supports_structured_outputs=True,
1649
+ supports_json=True,
1650
+ input_price=None,
1651
+ output_price=None,
1652
+ ),
1653
+ # IBM Granite Models
1654
+ "granite4": make_model_data(
1655
+ supports_log_probs=True,
1656
+ supports_multimodal=False,
1657
+ supports_structured_outputs=True,
1658
+ supports_json=True,
1659
+ input_price=None,
1660
+ output_price=None,
1661
+ ),
1662
+ "granite3.3": make_model_data(
1663
+ supports_log_probs=True,
1664
+ supports_multimodal=False,
1665
+ supports_structured_outputs=True,
1666
+ supports_json=True,
1667
+ input_price=None,
1668
+ output_price=None,
1669
+ ),
1670
+ "granite3.1-moe": make_model_data(
1671
+ supports_log_probs=True,
1672
+ supports_multimodal=False,
1673
+ supports_structured_outputs=True,
1674
+ supports_json=True,
1675
+ input_price=None,
1676
+ output_price=None,
1677
+ ),
1678
+ "granite-code": make_model_data(
1679
+ supports_log_probs=True,
1680
+ supports_multimodal=False,
1681
+ supports_structured_outputs=True,
1682
+ supports_json=True,
1683
+ input_price=None,
1684
+ output_price=None,
1685
+ ),
1686
+ # Embedding Models
1687
+ "nomic-embed-text": make_model_data(
1688
+ supports_log_probs=False,
1689
+ supports_multimodal=False,
1690
+ supports_structured_outputs=False,
1691
+ supports_json=False,
1692
+ input_price=None,
1693
+ output_price=None,
1694
+ ),
1695
+ "mxbai-embed-large": make_model_data(
1696
+ supports_log_probs=False,
1697
+ supports_multimodal=False,
1698
+ supports_structured_outputs=False,
1699
+ supports_json=False,
1700
+ input_price=None,
1701
+ output_price=None,
1702
+ ),
1703
+ "bge-m3": make_model_data(
1704
+ supports_log_probs=False,
1705
+ supports_multimodal=False,
1706
+ supports_structured_outputs=False,
1707
+ supports_json=False,
1708
+ input_price=None,
1709
+ output_price=None,
1710
+ ),
1711
+ "bge-large": make_model_data(
1712
+ supports_log_probs=False,
1713
+ supports_multimodal=False,
1714
+ supports_structured_outputs=False,
1715
+ supports_json=False,
1716
+ input_price=None,
1717
+ output_price=None,
1718
+ ),
1719
+ "all-minilm": make_model_data(
1720
+ supports_log_probs=False,
1721
+ supports_multimodal=False,
1722
+ supports_structured_outputs=False,
1723
+ supports_json=False,
1724
+ input_price=None,
1725
+ output_price=None,
1726
+ ),
1727
+ "snowflake-arctic-embed": make_model_data(
1728
+ supports_log_probs=False,
1729
+ supports_multimodal=False,
1730
+ supports_structured_outputs=False,
1731
+ supports_json=False,
1732
+ input_price=None,
1733
+ output_price=None,
1734
+ ),
1735
+ "dolphin3": make_model_data(
1736
+ supports_log_probs=True,
1737
+ supports_multimodal=False,
1738
+ supports_structured_outputs=True,
1739
+ supports_json=True,
1740
+ input_price=None,
1741
+ output_price=None,
1742
+ ),
1743
+ "dolphin-llama3": make_model_data(
1744
+ supports_log_probs=True,
1745
+ supports_multimodal=False,
1746
+ supports_structured_outputs=True,
1747
+ supports_json=True,
1748
+ input_price=None,
1749
+ output_price=None,
1750
+ ),
1751
+ "dolphin-mixtral": make_model_data(
1752
+ supports_log_probs=True,
1753
+ supports_multimodal=False,
1754
+ supports_structured_outputs=True,
1755
+ supports_json=True,
1756
+ input_price=None,
1757
+ output_price=None,
1758
+ ),
1759
+ "orca-mini": make_model_data(
1760
+ supports_log_probs=True,
1761
+ supports_multimodal=False,
1762
+ supports_structured_outputs=True,
1763
+ supports_json=True,
1764
+ input_price=None,
1765
+ output_price=None,
1766
+ ),
1767
+ "orca2": make_model_data(
1768
+ supports_log_probs=True,
1769
+ supports_multimodal=False,
1770
+ supports_structured_outputs=True,
1771
+ supports_json=True,
1772
+ input_price=None,
1773
+ output_price=None,
1774
+ ),
1775
+ "vicuna": make_model_data(
1776
+ supports_log_probs=True,
1777
+ supports_multimodal=False,
1778
+ supports_structured_outputs=True,
1779
+ supports_json=True,
1780
+ input_price=None,
1781
+ output_price=None,
1782
+ ),
1783
+ "nous-hermes2": make_model_data(
1784
+ supports_log_probs=True,
1785
+ supports_multimodal=False,
1786
+ supports_structured_outputs=True,
1787
+ supports_json=True,
1788
+ input_price=None,
1789
+ output_price=None,
1790
+ ),
1791
+ "command-r": make_model_data(
1792
+ supports_log_probs=True,
1793
+ supports_multimodal=False,
1794
+ supports_structured_outputs=True,
1795
+ supports_json=True,
1796
+ input_price=None,
1797
+ output_price=None,
1798
+ ),
1799
+ "command-r-plus": make_model_data(
1800
+ supports_log_probs=True,
1801
+ supports_multimodal=False,
1802
+ supports_structured_outputs=True,
1803
+ supports_json=True,
1804
+ input_price=None,
1805
+ output_price=None,
1806
+ ),
1807
+ }
1808
+ )
1809
+
1810
+
1811
+ BEDROCK_MODELS_DATA = ModelDataRegistry(
1812
+ {
1813
+ ########################
1814
+ # anthropic (claude 3) #
1815
+ ########################
1816
+ "anthropic.claude-3-opus-20240229-v1:0": make_model_data(
1817
+ supports_log_probs=False, # Converse responses don't include logprobs.
1818
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1819
+ supports_structured_outputs=True, # We support `schema` by parsing JSON from text (not toolConfig).
1820
+ supports_json=False, # No cross-model JSON-mode supported by AmazonBedrockModel yet
1821
+ input_price=None,
1822
+ output_price=None,
1823
+ ),
1824
+ "anthropic.claude-3-sonnet-20240229-v1:0": make_model_data(
1825
+ supports_log_probs=False,
1826
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1827
+ supports_structured_outputs=True,
1828
+ supports_json=False,
1829
+ input_price=None,
1830
+ output_price=None,
1831
+ ),
1832
+ ################################
1833
+ # anthropic (claude 4 / 4.5) #
1834
+ ################################
1835
+ "anthropic.claude-opus-4-20250514-v1:0": make_model_data(
1836
+ supports_log_probs=False,
1837
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1838
+ supports_structured_outputs=True, # SDK supports tool use for some Converse models. # noqa: E501
1839
+ supports_json=False,
1840
+ input_price=None,
1841
+ output_price=None,
1842
+ ),
1843
+ "anthropic.claude-opus-4-1-20250805-v1:0": make_model_data(
1844
+ supports_log_probs=False,
1845
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1846
+ supports_structured_outputs=True, # SDK supports tool use for some Converse models. # noqa: E501
1847
+ supports_json=False,
1848
+ input_price=None,
1849
+ output_price=None,
1850
+ ),
1851
+ "anthropic.claude-sonnet-4-20250514-v1:0": make_model_data(
1852
+ supports_log_probs=False,
1853
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1854
+ supports_structured_outputs=True, # SDK supports tool use for some Converse models. # noqa: E501
1855
+ supports_json=False,
1856
+ input_price=None,
1857
+ output_price=None,
1858
+ ),
1859
+ "anthropic.claude-sonnet-4-5-20250929-v1:0": make_model_data(
1860
+ supports_log_probs=False,
1861
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1862
+ supports_structured_outputs=True, # SDK supports tool use for some Converse models. # noqa: E501
1863
+ supports_json=False,
1864
+ input_price=None,
1865
+ output_price=None,
1866
+ ),
1867
+ "anthropic.claude-haiku-4-5-20251001-v1:0": make_model_data(
1868
+ supports_log_probs=False,
1869
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1870
+ supports_structured_outputs=True, # SDK supports tool use for some Converse models. # noqa: E501
1871
+ supports_json=False,
1872
+ input_price=None,
1873
+ output_price=None,
1874
+ ),
1875
+ ################
1876
+ # amazon titan #
1877
+ ################
1878
+ # NOTE: AWS examples for Titan Text are shown via InvokeModel (provider-specific),
1879
+ # not Converse, so these may not work with AmazonBedrockModel, which is converse only.
1880
+ "amazon.titan-text-express-v1": make_model_data(
1881
+ supports_log_probs=False,
1882
+ supports_multimodal=False,
1883
+ supports_structured_outputs=True,
1884
+ supports_json=False,
1885
+ input_price=None,
1886
+ output_price=None,
1887
+ ),
1888
+ "amazon.titan-text-premier-v1:0": make_model_data(
1889
+ supports_log_probs=False,
1890
+ supports_multimodal=False,
1891
+ supports_structured_outputs=True,
1892
+ supports_json=False,
1893
+ input_price=None,
1894
+ output_price=None,
1895
+ ),
1896
+ ###############
1897
+ # amazon nova #
1898
+ ###############
1899
+ "amazon.nova-micro-v1:0": make_model_data(
1900
+ supports_log_probs=False,
1901
+ supports_multimodal=False,
1902
+ supports_structured_outputs=True,
1903
+ supports_json=False,
1904
+ input_price=None,
1905
+ output_price=None,
1906
+ ),
1907
+ "amazon.nova-lite-v1:0": make_model_data(
1908
+ supports_log_probs=False,
1909
+ supports_multimodal=False, # Some Nova models support multimodal via Converse; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1910
+ supports_structured_outputs=True, # Some Nova models support tool use. # noqa: E501
1911
+ supports_json=False,
1912
+ input_price=None,
1913
+ output_price=None,
1914
+ ),
1915
+ "amazon.nova-pro-v1:0": make_model_data(
1916
+ supports_log_probs=False,
1917
+ supports_multimodal=False, # Some Nova models support multimodal via Converse; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1918
+ supports_structured_outputs=True, # Some Nova models support tool use. # noqa: E501
1919
+ supports_json=False,
1920
+ input_price=None,
1921
+ output_price=None,
1922
+ ),
1923
+ "amazon.nova-premier-v1:0": make_model_data(
1924
+ supports_log_probs=False,
1925
+ supports_multimodal=False, # Some Nova models support multimodal via Converse; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1926
+ supports_structured_outputs=True, # Some Nova models support tool use. # noqa: E501
1927
+ supports_json=False,
1928
+ input_price=None,
1929
+ output_price=None,
1930
+ ),
1931
+ ##################
1932
+ # meta (llama 4) #
1933
+ ##################
1934
+ "meta.llama4-maverick-17b-instruct-v1:0": make_model_data(
1935
+ supports_log_probs=False,
1936
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1937
+ supports_structured_outputs=True, # SDK tool use varies by model. # noqa: E501
1938
+ supports_json=False,
1939
+ input_price=None,
1940
+ output_price=None,
1941
+ ),
1942
+ "meta.llama4-maverick-17b-instruct-128k-v1:0": make_model_data(
1943
+ supports_log_probs=False,
1944
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1945
+ supports_structured_outputs=True,
1946
+ supports_json=False,
1947
+ input_price=None,
1948
+ output_price=None,
1949
+ ),
1950
+ "meta.llama4-scout-17b-instruct-v1:0": make_model_data(
1951
+ supports_log_probs=False,
1952
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1953
+ supports_structured_outputs=True,
1954
+ supports_json=False,
1955
+ input_price=None,
1956
+ output_price=None,
1957
+ ),
1958
+ "meta.llama4-scout-17b-instruct-128k-v1:0": make_model_data(
1959
+ supports_log_probs=False,
1960
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1961
+ supports_structured_outputs=True,
1962
+ supports_json=False,
1963
+ input_price=None,
1964
+ output_price=None,
1965
+ ),
1966
+ ##################
1967
+ # mistral (text) #
1968
+ ##################
1969
+ "mistral.mistral-large-2407-v1:0": make_model_data(
1970
+ supports_log_probs=False,
1971
+ supports_multimodal=False,
1972
+ supports_structured_outputs=True,
1973
+ supports_json=False,
1974
+ input_price=None,
1975
+ output_price=None,
1976
+ ),
1977
+ "mistral.mistral-large-2411-v1:0": make_model_data(
1978
+ supports_log_probs=False,
1979
+ supports_multimodal=False,
1980
+ supports_structured_outputs=True,
1981
+ supports_json=False,
1982
+ input_price=None,
1983
+ output_price=None,
1984
+ ),
1985
+ ############################
1986
+ # mistral (pixtral/vision) #
1987
+ ############################
1988
+ "mistral.pixtral-large-2411-v1:0": make_model_data(
1989
+ supports_log_probs=False,
1990
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1991
+ supports_structured_outputs=True,
1992
+ supports_json=False,
1993
+ input_price=None,
1994
+ output_price=None,
1995
+ ),
1996
+ "mistral.pixtral-large-2502-v1:0": make_model_data(
1997
+ supports_log_probs=False,
1998
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
1999
+ supports_structured_outputs=True,
2000
+ supports_json=False,
2001
+ input_price=None,
2002
+ output_price=None,
2003
+ ),
2004
+ "mistral.pixtral-large-2511-v1:0": make_model_data(
2005
+ supports_log_probs=False,
2006
+ supports_multimodal=False, # SDK/model supports image input; DeepEval AmazonBedrockModel is text-only today. # noqa: E501
2007
+ supports_structured_outputs=True,
2008
+ supports_json=False,
2009
+ input_price=None,
2010
+ output_price=None,
2011
+ ),
2012
+ ####################
2013
+ # openai (gpt-oss) #
2014
+ ####################
2015
+ "openai.gpt-oss-20b-1:0": make_model_data(
2016
+ supports_log_probs=False,
2017
+ supports_multimodal=False,
2018
+ supports_structured_outputs=True,
2019
+ supports_json=False,
2020
+ input_price=None,
2021
+ output_price=None,
2022
+ ),
2023
+ "openai.gpt-oss-120b-1:0": make_model_data(
2024
+ supports_log_probs=False,
2025
+ supports_multimodal=False,
2026
+ supports_structured_outputs=True,
2027
+ supports_json=False,
2028
+ input_price=None,
2029
+ output_price=None,
2030
+ ),
2031
+ }
2032
+ )