123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773 |
- from __future__ import annotations
- from dataclasses import dataclass
- from .Provider import IterListProvider, ProviderType
- from .Provider import (
- ### no auth required ###
- Blackbox,
- BlackboxAPI,
- CablyAI,
- ChatGLM,
- ChatGptEs,
- ChatGptt,
- Cloudflare,
- Copilot,
- DDG,
- DeepInfraChat,
- HuggingSpace,
- Glider,
- ImageLabs,
- Jmuz,
- Liaobots,
- Mhystical,
- OIVSCode,
- PerplexityLabs,
- Pi,
- PollinationsAI,
- TeachAnything,
- Yqcloud,
-
- ### needs auth ###
- BingCreateImages,
- CopilotAccount,
- Gemini,
- GeminiPro,
- GigaChat,
- HailuoAI,
- HuggingChat,
- HuggingFace,
- HuggingFaceAPI,
- MetaAI,
- MicrosoftDesigner,
- OpenaiAccount,
- OpenaiChat,
- Reka,
- )
- @dataclass(unsafe_hash=True)
- class Model:
- """
- Represents a machine learning model configuration.
- Attributes:
- name (str): Name of the model.
- base_provider (str): Default provider for the model.
- best_provider (ProviderType): The preferred provider for the model, typically with retry logic.
- """
- name: str
- base_provider: str
- best_provider: ProviderType = None
- @staticmethod
- def __all__() -> list[str]:
- """Returns a list of all model names."""
- return _all_models
- class ImageModel(Model):
- pass
- class VisionModel(Model):
- pass
- ### Default ###
- default = Model(
- name = "",
- base_provider = "",
- best_provider = IterListProvider([
- DDG,
- Blackbox,
- Copilot,
- DeepInfraChat,
- ChatGptEs,
- ChatGptt,
- PollinationsAI,
- Jmuz,
- CablyAI,
- OIVSCode,
- OpenaiChat,
- Cloudflare,
- ])
- )
- default_vision = Model(
- name = "",
- base_provider = "",
- best_provider = IterListProvider([
- Blackbox,
- PollinationsAI,
- HuggingSpace,
- GeminiPro,
- HuggingFaceAPI,
- CopilotAccount,
- OpenaiAccount,
- Gemini,
- ], shuffle=False)
- )
- ###################
- ### Text/Vision ###
- ###################
- ### OpenAI ###
- # gpt-4
- gpt_4 = Model(
- name = 'gpt-4',
- base_provider = 'OpenAI',
- best_provider = IterListProvider([DDG, Jmuz, ChatGptEs, ChatGptt, PollinationsAI, Yqcloud, Copilot, OpenaiChat, Liaobots, Mhystical])
- )
- # gpt-4o
- gpt_4o = VisionModel(
- name = 'gpt-4o',
- base_provider = 'OpenAI',
- best_provider = IterListProvider([ChatGptt, Jmuz, ChatGptEs, PollinationsAI, Copilot, Liaobots, OpenaiChat])
- )
- gpt_4o_mini = Model(
- name = 'gpt-4o-mini',
- base_provider = 'OpenAI',
- best_provider = IterListProvider([DDG, ChatGptEs, ChatGptt, Jmuz, PollinationsAI, OIVSCode, CablyAI, Liaobots, OpenaiChat])
- )
- # o1
- o1 = Model(
- name = 'o1',
- base_provider = 'OpenAI',
- best_provider = OpenaiAccount
- )
- o1_preview = Model(
- name = 'o1-preview',
- base_provider = 'OpenAI',
- best_provider = Liaobots
- )
- o1_mini = Model(
- name = 'o1-mini',
- base_provider = 'OpenAI',
- best_provider = Liaobots
- )
- # o3
- o3_mini_low = Model(
- name = 'o3-mini-low',
- base_provider = 'OpenAI',
- best_provider = CablyAI
- )
- ### GigaChat ###
- gigachat = Model(
- name = 'GigaChat:latest',
- base_provider = 'gigachat',
- best_provider = GigaChat
- )
- ### Meta ###
- meta = Model(
- name = "meta-ai",
- base_provider = "Meta",
- best_provider = MetaAI
- )
- # llama 2
- llama_2_7b = Model(
- name = "llama-2-7b",
- base_provider = "Meta Llama",
- best_provider = Cloudflare
- )
- # llama 3
- llama_3_8b = Model(
- name = "llama-3-8b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([Jmuz, Cloudflare])
- )
- llama_3_70b = Model(
- name = "llama-3-70b",
- base_provider = "Meta Llama",
- best_provider = Jmuz
- )
- # llama 3.1
- llama_3_1_8b = Model(
- name = "llama-3.1-8b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([Blackbox, DeepInfraChat, Glider, Jmuz, PollinationsAI, CablyAI, Cloudflare])
- )
- llama_3_1_70b = Model(
- name = "llama-3.1-70b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([DDG, Blackbox, Glider, Jmuz, TeachAnything])
- )
- llama_3_1_405b = Model(
- name = "llama-3.1-405b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([Blackbox, Jmuz])
- )
- # llama 3.2
- llama_3_2_1b = Model(
- name = "llama-3.2-1b",
- base_provider = "Meta Llama",
- best_provider = Cloudflare
- )
- llama_3_2_3b = Model(
- name = "llama-3.2-3b",
- base_provider = "Meta Llama",
- best_provider = Glider
- )
- llama_3_2_11b = VisionModel(
- name = "llama-3.2-11b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([Jmuz, HuggingChat, HuggingFace])
- )
- llama_3_2_90b = Model(
- name = "llama-3.2-90b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([DeepInfraChat, Jmuz])
- )
- # llama 3.3
- llama_3_3_70b = Model(
- name = "llama-3.3-70b",
- base_provider = "Meta Llama",
- best_provider = IterListProvider([Blackbox, DeepInfraChat, PollinationsAI, Jmuz, HuggingChat, HuggingFace])
- )
- ### Mistral ###
- mixtral_8x7b = Model(
- name = "mixtral-8x7b",
- base_provider = "Mistral",
- best_provider = IterListProvider([DDG, Jmuz])
- )
- mistral_nemo = Model(
- name = "mistral-nemo",
- base_provider = "Mistral",
- best_provider = IterListProvider([PollinationsAI, HuggingChat, HuggingFace])
- )
- mixtral_small_28b = Model(
- name = "mixtral-small-28b",
- base_provider = "Mistral",
- best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat])
- )
- ### NousResearch ###
- hermes_2_dpo = Model(
- name = "hermes-2-dpo",
- base_provider = "NousResearch",
- best_provider = IterListProvider([Blackbox, BlackboxAPI])
- )
- ### Microsoft ###
- # phi
- phi_3_5_mini = Model(
- name = "phi-3.5-mini",
- base_provider = "Microsoft",
- best_provider = HuggingChat
- )
- phi_4 = Model(
- name = "phi-4",
- base_provider = "Microsoft",
- best_provider = DeepInfraChat
- )
- # wizardlm
- wizardlm_2_8x22b = Model(
- name = 'wizardlm-2-8x22b',
- base_provider = 'Microsoft',
- best_provider = IterListProvider([DeepInfraChat, Jmuz])
- )
- ### Google DeepMind ###
- # gemini
- gemini = Model(
- name = 'gemini',
- base_provider = 'Google',
- best_provider = Gemini
- )
- # gemini-exp
- gemini_exp = Model(
- name = 'gemini-exp',
- base_provider = 'Google',
- best_provider = Jmuz
- )
- # gemini-1.5
- gemini_1_5_flash = Model(
- name = 'gemini-1.5-flash',
- base_provider = 'Google DeepMind',
- best_provider = IterListProvider([Blackbox, Jmuz, Gemini, GeminiPro, Liaobots])
- )
- gemini_1_5_pro = Model(
- name = 'gemini-1.5-pro',
- base_provider = 'Google DeepMind',
- best_provider = IterListProvider([Blackbox, Jmuz, Gemini, GeminiPro, Liaobots])
- )
- # gemini-2.0
- gemini_2_0_flash = Model(
- name = 'gemini-2.0-flash',
- base_provider = 'Google DeepMind',
- best_provider = IterListProvider([GeminiPro, Liaobots])
- )
- gemini_2_0_flash_thinking = Model(
- name = 'gemini-2.0-flash-thinking',
- base_provider = 'Google DeepMind',
- best_provider = Liaobots
- )
- ### Anthropic ###
- # claude 3
- claude_3_haiku = Model(
- name = 'claude-3-haiku',
- base_provider = 'Anthropic',
- best_provider = IterListProvider([DDG, Jmuz])
- )
- claude_3_sonnet = Model(
- name = 'claude-3-sonnet',
- base_provider = 'Anthropic',
- best_provider = Liaobots
- )
- claude_3_opus = Model(
- name = 'claude-3-opus',
- base_provider = 'Anthropic',
- best_provider = IterListProvider([Jmuz, Liaobots])
- )
- # claude 3.5
- claude_3_5_sonnet = Model(
- name = 'claude-3.5-sonnet',
- base_provider = 'Anthropic',
- best_provider = IterListProvider([Jmuz, Liaobots])
- )
- ### Reka AI ###
- reka_core = Model(
- name = 'reka-core',
- base_provider = 'Reka AI',
- best_provider = Reka
- )
- ### Blackbox AI ###
- blackboxai = Model(
- name = 'blackboxai',
- base_provider = 'Blackbox AI',
- best_provider = Blackbox
- )
- blackboxai_pro = Model(
- name = 'blackboxai-pro',
- base_provider = 'Blackbox AI',
- best_provider = Blackbox
- )
- ### CohereForAI ###
- command_r = Model(
- name = 'command-r',
- base_provider = 'CohereForAI',
- best_provider = HuggingSpace
- )
- command_r_plus = Model(
- name = 'command-r-plus',
- base_provider = 'CohereForAI',
- best_provider = IterListProvider([HuggingSpace, HuggingChat])
- )
- command_r7b = Model(
- name = 'command-r7b',
- base_provider = 'CohereForAI',
- best_provider = HuggingSpace
- )
- ### Qwen ###
- qwen_1_5_7b = Model(
- name = 'qwen-1.5-7b',
- base_provider = 'Qwen',
- best_provider = Cloudflare
- )
- qwen_2_72b = Model(
- name = 'qwen-2-72b',
- base_provider = 'Qwen',
- best_provider = HuggingSpace
- )
- qwen_2_vl_7b = VisionModel(
- name = "qwen-2-vl-7b",
- base_provider = 'Qwen',
- best_provider = HuggingFaceAPI
- )
- qwen_2_5_72b = Model(
- name = 'qwen-2.5-72b',
- base_provider = 'Qwen',
- best_provider = IterListProvider([DeepInfraChat, PollinationsAI, Jmuz])
- )
- qwen_2_5_coder_32b = Model(
- name = 'qwen-2.5-coder-32b',
- base_provider = 'Qwen',
- best_provider = IterListProvider([PollinationsAI, Jmuz, HuggingChat])
- )
- qwen_2_5_1m = Model(
- name = 'qwen-2.5-1m-demo',
- base_provider = 'Qwen',
- best_provider = HuggingSpace
- )
- ### qwq/qvq ###
- qwq_32b = Model(
- name = 'qwq-32b',
- base_provider = 'Qwen',
- best_provider = IterListProvider([Blackbox, BlackboxAPI, Jmuz, HuggingChat])
- )
- qvq_72b = VisionModel(
- name = 'qvq-72b',
- base_provider = 'Qwen',
- best_provider = HuggingSpace
- )
- ### Inflection ###
- pi = Model(
- name = 'pi',
- base_provider = 'Inflection',
- best_provider = Pi
- )
- ### DeepSeek ###
- deepseek_chat = Model(
- name = 'deepseek-chat',
- base_provider = 'DeepSeek',
- best_provider = IterListProvider([Blackbox, BlackboxAPI, Jmuz, PollinationsAI])
- )
- deepseek_v3 = Model(
- name = 'deepseek-v3',
- base_provider = 'DeepSeek',
- best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat, CablyAI, Liaobots])
- )
- deepseek_r1 = Model(
- name = 'deepseek-r1',
- base_provider = 'DeepSeek',
- best_provider = IterListProvider([Blackbox, BlackboxAPI, DeepInfraChat, Glider, PollinationsAI, Jmuz, CablyAI, Liaobots, HuggingChat, HuggingFace])
- )
- ### x.ai ###
- grok_2 = Model(
- name = 'grok-2',
- base_provider = 'x.ai',
- best_provider = Liaobots
- )
- ### Perplexity AI ###
- sonar = Model(
- name = 'sonar',
- base_provider = 'Perplexity AI',
- best_provider = PerplexityLabs
- )
- sonar_pro = Model(
- name = 'sonar-pro',
- base_provider = 'Perplexity AI',
- best_provider = PerplexityLabs
- )
- sonar_reasoning = Model(
- name = 'sonar-reasoning',
- base_provider = 'Perplexity AI',
- best_provider = PerplexityLabs
- )
- ### Nvidia ###
- nemotron_70b = Model(
- name = 'nemotron-70b',
- base_provider = 'Nvidia',
- best_provider = IterListProvider([HuggingChat, HuggingFace])
- )
- ### Databricks ###
- dbrx_instruct = Model(
- name = 'dbrx-instruct',
- base_provider = 'Databricks',
- best_provider = IterListProvider([Blackbox, BlackboxAPI])
- )
- ### THUDM ###
- glm_4 = Model(
- name = 'glm-4',
- base_provider = 'THUDM',
- best_provider = ChatGLM
- )
- ### MiniMax
- mini_max = Model(
- name = "MiniMax",
- base_provider = "MiniMax",
- best_provider = HailuoAI
- )
- ### Uncensored AI ###
- evil = Model(
- name = 'evil',
- base_provider = 'Evil Mode - Experimental',
- best_provider = PollinationsAI
- )
- #############
- ### Image ###
- #############
- ### Stability AI ###
- sdxl_turbo = ImageModel(
- name = 'sdxl-turbo',
- base_provider = 'Stability AI',
- best_provider = IterListProvider([PollinationsAI, ImageLabs])
- )
- sd_3_5 = ImageModel(
- name = 'sd-3.5',
- base_provider = 'Stability AI',
- best_provider = HuggingSpace
- )
- ### Black Forest Labs ###
- flux = ImageModel(
- name = 'flux',
- base_provider = 'Black Forest Labs',
- best_provider = IterListProvider([Blackbox, PollinationsAI, HuggingSpace])
- )
- flux_pro = ImageModel(
- name = 'flux-pro',
- base_provider = 'Black Forest Labs',
- best_provider = PollinationsAI
- )
- flux_dev = ImageModel(
- name = 'flux-dev',
- base_provider = 'Black Forest Labs',
- best_provider = IterListProvider([HuggingSpace, HuggingChat, HuggingFace])
- )
- flux_schnell = ImageModel(
- name = 'flux-schnell',
- base_provider = 'Black Forest Labs',
- best_provider = IterListProvider([HuggingSpace, HuggingChat, HuggingFace])
- )
- ### OpenAI ###
- dall_e_3 = ImageModel(
- name = 'dall-e-3',
- base_provider = 'OpenAI',
- best_provider = IterListProvider([PollinationsAI, CopilotAccount, OpenaiAccount, MicrosoftDesigner, BingCreateImages])
- )
- ### Midjourney ###
- midjourney = ImageModel(
- name = 'midjourney',
- base_provider = 'Midjourney',
- best_provider = PollinationsAI
- )
- class ModelUtils:
- """
- Utility class for mapping string identifiers to Model instances.
- Attributes:
- convert (dict[str, Model]): Dictionary mapping model string identifiers to Model instances.
- """
- convert: dict[str, Model] = {
- ############
- ### Text ###
- ############
- ### OpenAI ###
- # gpt-4
- gpt_4.name: gpt_4,
-
- # gpt-4o
- gpt_4o.name: gpt_4o,
- gpt_4o_mini.name: gpt_4o_mini,
-
- # o1
- o1.name: o1,
- o1_preview.name: o1_preview,
- o1_mini.name: o1_mini,
- ### Meta ###
- meta.name: meta,
- # llama-2
- llama_2_7b.name: llama_2_7b,
- # llama-3
- llama_3_8b.name: llama_3_8b,
- llama_3_70b.name: llama_3_70b,
-
- # llama-3.1
- llama_3_1_8b.name: llama_3_1_8b,
- llama_3_1_70b.name: llama_3_1_70b,
- llama_3_1_405b.name: llama_3_1_405b,
- # llama-3.2
- llama_3_2_1b.name: llama_3_2_1b,
- llama_3_2_3b.name: llama_3_2_3b,
- llama_3_2_11b.name: llama_3_2_11b,
- llama_3_2_90b.name: llama_3_2_90b,
-
- # llama-3.3
- llama_3_3_70b.name: llama_3_3_70b,
-
- ### Mistral ###
- mixtral_8x7b.name: mixtral_8x7b,
- mistral_nemo.name: mistral_nemo,
- mixtral_small_28b.name: mixtral_small_28b,
- ### NousResearch ###
- hermes_2_dpo.name: hermes_2_dpo,
-
- ### Microsoft ###
- # phi
- phi_3_5_mini.name: phi_3_5_mini,
- phi_4.name: phi_4,
-
- # wizardlm
- wizardlm_2_8x22b.name: wizardlm_2_8x22b,
- ### Google ###
- ### Gemini
- gemini.name: gemini,
- gemini_exp.name: gemini_exp,
- gemini_1_5_pro.name: gemini_1_5_pro,
- gemini_1_5_flash.name: gemini_1_5_flash,
- gemini_2_0_flash.name: gemini_2_0_flash,
- gemini_2_0_flash_thinking.name: gemini_2_0_flash_thinking,
- ### Anthropic ###
- # claude 3
- claude_3_opus.name: claude_3_opus,
- claude_3_sonnet.name: claude_3_sonnet,
- claude_3_haiku.name: claude_3_haiku,
- # claude 3.5
- claude_3_5_sonnet.name: claude_3_5_sonnet,
- ### Reka AI ###
- reka_core.name: reka_core,
- ### Blackbox AI ###
- blackboxai.name: blackboxai,
- blackboxai_pro.name: blackboxai_pro,
- ### CohereForAI ###
- command_r.name: command_r,
- command_r_plus.name: command_r_plus,
- command_r7b.name: command_r7b,
- ### GigaChat ###
- gigachat.name: gigachat,
- ### Qwen ###
- qwen_1_5_7b.name: qwen_1_5_7b,
- qwen_2_72b.name: qwen_2_72b,
- qwen_2_vl_7b.name: qwen_2_vl_7b,
- qwen_2_5_72b.name: qwen_2_5_72b,
- qwen_2_5_coder_32b.name: qwen_2_5_coder_32b,
- qwen_2_5_1m.name: qwen_2_5_1m,
- # qwq/qvq
- qwq_32b.name: qwq_32b,
- qvq_72b.name: qvq_72b,
- ### Inflection ###
- pi.name: pi,
- ### x.ai ###
- grok_2.name: grok_2,
- ### Perplexity AI ###
- sonar.name: sonar,
- sonar_pro.name: sonar_pro,
- sonar_reasoning.name: sonar_reasoning,
-
- ### DeepSeek ###
- deepseek_chat.name: deepseek_chat,
- deepseek_v3.name: deepseek_v3,
- deepseek_r1.name: deepseek_r1,
- nemotron_70b.name: nemotron_70b, ### Nvidia ###
- dbrx_instruct.name: dbrx_instruct, ### Databricks ###
- glm_4.name: glm_4, ### THUDM ###
- mini_max.name: mini_max, ## MiniMax
- evil.name: evil, ### Uncensored AI ###
-
- #############
- ### Image ###
- #############
- ### Stability AI ###
- sdxl_turbo.name: sdxl_turbo,
- sd_3_5.name: sd_3_5,
- ### Flux AI ###
- flux.name: flux,
- flux_pro.name: flux_pro,
- flux_dev.name: flux_dev,
- flux_schnell.name: flux_schnell,
- ### OpenAI ###
- dall_e_3.name: dall_e_3,
-
- ### Midjourney ###
- midjourney.name: midjourney,
- }
- demo_models = {
- gpt_4o.name: [gpt_4o, [PollinationsAI, Blackbox]],
- "default": [llama_3_2_11b, [HuggingFace]],
- qwen_2_vl_7b.name: [qwen_2_vl_7b, [HuggingFaceAPI]],
- qvq_72b.name: [qvq_72b, [HuggingSpace]],
- deepseek_r1.name: [deepseek_r1, [HuggingFace]],
- command_r.name: [command_r, [HuggingSpace]],
- command_r_plus.name: [command_r_plus, [HuggingSpace]],
- command_r7b.name: [command_r7b, [HuggingSpace]],
- qwen_2_72b.name: [qwen_2_72b, [HuggingSpace]],
- qwen_2_5_coder_32b.name: [qwen_2_5_coder_32b, [HuggingFace]],
- qwq_32b.name: [qwq_32b, [HuggingFace]],
- llama_3_3_70b.name: [llama_3_3_70b, [HuggingFace]],
- sd_3_5.name: [sd_3_5, [HuggingSpace, HuggingFace]],
- flux_dev.name: [flux_dev, [HuggingSpace, HuggingFace]],
- flux_schnell.name: [flux_schnell, [HuggingFace, HuggingSpace, PollinationsAI]],
- }
- # Create a list of all models and his providers
- __models__ = {
- model.name: (model, providers)
- for model, providers in [
- (model, [provider for provider in model.best_provider.providers if provider.working]
- if isinstance(model.best_provider, IterListProvider)
- else [model.best_provider]
- if model.best_provider is not None and model.best_provider.working
- else [])
- for model in ModelUtils.convert.values()]
- if providers
- }
- _all_models = list(__models__.keys())
|