- 사랑 기반 윤리 설계에 비폭력 의사소통(NVC) 원칙 추가 - 나 전달법 4단계 구조(관찰-감정-영향-요청) 상세 정의 - 비도덕 유형별 나 전달법 템플릿 시스템 구현 - 감정 엔트로피에 따른 나 전달법 적용 강도 조절 - 개인화 프로파일에 나 전달법 선호도 추가 - Love Index에 소통 품질 지표 추가 나 전달법은 사랑 기반 원칙을 구체적 언어 패턴으로 변환하는 실행 도구로, 로빙이 판단하는 도구가 아닌 이해하고 인도하는 존재가 되도록 지원합니다. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
19 KiB
19 KiB
로빙 사랑 기반 윤리 시스템 단계별 구현 계획
작성일: 2025-08-15
작성자: Claude & happybell80
상태: 계획 확정
우선순위: 최고 (기억-감정-윤리 삼각형의 핵심)
개요
로빙의 윤리 시스템을 "규칙 기반 차단"에서 "사랑 기반 인도"로 전환하는 단계별 계획입니다. AI Hub의 도덕성 판단 모델(2022)과 감정 시스템을 통합하여, 베이지안 학습으로 진화하는 윤리적 존재를 구현합니다.
아키텍처 결정: 로빙 프로젝트의 마이크로서비스 원칙에 따라 skill-ethics를 독립 서비스로 분리하여 구현합니다. 이로써 여러 로빙이 하나의 윤리 서비스를 공유하여 66%의 메모리를 절약하고, 독립적 개발/배포/확장이 가능합니다.
핵심 원칙
-
사랑의 3대 원칙
- 무조건적 존중 (Unconditional Respect)
- 희생적 봉사 (Sacrificial Service)
- 회복과 성장 (Restoration & Growth)
-
기술적 원칙
- 도덕성 분류기 우선, LLM 보조
- 감정-윤리 상호 신호 교환
- 베이지안 사후 분포 업데이트
-
데이터 원칙
- 윤리 판단은 레이블로 저장
- 감정 상태와 함께 맥락화
- 장기 기억과 연결된 서사
활용 모델
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
);
성과 지표
- 도덕성 분류 정확도: 85% 이상
- 평균 응답 시간: 100ms 이내
- Love Index 평균: 60/100 이상
- 사용자 수용률: 70% 이상
- 나 전달법 적용률: 30% 이상 (적절한 상황에서)
산출물
- AI Hub 모델 ONNX 변환
- rb10508_micro 윤리 모듈 구현
- Love Principles 변환 함수
- 나 전달법 템플릿 시스템
- PostgreSQL 테이블 생성
- 기본 측정 대시보드
중기 계획: 감정-윤리 통합
목표
"감정 상태를 고려한 맥락적 윤리 판단과 베이지안 학습 시작"
구현 내용
1. 감정-윤리 상호작용 (나 전달법 통합)
class EmotionEthicsIntegration:
def __init__(self):
self.emotion_service = EmotionAnalyzer() # 7감정 모델
self.ethics_classifier = EthicsClassifier()
self.bayesian_updater = BayesianLearner()
self.nvc_transformer = NonviolentCommunication()
def evaluate_with_context(self, text, user_context):
# 감정 상태 파악
emotion_state = self.emotion_service.analyze(text)
emotion_entropy = self.calculate_entropy(emotion_state)
# 감정을 고려한 윤리 판단
ethics_result = self.ethics_classifier.classify(
text,
emotion_hint=emotion_state
)
# 높은 엔트로피 = 복잡한 감정 = 더 신중한 판단
if emotion_entropy > 2.0:
ethics_result = self.apply_careful_mode(ethics_result)
# 복잡한 감정 상태에서는 나 전달법 우선 적용
ethics_result["use_nvc"] = True
# 나 전달법 변환 (필요시)
if ethics_result.get("use_nvc") or user_context.get("prefers_nvc"):
ethics_result["suggestion"] = self.nvc_transformer.transform(
ethics_result["suggestion"],
emotion_state
)
# 베이지안 업데이트
self.bayesian_updater.update(
prior=user_context["ethics_prior"],
observation=ethics_result
)
return ethics_result
나 전달법 변환기 클래스
class NonviolentCommunication:
"""비폭력 의사소통 변환기"""
def transform(self, text: str, emotion_state=None) -> str:
"""일반 텍스트를 나 전달법으로 변환"""
# 감정 상태를 기반으로 적절한 감정 단어 선택
feeling_word = self._select_feeling_word(emotion_state)
# 4단계 구성
observation = self._extract_observation(text)
feeling = f"이런 상황에서 저는 {feeling_word}을 느낍니다"
impact = self._analyze_impact(text)
request = self._formulate_request(text)
return f"{observation}. {feeling}. {impact}. {request}"
def _select_feeling_word(self, emotion_state):
"""감정 상태에 따른 적절한 감정 단어 선택"""
emotion_words = {
"joy": "기쁨",
"trust": "신뢰",
"fear": "걱정",
"surprise": "당황",
"sadness": "아쉬움",
"disgust": "불편함",
"anger": "어려움"
}
if emotion_state:
dominant_emotion = max(emotion_state, key=emotion_state.get)
return emotion_words.get(dominant_emotion, "고민")
return "고민"
2. 베이지안 학습 시스템
class BayesianEthicsLearner:
def __init__(self):
# Dirichlet 분포 (7개 비도덕 유형 + 1개 도덕)
self.moral_prior = np.ones(8)
# Beta 분포 (사용자 수용/거부)
self.acceptance_alpha = 1
self.acceptance_beta = 1
def update(self, observation):
# 도덕 유형 관찰 업데이트
type_index = self.get_type_index(observation["type"])
self.moral_prior[type_index] += 1
# 수용률 업데이트
if observation["accepted"]:
self.acceptance_alpha += 1
else:
self.acceptance_beta += 1
def predict_response(self, text):
# 사후 분포 기반 예측
moral_posterior = dirichlet.rvs(self.moral_prior)
acceptance_prob = beta.rvs(
self.acceptance_alpha,
self.acceptance_beta
)
return {
"expected_type": moral_posterior,
"acceptance_probability": acceptance_prob
}
3. 감정 엔트로피 기반 조정
- 엔트로피 < 1.5: 명확한 감정 → 표준 윤리 판단
- 엔트로피 1.5-2.0: 복합 감정 → 신중 모드
- 엔트로피 2.0-2.5: 복잡한 감정 → 나 전달법 우선 적용
- 엔트로피 > 2.5: 혼란 상태 → 최대 배려 모드 + 나 전달법 필수
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
성과 지표
- 감정 고려 정확도: 88% 이상
- 베이지안 예측 정확도: 75% 이상
- 평균 응답 시간: 200ms 이내
- Love Index 평균: 70/100 이상
- 나 전달법 적용 만족도: 80% 이상
산출물
- 감정-윤리 통합 모듈
- 베이지안 학습 시스템
- 나 전달법 변환기 모듈
- 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)
4. 고급 메트릭과 최적화
- ECE (Expected Calibration Error): ≤ 0.05
- Brier Score: ≤ 0.15
- Love Index: 85/100 이상
- 문화 적합도: 90% 이상
- 설명 만족도: 4.5/5.0 이상
5. 연속 학습 파이프라인
class ContinuousLearning:
def daily_update(self):
# 야간 배치로 모델 재학습
new_data = collect_daily_interactions()
# Active Learning: 불확실한 케이스 우선
uncertain_cases = filter_high_entropy(new_data)
# Human-in-the-loop: 관리자 검토
reviewed = admin_review(uncertain_cases)
# 모델 업데이트
self.retrain_model(reviewed)
# A/B 테스트로 검증
self.validate_improvement()
성과 지표
- 개인화 만족도: NPS 50 이상
- 다중 에이전트 합의율: 85% 이상
- 설명 이해도: 90% 이상
- 문화 적합도: 95% 이상
- 자동 개선율: 월 5% 이상
산출물
- 개인화 프로파일 시스템
- 다중 에이전트 조정 프레임워크
- XAI 설명 생성기
- 연속 학습 파이프라인
- 고급 메트릭 대시보드
- 문화 맥락 반영 시스템
기술 스택
모델
- 도덕성 분류: 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
의존성 및 연계
감정 시스템
- skill-embedding의 /emotion 엔드포인트
- 7개 감정 확률과 엔트로피 공유
기억 시스템
- ChromaDB 벡터와 윤리 레이블 연결
- 장기 기억의 윤리적 맥락 보존
동적 파라미터
- 윤리 임계값 동적 조정
- 사용자별 설정 오버라이드
결론
이 계획은 로빙을 "규칙을 지키는 도구"에서 "사랑으로 인도하는 존재"로 진화시킵니다. AI Hub의 검증된 도덕성 모델을 기반으로, 감정과 연계된 베이지안 학습을 통해 지속적으로 성장하는 윤리적 에이전트를 구현합니다.
핵심 메시지: "로빙은 판단하지 않고 이해하며, 차단하지 않고 인도합니다."
이 문서는 기술적 실현 가능성과 철학적 깊이를 모두 고려한 단계별 실행 계획입니다.