From 9bf1e51d02069d4e57be7938bcf9678d9987850b Mon Sep 17 00:00:00 2001 From: zhanglei Date: Thu, 14 Sep 2023 15:21:34 +0800 Subject: [PATCH] add: openai moderation --- metagpt/provider/openai_api.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/metagpt/provider/openai_api.py b/metagpt/provider/openai_api.py index ad9df0396..30f61cf2d 100644 --- a/metagpt/provider/openai_api.py +++ b/metagpt/provider/openai_api.py @@ -6,7 +6,7 @@ """ import asyncio import time -from typing import NamedTuple +from typing import NamedTuple, Union, List, Optional import openai from openai.error import APIConnectionError @@ -286,3 +286,17 @@ class OpenAIGPTAPI(BaseGPTAPI, RateLimiter): if not self.auto_max_tokens: return CONFIG.max_tokens_rsp return get_max_completion_tokens(messages, self.model, CONFIG.max_tokens_rsp) + + def moderation(self,content: Union[str, List[str]],model: Optional[str] = None,api_key: Optional[str] = None,): + try: + if content is None or content == "" or len(content) == 0: + logger.error("content cannot be empty!") + else: + rsp = self._moderation(content=content,model=model,api_key=api_key) + return rsp + except Exception as e: + logger.error("moderating failed!", e) + + def _moderation(self,content: Union[str, List[str]],model: Optional[str] = None,api_key: Optional[str] = None): + rsp = self.llm.Moderation.create(input=content,model=model,api_key=api_key) + return rsp