|
|
|
|
|
""" |
|
@Time : 2023/9/26 14:27 |
|
@Author : zhanglei |
|
@File : moderation.py |
|
""" |
|
from typing import Union |
|
|
|
from metagpt.provider.base_llm import BaseLLM |
|
|
|
|
|
class Moderation: |
|
def __init__(self, llm: BaseLLM): |
|
self.llm = llm |
|
|
|
def handle_moderation_results(self, results): |
|
resp = [] |
|
for item in results: |
|
categories = item.categories.dict() |
|
true_categories = [category for category, item_flagged in categories.items() if item_flagged] |
|
resp.append({"flagged": item.flagged, "true_categories": true_categories}) |
|
return resp |
|
|
|
async def amoderation_with_categories(self, content: Union[str, list[str]]): |
|
resp = [] |
|
if content: |
|
moderation_results = await self.llm.amoderation(content=content) |
|
resp = self.handle_moderation_results(moderation_results.results) |
|
return resp |
|
|
|
async def amoderation(self, content: Union[str, list[str]]): |
|
resp = [] |
|
if content: |
|
moderation_results = await self.llm.amoderation(content=content) |
|
results = moderation_results.results |
|
for item in results: |
|
resp.append(item.flagged) |
|
|
|
return resp |
|
|