diff options
-rw-r--r-- | g4f/Provider/HuggingChat.py | 25 | ||||
-rw-r--r-- | g4f/Provider/PerplexityLabs.py | 29 | ||||
-rw-r--r-- | g4f/models.py | 184 |
3 files changed, 53 insertions, 185 deletions
diff --git a/g4f/Provider/HuggingChat.py b/g4f/Provider/HuggingChat.py index 4a42b3c8..3b4a520c 100644 --- a/g4f/Provider/HuggingChat.py +++ b/g4f/Provider/HuggingChat.py @@ -8,14 +8,23 @@ from ..typing import AsyncResult, Messages from .base_provider import AsyncGeneratorProvider from .helper import format_prompt, get_cookies -map = { - "openchat/openchat_3.5": "openchat/openchat-3.5-1210", -} class HuggingChat(AsyncGeneratorProvider): url = "https://huggingface.co/chat" working = True - model = "meta-llama/Llama-2-70b-chat-hf" + default_model = "meta-llama/Llama-2-70b-chat-hf" + models = [ + "mistralai/Mixtral-8x7B-Instruct-v0.1", + "meta-llama/Llama-2-70b-chat-hf", + "NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO", + "codellama/CodeLlama-34b-Instruct-hf", + "mistralai/Mistral-7B-Instruct-v0.2", + "openchat/openchat-3.5-0106" + ] + model_map = { + "openchat/openchat_3.5": "openchat/openchat-3.5-1210", + "mistralai/Mixtral-8x7B-Instruct-v0.1": "mistralai/Mistral-7B-Instruct-v0.2" + } @classmethod async def create_async_generator( @@ -29,9 +38,11 @@ class HuggingChat(AsyncGeneratorProvider): **kwargs ) -> AsyncResult: if not model: - model = cls.model - elif model in map: - model = map[model] + model = cls.default_model + elif model in cls.model_map: + model = cls.model_map[model] + elif model not in cls.models: + raise ValueError(f"Model is not supported: {model}") if not cookies: cookies = get_cookies(".huggingface.co") diff --git a/g4f/Provider/PerplexityLabs.py b/g4f/Provider/PerplexityLabs.py index 7e76aeef..c989b3da 100644 --- a/g4f/Provider/PerplexityLabs.py +++ b/g4f/Provider/PerplexityLabs.py @@ -2,27 +2,28 @@ from __future__ import annotations import random import json -from aiohttp import ClientSession, WSMsgType +from aiohttp import ClientSession from ..typing import AsyncResult, Messages from .base_provider import AsyncGeneratorProvider API_URL = "https://labs-api.perplexity.ai/socket.io/" WS_URL = "wss://labs-api.perplexity.ai/socket.io/" -MODELS = ['pplx-7b-online', 'pplx-70b-online', 'pplx-7b-chat', 'pplx-70b-chat', 'mistral-7b-instruct', - 'codellama-34b-instruct', 'llama-2-70b-chat', 'llava-7b-chat', 'mixtral-8x7b-instruct', - 'mistral-medium', 'related'] -DEFAULT_MODEL = MODELS[1] -MODEL_MAP = { - "mistralai/Mistral-7B-Instruct-v0.1": "mistral-7b-instruct", - "meta-llama/Llama-2-70b-chat-hf": "llama-2-70b-chat", - "mistralai/Mixtral-8x7B-Instruct-v0.1": "mixtral-8x7b-instruct", -} class PerplexityLabs(AsyncGeneratorProvider): url = "https://labs.perplexity.ai" working = True supports_gpt_35_turbo = True + models = ['pplx-7b-online', 'pplx-70b-online', 'pplx-7b-chat', 'pplx-70b-chat', 'mistral-7b-instruct', + 'codellama-34b-instruct', 'llama-2-70b-chat', 'llava-7b-chat', 'mixtral-8x7b-instruct', + 'mistral-medium', 'related'] + default_model = 'pplx-70b-online' + model_map = { + "mistralai/Mistral-7B-Instruct-v0.1": "mistral-7b-instruct", + "meta-llama/Llama-2-70b-chat-hf": "llama-2-70b-chat", + "mistralai/Mixtral-8x7B-Instruct-v0.1": "mixtral-8x7b-instruct", + "codellama/CodeLlama-34b-Instruct-hf": "codellama-34b-instruct" + } @classmethod async def create_async_generator( @@ -33,10 +34,10 @@ class PerplexityLabs(AsyncGeneratorProvider): **kwargs ) -> AsyncResult: if not model: - model = DEFAULT_MODEL - elif model in MODEL_MAP: - model = MODEL_MAP[model] - elif model not in MODELS: + model = cls.default_model + elif model in cls.model_map: + model = cls.model_map[model] + elif model not in cls.models: raise ValueError(f"Model is not supported: {model}") headers = { "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0", diff --git a/g4f/models.py b/g4f/models.py index 636058d3..e0d6121d 100644 --- a/g4f/models.py +++ b/g4f/models.py @@ -3,9 +3,9 @@ from dataclasses import dataclass from .Provider import RetryProvider, ProviderType from .Provider import ( Chatgpt4Online, + PerplexityLabs, ChatgptDemoAi, GeminiProChat, - PerplexityAi, ChatgptNext, HuggingChat, ChatgptDemo, @@ -26,7 +26,6 @@ from .Provider import ( Bard, Bing, You, - H2o, Pi, ) @@ -115,20 +114,26 @@ llama2_13b = Model( llama2_70b = Model( name = "meta-llama/Llama-2-70b-chat-hf", base_provider = "huggingface", - best_provider = RetryProvider([Llama2, DeepInfra, HuggingChat, PerplexityAi]) + best_provider = RetryProvider([Llama2, DeepInfra, HuggingChat, PerplexityLabs]) +) + +codellama_34b_instruct = Model( + name = "codellama/CodeLlama-34b-Instruct-hf", + base_provider = "huggingface", + best_provider = RetryProvider([HuggingChat, PerplexityLabs]) ) # Mistal mixtral_8x7b = Model( name = "mistralai/Mixtral-8x7B-Instruct-v0.1", base_provider = "huggingface", - best_provider = RetryProvider([DeepInfra, HuggingChat, PerplexityAi]) + best_provider = RetryProvider([DeepInfra, HuggingChat, PerplexityLabs]) ) mistral_7b = Model( name = "mistralai/Mistral-7B-Instruct-v0.1", base_provider = "huggingface", - best_provider = RetryProvider([DeepInfra, HuggingChat, PerplexityAi]) + best_provider = RetryProvider([DeepInfra, HuggingChat, PerplexityLabs]) ) # Dolphin @@ -146,92 +151,23 @@ openchat_35 = Model( ) # Bard -palm = Model( +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) + best_provider = Bard +) 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) + best_provider = RetryProvider([FreeChatgpt, Vercel]) +) gpt_35_turbo_16k = Model( name = 'gpt-3.5-turbo-16k', base_provider = 'openai', - best_provider = gpt_35_long.best_provider) + best_provider = gpt_35_long.best_provider +) gpt_35_turbo_16k_0613 = Model( name = 'gpt-3.5-turbo-16k-0613', @@ -269,46 +205,6 @@ gemini_pro = Model( 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', @@ -342,55 +238,15 @@ class ModelUtils: 'llama2-7b' : llama2_7b, 'llama2-13b': llama2_13b, 'llama2-70b': llama2_70b, + 'codellama-34b-instruct': codellama_34b_instruct, - # Mistral 'mixtral-8x7b': mixtral_8x7b, 'mistral-7b': mistral_7b, - - # Dolphin 'dolphin-mixtral-8x7b': dolphin_mixtral_8x7b, - - # OpenChat '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, - + 'bard': bard, + 'claude-v2': claude_v2, 'pi': pi } |