@@ -165,4 +165,70 @@ export const PROVIDER_TOOL_SUPPORT: Record<
165
165
)
166
166
return true ;
167
167
} ,
168
+ openrouter : ( model ) => {
169
+ if (
170
+ [ "vision" , "math" , "guard" , "mistrallite" , "mistral-openorca" ] . some (
171
+ ( part ) => model . toLowerCase ( ) . includes ( part ) ,
172
+ )
173
+ ) {
174
+ return false ;
175
+ }
176
+
177
+ const supportedPrefixes = [
178
+ "openai/gpt-3.5" ,
179
+ "openai/gpt-4" ,
180
+ "openai/o1" ,
181
+ "openai/o3" ,
182
+ "openai/o4" ,
183
+ "anthropic/claude-3" ,
184
+ "microsoft/phi-3" ,
185
+ "google/gemini-flash-1.5" ,
186
+ "google/gemini-2" ,
187
+ "google/gemini-pro" ,
188
+ "x-ai/grok" ,
189
+ "qwen/qwen3" ,
190
+ "qwen/qwen-" ,
191
+ "cohere/command-r" ,
192
+ "ai21/jamba-1.6" ,
193
+ "mistralai/mistral" ,
194
+ "mistralai/ministral" ,
195
+ "mistralai/codestral" ,
196
+ "mistralai/mixtral" ,
197
+ "mistral/ministral" ,
198
+ "mistralai/pixtral" ,
199
+ "meta-llama/llama-3.3" ,
200
+ "amazon/nova" ,
201
+ "deepseek/deepseek-r1" ,
202
+ "deepseek/deepseek-chat" ,
203
+ "meta-llama/llama-4" ,
204
+ "all-hands/openhands-lm-32b" ,
205
+ ] ;
206
+ for ( const prefix of supportedPrefixes ) {
207
+ if ( model . toLowerCase ( ) . startsWith ( prefix ) ) {
208
+ return true ;
209
+ }
210
+ }
211
+
212
+ const specificModels = [
213
+ "qwen/qwq-32b" ,
214
+ "qwen/qwen-2.5-72b-instruct" ,
215
+ "meta-llama/llama-3.2-3b-instruct" ,
216
+ "meta-llama/llama-3-8b-instruct" ,
217
+ "meta-llama/llama-3-70b-instruct" ,
218
+ "arcee-ai/caller-large" ,
219
+ "nousresearch/hermes-3-llama-3.1-70b" ,
220
+ ] ;
221
+ for ( const model of specificModels ) {
222
+ if ( model . toLowerCase ( ) === model ) {
223
+ return true ;
224
+ }
225
+ }
226
+
227
+ const supportedContains = [ "llama-3.1" ] ;
228
+ for ( const model of supportedContains ) {
229
+ if ( model . toLowerCase ( ) . includes ( model ) ) {
230
+ return true ;
231
+ }
232
+ }
233
+ } ,
168
234
} ;
0 commit comments