models.py 18 KB

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