# 스킬 내재화 과정의 구체적 예시 ## 스킬 내재화 파이프라인 ### 외부 스킬을 내부 능력으로 변환 ```python class SkillInternalization: def __init__(self): self.internalization_stages = [ 'acquisition', # 획득 'integration', # 통합 'optimization', # 최적화 'personalization', # 개인화 'mastery' # 숙달 ] def internalize_skill(self, external_skill): """외부 스킬을 내재화하는 전체 프로세스""" # 1단계: 스킬 획득 및 분석 skill_analysis = self.analyze_skill_structure(external_skill) # 2단계: 코드 변환 native_code = self.convert_to_native_format(skill_analysis) # 3단계: 컨테이너화 containerized = self.containerize_skill(native_code) # 4단계: 통합 테스트 integration_result = self.integrate_with_existing(containerized) # 5단계: 최적화 optimized = self.optimize_for_agent(integration_result) return optimized ``` ## 실제 예시: 이메일 스킬 내재화 ### 원본 JavaScript 스킬 ```javascript // 외부 스킬: email_composer.js class EmailComposer { constructor() { this.templates = { formal: "Dear {recipient},\n\n{content}\n\nBest regards,\n{sender}", casual: "Hi {recipient},\n\n{content}\n\nCheers,\n{sender}" }; } compose(type, data) { const template = this.templates[type]; return template.replace(/{(\w+)}/g, (match, key) => data[key]); } } module.exports = EmailComposer; ``` ### Python으로 변환 ```python # 변환된 내재화 코드 class InternalizedEmailComposer: def __init__(self, agent_context): self.agent_context = agent_context self.templates = self.load_personalized_templates() self.learning_history = [] def load_personalized_templates(self): """에이전트 맞춤 템플릿 로드""" base_templates = { 'formal': "Dear {recipient},\n\n{content}\n\nBest regards,\n{sender}", 'casual': "Hi {recipient},\n\n{content}\n\nCheers,\n{sender}" } # 에이전트 스타일 적용 personalized = {} for key, template in base_templates.items(): personalized[key] = self.apply_agent_style(template) return personalized def apply_agent_style(self, template): """에이전트 고유 스타일 적용""" style_modifiers = self.agent_context.get_communication_style() if style_modifiers.get('formal_level') == 'high': template = template.replace('Hi', 'Greetings') if style_modifiers.get('personality') == 'friendly': template = template.replace('Best regards', 'Warm regards') return template def compose(self, type, data): """향상된 이메일 작성""" # 기본 템플릿 적용 template = self.templates.get(type, self.templates['formal']) email = template.format(**data) # 컨텍스트 기반 향상 email = self.enhance_with_context(email, data) # 학습 기록 self.record_composition(type, data, email) return email def enhance_with_context(self, email, data): """컨텍스트 정보로 이메일 향상""" # 수신자 선호도 반영 if recipient_prefs := self.agent_context.get_recipient_preferences(data['recipient']): if recipient_prefs.get('prefers_bullet_points'): email = self.convert_to_bullets(email) # 시간대 고려 if self.is_urgent(data): email = "[URGENT] " + email return email ``` ### 컨테이너화 ```dockerfile # Dockerfile for skill containerization FROM python:3.9-slim # 스킬 메타데이터 LABEL skill.name="email_composer" LABEL skill.version="2.0.0" LABEL skill.type="communication" # 의존성 설치 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 스킬 코드 복사 COPY internalized_email_composer.py /skill/ COPY config.yaml /skill/ # 실행 환경 설정 ENV SKILL_MODE=containerized ENV SKILL_PORT=8080 # 헬스체크 HEALTHCHECK --interval=30s --timeout=3s \ CMD python -c "import requests; requests.get('http://localhost:8080/health')" # 스킬 서비스 실행 CMD ["python", "/skill/skill_server.py"] ``` ### 통합 인터페이스 ```python class SkillIntegrationLayer: def __init__(self): self.native_skills = {} self.containerized_skills = {} def register_internalized_skill(self, skill_name, skill_instance): """내재화된 스킬 등록""" # 네이티브 통합 if hasattr(skill_instance, '__native__'): self.native_skills[skill_name] = skill_instance # 컨테이너 통합 else: container_config = { 'image': f'skill_{skill_name}:latest', 'ports': {'8080/tcp': None}, 'environment': { 'AGENT_ID': self.agent_id, 'SKILL_MODE': 'integrated' } } container = self.deploy_container(container_config) self.containerized_skills[skill_name] = container def invoke_skill(self, skill_name, method, params): """통합된 스킬 호출""" if skill_name in self.native_skills: # 네이티브 호출 (빠름) skill = self.native_skills[skill_name] return getattr(skill, method)(**params) elif skill_name in self.containerized_skills: # 컨테이너 호출 (격리됨) container = self.containerized_skills[skill_name] response = self.call_container_api( container, f'/skill/{method}', params ) return response ``` ## 스킬 학습과 적응 ### 사용 패턴 학습 ```python class SkillLearningEngine: def __init__(self, skill_name): self.skill_name = skill_name self.usage_patterns = [] self.performance_metrics = [] def learn_from_usage(self, invocation_data): """스킬 사용 패턴 학습""" pattern = { 'timestamp': datetime.now(), 'input_params': invocation_data['params'], 'output': invocation_data['result'], 'context': invocation_data['context'], 'feedback': None # 나중에 수집 } self.usage_patterns.append(pattern) # 패턴 분석 if len(self.usage_patterns) > 100: self.analyze_patterns() def analyze_patterns(self): """사용 패턴 분석 및 최적화""" # 자주 사용되는 파라미터 조합 common_params = self.find_common_parameters() # 성공/실패 패턴 success_patterns = self.identify_success_patterns() # 최적화 제안 optimizations = { 'cache_suggestions': self.suggest_caching(common_params), 'default_values': self.suggest_defaults(common_params), 'workflow_shortcuts': self.identify_workflows() } return optimizations def adapt_skill_behavior(self, optimizations): """스킬 동작 적응""" # 캐싱 적용 if optimizations['cache_suggestions']: self.apply_caching(optimizations['cache_suggestions']) # 기본값 업데이트 if optimizations['default_values']: self.update_defaults(optimizations['default_values']) # 워크플로우 최적화 if optimizations['workflow_shortcuts']: self.create_shortcuts(optimizations['workflow_shortcuts']) ``` ## 스킬 메모리 통합 ### 스킬별 전용 메모리 ```python class SkillMemoryIntegration: def __init__(self): self.skill_memories = {} def allocate_skill_memory(self, skill_name, memory_size='256MB'): """스킬 전용 메모리 할당""" memory_space = { 'working': [], # 작업 메모리 'cache': {}, # 캐시 'learned': {}, # 학습된 패턴 'context': {}, # 컨텍스트 정보 'size_limit': memory_size } self.skill_memories[skill_name] = memory_space def skill_memory_interface(self, skill_name): """스킬이 메모리에 접근하는 인터페이스""" class MemoryInterface: def __init__(self, memory_space): self.memory = memory_space def remember(self, key, value): """정보 저장""" self.memory['learned'][key] = { 'value': value, 'timestamp': datetime.now(), 'access_count': 0 } def recall(self, key): """정보 회상""" if key in self.memory['learned']: self.memory['learned'][key]['access_count'] += 1 return self.memory['learned'][key]['value'] return None def cache_result(self, params_hash, result): """결과 캐싱""" self.memory['cache'][params_hash] = { 'result': result, 'cached_at': datetime.now() } return MemoryInterface(self.skill_memories[skill_name]) ``` ## 스킬 성능 모니터링 ### 내재화 품질 측정 ```python class InternalizationQualityMetrics: def measure_internalization_quality(self, original_skill, internalized_skill): """내재화 품질 측정""" metrics = { 'functional_parity': self.test_functional_equivalence( original_skill, internalized_skill ), 'performance_improvement': self.measure_performance_gain( original_skill, internalized_skill ), 'integration_depth': self.assess_integration_level( internalized_skill ), 'personalization_degree': self.measure_personalization( internalized_skill ), 'resource_efficiency': self.calculate_resource_usage( internalized_skill ) } # 종합 점수 quality_score = sum(metrics.values()) / len(metrics) return { 'score': quality_score, 'metrics': metrics, 'recommendations': self.generate_recommendations(metrics) } ``` ## 스킬 진화 메커니즘 ### 자가 개선 시스템 ```python class SkillSelfImprovement: def __init__(self, skill): self.skill = skill self.improvement_history = [] def self_improve(self): """스킬 자가 개선""" # 1. 성능 분석 performance = self.analyze_recent_performance() # 2. 병목 지점 식별 bottlenecks = self.identify_bottlenecks(performance) # 3. 개선 전략 생성 strategies = self.generate_improvement_strategies(bottlenecks) # 4. A/B 테스트 best_strategy = self.ab_test_strategies(strategies) # 5. 개선 적용 improved_skill = self.apply_improvements(best_strategy) # 6. 검증 if self.validate_improvement(improved_skill): self.skill = improved_skill self.improvement_history.append({ 'timestamp': datetime.now(), 'improvements': best_strategy, 'performance_gain': self.measure_gain() }) return improved_skill ```