models.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773
  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. Blackbox,
  7. BlackboxAPI,
  8. CablyAI,
  9. ChatGLM,
  10. ChatGptEs,
  11. ChatGptt,
  12. Cloudflare,
  13. Copilot,
  14. DDG,
  15. DeepInfraChat,
  16. HuggingSpace,
  17. Glider,
  18. ImageLabs,
  19. Jmuz,
  20. Liaobots,
  21. Mhystical,
  22. OIVSCode,
  23. PerplexityLabs,
  24. Pi,
  25. PollinationsAI,
  26. TeachAnything,
  27. Yqcloud,
  28. ### needs auth ###
  29. BingCreateImages,
  30. CopilotAccount,
  31. Gemini,
  32. GeminiPro,
  33. GigaChat,
  34. HailuoAI,
  35. HuggingChat,
  36. HuggingFace,
  37. HuggingFaceAPI,
  38. MetaAI,
  39. MicrosoftDesigner,
  40. OpenaiAccount,
  41. OpenaiChat,
  42. Reka,
  43. )
  44. @dataclass(unsafe_hash=True)
  45. class Model:
  46. """
  47. Represents a machine learning model configuration.
  48. Attributes:
  49. name (str): Name of the model.
  50. base_provider (str): Default provider for the model.
  51. best_provider (ProviderType): The preferred provider for the model, typically with retry logic.
  52. """
  53. name: str
  54. base_provider: str
  55. best_provider: ProviderType = None
  56. @staticmethod
  57. def __all__() -> list[str]:
  58. """Returns a list of all model names."""
  59. return _all_models
  60. class ImageModel(Model):
  61. pass
  62. class VisionModel(Model):
  63. pass
  64. ### Default ###
  65. default = Model(
  66. name = "",
  67. base_provider = "",
  68. best_provider = IterListProvider([
  69. DDG,
  70. Blackbox,
  71. Copilot,
  72. DeepInfraChat,
  73. ChatGptEs,
  74. ChatGptt,
  75. PollinationsAI,
  76. Jmuz,
  77. CablyAI,
  78. OIVSCode,
  79. OpenaiChat,
  80. Cloudflare,
  81. ])
  82. )
  83. default_vision = Model(
  84. name = "",
  85. base_provider = "",
  86. best_provider = IterListProvider([
  87. Blackbox,
  88. PollinationsAI,
  89. HuggingSpace,
  90. GeminiPro,
  91. HuggingFaceAPI,
  92. CopilotAccount,
  93. OpenaiAccount,
  94. Gemini,
  95. ], shuffle=False)
  96. )
  97. ###################
  98. ### Text/Vision ###
  99. ###################
  100. ### OpenAI ###
  101. # gpt-4
  102. gpt_4 = Model(
  103. name = 'gpt-4',
  104. base_provider = 'OpenAI',
  105. best_provider = IterListProvider([DDG, Jmuz, ChatGptEs, ChatGptt, PollinationsAI, Yqcloud, Copilot, OpenaiChat, Liaobots, Mhystical])
  106. )
  107. # gpt-4o
  108. gpt_4o = VisionModel(
  109. name = 'gpt-4o',
  110. base_provider = 'OpenAI',
  111. best_provider = IterListProvider([ChatGptt, Jmuz, ChatGptEs, PollinationsAI, Copilot, Liaobots, OpenaiChat])
  112. )
  113. gpt_4o_mini = Model(
  114. name = 'gpt-4o-mini',
  115. base_provider = 'OpenAI',
  116. best_provider = IterListProvider([DDG, ChatGptEs, ChatGptt, Jmuz, PollinationsAI, OIVSCode, CablyAI, Liaobots, OpenaiChat])
  117. )
  118. # o1
  119. o1 = Model(
  120. name = 'o1',
  121. base_provider = 'OpenAI',
  122. best_provider = OpenaiAccount
  123. )
  124. o1_preview = Model(
  125. name = 'o1-preview',
  126. base_provider = 'OpenAI',
  127. best_provider = Liaobots
  128. )
  129. o1_mini = Model(
  130. name = 'o1-mini',
  131. base_provider = 'OpenAI',
  132. best_provider = Liaobots
  133. )
  134. # o3
  135. o3_mini_low = Model(
  136. name = 'o3-mini-low',
  137. base_provider = 'OpenAI',
  138. best_provider = CablyAI
  139. )
  140. ### GigaChat ###
  141. gigachat = Model(
  142. name = 'GigaChat:latest',
  143. base_provider = 'gigachat',
  144. best_provider = GigaChat
  145. )
  146. ### Meta ###
  147. meta = Model(
  148. name = "meta-ai",
  149. base_provider = "Meta",
  150. best_provider = MetaAI
  151. )
  152. # llama 2
  153. llama_2_7b = Model(
  154. name = "llama-2-7b",
  155. base_provider = "Meta Llama",
  156. best_provider = Cloudflare
  157. )
  158. # llama 3
  159. llama_3_8b = Model(
  160. name = "llama-3-8b",
  161. base_provider = "Meta Llama",
  162. best_provider = IterListProvider([Jmuz, Cloudflare])
  163. )
  164. llama_3_70b = Model(
  165. name = "llama-3-70b",
  166. base_provider = "Meta Llama",
  167. best_provider = Jmuz
  168. )
  169. # llama 3.1
  170. llama_3_1_8b = Model(
  171. name = "llama-3.1-8b",
  172. base_provider = "Meta Llama",
  173. best_provider = IterListProvider([Blackbox, DeepInfraChat, Glider, Jmuz, PollinationsAI, CablyAI, Cloudflare])
  174. )
  175. llama_3_1_70b = Model(
  176. name = "llama-3.1-70b",
  177. base_provider = "Meta Llama",
  178. best_provider = IterListProvider([DDG, Blackbox, Glider, Jmuz, TeachAnything])
  179. )
  180. llama_3_1_405b = Model(
  181. name = "llama-3.1-405b",
  182. base_provider = "Meta Llama",
  183. best_provider = IterListProvider([Blackbox, Jmuz])
  184. )
  185. # llama 3.2
  186. llama_3_2_1b = Model(
  187. name = "llama-3.2-1b",
  188. base_provider = "Meta Llama",
  189. best_provider = Cloudflare
  190. )
  191. llama_3_2_3b = Model(
  192. name = "llama-3.2-3b",
  193. base_provider = "Meta Llama",
  194. best_provider = Glider
  195. )
  196. llama_3_2_11b = VisionModel(
  197. name = "llama-3.2-11b",
  198. base_provider = "Meta Llama",
  199. best_provider = IterListProvider([Jmuz, HuggingChat, HuggingFace])
  200. )
  201. llama_3_2_90b = Model(
  202. name = "llama-3.2-90b",
  203. base_provider = "Meta Llama",
  204. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  205. )
  206. # llama 3.3
  207. llama_3_3_70b = Model(
  208. name = "llama-3.3-70b",
  209. base_provider = "Meta Llama",
  210. best_provider = IterListProvider([Blackbox, DeepInfraChat, PollinationsAI, Jmuz, HuggingChat, HuggingFace])
  211. )
  212. ### Mistral ###
  213. mixtral_8x7b = Model(
  214. name = "mixtral-8x7b",
  215. base_provider = "Mistral",
  216. best_provider = IterListProvider([DDG, Jmuz])
  217. )
  218. mistral_nemo = Model(
  219. name = "mistral-nemo",
  220. base_provider = "Mistral",
  221. best_provider = IterListProvider([PollinationsAI, HuggingChat, HuggingFace])
  222. )
  223. mixtral_small_28b = Model(
  224. name = "mixtral-small-28b",
  225. base_provider = "Mistral",
  226. best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat])
  227. )
  228. ### NousResearch ###
  229. hermes_2_dpo = Model(
  230. name = "hermes-2-dpo",
  231. base_provider = "NousResearch",
  232. best_provider = IterListProvider([Blackbox, BlackboxAPI])
  233. )
  234. ### Microsoft ###
  235. # phi
  236. phi_3_5_mini = Model(
  237. name = "phi-3.5-mini",
  238. base_provider = "Microsoft",
  239. best_provider = HuggingChat
  240. )
  241. phi_4 = Model(
  242. name = "phi-4",
  243. base_provider = "Microsoft",
  244. best_provider = DeepInfraChat
  245. )
  246. # wizardlm
  247. wizardlm_2_8x22b = Model(
  248. name = 'wizardlm-2-8x22b',
  249. base_provider = 'Microsoft',
  250. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  251. )
  252. ### Google DeepMind ###
  253. # gemini
  254. gemini = Model(
  255. name = 'gemini',
  256. base_provider = 'Google',
  257. best_provider = Gemini
  258. )
  259. # gemini-exp
  260. gemini_exp = Model(
  261. name = 'gemini-exp',
  262. base_provider = 'Google',
  263. best_provider = Jmuz
  264. )
  265. # gemini-1.5
  266. gemini_1_5_flash = Model(
  267. name = 'gemini-1.5-flash',
  268. base_provider = 'Google DeepMind',
  269. best_provider = IterListProvider([Blackbox, Jmuz, Gemini, GeminiPro, Liaobots])
  270. )
  271. gemini_1_5_pro = Model(
  272. name = 'gemini-1.5-pro',
  273. base_provider = 'Google DeepMind',
  274. best_provider = IterListProvider([Blackbox, Jmuz, Gemini, GeminiPro, Liaobots])
  275. )
  276. # gemini-2.0
  277. gemini_2_0_flash = Model(
  278. name = 'gemini-2.0-flash',
  279. base_provider = 'Google DeepMind',
  280. best_provider = IterListProvider([GeminiPro, Liaobots])
  281. )
  282. gemini_2_0_flash_thinking = Model(
  283. name = 'gemini-2.0-flash-thinking',
  284. base_provider = 'Google DeepMind',
  285. best_provider = Liaobots
  286. )
  287. ### Anthropic ###
  288. # claude 3
  289. claude_3_haiku = Model(
  290. name = 'claude-3-haiku',
  291. base_provider = 'Anthropic',
  292. best_provider = IterListProvider([DDG, Jmuz])
  293. )
  294. claude_3_sonnet = Model(
  295. name = 'claude-3-sonnet',
  296. base_provider = 'Anthropic',
  297. best_provider = Liaobots
  298. )
  299. claude_3_opus = Model(
  300. name = 'claude-3-opus',
  301. base_provider = 'Anthropic',
  302. best_provider = IterListProvider([Jmuz, Liaobots])
  303. )
  304. # claude 3.5
  305. claude_3_5_sonnet = Model(
  306. name = 'claude-3.5-sonnet',
  307. base_provider = 'Anthropic',
  308. best_provider = IterListProvider([Jmuz, Liaobots])
  309. )
  310. ### Reka AI ###
  311. reka_core = Model(
  312. name = 'reka-core',
  313. base_provider = 'Reka AI',
  314. best_provider = Reka
  315. )
  316. ### Blackbox AI ###
  317. blackboxai = Model(
  318. name = 'blackboxai',
  319. base_provider = 'Blackbox AI',
  320. best_provider = Blackbox
  321. )
  322. blackboxai_pro = Model(
  323. name = 'blackboxai-pro',
  324. base_provider = 'Blackbox AI',
  325. best_provider = Blackbox
  326. )
  327. ### CohereForAI ###
  328. command_r = Model(
  329. name = 'command-r',
  330. base_provider = 'CohereForAI',
  331. best_provider = HuggingSpace
  332. )
  333. command_r_plus = Model(
  334. name = 'command-r-plus',
  335. base_provider = 'CohereForAI',
  336. best_provider = IterListProvider([HuggingSpace, HuggingChat])
  337. )
  338. command_r7b = Model(
  339. name = 'command-r7b',
  340. base_provider = 'CohereForAI',
  341. best_provider = HuggingSpace
  342. )
  343. ### Qwen ###
  344. qwen_1_5_7b = Model(
  345. name = 'qwen-1.5-7b',
  346. base_provider = 'Qwen',
  347. best_provider = Cloudflare
  348. )
  349. qwen_2_72b = Model(
  350. name = 'qwen-2-72b',
  351. base_provider = 'Qwen',
  352. best_provider = HuggingSpace
  353. )
  354. qwen_2_vl_7b = VisionModel(
  355. name = "qwen-2-vl-7b",
  356. base_provider = 'Qwen',
  357. best_provider = HuggingFaceAPI
  358. )
  359. qwen_2_5_72b = Model(
  360. name = 'qwen-2.5-72b',
  361. base_provider = 'Qwen',
  362. best_provider = IterListProvider([DeepInfraChat, PollinationsAI, Jmuz])
  363. )
  364. qwen_2_5_coder_32b = Model(
  365. name = 'qwen-2.5-coder-32b',
  366. base_provider = 'Qwen',
  367. best_provider = IterListProvider([PollinationsAI, Jmuz, HuggingChat])
  368. )
  369. qwen_2_5_1m = Model(
  370. name = 'qwen-2.5-1m-demo',
  371. base_provider = 'Qwen',
  372. best_provider = HuggingSpace
  373. )
  374. ### qwq/qvq ###
  375. qwq_32b = Model(
  376. name = 'qwq-32b',
  377. base_provider = 'Qwen',
  378. best_provider = IterListProvider([Blackbox, BlackboxAPI, Jmuz, HuggingChat])
  379. )
  380. qvq_72b = VisionModel(
  381. name = 'qvq-72b',
  382. base_provider = 'Qwen',
  383. best_provider = HuggingSpace
  384. )
  385. ### Inflection ###
  386. pi = Model(
  387. name = 'pi',
  388. base_provider = 'Inflection',
  389. best_provider = Pi
  390. )
  391. ### DeepSeek ###
  392. deepseek_chat = Model(
  393. name = 'deepseek-chat',
  394. base_provider = 'DeepSeek',
  395. best_provider = IterListProvider([Blackbox, BlackboxAPI, Jmuz, PollinationsAI])
  396. )
  397. deepseek_v3 = Model(
  398. name = 'deepseek-v3',
  399. base_provider = 'DeepSeek',
  400. best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat, CablyAI, Liaobots])
  401. )
  402. deepseek_r1 = Model(
  403. name = 'deepseek-r1',
  404. base_provider = 'DeepSeek',
  405. best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat, Glider, PollinationsAI, Jmuz, CablyAI, Liaobots, HuggingChat, HuggingFace])
  406. )
  407. ### x.ai ###
  408. grok_2 = Model(
  409. name = 'grok-2',
  410. base_provider = 'x.ai',
  411. best_provider = Liaobots
  412. )
  413. ### Perplexity AI ###
  414. sonar = Model(
  415. name = 'sonar',
  416. base_provider = 'Perplexity AI',
  417. best_provider = PerplexityLabs
  418. )
  419. sonar_pro = Model(
  420. name = 'sonar-pro',
  421. base_provider = 'Perplexity AI',
  422. best_provider = PerplexityLabs
  423. )
  424. sonar_reasoning = Model(
  425. name = 'sonar-reasoning',
  426. base_provider = 'Perplexity AI',
  427. best_provider = PerplexityLabs
  428. )
  429. ### Nvidia ###
  430. nemotron_70b = Model(
  431. name = 'nemotron-70b',
  432. base_provider = 'Nvidia',
  433. best_provider = IterListProvider([HuggingChat, HuggingFace])
  434. )
  435. ### Databricks ###
  436. dbrx_instruct = Model(
  437. name = 'dbrx-instruct',
  438. base_provider = 'Databricks',
  439. best_provider = IterListProvider([Blackbox, BlackboxAPI])
  440. )
  441. ### THUDM ###
  442. glm_4 = Model(
  443. name = 'glm-4',
  444. base_provider = 'THUDM',
  445. best_provider = ChatGLM
  446. )
  447. ### MiniMax
  448. mini_max = Model(
  449. name = "MiniMax",
  450. base_provider = "MiniMax",
  451. best_provider = HailuoAI
  452. )
  453. ### Uncensored AI ###
  454. evil = Model(
  455. name = 'evil',
  456. base_provider = 'Evil Mode - Experimental',
  457. best_provider = PollinationsAI
  458. )
  459. #############
  460. ### Image ###
  461. #############
  462. ### Stability AI ###
  463. sdxl_turbo = ImageModel(
  464. name = 'sdxl-turbo',
  465. base_provider = 'Stability AI',
  466. best_provider = IterListProvider([PollinationsAI, ImageLabs])
  467. )
  468. sd_3_5 = ImageModel(
  469. name = 'sd-3.5',
  470. base_provider = 'Stability AI',
  471. best_provider = HuggingSpace
  472. )
  473. ### Black Forest Labs ###
  474. flux = ImageModel(
  475. name = 'flux',
  476. base_provider = 'Black Forest Labs',
  477. best_provider = IterListProvider([Blackbox, PollinationsAI, HuggingSpace])
  478. )
  479. flux_pro = ImageModel(
  480. name = 'flux-pro',
  481. base_provider = 'Black Forest Labs',
  482. best_provider = PollinationsAI
  483. )
  484. flux_dev = ImageModel(
  485. name = 'flux-dev',
  486. base_provider = 'Black Forest Labs',
  487. best_provider = IterListProvider([HuggingSpace, HuggingChat, HuggingFace])
  488. )
  489. flux_schnell = ImageModel(
  490. name = 'flux-schnell',
  491. base_provider = 'Black Forest Labs',
  492. best_provider = IterListProvider([HuggingSpace, HuggingChat, HuggingFace])
  493. )
  494. ### OpenAI ###
  495. dall_e_3 = ImageModel(
  496. name = 'dall-e-3',
  497. base_provider = 'OpenAI',
  498. best_provider = IterListProvider([PollinationsAI, CopilotAccount, OpenaiAccount, MicrosoftDesigner, BingCreateImages])
  499. )
  500. ### Midjourney ###
  501. midjourney = ImageModel(
  502. name = 'midjourney',
  503. base_provider = 'Midjourney',
  504. best_provider = PollinationsAI
  505. )
  506. class ModelUtils:
  507. """
  508. Utility class for mapping string identifiers to Model instances.
  509. Attributes:
  510. convert (dict[str, Model]): Dictionary mapping model string identifiers to Model instances.
  511. """
  512. convert: dict[str, Model] = {
  513. ############
  514. ### Text ###
  515. ############
  516. ### OpenAI ###
  517. # gpt-4
  518. gpt_4.name: gpt_4,
  519. # gpt-4o
  520. gpt_4o.name: gpt_4o,
  521. gpt_4o_mini.name: gpt_4o_mini,
  522. # o1
  523. o1.name: o1,
  524. o1_preview.name: o1_preview,
  525. o1_mini.name: o1_mini,
  526. ### Meta ###
  527. meta.name: meta,
  528. # llama-2
  529. llama_2_7b.name: llama_2_7b,
  530. # llama-3
  531. llama_3_8b.name: llama_3_8b,
  532. llama_3_70b.name: llama_3_70b,
  533. # llama-3.1
  534. llama_3_1_8b.name: llama_3_1_8b,
  535. llama_3_1_70b.name: llama_3_1_70b,
  536. llama_3_1_405b.name: llama_3_1_405b,
  537. # llama-3.2
  538. llama_3_2_1b.name: llama_3_2_1b,
  539. llama_3_2_3b.name: llama_3_2_3b,
  540. llama_3_2_11b.name: llama_3_2_11b,
  541. llama_3_2_90b.name: llama_3_2_90b,
  542. # llama-3.3
  543. llama_3_3_70b.name: llama_3_3_70b,
  544. ### Mistral ###
  545. mixtral_8x7b.name: mixtral_8x7b,
  546. mistral_nemo.name: mistral_nemo,
  547. mixtral_small_28b.name: mixtral_small_28b,
  548. ### NousResearch ###
  549. hermes_2_dpo.name: hermes_2_dpo,
  550. ### Microsoft ###
  551. # phi
  552. phi_3_5_mini.name: phi_3_5_mini,
  553. phi_4.name: phi_4,
  554. # wizardlm
  555. wizardlm_2_8x22b.name: wizardlm_2_8x22b,
  556. ### Google ###
  557. ### Gemini
  558. gemini.name: gemini,
  559. gemini_exp.name: gemini_exp,
  560. gemini_1_5_pro.name: gemini_1_5_pro,
  561. gemini_1_5_flash.name: gemini_1_5_flash,
  562. gemini_2_0_flash.name: gemini_2_0_flash,
  563. gemini_2_0_flash_thinking.name: gemini_2_0_flash_thinking,
  564. ### Anthropic ###
  565. # claude 3
  566. claude_3_opus.name: claude_3_opus,
  567. claude_3_sonnet.name: claude_3_sonnet,
  568. claude_3_haiku.name: claude_3_haiku,
  569. # claude 3.5
  570. claude_3_5_sonnet.name: claude_3_5_sonnet,
  571. ### Reka AI ###
  572. reka_core.name: reka_core,
  573. ### Blackbox AI ###
  574. blackboxai.name: blackboxai,
  575. blackboxai_pro.name: blackboxai_pro,
  576. ### CohereForAI ###
  577. command_r.name: command_r,
  578. command_r_plus.name: command_r_plus,
  579. command_r7b.name: command_r7b,
  580. ### GigaChat ###
  581. gigachat.name: gigachat,
  582. ### Qwen ###
  583. qwen_1_5_7b.name: qwen_1_5_7b,
  584. qwen_2_72b.name: qwen_2_72b,
  585. qwen_2_vl_7b.name: qwen_2_vl_7b,
  586. qwen_2_5_72b.name: qwen_2_5_72b,
  587. qwen_2_5_coder_32b.name: qwen_2_5_coder_32b,
  588. qwen_2_5_1m.name: qwen_2_5_1m,
  589. # qwq/qvq
  590. qwq_32b.name: qwq_32b,
  591. qvq_72b.name: qvq_72b,
  592. ### Inflection ###
  593. pi.name: pi,
  594. ### x.ai ###
  595. grok_2.name: grok_2,
  596. ### Perplexity AI ###
  597. sonar.name: sonar,
  598. sonar_pro.name: sonar_pro,
  599. sonar_reasoning.name: sonar_reasoning,
  600. ### DeepSeek ###
  601. deepseek_chat.name: deepseek_chat,
  602. deepseek_v3.name: deepseek_v3,
  603. deepseek_r1.name: deepseek_r1,
  604. nemotron_70b.name: nemotron_70b, ### Nvidia ###
  605. dbrx_instruct.name: dbrx_instruct, ### Databricks ###
  606. glm_4.name: glm_4, ### THUDM ###
  607. mini_max.name: mini_max, ## MiniMax
  608. evil.name: evil, ### Uncensored AI ###
  609. #############
  610. ### Image ###
  611. #############
  612. ### Stability AI ###
  613. sdxl_turbo.name: sdxl_turbo,
  614. sd_3_5.name: sd_3_5,
  615. ### Flux AI ###
  616. flux.name: flux,
  617. flux_pro.name: flux_pro,
  618. flux_dev.name: flux_dev,
  619. flux_schnell.name: flux_schnell,
  620. ### OpenAI ###
  621. dall_e_3.name: dall_e_3,
  622. ### Midjourney ###
  623. midjourney.name: midjourney,
  624. }
  625. demo_models = {
  626. gpt_4o.name: [gpt_4o, [PollinationsAI, Blackbox]],
  627. "default": [llama_3_2_11b, [HuggingFace]],
  628. qwen_2_vl_7b.name: [qwen_2_vl_7b, [HuggingFaceAPI]],
  629. qvq_72b.name: [qvq_72b, [HuggingSpace]],
  630. deepseek_r1.name: [deepseek_r1, [HuggingFace]],
  631. command_r.name: [command_r, [HuggingSpace]],
  632. command_r_plus.name: [command_r_plus, [HuggingSpace]],
  633. command_r7b.name: [command_r7b, [HuggingSpace]],
  634. qwen_2_72b.name: [qwen_2_72b, [HuggingSpace]],
  635. qwen_2_5_coder_32b.name: [qwen_2_5_coder_32b, [HuggingFace]],
  636. qwq_32b.name: [qwq_32b, [HuggingFace]],
  637. llama_3_3_70b.name: [llama_3_3_70b, [HuggingFace]],
  638. sd_3_5.name: [sd_3_5, [HuggingSpace, HuggingFace]],
  639. flux_dev.name: [flux_dev, [HuggingSpace, HuggingFace]],
  640. flux_schnell.name: [flux_schnell, [HuggingFace, HuggingSpace, PollinationsAI]],
  641. }
  642. # Create a list of all models and his providers
  643. __models__ = {
  644. model.name: (model, providers)
  645. for model, providers in [
  646. (model, [provider for provider in model.best_provider.providers if provider.working]
  647. if isinstance(model.best_provider, IterListProvider)
  648. else [model.best_provider]
  649. if model.best_provider is not None and model.best_provider.working
  650. else [])
  651. for model in ModelUtils.convert.values()]
  652. if providers
  653. }
  654. _all_models = list(__models__.keys())