models.py 23 KB

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