|
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)) |
|
|