You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
from typing import List, Optional, Union
|
|
|
|
from openai.openai_object import OpenAIObject
|
|
|
|
|
|
class Moderation(OpenAIObject):
|
|
VALID_MODEL_NAMES: List[str] = ["text-moderation-stable", "text-moderation-latest"]
|
|
|
|
@classmethod
|
|
def get_url(cls):
|
|
return "/moderations"
|
|
|
|
@classmethod
|
|
def _prepare_create(cls, input, model, api_key):
|
|
if model is not None and model not in cls.VALID_MODEL_NAMES:
|
|
raise ValueError(
|
|
f"The parameter model should be chosen from {cls.VALID_MODEL_NAMES} "
|
|
f"and it is default to be None."
|
|
)
|
|
|
|
instance = cls(api_key=api_key)
|
|
params = {"input": input}
|
|
if model is not None:
|
|
params["model"] = model
|
|
return instance, params
|
|
|
|
@classmethod
|
|
def create(
|
|
cls,
|
|
input: Union[str, List[str]],
|
|
model: Optional[str] = None,
|
|
api_key: Optional[str] = None,
|
|
):
|
|
instance, params = cls._prepare_create(input, model, api_key)
|
|
return instance.request("post", cls.get_url(), params)
|
|
|
|
@classmethod
|
|
def acreate(
|
|
cls,
|
|
input: Union[str, List[str]],
|
|
model: Optional[str] = None,
|
|
api_key: Optional[str] = None,
|
|
):
|
|
instance, params = cls._prepare_create(input, model, api_key)
|
|
return instance.arequest("post", cls.get_url(), params)
|