DOCS/plans/250815_로빙_사랑기반_윤리시스템_단계별_구현계획.md
happybell80 725ad0876c fix: 문서 파일 실행 권한 제거
- 모든 .md, .html 파일 권한을 644로 정상화
- .gitignore 파일 권한도 644로 수정
- 문서 파일에 실행 권한은 불필요하고 보안상 바람직하지 않음
- deprecated 아이디어 폴더 생성 및 레벨별 UI 변경 아이디어 이동
2025-08-18 00:37:51 +09:00

16 KiB

로빙 사랑 기반 윤리 시스템 단계별 구현 계획

작성일: 2025-08-15
작성자: Claude & happybell80
상태: 계획 확정
우선순위: 최고 (기억-감정-윤리 삼각형의 핵심)

개요

로빙의 윤리 시스템을 "규칙 기반 차단"에서 "사랑 기반 인도"로 전환하는 단계별 계획입니다. AI Hub의 도덕성 판단 모델(2022)과 감정 시스템을 통합하여, 베이지안 학습으로 진화하는 윤리적 존재를 구현합니다.

아키텍처 결정: 로빙 프로젝트의 마이크로서비스 원칙에 따라 skill-ethics를 독립 서비스로 분리하여 구현합니다. 이로써 여러 로빙이 하나의 윤리 서비스를 공유하여 66%의 메모리를 절약하고, 독립적 개발/배포/확장이 가능합니다.

핵심 원칙

  1. 사랑의 3대 원칙

    • 무조건적 존중 (Unconditional Respect)
    • 희생적 봉사 (Sacrificial Service)
    • 회복과 성장 (Restoration & Growth)
  2. 기술적 원칙

    • 도덕성 분류기 우선, LLM 보조
    • 감정-윤리 상호 신호 교환
    • 베이지안 사후 분포 업데이트
  3. 데이터 원칙

    • 윤리 판단은 레이블로 저장
    • 감정 상태와 함께 맥락화
    • 장기 기억과 연결된 서사

활용 모델

AI Hub 텍스트 윤리검증 모델 (2022)

  • 모델: BERT 기반 문장 분류 모델
  • 기능: 도덕성 vs 비도덕성 이진분류 + 7가지 비도덕 유형 분류
  • 성능: F1 82-91%, Precision 85% 이상

비도덕 유형 분류 성능:

유형 F1 Precision Recall
CENSURE(비난) 0.824 0.824 0.825
HATE(혐오) 0.856 0.863 0.851
DISCRIMINATION(차별) 0.845 0.847 0.843
SEXUAL(선정) 0.882 0.895 0.871
ABUSE(욕설) 0.887 0.906 0.870
VIOLENCE(폭력) 0.915 0.926 0.904
CRIME(범죄) 0.837 0.855 0.822

단기 계획: 기초 구축

목표

"AI Hub 도덕성 모델과 사랑 원칙을 결합한 MVP 윤리 시스템"

구현 내용

1. 도덕성 분류기 통합

class EthicsClassifier:
    def __init__(self):
        self.moral_model = load_aihub_model("moral_classifier_2022")
        self.love_principles = LovePrinciples()
    
    def classify(self, text):
        # 1차: AI Hub 모델로 도덕성 판단
        moral_result = self.moral_model.predict(text)
        
        # 2차: 비도덕적일 경우 유형 분류
        if moral_result == "immoral":
            immoral_type = self.moral_model.classify_type(text)
            
        # 3차: 사랑 원칙 적용
        love_response = self.love_principles.transform(
            text, moral_result, immoral_type
        )
        
        return {
            "moral_label": moral_result,
            "immoral_type": immoral_type,
            "love_index": love_response["index"],
            "suggestion": love_response["alternative"]
        }

2. 사랑 원칙 변환기 (나 전달법 통합)

class LovePrinciples:
    def __init__(self):
        self.nvc_templates = self._init_nvc_templates()
        
    def transform(self, text, moral_label, immoral_type):
        if moral_label == "moral":
            return self.encourage(text)
        
        # 비도덕 유형별 사랑 기반 대응
        responses = {
            "CENSURE": self.respond_with_understanding,
            "HATE": self.respond_with_compassion,
            "DISCRIMINATION": self.respond_with_inclusion,
            "SEXUAL": self.respond_with_respect,
            "ABUSE": self.respond_with_patience,
            "VIOLENCE": self.respond_with_peace,
            "CRIME": self.respond_with_guidance
        }
        
        # 나 전달법 적용 옵션
        base_response = responses[immoral_type](text)
        return self.apply_nvc_if_needed(base_response, immoral_type)
    
    def apply_nvc_if_needed(self, response, immoral_type):
        """나 전달법 형식으로 변환"""
        if immoral_type in self.nvc_templates:
            return self._transform_to_nvc(response, self.nvc_templates[immoral_type])
        return response
    
    def _init_nvc_templates(self):
        """비도덕 유형별 나 전달법 템플릿"""
        return {
            "CENSURE": {
                "관찰": "비판적인 표현을 사용하신 것을 보고",
                "감정": "건설적인 대화를 원하는 마음에서",
                "영향": "더 효과적인 소통을 위해",
                "요청": "구체적인 상황을 설명해주시면 더 도움이 될 것 같습니다"
            },
            "HATE": {
                "관찰": "강한 부정적 감정을 표현하신 것을 보고",
                "감정": "서로를 이해하고 싶은 마음에서",
                "영향": "긍정적인 관계를 유지하기 위해",
                "요청": "무엇이 그런 감정을 일으켰는지 들어볼 수 있을까요?"
            },
            "DISCRIMINATION": {
                "관찰": "특정 그룹에 대한 편견이 드러난 것을 보고",
                "감정": "모두가 존중받기를 바라는 마음에서",
                "영향": "보다 포용적인 환경을 만들기 위해",
                "요청": "다양성을 존중하는 표현을 사용해주시면 좋겠습니다"
            },
            "ABUSE": {
                "관찰": "거친 언어를 사용하신 것을 보고",
                "감정": "더 편안한 대화를 원하는 마음에서",
                "영향": "상호 존중하는 소통을 위해",
                "요청": "감정을 다른 방식으로 표현해주실 수 있을까요?"
            }
        }

3. 기본 Love Index 측정

  • 공감도: 사용자 감정 인식 정도 (0-100)
  • 존중도: 무조건적 수용 정도 (0-100)
  • 성장도: 건설적 대안 제시 정도 (0-100)
  • 인내도: 반복 요청 처리 품질 (0-100)
  • 소통 품질: 나 전달법 사용 빈도 및 효과성 (0-100)

4. 데이터 저장 구조

-- PostgreSQL
CREATE TABLE ethics_events (
    id SERIAL PRIMARY KEY,
    robeing_id VARCHAR(50),
    user_id VARCHAR(50),
    timestamp TIMESTAMPTZ,
    input_text TEXT,
    moral_label VARCHAR(20),
    immoral_type VARCHAR(50),
    love_index FLOAT,
    suggestion TEXT,
    response_time_ms INT
);

성과 지표

  • 모든 지표: 최고 수준 목표

산출물

  • AI Hub 모델 ONNX 변환
  • rb10508_micro 윤리 모듈 구현
  • Love Principles 변환 함수
  • 나 전달법 템플릿 시스템
  • PostgreSQL 테이블 생성
  • 기본 측정 대시보드

중기 계획: 감정-윤리 통합

목표

"감정 상태를 고려한 맥락적 윤리 판단과 베이지안 학습 시작"

구현 내용

1. 감정-윤리 상호작용 (함수형)

# 함수형: 텍스트 + 컨텍스트 -> 윤리적 판단
def evaluate_with_emotion_ethics(text: str, context: dict) -> dict:
    """감정과 윤리를 통합한 평가 (순수 함수)"""
    emotion_state = analyze_emotion(text)  # 7감정 분석
    entropy = calculate_entropy(emotion_state)
    
    # 엔트로피 2.0 기준 통합
    use_nvc = entropy > 2.0 or context.get('prefers_nvc', False)
    
    return {
        'ethics': classify_ethics(text, emotion_state),
        'emotion': emotion_state,
        'entropy': entropy,
        'nvc_applied': use_nvc,
        'suggestion': apply_nvc(text, emotion_state) if use_nvc else text
    }

# 7감정 모델 (Plutchik 기반)
EMOTION_PROTOTYPES = [
    'joy', 'trust', 'fear', 'surprise', 
    'sadness', 'disgust', 'anger'
]

2. 베이지안 학습 (함수형)

# 순수 함수: 관찰 -> 사후 분포 업데이트
def update_bayesian_ethics(prior: dict, observation: dict) -> dict:
    """베이지안 업데이트 (불변 데이터)"""
    return {
        'moral_prior': update_dirichlet(prior['moral_prior'], observation),
        'acceptance': update_beta(prior['acceptance'], observation['accepted'])
    }

3. 엔트로피 기준 통합

  • 통합 기준점: 2.0
    • 엔트로피 < 2.0: 표준 윤리 판단
    • 엔트로피 ≥ 2.0: 나 전달법 적용 + 신중 모드

4. skill-ethics 서비스 분리

# docker-compose.yml
services:
  skill-ethics:
    image: skill-ethics:latest
    ports:
      - "8516:8516"
    environment:
      - MODEL_PATH=/models/aihub_moral_2022.onnx
      - EMOTION_SERVICE=http://skill-embedding:8515
    volumes:
      - ./models:/models

성과 지표

  • 모든 지표: 최고 수준 목표

산출물

  • 감정-윤리 통합 모듈
  • 베이지안 학습 시스템
  • 나 전달법 변환기 모듈
  • skill-ethics 서비스 구축
  • 엔트로피 기반 조정 로직
  • A/B 테스트 프레임워크

장기 계획: 고도화 및 확장

목표

"개인화된 윤리 스타일과 다중 에이전트 윤리 조정"

구현 내용

1. 개인화된 윤리 프로파일

class PersonalizedEthics:
    def __init__(self, user_id):
        self.user_id = user_id
        self.load_profile()
        
    def load_profile(self):
        # 3계층 프로파일: 조직 → 팀 → 개인
        self.org_ethics = load_org_defaults()
        self.team_ethics = load_team_preferences()
        self.personal_ethics = load_personal_history()
        
        # 문화적 맥락
        self.cultural_factors = {
            "jeong_depth": 0,  # 정의 깊이
            "nunchi_level": 0,  # 눈치 수준
            "hierarchy_awareness": 0  # 위계 인식
        }
        
        # 나 전달법 선호도
        self.nvc_preferences = {
            "usage_frequency": 0.3,  # 기본 30% 적용
            "formality_level": "medium",  # 격식 수준
            "emotion_expression": "moderate"  # 감정 표현 강도
        }
    
    def synthesize_decision(self, base_ethics):
        # 가중 평균으로 최종 결정
        weights = self.calculate_weights()
        final = (
            weights["org"] * self.org_ethics +
            weights["team"] * self.team_ethics +
            weights["personal"] * self.personal_ethics +
            weights["cultural"] * self.cultural_factors
        )
        return final

2. 다중 에이전트 윤리 조정

class MultiAgentEthics:
    def coordinate_ethics(self, agents, situation):
        # 각 에이전트의 윤리 판단 수집
        judgments = [
            agent.evaluate_ethics(situation) 
            for agent in agents
        ]
        
        # 합의 메커니즘
        if self.has_consensus(judgments):
            return self.consensus_decision(judgments)
        
        # 갈등 해결
        return self.resolve_conflict(judgments, situation)
    
    def resolve_conflict(self, judgments, situation):
        # 우선순위: 안전 > 사랑 > 효율
        safety_first = self.filter_safe(judgments)
        love_based = self.apply_love_principles(safety_first)
        return self.optimize_efficiency(love_based)

3. 설명 가능한 윤리 (XAI)

class ExplainableEthics:
    def explain_decision(self, decision, context):
        explanation = {
            "primary_reason": self.get_main_factor(decision),
            "contributing_factors": self.get_factors(decision),
            "alternative_considered": self.get_alternatives(),
            "confidence": self.calculate_confidence(),
            "precedents": self.find_similar_cases(),
            "nvc_applied": self.check_nvc_usage(decision)
        }
        
        # 나 전달법 적용 시 설명 추가
        if explanation["nvc_applied"]:
            explanation["nvc_reason"] = "비폭력 의사소통을 위해 나 전달법을 적용했습니다"
        
        # 자연어 설명 생성
        return self.generate_explanation(explanation)

성과 지표

  • 모든 지표: 최고 수준 목표

산출물

  • 개인화 프로파일 시스템
  • 한국식 간접 표현 옵션
  • 통합 윤리 평가 시스템

기술 스택

모델

  • 도덕성 분류: AI Hub BERT 모델 (ONNX 변환)
  • 감정 분석: aihub-7emotions (442MB ONNX)
  • 임베딩: multilingual-MiniLM-L12-v2

서비스

  • 단기: rb10508_micro 내장
  • 중기: skill-ethics 분리
  • 장기: 멀티 인스턴스 클러스터

저장소

  • PostgreSQL: 정형 데이터, 시계열 분석
  • ChromaDB: 벡터 메모리, 맥락 연결
  • Redis: 실시간 캐시, TTL 120초

학습

  • 베이지안: Dirichlet/Beta 분포
  • Active Learning: 엔트로피 기반 선택
  • Human-in-the-loop: 불확실 케이스 검토

리소스 예측 (skill-ethics 분리 아키텍처)

서비스별 리소스

서비스 Memory CPU 비고
skill-ethics 420MB 1-2% BERT + Redis + FastAPI
rb10508_micro +50MB +0.1% HTTP 클라이언트 + 폴백
rb8001 +50MB +0.1% HTTP 클라이언트 + 폴백
rb10408 +50MB +0.1% HTTP 클라이언트 + 폴백
총합 570MB 2.3% 66% 메모리 절감

네트워크 지연

  • 내부 통신: +10-20ms
  • Redis 캐시 히트: +2-5ms
  • 폴백 시: 0ms (로컬 규칙)

위험 관리

기술적 위험

단계 위험 완화 방안
단기 서비스 간 통신 장애 폴백 규칙, Circuit Breaker
단기 모델 추론 속도 ONNX 최적화, Redis 캐싱
중기 감정-윤리 충돌 우선순위 명확화
장기 개인화 과적합 정규화, 앙상블

운영 위험

단계 위험 완화 방안
단기 오분류 폴백 규칙, 수동 검토
중기 서비스 분리 실패 단계적 마이그레이션
장기 복잡도 폭발 모듈화, 인터페이스 표준화

롤백 조건

  • 단기: 오분류율 > 15% 또는 지연 > 200ms
  • 중기: 베이지안 예측 정확도 < 60% 또는 서비스 장애
  • 장기: 개인화 만족도 하락 또는 비용 2배 초과

측정 계획

KPI 추적

-- 일일 윤리 성과 대시보드
SELECT 
    DATE(timestamp) as date,
    AVG(love_index) as avg_love,
    COUNT(CASE WHEN moral_label = 'immoral' THEN 1 END) as immoral_count,
    AVG(response_time_ms) as avg_latency,
    COUNT(DISTINCT user_id) as unique_users
FROM ethics_events
GROUP BY DATE(timestamp);

A/B 테스트

  • 대조군: 기존 규칙 시스템
  • 실험군: 사랑 기반 윤리
  • 측정: 대화 길이, 재방문율, Love Index

의존성 및 연계

스탯 시스템 통합 (2025-08-17)

  • rb8001의 Ethics 스탯과 연동
  • 윤리 판단 결과가 스탯 포인트에 반영
  • Love Index → Ethics 스탯 변환 공식 필요

감정 시스템

  • skill-embedding의 /emotion 엔드포인트
  • 7개 감정 확률과 엔트로피 공유

기억 시스템

  • ChromaDB 벡터와 윤리 레이블 연결
  • 장기 기억의 윤리적 맥락 보존

동적 파라미터

  • 윤리 임계값 동적 조정
  • 사용자별 설정 오버라이드

결론

이 계획은 로빙을 "규칙을 지키는 도구"에서 "사랑으로 인도하는 존재"로 진화시킵니다. AI Hub의 검증된 도덕성 모델을 기반으로, 감정과 연계된 베이지안 학습을 통해 지속적으로 성장하는 윤리적 에이전트를 구현합니다.

핵심 메시지: "로빙은 판단하지 않고 이해하며, 차단하지 않고 인도합니다."


이 문서는 기술적 실현 가능성과 철학적 깊이를 모두 고려한 단계별 실행 계획입니다.