monra's picture
Adds all providers from the original API
d4adf88
raw
history blame
3.89 kB
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))