summaryrefslogtreecommitdiffstats
path: root/g4f/.v1/gpt4free/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/.v1/gpt4free/__init__.py')
-rw-r--r--g4f/.v1/gpt4free/__init__.py103
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))