models.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. from .Provider import IterListProvider, ProviderType
  4. from .Provider import (
  5. ### No Auth Required ###
  6. AllenAI,
  7. Blackbox,
  8. ChatGLM,
  9. ChatGptEs,
  10. Cloudflare,
  11. Copilot,
  12. DDG,
  13. DeepInfraChat,
  14. Dynaspark,
  15. Free2GPT,
  16. FreeGpt,
  17. HuggingSpace,
  18. G4F,
  19. DeepseekAI_JanusPro7b,
  20. Glider,
  21. Goabror,
  22. ImageLabs,
  23. Jmuz,
  24. LambdaChat,
  25. Liaobots,
  26. OIVSCode,
  27. PerplexityLabs,
  28. Pi,
  29. PollinationsAI,
  30. PollinationsImage,
  31. TeachAnything,
  32. Websim,
  33. Yqcloud,
  34. ### Needs Auth ###
  35. BingCreateImages,
  36. CopilotAccount,
  37. Gemini,
  38. GeminiPro,
  39. GigaChat,
  40. HailuoAI,
  41. HuggingChat,
  42. HuggingFace,
  43. HuggingFaceAPI,
  44. MetaAI,
  45. MicrosoftDesigner,
  46. OpenaiAccount,
  47. OpenaiChat,
  48. Reka,
  49. )
  50. @dataclass(unsafe_hash=True)
  51. class Model:
  52. """
  53. Represents a machine learning model configuration.
  54. Attributes:
  55. name (str): Name of the model.
  56. base_provider (str): Default provider for the model.
  57. best_provider (ProviderType): The preferred provider for the model, typically with retry logic.
  58. """
  59. name: str
  60. base_provider: str
  61. best_provider: ProviderType = None
  62. @staticmethod
  63. def __all__() -> list[str]:
  64. """Returns a list of all model names."""
  65. return _all_models
  66. class ImageModel(Model):
  67. pass
  68. class VisionModel(Model):
  69. pass
  70. ### Default ###
  71. default = Model(
  72. name = "",
  73. base_provider = "",
  74. best_provider = IterListProvider([
  75. DDG,
  76. Blackbox,
  77. Copilot,
  78. DeepInfraChat,
  79. AllenAI,
  80. PollinationsAI,
  81. OIVSCode,
  82. ChatGptEs,
  83. Free2GPT,
  84. FreeGpt,
  85. Glider,
  86. Dynaspark,
  87. OpenaiChat,
  88. Jmuz,
  89. Cloudflare,
  90. ])
  91. )
  92. default_vision = Model(
  93. name = "",
  94. base_provider = "",
  95. best_provider = IterListProvider([
  96. Blackbox,
  97. OIVSCode,
  98. DeepInfraChat,
  99. PollinationsAI,
  100. Dynaspark,
  101. HuggingSpace,
  102. GeminiPro,
  103. HuggingFaceAPI,
  104. CopilotAccount,
  105. OpenaiAccount,
  106. Gemini,
  107. ], shuffle=False)
  108. )
  109. ###################
  110. ### Text/Vision ###
  111. ###################
  112. ### OpenAI ###
  113. # gpt-4
  114. gpt_4 = Model(
  115. name = 'gpt-4',
  116. base_provider = 'OpenAI',
  117. best_provider = IterListProvider([DDG, Jmuz, ChatGptEs, PollinationsAI, Yqcloud, Goabror, Copilot, OpenaiChat, Liaobots])
  118. )
  119. # gpt-4o
  120. gpt_4o = VisionModel(
  121. name = 'gpt-4o',
  122. base_provider = 'OpenAI',
  123. best_provider = IterListProvider([Blackbox, Jmuz, ChatGptEs, PollinationsAI, Liaobots, OpenaiChat])
  124. )
  125. gpt_4o_mini = Model(
  126. name = 'gpt-4o-mini',
  127. base_provider = 'OpenAI',
  128. best_provider = IterListProvider([DDG, Blackbox, ChatGptEs, Jmuz, PollinationsAI, OIVSCode, Liaobots, OpenaiChat])
  129. )
  130. # o1
  131. o1 = Model(
  132. name = 'o1',
  133. base_provider = 'OpenAI',
  134. best_provider = IterListProvider([Blackbox, Copilot, OpenaiAccount])
  135. )
  136. o1_mini = Model(
  137. name = 'o1-mini',
  138. base_provider = 'OpenAI',
  139. best_provider = OpenaiAccount
  140. )
  141. # o3
  142. o3_mini = Model(
  143. name = 'o3-mini',
  144. base_provider = 'OpenAI',
  145. best_provider = IterListProvider([DDG, Blackbox, Liaobots, PollinationsAI])
  146. )
  147. ### GigaChat ###
  148. gigachat = Model(
  149. name = 'GigaChat:latest',
  150. base_provider = 'gigachat',
  151. best_provider = GigaChat
  152. )
  153. ### Meta ###
  154. meta = Model(
  155. name = "meta-ai",
  156. base_provider = "Meta",
  157. best_provider = MetaAI
  158. )
  159. # llama 2
  160. llama_2_7b = Model(
  161. name = "llama-2-7b",
  162. base_provider = "Meta Llama",
  163. best_provider = Cloudflare
  164. )
  165. # llama 3
  166. llama_3_8b = Model(
  167. name = "llama-3-8b",
  168. base_provider = "Meta Llama",
  169. best_provider = IterListProvider([Jmuz, Cloudflare])
  170. )
  171. llama_3_70b = Model(
  172. name = "llama-3-70b",
  173. base_provider = "Meta Llama",
  174. best_provider = Jmuz
  175. )
  176. # llama 3.1
  177. llama_3_1_8b = Model(
  178. name = "llama-3.1-8b",
  179. base_provider = "Meta Llama",
  180. best_provider = IterListProvider([DeepInfraChat, Glider, PollinationsAI, AllenAI, Jmuz, Cloudflare])
  181. )
  182. llama_3_1_70b = Model(
  183. name = "llama-3.1-70b",
  184. base_provider = "Meta Llama",
  185. best_provider = IterListProvider([Glider, AllenAI, Jmuz])
  186. )
  187. llama_3_1_405b = Model(
  188. name = "llama-3.1-405b",
  189. base_provider = "Meta Llama",
  190. best_provider = IterListProvider([AllenAI, Jmuz])
  191. )
  192. # llama 3.2
  193. llama_3 = VisionModel(
  194. name = "llama-3",
  195. base_provider = "Meta Llama",
  196. best_provider = IterListProvider([HuggingChat, HuggingFace])
  197. )
  198. llama_3_2_1b = Model(
  199. name = "llama-3.2-1b",
  200. base_provider = "Meta Llama",
  201. best_provider = Cloudflare
  202. )
  203. llama_3_2_3b = Model(
  204. name = "llama-3.2-3b",
  205. base_provider = "Meta Llama",
  206. best_provider = Glider
  207. )
  208. llama_3_2_11b = VisionModel(
  209. name = "llama-3.2-11b",
  210. base_provider = "Meta Llama",
  211. best_provider = IterListProvider([Jmuz, HuggingChat, HuggingFace])
  212. )
  213. llama_3_2_90b = Model(
  214. name = "llama-3.2-90b",
  215. base_provider = "Meta Llama",
  216. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  217. )
  218. # llama 3.3
  219. llama_3_3_70b = Model(
  220. name = "llama-3.3-70b",
  221. base_provider = "Meta Llama",
  222. best_provider = IterListProvider([DDG, DeepInfraChat, LambdaChat, PollinationsAI, Jmuz, HuggingChat, HuggingFace])
  223. )
  224. ### Mistral ###
  225. mixtral_8x7b = Model(
  226. name = "mixtral-8x7b",
  227. base_provider = "Mistral",
  228. best_provider = Jmuz
  229. )
  230. mixtral_8x22b = Model(
  231. name = "mixtral-8x22b",
  232. base_provider = "Mistral",
  233. best_provider = DeepInfraChat
  234. )
  235. mistral_nemo = Model(
  236. name = "mistral-nemo",
  237. base_provider = "Mistral",
  238. best_provider = IterListProvider([PollinationsAI, HuggingChat, HuggingFace])
  239. )
  240. mixtral_small_24b = Model(
  241. name = "mixtral-small-24b",
  242. base_provider = "Mistral",
  243. best_provider = IterListProvider([DDG, DeepInfraChat])
  244. )
  245. ### NousResearch ###
  246. hermes_3 = Model(
  247. name = "hermes-3",
  248. base_provider = "NousResearch",
  249. best_provider = LambdaChat
  250. )
  251. ### Microsoft ###
  252. # phi
  253. phi_3_5_mini = Model(
  254. name = "phi-3.5-mini",
  255. base_provider = "Microsoft",
  256. best_provider = HuggingChat
  257. )
  258. phi_4 = Model(
  259. name = "phi-4",
  260. base_provider = "Microsoft",
  261. best_provider = IterListProvider([DeepInfraChat, PollinationsAI])
  262. )
  263. # wizardlm
  264. wizardlm_2_7b = Model(
  265. name = 'wizardlm-2-7b',
  266. base_provider = 'Microsoft',
  267. best_provider = DeepInfraChat
  268. )
  269. wizardlm_2_8x22b = Model(
  270. name = 'wizardlm-2-8x22b',
  271. base_provider = 'Microsoft',
  272. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  273. )
  274. ### Google DeepMind ###
  275. # gemini
  276. gemini = Model(
  277. name = 'gemini-2.0',
  278. base_provider = 'Google',
  279. best_provider = Gemini
  280. )
  281. # gemini-exp
  282. gemini_exp = Model(
  283. name = 'gemini-exp',
  284. base_provider = 'Google',
  285. best_provider = Jmuz
  286. )
  287. # gemini-1.5
  288. gemini_1_5_flash = Model(
  289. name = 'gemini-1.5-flash',
  290. base_provider = 'Google DeepMind',
  291. best_provider = IterListProvider([Free2GPT, FreeGpt, TeachAnything, Websim, Dynaspark, Jmuz, GeminiPro])
  292. )
  293. gemini_1_5_pro = Model(
  294. name = 'gemini-1.5-pro',
  295. base_provider = 'Google DeepMind',
  296. best_provider = IterListProvider([Free2GPT, FreeGpt, TeachAnything, Websim, Jmuz, GeminiPro])
  297. )
  298. # gemini-2.0
  299. gemini_2_0_flash = Model(
  300. name = 'gemini-2.0-flash',
  301. base_provider = 'Google DeepMind',
  302. best_provider = IterListProvider([Dynaspark, GeminiPro, Liaobots])
  303. )
  304. gemini_2_0_flash_thinking = Model(
  305. name = 'gemini-2.0-flash-thinking',
  306. base_provider = 'Google DeepMind',
  307. best_provider = Liaobots
  308. )
  309. gemini_2_0_pro = Model(
  310. name = 'gemini-2.0-pro',
  311. base_provider = 'Google DeepMind',
  312. best_provider = Liaobots
  313. )
  314. ### Anthropic ###
  315. # claude 3
  316. claude_3_haiku = Model(
  317. name = 'claude-3-haiku',
  318. base_provider = 'Anthropic',
  319. best_provider = IterListProvider([DDG, Jmuz])
  320. )
  321. claude_3_sonnet = Model(
  322. name = 'claude-3-sonnet',
  323. base_provider = 'Anthropic',
  324. best_provider = Liaobots
  325. )
  326. claude_3_opus = Model(
  327. name = 'claude-3-opus',
  328. base_provider = 'Anthropic',
  329. best_provider = IterListProvider([Jmuz, Liaobots])
  330. )
  331. # claude 3.5
  332. claude_3_5_sonnet = Model(
  333. name = 'claude-3.5-sonnet',
  334. base_provider = 'Anthropic',
  335. best_provider = IterListProvider([Jmuz, Liaobots])
  336. )
  337. # claude 3.7
  338. claude_3_7_sonnet = Model(
  339. name = 'claude-3.7-sonnet',
  340. base_provider = 'Anthropic',
  341. best_provider = IterListProvider([Blackbox, Liaobots])
  342. )
  343. claude_3_7_sonnet_thinking = Model(
  344. name = 'claude-3.7-sonnet-thinking',
  345. base_provider = 'Anthropic',
  346. best_provider = Liaobots
  347. )
  348. ### Reka AI ###
  349. reka_core = Model(
  350. name = 'reka-core',
  351. base_provider = 'Reka AI',
  352. best_provider = Reka
  353. )
  354. ### Blackbox AI ###
  355. blackboxai = Model(
  356. name = 'blackboxai',
  357. base_provider = 'Blackbox AI',
  358. best_provider = Blackbox
  359. )
  360. ### CohereForAI ###
  361. command_r = Model(
  362. name = 'command-r',
  363. base_provider = 'CohereForAI',
  364. best_provider = HuggingSpace
  365. )
  366. command_r_plus = Model(
  367. name = 'command-r-plus',
  368. base_provider = 'CohereForAI',
  369. best_provider = IterListProvider([HuggingSpace, HuggingChat])
  370. )
  371. command_r7b = Model(
  372. name = 'command-r7b',
  373. base_provider = 'CohereForAI',
  374. best_provider = HuggingSpace
  375. )
  376. command_a = Model(
  377. name = 'command-a',
  378. base_provider = 'CohereForAI',
  379. best_provider = HuggingSpace
  380. )
  381. ### Qwen ###
  382. qwen_1_5_7b = Model(
  383. name = 'qwen-1.5-7b',
  384. base_provider = 'Qwen',
  385. best_provider = Cloudflare
  386. )
  387. qwen_2_72b = Model(
  388. name = 'qwen-2-72b',
  389. base_provider = 'Qwen',
  390. best_provider = IterListProvider([DeepInfraChat, HuggingSpace])
  391. )
  392. qwen_2_vl_7b = VisionModel(
  393. name = "qwen-2-vl-7b",
  394. base_provider = 'Qwen',
  395. best_provider = HuggingFaceAPI
  396. )
  397. qwen_2_5_72b = Model(
  398. name = 'qwen-2.5-72b',
  399. base_provider = 'Qwen',
  400. best_provider = Jmuz
  401. )
  402. qwen_2_5_coder_32b = Model(
  403. name = 'qwen-2.5-coder-32b',
  404. base_provider = 'Qwen',
  405. best_provider = IterListProvider([PollinationsAI, Jmuz, HuggingChat])
  406. )
  407. qwen_2_5_1m = Model(
  408. name = 'qwen-2.5-1m-demo',
  409. base_provider = 'Qwen',
  410. best_provider = HuggingSpace
  411. )
  412. ### qwq/qvq ###
  413. qwq_32b = Model(
  414. name = 'qwq-32b',
  415. base_provider = 'Qwen',
  416. best_provider = IterListProvider([Jmuz, HuggingChat])
  417. )
  418. qvq_72b = VisionModel(
  419. name = 'qvq-72b',
  420. base_provider = 'Qwen',
  421. best_provider = HuggingSpace
  422. )
  423. ### Inflection ###
  424. pi = Model(
  425. name = 'pi',
  426. base_provider = 'Inflection',
  427. best_provider = Pi
  428. )
  429. ### DeepSeek ###
  430. deepseek_chat = Model(
  431. name = 'deepseek-chat',
  432. base_provider = 'DeepSeek',
  433. best_provider = IterListProvider([Blackbox, Jmuz])
  434. )
  435. deepseek_v3 = Model(
  436. name = 'deepseek-v3',
  437. base_provider = 'DeepSeek',
  438. best_provider = IterListProvider([Blackbox, DeepInfraChat, LambdaChat, OIVSCode, Liaobots])
  439. )
  440. deepseek_r1 = Model(
  441. name = 'deepseek-r1',
  442. base_provider = 'DeepSeek',
  443. best_provider = IterListProvider([Blackbox, DeepInfraChat, Glider, LambdaChat, PollinationsAI, Jmuz, Liaobots, HuggingChat, HuggingFace])
  444. )
  445. janus_pro_7b = VisionModel(
  446. name = DeepseekAI_JanusPro7b.default_model,
  447. base_provider = 'DeepSeek',
  448. best_provider = IterListProvider([DeepseekAI_JanusPro7b, G4F])
  449. )
  450. ### x.ai ###
  451. grok_3 = Model(
  452. name = 'grok-3',
  453. base_provider = 'x.ai',
  454. best_provider = Liaobots
  455. )
  456. grok_3_r1 = Model(
  457. name = 'grok-3-r1',
  458. base_provider = 'x.ai',
  459. best_provider = Liaobots
  460. )
  461. ### Perplexity AI ###
  462. sonar = Model(
  463. name = 'sonar',
  464. base_provider = 'Perplexity AI',
  465. best_provider = PerplexityLabs
  466. )
  467. sonar_pro = Model(
  468. name = 'sonar-pro',
  469. base_provider = 'Perplexity AI',
  470. best_provider = PerplexityLabs
  471. )
  472. sonar_reasoning = Model(
  473. name = 'sonar-reasoning',
  474. base_provider = 'Perplexity AI',
  475. best_provider = PerplexityLabs
  476. )
  477. sonar_reasoning_pro = Model(
  478. name = 'sonar-reasoning-pro',
  479. base_provider = 'Perplexity AI',
  480. best_provider = PerplexityLabs
  481. )
  482. r1_1776 = Model(
  483. name = 'r1-1776',
  484. base_provider = 'Perplexity AI',
  485. best_provider = PerplexityLabs
  486. )
  487. ### Nvidia ###
  488. nemotron_70b = Model(
  489. name = 'nemotron-70b',
  490. base_provider = 'Nvidia',
  491. best_provider = IterListProvider([LambdaChat, HuggingChat, HuggingFace])
  492. )
  493. ### Databricks ###
  494. dbrx_instruct = Model(
  495. name = 'dbrx-instruct',
  496. base_provider = 'Databricks',
  497. best_provider = DeepInfraChat
  498. )
  499. ### THUDM ###
  500. glm_4 = Model(
  501. name = 'glm-4',
  502. base_provider = 'THUDM',
  503. best_provider = ChatGLM
  504. )
  505. ### MiniMax ###
  506. mini_max = Model(
  507. name = "MiniMax",
  508. base_provider = "MiniMax",
  509. best_provider = HailuoAI
  510. )
  511. ### 01-ai ###
  512. yi_34b = Model(
  513. name = "yi-34b",
  514. base_provider = "01-ai",
  515. best_provider = DeepInfraChat
  516. )
  517. ### Cognitive Computations ###
  518. dolphin_2_6 = Model(
  519. name = "dolphin-2.6",
  520. base_provider = "Cognitive Computations",
  521. best_provider = DeepInfraChat
  522. )
  523. dolphin_2_9 = Model(
  524. name = "dolphin-2.9",
  525. base_provider = "Cognitive Computations",
  526. best_provider = DeepInfraChat
  527. )
  528. ### DeepInfra ###
  529. airoboros_70b = Model(
  530. name = "airoboros-70b",
  531. base_provider = "DeepInfra",
  532. best_provider = DeepInfraChat
  533. )
  534. ### Lizpreciatior ###
  535. lzlv_70b = Model(
  536. name = "lzlv-70b",
  537. base_provider = "Lizpreciatior",
  538. best_provider = DeepInfraChat
  539. )
  540. ### OpenBMB ###
  541. minicpm_2_5 = Model(
  542. name = "minicpm-2.5",
  543. base_provider = "OpenBMB",
  544. best_provider = DeepInfraChat
  545. )
  546. ### Ai2 ###
  547. tulu_3_405b = Model(
  548. name = "tulu-3-405b",
  549. base_provider = "Ai2",
  550. best_provider = AllenAI
  551. )
  552. olmo_2_13b = Model(
  553. name = "olmo-2-13b",
  554. base_provider = "Ai2",
  555. best_provider = AllenAI
  556. )
  557. tulu_3_1_8b = Model(
  558. name = "tulu-3-1-8b",
  559. base_provider = "Ai2",
  560. best_provider = AllenAI
  561. )
  562. tulu_3_70b = Model(
  563. name = "tulu-3-70b",
  564. base_provider = "Ai2",
  565. best_provider = AllenAI
  566. )
  567. olmoe_0125 = Model(
  568. name = "olmoe-0125",
  569. base_provider = "Ai2",
  570. best_provider = AllenAI
  571. )
  572. lfm_40b = Model(
  573. name = "lfm-40b",
  574. base_provider = "Liquid AI",
  575. best_provider = LambdaChat
  576. )
  577. ### Uncensored AI ###
  578. evil = Model(
  579. name = 'evil',
  580. base_provider = 'Evil Mode - Experimental',
  581. best_provider = PollinationsAI
  582. )
  583. #############
  584. ### Image ###
  585. #############
  586. ### Stability AI ###
  587. sdxl_turbo = ImageModel(
  588. name = 'sdxl-turbo',
  589. base_provider = 'Stability AI',
  590. best_provider = IterListProvider([PollinationsImage, ImageLabs])
  591. )
  592. sd_3_5 = ImageModel(
  593. name = 'sd-3.5',
  594. base_provider = 'Stability AI',
  595. best_provider = HuggingSpace
  596. )
  597. ### Black Forest Labs ###
  598. flux = ImageModel(
  599. name = 'flux',
  600. base_provider = 'Black Forest Labs',
  601. best_provider = IterListProvider([Blackbox, PollinationsImage, Websim, HuggingSpace])
  602. )
  603. flux_pro = ImageModel(
  604. name = 'flux-pro',
  605. base_provider = 'Black Forest Labs',
  606. best_provider = PollinationsImage
  607. )
  608. flux_dev = ImageModel(
  609. name = 'flux-dev',
  610. base_provider = 'Black Forest Labs',
  611. best_provider = IterListProvider([PollinationsImage, HuggingSpace, HuggingChat, HuggingFace])
  612. )
  613. flux_schnell = ImageModel(
  614. name = 'flux-schnell',
  615. base_provider = 'Black Forest Labs',
  616. best_provider = IterListProvider([PollinationsImage, HuggingSpace, HuggingChat, HuggingFace])
  617. )
  618. ### OpenAI ###
  619. dall_e_3 = ImageModel(
  620. name = 'dall-e-3',
  621. base_provider = 'OpenAI',
  622. best_provider = IterListProvider([PollinationsImage, CopilotAccount, OpenaiAccount, MicrosoftDesigner, BingCreateImages])
  623. )
  624. ### Midjourney ###
  625. midjourney = ImageModel(
  626. name = 'midjourney',
  627. base_provider = 'Midjourney',
  628. best_provider = PollinationsImage
  629. )
  630. class ModelUtils:
  631. """
  632. Utility class for mapping string identifiers to Model instances.
  633. Attributes:
  634. convert (dict[str, Model]): Dictionary mapping model string identifiers to Model instances.
  635. """
  636. convert: dict[str, Model] = {
  637. ############
  638. ### Text ###
  639. ############
  640. ### OpenAI ###
  641. # gpt-4
  642. gpt_4.name: gpt_4,
  643. # gpt-4o
  644. gpt_4o.name: gpt_4o,
  645. gpt_4o_mini.name: gpt_4o_mini,
  646. # o1
  647. o1.name: o1,
  648. o1_mini.name: o1_mini,
  649. # o3
  650. o3_mini.name: o3_mini,
  651. ### Meta ###
  652. meta.name: meta,
  653. # llama-2
  654. llama_2_7b.name: llama_2_7b,
  655. # llama-3
  656. llama_3_8b.name: llama_3_8b,
  657. llama_3_70b.name: llama_3_70b,
  658. # llama-3.1
  659. llama_3_1_8b.name: llama_3_1_8b,
  660. llama_3_1_70b.name: llama_3_1_70b,
  661. llama_3_1_405b.name: llama_3_1_405b,
  662. # llama-3.2
  663. llama_3_2_1b.name: llama_3_2_1b,
  664. llama_3_2_3b.name: llama_3_2_3b,
  665. llama_3_2_11b.name: llama_3_2_11b,
  666. llama_3_2_90b.name: llama_3_2_90b,
  667. # llama-3.3
  668. llama_3_3_70b.name: llama_3_3_70b,
  669. ### Mistral ###
  670. mixtral_8x7b.name: mixtral_8x7b,
  671. mixtral_8x22b.name: mixtral_8x22b,
  672. mistral_nemo.name: mistral_nemo,
  673. mixtral_small_24b.name: mixtral_small_24b,
  674. ### NousResearch ###
  675. hermes_3.name: hermes_3,
  676. ### Microsoft ###
  677. # phi
  678. phi_3_5_mini.name: phi_3_5_mini,
  679. phi_4.name: phi_4,
  680. # wizardlm
  681. wizardlm_2_7b.name: wizardlm_2_7b,
  682. wizardlm_2_8x22b.name: wizardlm_2_8x22b,
  683. ### Google ###
  684. ### Gemini
  685. "gemini": gemini,
  686. gemini.name: gemini,
  687. gemini_exp.name: gemini_exp,
  688. gemini_1_5_pro.name: gemini_1_5_pro,
  689. gemini_1_5_flash.name: gemini_1_5_flash,
  690. gemini_2_0_flash.name: gemini_2_0_flash,
  691. gemini_2_0_flash_thinking.name: gemini_2_0_flash_thinking,
  692. gemini_2_0_pro.name: gemini_2_0_pro,
  693. ### Anthropic ###
  694. # claude 3
  695. claude_3_opus.name: claude_3_opus,
  696. claude_3_sonnet.name: claude_3_sonnet,
  697. claude_3_haiku.name: claude_3_haiku,
  698. # claude 3.5
  699. claude_3_5_sonnet.name: claude_3_5_sonnet,
  700. # claude 3.7
  701. claude_3_7_sonnet.name: claude_3_7_sonnet,
  702. claude_3_7_sonnet_thinking.name: claude_3_7_sonnet_thinking,
  703. ### Reka AI ###
  704. reka_core.name: reka_core,
  705. ### Blackbox AI ###
  706. blackboxai.name: blackboxai,
  707. ### CohereForAI ###
  708. command_r.name: command_r,
  709. command_r_plus.name: command_r_plus,
  710. command_r7b.name: command_r7b,
  711. command_a.name: command_a,
  712. ### GigaChat ###
  713. gigachat.name: gigachat,
  714. ### Qwen ###
  715. qwen_1_5_7b.name: qwen_1_5_7b,
  716. qwen_2_72b.name: qwen_2_72b,
  717. qwen_2_vl_7b.name: qwen_2_vl_7b,
  718. qwen_2_5_72b.name: qwen_2_5_72b,
  719. qwen_2_5_coder_32b.name: qwen_2_5_coder_32b,
  720. qwen_2_5_1m.name: qwen_2_5_1m,
  721. # qwq/qvq
  722. qwq_32b.name: qwq_32b,
  723. qvq_72b.name: qvq_72b,
  724. ### Inflection ###
  725. pi.name: pi,
  726. ### x.ai ###
  727. grok_3.name: grok_3,
  728. ### Perplexity AI ###
  729. sonar.name: sonar,
  730. sonar_pro.name: sonar_pro,
  731. sonar_reasoning.name: sonar_reasoning,
  732. sonar_reasoning_pro.name: sonar_reasoning_pro,
  733. r1_1776.name: r1_1776,
  734. ### DeepSeek ###
  735. deepseek_chat.name: deepseek_chat,
  736. deepseek_v3.name: deepseek_v3,
  737. deepseek_r1.name: deepseek_r1,
  738. ### Nvidia ###
  739. nemotron_70b.name: nemotron_70b,
  740. ### Databricks ###
  741. dbrx_instruct.name: dbrx_instruct,
  742. ### THUDM ###
  743. glm_4.name: glm_4,
  744. ## MiniMax ###
  745. mini_max.name: mini_max,
  746. ## 01-ai ###
  747. yi_34b.name: yi_34b,
  748. ### Cognitive Computations ###
  749. dolphin_2_6.name: dolphin_2_6,
  750. dolphin_2_9.name: dolphin_2_9,
  751. ### DeepInfra ###
  752. airoboros_70b.name: airoboros_70b,
  753. ### Lizpreciatior ###
  754. lzlv_70b.name: lzlv_70b,
  755. ### OpenBMB ###
  756. minicpm_2_5.name: minicpm_2_5,
  757. ### Ai2 ###
  758. tulu_3_405b.name: tulu_3_405b,
  759. olmo_2_13b.name: olmo_2_13b,
  760. tulu_3_1_8b.name: tulu_3_1_8b,
  761. tulu_3_70b.name: tulu_3_70b,
  762. olmoe_0125.name: olmoe_0125,
  763. ### Liquid AI ###
  764. lfm_40b.name: lfm_40b,
  765. ### Uncensored AI ###
  766. evil.name: evil,
  767. #############
  768. ### Image ###
  769. #############
  770. ### Stability AI ###
  771. sdxl_turbo.name: sdxl_turbo,
  772. sd_3_5.name: sd_3_5,
  773. ### Flux AI ###
  774. flux.name: flux,
  775. flux_pro.name: flux_pro,
  776. flux_dev.name: flux_dev,
  777. flux_schnell.name: flux_schnell,
  778. ### OpenAI ###
  779. dall_e_3.name: dall_e_3,
  780. ### Midjourney ###
  781. midjourney.name: midjourney,
  782. }
  783. demo_models = {
  784. "default": [llama_3, [HuggingFace]],
  785. llama_3_2_11b.name: [llama_3_2_11b, [HuggingChat]],
  786. qwen_2_vl_7b.name: [qwen_2_vl_7b, [HuggingFaceAPI]],
  787. deepseek_r1.name: [deepseek_r1, [HuggingFace, PollinationsAI]],
  788. janus_pro_7b.name: [janus_pro_7b, [HuggingSpace, G4F]],
  789. command_r.name: [command_r, [HuggingSpace]],
  790. command_r_plus.name: [command_r_plus, [HuggingSpace]],
  791. command_r7b.name: [command_r7b, [HuggingSpace]],
  792. qwen_2_5_coder_32b.name: [qwen_2_5_coder_32b, [HuggingFace]],
  793. qwq_32b.name: [qwq_32b, [HuggingFace]],
  794. llama_3_3_70b.name: [llama_3_3_70b, [HuggingFace]],
  795. sd_3_5.name: [sd_3_5, [HuggingSpace, HuggingFace]],
  796. flux_dev.name: [flux_dev, [PollinationsImage, HuggingFace, HuggingSpace]],
  797. flux_schnell.name: [flux_schnell, [PollinationsImage, HuggingFace, HuggingSpace]],
  798. }
  799. # Create a list of all models and his providers
  800. __models__ = {
  801. model.name: (model, providers)
  802. for model, providers in [
  803. (model, [provider for provider in model.best_provider.providers if provider.working]
  804. if isinstance(model.best_provider, IterListProvider)
  805. else [model.best_provider]
  806. if model.best_provider is not None and model.best_provider.working
  807. else [])
  808. for model in ModelUtils.convert.values()]
  809. if providers
  810. }
  811. _all_models = list(__models__.keys())