models.py 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  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_2_1b = Model(
  210. name = "llama-3.2-1b",
  211. base_provider = "Meta Llama",
  212. best_provider = Cloudflare
  213. )
  214. llama_3_2_3b = Model(
  215. name = "llama-3.2-3b",
  216. base_provider = "Meta Llama",
  217. best_provider = Glider
  218. )
  219. llama_3_2_11b = VisionModel(
  220. name = "llama-3.2-11b",
  221. base_provider = "Meta Llama",
  222. best_provider = IterListProvider([Jmuz, HuggingChat, HuggingFace])
  223. )
  224. llama_3_2_90b = Model(
  225. name = "llama-3.2-90b",
  226. base_provider = "Meta Llama",
  227. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  228. )
  229. # llama 3.3
  230. llama_3_3_70b = Model(
  231. name = "llama-3.3-70b",
  232. base_provider = "Meta Llama",
  233. best_provider = IterListProvider([DDG, DeepInfraChat, LambdaChat, PollinationsAI, Jmuz, HuggingChat, HuggingFace])
  234. )
  235. ### Mistral ###
  236. mixtral_8x7b = Model(
  237. name = "mixtral-8x7b",
  238. base_provider = "Mistral",
  239. best_provider = Jmuz
  240. )
  241. mixtral_8x22b = Model(
  242. name = "mixtral-8x22b",
  243. base_provider = "Mistral",
  244. best_provider = DeepInfraChat
  245. )
  246. mistral_nemo = Model(
  247. name = "mistral-nemo",
  248. base_provider = "Mistral",
  249. best_provider = IterListProvider([PollinationsAI, HuggingChat, HuggingFace])
  250. )
  251. mixtral_small_24b = Model(
  252. name = "mixtral-small-24b",
  253. base_provider = "Mistral",
  254. best_provider = IterListProvider([DDG, DeepInfraChat])
  255. )
  256. ### NousResearch ###
  257. hermes_3 = Model(
  258. name = "hermes-3",
  259. base_provider = "NousResearch",
  260. best_provider = LambdaChat
  261. )
  262. ### Microsoft ###
  263. # phi
  264. phi_3_5_mini = Model(
  265. name = "phi-3.5-mini",
  266. base_provider = "Microsoft",
  267. best_provider = HuggingChat
  268. )
  269. phi_4 = Model(
  270. name = "phi-4",
  271. base_provider = "Microsoft",
  272. best_provider = IterListProvider([DeepInfraChat, PollinationsAI, HuggingSpace])
  273. )
  274. # wizardlm
  275. wizardlm_2_7b = Model(
  276. name = 'wizardlm-2-7b',
  277. base_provider = 'Microsoft',
  278. best_provider = DeepInfraChat
  279. )
  280. wizardlm_2_8x22b = Model(
  281. name = 'wizardlm-2-8x22b',
  282. base_provider = 'Microsoft',
  283. best_provider = IterListProvider([DeepInfraChat, Jmuz])
  284. )
  285. ### Google DeepMind ###
  286. # gemini
  287. gemini = Model(
  288. name = 'gemini-2.0',
  289. base_provider = 'Google',
  290. best_provider = Gemini
  291. )
  292. # gemini-exp
  293. gemini_exp = Model(
  294. name = 'gemini-exp',
  295. base_provider = 'Google',
  296. best_provider = Jmuz
  297. )
  298. # gemini-1.5
  299. gemini_1_5_flash = Model(
  300. name = 'gemini-1.5-flash',
  301. base_provider = 'Google DeepMind',
  302. best_provider = IterListProvider([Free2GPT, FreeGpt, TeachAnything, Websim, Dynaspark, Jmuz, GeminiPro])
  303. )
  304. gemini_1_5_pro = Model(
  305. name = 'gemini-1.5-pro',
  306. base_provider = 'Google DeepMind',
  307. best_provider = IterListProvider([Free2GPT, FreeGpt, TeachAnything, Websim, Jmuz, GeminiPro])
  308. )
  309. # gemini-2.0
  310. gemini_2_0_flash = Model(
  311. name = 'gemini-2.0-flash',
  312. base_provider = 'Google DeepMind',
  313. best_provider = IterListProvider([Dynaspark, GeminiPro, Liaobots])
  314. )
  315. gemini_2_0_flash_thinking = Model(
  316. name = 'gemini-2.0-flash-thinking',
  317. base_provider = 'Google DeepMind',
  318. best_provider = Liaobots
  319. )
  320. gemini_2_0_pro = Model(
  321. name = 'gemini-2.0-pro',
  322. base_provider = 'Google DeepMind',
  323. best_provider = Liaobots
  324. )
  325. ### Anthropic ###
  326. # claude 3
  327. claude_3_haiku = Model(
  328. name = 'claude-3-haiku',
  329. base_provider = 'Anthropic',
  330. best_provider = IterListProvider([DDG, Jmuz])
  331. )
  332. claude_3_sonnet = Model(
  333. name = 'claude-3-sonnet',
  334. base_provider = 'Anthropic',
  335. best_provider = Liaobots
  336. )
  337. claude_3_opus = Model(
  338. name = 'claude-3-opus',
  339. base_provider = 'Anthropic',
  340. best_provider = IterListProvider([Jmuz, Liaobots])
  341. )
  342. # claude 3.5
  343. claude_3_5_sonnet = Model(
  344. name = 'claude-3.5-sonnet',
  345. base_provider = 'Anthropic',
  346. best_provider = IterListProvider([Jmuz, Liaobots])
  347. )
  348. # claude 3.7
  349. claude_3_7_sonnet = Model(
  350. name = 'claude-3.7-sonnet',
  351. base_provider = 'Anthropic',
  352. best_provider = IterListProvider([Blackbox, Liaobots])
  353. )
  354. claude_3_7_sonnet_thinking = Model(
  355. name = 'claude-3.7-sonnet-thinking',
  356. base_provider = 'Anthropic',
  357. best_provider = Liaobots
  358. )
  359. ### Reka AI ###
  360. reka_core = Model(
  361. name = 'reka-core',
  362. base_provider = 'Reka AI',
  363. best_provider = Reka
  364. )
  365. ### Blackbox AI ###
  366. blackboxai = Model(
  367. name = 'blackboxai',
  368. base_provider = 'Blackbox AI',
  369. best_provider = Blackbox
  370. )
  371. ### CohereForAI ###
  372. command_r = Model(
  373. name = 'command-r',
  374. base_provider = 'CohereForAI',
  375. best_provider = HuggingSpace
  376. )
  377. command_r_plus = Model(
  378. name = 'command-r-plus',
  379. base_provider = 'CohereForAI',
  380. best_provider = IterListProvider([HuggingSpace, HuggingChat])
  381. )
  382. command_r7b = Model(
  383. name = 'command-r7b',
  384. base_provider = 'CohereForAI',
  385. best_provider = HuggingSpace
  386. )
  387. command_a = Model(
  388. name = 'command-a',
  389. base_provider = 'CohereForAI',
  390. best_provider = HuggingSpace
  391. )
  392. ### Qwen ###
  393. # qwen-1.5
  394. qwen_1_5_7b = Model(
  395. name = 'qwen-1.5-7b',
  396. base_provider = 'Qwen',
  397. best_provider = Cloudflare
  398. )
  399. # qwen-2
  400. qwen_2_72b = Model(
  401. name = 'qwen-2-72b',
  402. base_provider = 'Qwen',
  403. best_provider = IterListProvider([DeepInfraChat, HuggingSpace])
  404. )
  405. qwen_2_vl_7b = VisionModel(
  406. name = "qwen-2-vl-7b",
  407. base_provider = 'Qwen',
  408. best_provider = HuggingFaceAPI
  409. )
  410. # qwen-2.5
  411. qwen_2_5 = Model(
  412. name = 'qwen-2.5',
  413. base_provider = 'Qwen',
  414. best_provider = HuggingSpace
  415. )
  416. qwen_2_5_72b = Model(
  417. name = 'qwen-2.5-72b',
  418. base_provider = 'Qwen',
  419. best_provider = Jmuz
  420. )
  421. qwen_2_5_coder_32b = Model(
  422. name = 'qwen-2.5-coder-32b',
  423. base_provider = 'Qwen',
  424. best_provider = IterListProvider([PollinationsAI, Jmuz, HuggingChat])
  425. )
  426. qwen_2_5_1m = Model(
  427. name = 'qwen-2.5-1m',
  428. base_provider = 'Qwen',
  429. best_provider = HuggingSpace
  430. )
  431. qwen_2_5_max = Model(
  432. name = 'qwen-2-5-max',
  433. base_provider = 'Qwen',
  434. best_provider = HuggingSpace
  435. )
  436. ### qwq/qvq ###
  437. qwq_32b = Model(
  438. name = 'qwq-32b',
  439. base_provider = 'Qwen',
  440. best_provider = IterListProvider([Jmuz, HuggingChat])
  441. )
  442. qvq_72b = VisionModel(
  443. name = 'qvq-72b',
  444. base_provider = 'Qwen',
  445. best_provider = HuggingSpace
  446. )
  447. ### Inflection ###
  448. pi = Model(
  449. name = 'pi',
  450. base_provider = 'Inflection',
  451. best_provider = Pi
  452. )
  453. ### DeepSeek ###
  454. deepseek_chat = Model(
  455. name = 'deepseek-chat',
  456. base_provider = 'DeepSeek',
  457. best_provider = IterListProvider([Blackbox, Jmuz])
  458. )
  459. deepseek_v3 = Model(
  460. name = 'deepseek-v3',
  461. base_provider = 'DeepSeek',
  462. best_provider = IterListProvider([Blackbox, DeepInfraChat, LambdaChat, OIVSCode, TypeGPT, Liaobots])
  463. )
  464. deepseek_r1 = Model(
  465. name = 'deepseek-r1',
  466. base_provider = 'DeepSeek',
  467. best_provider = IterListProvider([Blackbox, DeepInfraChat, Glider, LambdaChat, PollinationsAI, TypeGPT, Liaobots, Jmuz, HuggingChat, HuggingFace])
  468. )
  469. janus_pro_7b = VisionModel(
  470. name = DeepseekAI_JanusPro7b.default_model,
  471. base_provider = 'DeepSeek',
  472. best_provider = IterListProvider([DeepseekAI_JanusPro7b, G4F])
  473. )
  474. ### x.ai ###
  475. grok_3 = Model(
  476. name = 'grok-3',
  477. base_provider = 'x.ai',
  478. best_provider = Liaobots
  479. )
  480. grok_3_r1 = Model(
  481. name = 'grok-3-r1',
  482. base_provider = 'x.ai',
  483. best_provider = Liaobots
  484. )
  485. ### Perplexity AI ###
  486. sonar = Model(
  487. name = 'sonar',
  488. base_provider = 'Perplexity AI',
  489. best_provider = PerplexityLabs
  490. )
  491. sonar_pro = Model(
  492. name = 'sonar-pro',
  493. base_provider = 'Perplexity AI',
  494. best_provider = PerplexityLabs
  495. )
  496. sonar_reasoning = Model(
  497. name = 'sonar-reasoning',
  498. base_provider = 'Perplexity AI',
  499. best_provider = PerplexityLabs
  500. )
  501. sonar_reasoning_pro = Model(
  502. name = 'sonar-reasoning-pro',
  503. base_provider = 'Perplexity AI',
  504. best_provider = PerplexityLabs
  505. )
  506. r1_1776 = Model(
  507. name = 'r1-1776',
  508. base_provider = 'Perplexity AI',
  509. best_provider = PerplexityLabs
  510. )
  511. ### Nvidia ###
  512. nemotron_70b = Model(
  513. name = 'nemotron-70b',
  514. base_provider = 'Nvidia',
  515. best_provider = IterListProvider([LambdaChat, HuggingChat, HuggingFace])
  516. )
  517. ### Databricks ###
  518. dbrx_instruct = Model(
  519. name = 'dbrx-instruct',
  520. base_provider = 'Databricks',
  521. best_provider = DeepInfraChat
  522. )
  523. ### THUDM ###
  524. glm_4 = Model(
  525. name = 'glm-4',
  526. base_provider = 'THUDM',
  527. best_provider = ChatGLM
  528. )
  529. ### MiniMax ###
  530. mini_max = Model(
  531. name = "MiniMax",
  532. base_provider = "MiniMax",
  533. best_provider = HailuoAI
  534. )
  535. ### 01-ai ###
  536. yi_34b = Model(
  537. name = "yi-34b",
  538. base_provider = "01-ai",
  539. best_provider = DeepInfraChat
  540. )
  541. ### Cognitive Computations ###
  542. dolphin_2_6 = Model(
  543. name = "dolphin-2.6",
  544. base_provider = "Cognitive Computations",
  545. best_provider = DeepInfraChat
  546. )
  547. dolphin_2_9 = Model(
  548. name = "dolphin-2.9",
  549. base_provider = "Cognitive Computations",
  550. best_provider = DeepInfraChat
  551. )
  552. ### DeepInfra ###
  553. airoboros_70b = Model(
  554. name = "airoboros-70b",
  555. base_provider = "DeepInfra",
  556. best_provider = DeepInfraChat
  557. )
  558. ### Lizpreciatior ###
  559. lzlv_70b = Model(
  560. name = "lzlv-70b",
  561. base_provider = "Lizpreciatior",
  562. best_provider = DeepInfraChat
  563. )
  564. ### OpenBMB ###
  565. minicpm_2_5 = Model(
  566. name = "minicpm-2.5",
  567. base_provider = "OpenBMB",
  568. best_provider = DeepInfraChat
  569. )
  570. ### Ai2 ###
  571. tulu_3_405b = Model(
  572. name = "tulu-3-405b",
  573. base_provider = "Ai2",
  574. best_provider = AllenAI
  575. )
  576. olmo_2_13b = Model(
  577. name = "olmo-2-13b",
  578. base_provider = "Ai2",
  579. best_provider = AllenAI
  580. )
  581. tulu_3_1_8b = Model(
  582. name = "tulu-3-1-8b",
  583. base_provider = "Ai2",
  584. best_provider = AllenAI
  585. )
  586. tulu_3_70b = Model(
  587. name = "tulu-3-70b",
  588. base_provider = "Ai2",
  589. best_provider = AllenAI
  590. )
  591. olmoe_0125 = Model(
  592. name = "olmoe-0125",
  593. base_provider = "Ai2",
  594. best_provider = AllenAI
  595. )
  596. lfm_40b = Model(
  597. name = "lfm-40b",
  598. base_provider = "Liquid AI",
  599. best_provider = LambdaChat
  600. )
  601. ### Uncensored AI ###
  602. evil = Model(
  603. name = 'evil',
  604. base_provider = 'Evil Mode - Experimental',
  605. best_provider = IterListProvider([PollinationsAI, TypeGPT])
  606. )
  607. #############
  608. ### Image ###
  609. #############
  610. ### Stability AI ###
  611. sdxl_turbo = ImageModel(
  612. name = 'sdxl-turbo',
  613. base_provider = 'Stability AI',
  614. best_provider = IterListProvider([PollinationsImage, ImageLabs])
  615. )
  616. sd_3_5 = ImageModel(
  617. name = 'sd-3.5',
  618. base_provider = 'Stability AI',
  619. best_provider = HuggingSpace
  620. )
  621. ### Black Forest Labs ###
  622. flux = ImageModel(
  623. name = 'flux',
  624. base_provider = 'Black Forest Labs',
  625. best_provider = IterListProvider([Blackbox, PollinationsImage, Websim, HuggingSpace])
  626. )
  627. flux_pro = ImageModel(
  628. name = 'flux-pro',
  629. base_provider = 'Black Forest Labs',
  630. best_provider = PollinationsImage
  631. )
  632. flux_dev = ImageModel(
  633. name = 'flux-dev',
  634. base_provider = 'Black Forest Labs',
  635. best_provider = IterListProvider([PollinationsImage, HuggingSpace, HuggingChat, HuggingFace])
  636. )
  637. flux_schnell = ImageModel(
  638. name = 'flux-schnell',
  639. base_provider = 'Black Forest Labs',
  640. best_provider = IterListProvider([PollinationsImage, HuggingSpace, HuggingChat, HuggingFace])
  641. )
  642. ### OpenAI ###
  643. dall_e_3 = ImageModel(
  644. name = 'dall-e-3',
  645. base_provider = 'OpenAI',
  646. best_provider = IterListProvider([PollinationsImage, CopilotAccount, OpenaiAccount, MicrosoftDesigner, BingCreateImages])
  647. )
  648. ### Midjourney ###
  649. midjourney = ImageModel(
  650. name = 'midjourney',
  651. base_provider = 'Midjourney',
  652. best_provider = PollinationsImage
  653. )
  654. class ModelUtils:
  655. """
  656. Utility class for mapping string identifiers to Model instances.
  657. Attributes:
  658. convert (dict[str, Model]): Dictionary mapping model string identifiers to Model instances.
  659. """
  660. convert: dict[str, Model] = {
  661. ############
  662. ### Text ###
  663. ############
  664. ### OpenAI ###
  665. # gpt-3.5
  666. gpt_3_5_turbo.name: gpt_3_5_turbo,
  667. # gpt-4
  668. gpt_4.name: gpt_4,
  669. # gpt-4o
  670. gpt_4o.name: gpt_4o,
  671. gpt_4o_mini.name: gpt_4o_mini,
  672. gpt_4o_audio.name: gpt_4o_audio,
  673. # o1
  674. o1.name: o1,
  675. o1_mini.name: o1_mini,
  676. # o3
  677. o3_mini.name: o3_mini,
  678. ### Meta ###
  679. meta.name: meta,
  680. # llama-2
  681. llama_2_7b.name: llama_2_7b,
  682. # llama-3
  683. llama_3_8b.name: llama_3_8b,
  684. llama_3_70b.name: llama_3_70b,
  685. # llama-3.1
  686. llama_3_1_8b.name: llama_3_1_8b,
  687. llama_3_1_70b.name: llama_3_1_70b,
  688. llama_3_1_405b.name: llama_3_1_405b,
  689. # llama-3.2
  690. llama_3_2_1b.name: llama_3_2_1b,
  691. llama_3_2_3b.name: llama_3_2_3b,
  692. llama_3_2_11b.name: llama_3_2_11b,
  693. llama_3_2_90b.name: llama_3_2_90b,
  694. # llama-3.3
  695. llama_3_3_70b.name: llama_3_3_70b,
  696. ### Mistral ###
  697. mixtral_8x7b.name: mixtral_8x7b,
  698. mixtral_8x22b.name: mixtral_8x22b,
  699. mistral_nemo.name: mistral_nemo,
  700. mixtral_small_24b.name: mixtral_small_24b,
  701. ### NousResearch ###
  702. hermes_3.name: hermes_3,
  703. ### Microsoft ###
  704. # phi
  705. phi_3_5_mini.name: phi_3_5_mini,
  706. phi_4.name: phi_4,
  707. # wizardlm
  708. wizardlm_2_7b.name: wizardlm_2_7b,
  709. wizardlm_2_8x22b.name: wizardlm_2_8x22b,
  710. ### Google ###
  711. ### Gemini
  712. "gemini": gemini,
  713. gemini.name: gemini,
  714. gemini_exp.name: gemini_exp,
  715. gemini_1_5_pro.name: gemini_1_5_pro,
  716. gemini_1_5_flash.name: gemini_1_5_flash,
  717. gemini_2_0_flash.name: gemini_2_0_flash,
  718. gemini_2_0_flash_thinking.name: gemini_2_0_flash_thinking,
  719. gemini_2_0_pro.name: gemini_2_0_pro,
  720. ### Anthropic ###
  721. # claude 3
  722. claude_3_opus.name: claude_3_opus,
  723. claude_3_sonnet.name: claude_3_sonnet,
  724. claude_3_haiku.name: claude_3_haiku,
  725. # claude 3.5
  726. claude_3_5_sonnet.name: claude_3_5_sonnet,
  727. # claude 3.7
  728. claude_3_7_sonnet.name: claude_3_7_sonnet,
  729. claude_3_7_sonnet_thinking.name: claude_3_7_sonnet_thinking,
  730. ### Reka AI ###
  731. reka_core.name: reka_core,
  732. ### Blackbox AI ###
  733. blackboxai.name: blackboxai,
  734. ### CohereForAI ###
  735. command_r.name: command_r,
  736. command_r_plus.name: command_r_plus,
  737. command_r7b.name: command_r7b,
  738. command_a.name: command_a,
  739. ### GigaChat ###
  740. gigachat.name: gigachat,
  741. ### Qwen ###
  742. # qwen-1.5
  743. qwen_1_5_7b.name: qwen_1_5_7b,
  744. # qwen-2
  745. qwen_2_72b.name: qwen_2_72b,
  746. qwen_2_vl_7b.name: qwen_2_vl_7b,
  747. # qwen-2.5
  748. qwen_2_5.name: qwen_2_5,
  749. qwen_2_5_72b.name: qwen_2_5_72b,
  750. qwen_2_5_coder_32b.name: qwen_2_5_coder_32b,
  751. qwen_2_5_1m.name: qwen_2_5_1m,
  752. qwen_2_5_max.name: qwen_2_5_max,
  753. # qwq/qvq
  754. qwq_32b.name: qwq_32b,
  755. qvq_72b.name: qvq_72b,
  756. ### Inflection ###
  757. pi.name: pi,
  758. ### x.ai ###
  759. grok_3.name: grok_3,
  760. ### Perplexity AI ###
  761. sonar.name: sonar,
  762. sonar_pro.name: sonar_pro,
  763. sonar_reasoning.name: sonar_reasoning,
  764. sonar_reasoning_pro.name: sonar_reasoning_pro,
  765. r1_1776.name: r1_1776,
  766. ### DeepSeek ###
  767. deepseek_chat.name: deepseek_chat,
  768. deepseek_v3.name: deepseek_v3,
  769. deepseek_r1.name: deepseek_r1,
  770. ### Nvidia ###
  771. nemotron_70b.name: nemotron_70b,
  772. ### Databricks ###
  773. dbrx_instruct.name: dbrx_instruct,
  774. ### THUDM ###
  775. glm_4.name: glm_4,
  776. ## MiniMax ###
  777. mini_max.name: mini_max,
  778. ## 01-ai ###
  779. yi_34b.name: yi_34b,
  780. ### Cognitive Computations ###
  781. dolphin_2_6.name: dolphin_2_6,
  782. dolphin_2_9.name: dolphin_2_9,
  783. ### DeepInfra ###
  784. airoboros_70b.name: airoboros_70b,
  785. ### Lizpreciatior ###
  786. lzlv_70b.name: lzlv_70b,
  787. ### OpenBMB ###
  788. minicpm_2_5.name: minicpm_2_5,
  789. ### Ai2 ###
  790. tulu_3_405b.name: tulu_3_405b,
  791. olmo_2_13b.name: olmo_2_13b,
  792. tulu_3_1_8b.name: tulu_3_1_8b,
  793. tulu_3_70b.name: tulu_3_70b,
  794. olmoe_0125.name: olmoe_0125,
  795. ### Liquid AI ###
  796. lfm_40b.name: lfm_40b,
  797. ### Uncensored AI ###
  798. evil.name: evil,
  799. #############
  800. ### Image ###
  801. #############
  802. ### Stability AI ###
  803. sdxl_turbo.name: sdxl_turbo,
  804. sd_3_5.name: sd_3_5,
  805. ### Flux AI ###
  806. flux.name: flux,
  807. flux_pro.name: flux_pro,
  808. flux_dev.name: flux_dev,
  809. flux_schnell.name: flux_schnell,
  810. ### OpenAI ###
  811. dall_e_3.name: dall_e_3,
  812. ### Midjourney ###
  813. midjourney.name: midjourney,
  814. }
  815. demo_models = {
  816. llama_3_2_11b.name: [llama_3_2_11b, [HuggingChat]],
  817. qwen_2_vl_7b.name: [qwen_2_vl_7b, [HuggingFaceAPI]],
  818. deepseek_r1.name: [deepseek_r1, [HuggingFace, PollinationsAI]],
  819. janus_pro_7b.name: [janus_pro_7b, [HuggingSpace, G4F]],
  820. command_r.name: [command_r, [HuggingSpace]],
  821. command_r_plus.name: [command_r_plus, [HuggingSpace]],
  822. command_r7b.name: [command_r7b, [HuggingSpace]],
  823. qwen_2_5_coder_32b.name: [qwen_2_5_coder_32b, [HuggingFace]],
  824. qwq_32b.name: [qwq_32b, [HuggingFace]],
  825. llama_3_3_70b.name: [llama_3_3_70b, [HuggingFace]],
  826. sd_3_5.name: [sd_3_5, [HuggingSpace, HuggingFace]],
  827. flux_dev.name: [flux_dev, [PollinationsImage, HuggingFace, HuggingSpace]],
  828. flux_schnell.name: [flux_schnell, [PollinationsImage, HuggingFace, HuggingSpace]],
  829. }
  830. # Create a list of all models and his providers
  831. __models__ = {
  832. model.name: (model, providers)
  833. for model, providers in [
  834. (model, [provider for provider in model.best_provider.providers if provider.working]
  835. if isinstance(model.best_provider, IterListProvider)
  836. else [model.best_provider]
  837. if model.best_provider is not None and model.best_provider.working
  838. else [])
  839. for model in ModelUtils.convert.values()]
  840. if providers
  841. }
  842. _all_models = list(__models__.keys())