Python으로 AI Moderation Classifier(AI 중재 분류기) 구축하기
요약
Python Flask와 Telnyx AI Inference를 사용하여 효율적인 AI 중재 분류기(Moderation Classifier)를 구축하는 방법을 소개합니다. 임베딩 기반의 사전 필터링과 LLM의 추론을 결합한 2단계 파이프라인을 통해 비용과 정확도를 최적화합니다.
핵심 포인트
- 임베딩 유사도를 활용해 알려진 유해 패턴을 빠르게 사전 필터링함
- 모호하거나 문맥적 판단이 필요한 경우에만 LLM을 호출하여 효율성 증대
- Python Flask 기반의 API 엔드포인트와 배치 처리 기능 제공
- 구조화된 응답을 통해 제품 로직에 즉시 적용 가능한 워크플로우 구축
중재(Moderation)는 "그냥 LLM(대규모 언어 모델)에게 물어봐"라는 말이 유혹적으로 들릴 수 있는 제품 기능 중 하나이지만, 항상 최선의 워크플로우인 것은 아닙니다.
어떤 콘텐츠는 명백합니다. 알려진 스팸, 반복되는 학대 패턴, 일반적인 사기 텍스트는 빠르고 일관되게 포착되어야 합니다.
다른 콘텐츠는 판단이 필요합니다. 문맥적일 수도 있고, 모호하거나, 비꼬는 말투이거나, 경계선에 있을 수도 있습니다.
저는 Telnyx AI Inference를 사용하여 두 가지 경로를 모두 처리하는 Python Flask 예제를 준비했습니다:
https://github.com/team-telnyx/telnyx-code-examples/tree/main/moderation-classifier-python
이 앱은 2단계 파이프라인을 사용합니다:
- 임베딩(Embeddings)을 사용하여 알려진 차단 목록(blocklist)에 대해 사전 필터링을 수행합니다.
- 강력한 차단 목록 일치가 없는 경우 LLM 중재 판단을 수행합니다.
흐름 (The flow)
콘텐츠를 중재하기 전에, 차단 목록 인덱스를 구축합니다:
curl -X POST http://localhost:5000/blocklist/index
이렇게 하면 sample_blocklist.json에 포함된 항목들이 다음을 통해 임베딩됩니다:
POST /v2/ai/openai/embeddings
그 다음 단일 콘텐츠를 분류할 수 있습니다:
curl -X POST http://localhost:5000/moderate \\n -H "Content-Type: application/json" \\n -d '{\n...\n```
앱은 구조화된 필드를 반환합니다:
{
"category": "safe",
"confidence": 1.0,
...
콘텐츠가 차단 목록과 충분히 강력하게 일치하면, 앱은 LLM을 건너뛰고 일치하는 카테고리를 직접 반환합니다.
그 외의 모든 경우에는 다음을 호출합니다:
POST /v2/ai/chat/completions
기본 모델은 다음과 같습니다:
AI_MODEL=moonshotai/Kimi-K2.6
EMBEDDING_MODEL=thenlper/gte-large
## 포함된 엔드포인트 (Endpoints included)
예제에는 다음이 포함되어 있습니다:
- `POST /blocklist/index`
- `POST /moderate`
- `POST /moderate/batch`
- `POST /blocklist`
- `GET /blocklist`
- `GET /moderations`
- `GET /moderations/<id>`
- `GET /stats`
- `GET /health`
배치(Batch) 중재는 최대 20개의 항목을 지원합니다:
curl -X POST http://localhost:5000/moderate/batch \n -H "Content-Type: application/json" \n -d '{\n...\n```
이러한 형태가 유용한 이유
중요한 아이디어는 명백한 중재 (moderation) 사례와 미묘한 차이가 있는 사례를 분리하는 것입니다.
이미 알려진 유해 패턴 (Known-bad patterns)은 임베딩 유사도 (embeddings similarity)를 통해 처리할 수 있습니다.
모호한 콘텐츠는 분류 및 추론 (reasoning)을 위해 LLM (대규모 언어 모델)으로 보낼 수 있습니다.
응답은 제품 로직에 바로 연결할 수 있을 만큼 충분히 구조화되어 있습니다:
allow(허용)flag(플래그 지정)remove(삭제)escalate(에스컬레이션/상위 보고)
프로덕션 환경을 위해서는 영속성 (persistence), 감사 로그 (audit logs), 사람의 검토 큐 (human review queues), 속도 제한 (rate limiting), 그리고 검토자가 시간이 지남에 따라 차단 목록 (blocklist)과 임계값 (thresholds)을 조정할 수 있는 피드백 루프 (feedback loop)를 추가하겠습니다.
리소스:
- 코드: https://github.com/team-telnyx/telnyx-code-examples/tree/main/moderation-classifier-python
- Telnyx AI 추론 (Inference) 문서: https://developers.telnyx.com/docs/inference
- 임베딩 (Embeddings) API: https://developers.telnyx.com/api/inference/create-embeddings
- 채팅 완성 (Chat Completions) API: https://developers.telnyx.com/api/inference/chat-completions
- Telnyx AI 기술 및 툴킷 (skills and toolkits): https://github.com/team-telnyx/ai
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기