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