123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384 |
- from __future__ import annotations
- from dataclasses import dataclass
- from .Provider import RetryProvider, ProviderType
- from .Provider import (
- Chatgpt4Online,
- ChatgptDemoAi,
- GeminiProChat,
- ChatgptNext,
- HuggingChat,
- ChatgptDemo,
- FreeChatgpt,
- GptForLove,
- ChatgptAi,
- DeepInfra,
- ChatBase,
- Liaobots,
- GeekGpt,
- FakeGpt,
- FreeGpt,
- Llama2,
- Vercel,
- Phind,
- GptGo,
- Gpt6,
- Bard,
- Bing,
- You,
- H2o,
- Pi,
- )
- @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
- default = Model(
- name = "",
- base_provider = "",
- best_provider = RetryProvider([
- Bing,
- ChatgptAi, GptGo, GeekGpt,
- You,
- Chatgpt4Online
- ])
- )
- # GPT-3.5 too, but all providers supports long requests and responses
- gpt_35_long = Model(
- name = 'gpt-3.5-turbo',
- base_provider = 'openai',
- best_provider = RetryProvider([
- FreeGpt, You,
- GeekGpt, FakeGpt,
- Chatgpt4Online,
- ChatgptDemoAi,
- ChatgptNext,
- ChatgptDemo,
- Gpt6,
- ])
- )
- # GPT-3.5 / GPT-4
- gpt_35_turbo = Model(
- name = 'gpt-3.5-turbo',
- base_provider = 'openai',
- best_provider=RetryProvider([
- GptGo, You,
- GptForLove, ChatBase,
- Chatgpt4Online,
- ])
- )
- gpt_4 = Model(
- name = 'gpt-4',
- base_provider = 'openai',
- best_provider = RetryProvider([
- Bing, Phind, Liaobots,
- ])
- )
- gpt_4_turbo = Model(
- name = 'gpt-4-turbo',
- base_provider = 'openai',
- best_provider = Bing
- )
- llama2_7b = Model(
- name = "meta-llama/Llama-2-7b-chat-hf",
- base_provider = 'huggingface',
- best_provider = RetryProvider([Llama2, DeepInfra])
- )
- llama2_13b = Model(
- name = "meta-llama/Llama-2-13b-chat-hf",
- base_provider = 'huggingface',
- best_provider = RetryProvider([Llama2, DeepInfra])
- )
- llama2_70b = Model(
- name = "meta-llama/Llama-2-70b-chat-hf",
- base_provider = "huggingface",
- best_provider = RetryProvider([Llama2, DeepInfra, HuggingChat])
- )
- # Mistal
- mixtral_8x7b = Model(
- name = "mistralai/Mixtral-8x7B-Instruct-v0.1",
- base_provider = "huggingface",
- best_provider = RetryProvider([DeepInfra, HuggingChat])
- )
- mistral_7b = Model(
- name = "mistralai/Mistral-7B-Instruct-v0.1",
- base_provider = "huggingface",
- best_provider = RetryProvider([DeepInfra, HuggingChat])
- )
- openchat_35 = Model(
- name = "openchat/openchat_3.5",
- base_provider = "huggingface",
- best_provider = RetryProvider([DeepInfra, HuggingChat])
- )
- # Bard
- palm = Model(
- name = 'palm',
- base_provider = 'google',
- best_provider = Bard)
- # H2o
- falcon_7b = Model(
- name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3',
- base_provider = 'huggingface',
- best_provider = H2o)
- falcon_40b = Model(
- name = 'h2oai/h2ogpt-gm-oasst1-en-2048-falcon-40b-v1',
- base_provider = 'huggingface',
- best_provider = H2o)
- llama_13b = Model(
- name = 'h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-13b',
- base_provider = 'huggingface',
- best_provider = H2o)
- # Vercel
- claude_instant_v1 = Model(
- name = 'claude-instant-v1',
- base_provider = 'anthropic',
- best_provider = Vercel)
- claude_v1 = Model(
- name = 'claude-v1',
- base_provider = 'anthropic',
- best_provider = Vercel)
- claude_v2 = Model(
- name = 'claude-v2',
- base_provider = 'anthropic',
- best_provider = RetryProvider([FreeChatgpt, Vercel]))
- command_light_nightly = Model(
- name = 'command-light-nightly',
- base_provider = 'cohere',
- best_provider = Vercel)
- command_nightly = Model(
- name = 'command-nightly',
- base_provider = 'cohere',
- best_provider = Vercel)
- gpt_neox_20b = Model(
- name = 'EleutherAI/gpt-neox-20b',
- base_provider = 'huggingface',
- best_provider = Vercel)
- oasst_sft_1_pythia_12b = Model(
- name = 'OpenAssistant/oasst-sft-1-pythia-12b',
- base_provider = 'huggingface',
- best_provider = Vercel)
- oasst_sft_4_pythia_12b_epoch_35 = Model(
- name = 'OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5',
- base_provider = 'huggingface',
- best_provider = Vercel)
- santacoder = Model(
- name = 'bigcode/santacoder',
- base_provider = 'huggingface',
- best_provider = Vercel)
- bloom = Model(
- name = 'bigscience/bloom',
- base_provider = 'huggingface',
- best_provider = Vercel)
- flan_t5_xxl = Model(
- name = 'google/flan-t5-xxl',
- base_provider = 'huggingface',
- best_provider = Vercel)
- code_davinci_002 = Model(
- name = 'code-davinci-002',
- base_provider = 'openai',
- best_provider = Vercel)
- gpt_35_turbo_16k = Model(
- name = 'gpt-3.5-turbo-16k',
- base_provider = 'openai',
- best_provider = gpt_35_long.best_provider)
- gpt_35_turbo_16k_0613 = Model(
- name = 'gpt-3.5-turbo-16k-0613',
- base_provider = 'openai',
- best_provider = gpt_35_long.best_provider
- )
- gpt_35_turbo_0613 = Model(
- name = 'gpt-3.5-turbo-0613',
- base_provider = 'openai',
- best_provider = gpt_35_turbo.best_provider
- )
- gpt_4_0613 = Model(
- name = 'gpt-4-0613',
- base_provider = 'openai',
- best_provider = gpt_4.best_provider
- )
- gpt_4_32k = Model(
- name = 'gpt-4-32k',
- base_provider = 'openai',
- best_provider = gpt_4.best_provider
- )
- gpt_4_32k_0613 = Model(
- name = 'gpt-4-32k-0613',
- base_provider = 'openai',
- best_provider = gpt_4.best_provider
- )
- gemini_pro = Model(
- name = 'gemini-pro',
- base_provider = 'google',
- best_provider = RetryProvider([FreeChatgpt, GeminiProChat])
- )
- text_ada_001 = Model(
- name = 'text-ada-001',
- base_provider = 'openai',
- best_provider = Vercel)
- text_babbage_001 = Model(
- name = 'text-babbage-001',
- base_provider = 'openai',
- best_provider = Vercel)
- text_curie_001 = Model(
- name = 'text-curie-001',
- base_provider = 'openai',
- best_provider = Vercel)
- text_davinci_002 = Model(
- name = 'text-davinci-002',
- base_provider = 'openai',
- best_provider = Vercel)
- text_davinci_003 = Model(
- name = 'text-davinci-003',
- base_provider = 'openai',
- best_provider = Vercel)
- llama13b_v2_chat = Model(
- name = 'replicate:a16z-infra/llama13b-v2-chat',
- base_provider = 'replicate',
- best_provider = Vercel)
- llama7b_v2_chat = Model(
- name = 'replicate:a16z-infra/llama7b-v2-chat',
- base_provider = 'replicate',
- best_provider = Vercel)
- llama70b_v2_chat = Model(
- name = 'replicate/llama70b-v2-chat',
- base_provider = 'replicate',
- best_provider = Vercel)
- pi = Model(
- name = 'pi',
- base_provider = 'inflection',
- best_provider=Pi
- )
- 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] = {
- # gpt-3.5
- 'gpt-3.5-turbo' : gpt_35_turbo,
- 'gpt-3.5-turbo-0613' : gpt_35_turbo_0613,
- 'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
- 'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
-
- 'gpt-3.5-long': gpt_35_long,
-
- # gpt-4
- 'gpt-4' : gpt_4,
- 'gpt-4-0613' : gpt_4_0613,
- 'gpt-4-32k' : gpt_4_32k,
- 'gpt-4-32k-0613' : gpt_4_32k_0613,
- 'gpt-4-turbo' : gpt_4_turbo,
- # Llama 2
- 'llama2-7b' : llama2_7b,
- 'llama2-13b': llama2_13b,
- 'llama2-70b': llama2_70b,
-
- # Mistral
- 'mixtral-8x7b': mixtral_8x7b,
- 'mistral-7b': mistral_7b,
- 'openchat_3.5': openchat_35,
-
- # Gemini Pro
- 'gemini-pro': gemini_pro,
- # Bard
- 'palm2' : palm,
- 'palm' : palm,
- 'google' : palm,
- 'google-bard' : palm,
- 'google-palm' : palm,
- 'bard' : palm,
-
- # H2o
- 'falcon-40b' : falcon_40b,
- 'falcon-7b' : falcon_7b,
- 'llama-13b' : llama_13b,
-
- # Vercel
- #'claude-instant-v1' : claude_instant_v1,
- #'claude-v1' : claude_v1,
- #'claude-v2' : claude_v2,
- 'command-nightly' : command_nightly,
- 'gpt-neox-20b' : gpt_neox_20b,
- 'santacoder' : santacoder,
- 'bloom' : bloom,
- 'flan-t5-xxl' : flan_t5_xxl,
- 'code-davinci-002' : code_davinci_002,
- 'text-ada-001' : text_ada_001,
- 'text-babbage-001' : text_babbage_001,
- 'text-curie-001' : text_curie_001,
- 'text-davinci-002' : text_davinci_002,
- 'text-davinci-003' : text_davinci_003,
- 'llama70b-v2-chat' : llama70b_v2_chat,
- 'llama13b-v2-chat' : llama13b_v2_chat,
- 'llama7b-v2-chat' : llama7b_v2_chat,
-
- 'oasst-sft-1-pythia-12b' : oasst_sft_1_pythia_12b,
- 'oasst-sft-4-pythia-12b-epoch-3.5' : oasst_sft_4_pythia_12b_epoch_35,
- 'command-light-nightly' : command_light_nightly,
- 'pi': pi
- }
- _all_models = list(ModelUtils.convert.keys())
|