models.py 23 KB

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