diff options
Diffstat (limited to 'g4f/.v1/gpt4free/__init__.py')
-rw-r--r-- | g4f/.v1/gpt4free/__init__.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/g4f/.v1/gpt4free/__init__.py b/g4f/.v1/gpt4free/__init__.py new file mode 100644 index 00000000..bcc03a3b --- /dev/null +++ b/g4f/.v1/gpt4free/__init__.py @@ -0,0 +1,103 @@ +from enum import Enum + +from gpt4free import forefront +from gpt4free import quora +from gpt4free import theb +from gpt4free import usesless +from gpt4free import you +from gpt4free import aicolors +from gpt4free import deepai + + +class Provider(Enum): + """An enum representing different providers.""" + + You = "you" + Poe = "poe" + ForeFront = "fore_front" + Theb = "theb" + UseLess = "useless" + AiColors = "ai_colors" + DeepAI = "deepai" + + +class Completion: + """This class will be used for invoking the given provider""" + + @staticmethod + def create(provider: Provider, prompt: str, **kwargs) -> str: + """ + Invokes the given provider with given prompt and addition arguments and returns the string response + + :param provider: an enum representing the provider to use while invoking + :param prompt: input provided by the user + :param kwargs: Additional keyword arguments to pass to the provider while invoking + :return: A string representing the response from the provider + """ + if provider == Provider.Poe: + return Completion.__poe_service(prompt, **kwargs) + elif provider == Provider.You: + return Completion.__you_service(prompt, **kwargs) + elif provider == Provider.ForeFront: + return Completion.__fore_front_service(prompt, **kwargs) + elif provider == Provider.Theb: + return Completion.__theb_service(prompt, **kwargs) + elif provider == Provider.UseLess: + return Completion.__useless_service(prompt, **kwargs) + elif provider == Provider.AiColors: + return Completion.__ai_colors_service(prompt, **kwargs) + elif provider == Provider.DeepAI: + return Completion.__deepai_service(prompt, **kwargs) + else: + raise Exception("Provider not exist, Please try again") + + @staticmethod + def __ai_colors_service(prompt: str): + return aicolors.Completion.create(prompt=prompt) + + @staticmethod + def __useless_service(prompt: str, **kwargs) -> str: + return usesless.Completion.create(prompt=prompt, **kwargs) + + @staticmethod + def __you_service(prompt: str, **kwargs) -> str: + return you.Completion.create(prompt, **kwargs).text + + @staticmethod + def __poe_service(prompt: str, **kwargs) -> str: + return quora.Completion.create(prompt=prompt, **kwargs).text + + @staticmethod + def __fore_front_service(prompt: str, **kwargs) -> str: + return forefront.Completion.create(prompt=prompt, **kwargs).text + + @staticmethod + def __theb_service(prompt: str, **kwargs): + return "".join(theb.Completion.create(prompt=prompt)) + + @staticmethod + def __deepai_service(prompt: str, **kwargs): + return "".join(deepai.Completion.create(prompt=prompt)) + + +class ChatCompletion: + """This class is used to execute a chat completion for a specified provider""" + + @staticmethod + def create(provider: Provider, messages: list, **kwargs) -> str: + """ + Invokes the given provider with given chat messages and addition arguments and returns the string response + + :param provider: an enum representing the provider to use while invoking + :param messages: a list of chat messages, see the OpenAI docs for how to format this (https://platform.openai.com/docs/guides/chat/introduction) + :param kwargs: Additional keyword arguments to pass to the provider while invoking + :return: A string representing the response from the provider + """ + if provider == Provider.DeepAI: + return ChatCompletion.__deepai_service(messages, **kwargs) + else: + raise Exception("Provider not exist, Please try again") + + @staticmethod + def __deepai_service(messages: list, **kwargs): + return "".join(deepai.ChatCompletion.create(messages=messages)) |