Moderation
우리가 주로 사용하는 LLM의 경우 ChatGPT처럼 이미 프롬프트 템플릿이 정해져 있고 별다른 설정없이 LLM을 사용할 수 있다는 장점이 있습니다. 하지만 GPT3.5나 최신버전의 GPT가 아닌 다른 출력값이 정제되지 않은 LLM을 사용한다면 출력값은 매우 폭력적이거나 편향이 강할 수 있습니다.
대부분의 API를 유료화한 OpenAI도 Moderation에 대한 분류는 아직 유료화를 진행하지 않았습니다. 이번 글에선 OpenAI의 Moderation API를 사용하여 문장의 폭력성과 ChatGPT의 정책에 맞지 않은 문장을 분류해보도록 하겠습니다.
위 그림을 통해 OpenAI에서 규정하고 있는 Moderation categories에 대해서 확인할 수 있습니다. 관심이 있으신분들은 읽어보시면 될 듯합니다. 이 글에선 코드를 구현하여 문장의 Moderation 위반을 판단하는 것이 주 목적이기에 설명은 생략하겠습니다.
Code
먼저 openai를 설치해야 합니다. 하지만 최신 버전의 openai에서의 moderation 구현 코드는 다소 복잡해졌기 때문에 다른 기능을 사용하는것이 아니라 moderation만 사용한다면 아래의 버전을 똑같이 사용하는 것을 권장합니다.
api key를 발급받는 방법은 아래의 글을 통해서 확인할 수 있습니다.
OpenAI API key 발급 방법
OpenAI API key 발급 방법 이 글에선 OpenAI의 API를 사용하기 위한 API key를 발급 받는 방법을 다룹니다. 아래의 순서를 따라가면 API key를 발급받을 수 있습니다. 먼저 OpenAI 계정을 만들어서 로그인을
learnhiksang.tistory.com
pip install openai==0.28 ## 터미널에서 실행시
!pip install openai==0.28 ## jupyter notebook에서 실행시
import openai
import os
openai.api_key = "<api key>"
response = openai.Moderation.create(
input="sentence"
)
print(response)
결과는 위와 같은데 results의 flagged를 통해서 moderation을 위반했는지 아닌지 확인할 수 있습니다. True는 위반한 것이고 False는 위반하지 않은 것입니다. categories를 통해 어떤 부문에서 위반했는지 확인할 수 있습니다. 또한 category_scores를 통해 문장이 특정 category에 속할 확률을 확인할 수 있습니다.
결론
openAI의 moderation API는 오픈소스 LLM의 출력값을 통제해야 할 경우에 사용하는데 좋은 성능을 보여주고 LLM을 쓰는데 사용하지 않아도 문장의 폭력성이나 혐오단어를 필터링하는데 사용한다면 좋은 결과를 기대할 수 있을 것으로 보입니다.