Spaces:
Running
Running
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
""" | |
@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 | |