SelfAgency의 핵심 아키텍처 및 기능
SelfAgency는 루비 클래스에 include 하는 것만으로 LLM 기반의 메서드 생성 능력을 부여합니다. 이 라이브러리의 가장 큰 특징은 단순한 코드 생성을 넘어, 실제 운영 환경에서 안전하게 사용할 수 있도록 설계된 다단계 파이프라인과 보안 메커니즘입니다.
1. 다단계 LLM 파이프라인
SelfAgency는 사용자의 모호한 입력을 바로 코드로 변환하지 않고 체계적인 과정을 거쳐 결과물의 품질을 보장합니다.
- Shape (형성): 사용자의 일상적인 설명을 정밀한 루비 메서드 명세서로 재작성합니다. 이 단계에서 메서드의 역할, 인자, 반환값 등의 인터페이스가 명확해집니다.
- Generate (생성): 형성된 명세를 바탕으로 실제
def...end블록을 생성합니다. 한 번의 호출로 연관된 여러 메서드를 동시에 생성할 수 있는 효율성을 제공합니다. - Sanitize (정제): LLM 응답에서 마크다운 펜스나 생각(think) 블록 등을 제거하여 순수 코드만 추출합니다.
2. 강력한 보안 및 검증 시스템
런타임에 외부 AI가 생성한 코드를 실행하는 것은 보안상 위험할 수 있습니다. SelfAgency는 이를 해결하기 위해 다음과 같은 다중 안전장치를 제공합니다.
- 정적 분석 (Static Analysis): 26가지 이상의 정적 패턴 매칭을 통해 위험한 시스템 명령어나 코드 삽입 시도를 사전에 차단합니다.
- 샌드박스 실행 (Sandbox Eval): 생성된 코드는 위험한
Kernel메서드들이 차단되거나 섀도잉된 격리된 샌드박스 모듈 내에서 평가됩니다. - 유효성 검사 (Validation): 구문 오류(Syntax Error), 빈 코드, 필수적인
def...end구조 누락 등을 엄격히 체크하여 실행 가능성을 확인합니다.
3. 자가 수정 및 유연한 환경 지원
- 자동 재시도 (Retry): 검증이나 보안 검사에서 실패할 경우, 발생한 오류 메시지를 다시 LLM에게 전달하여 스스로 코드를 수정하도록 유도합니다. 이는 생성된 코드의 완성도를 높이는 핵심 기능입니다.
- 다양한 스코프 지원: 인스턴스 메서드뿐만 아니라 싱글톤 메서드, 클래스 메서드 영역까지 코드를 주입할 수 있어 클래스 설계 전반에 활용 가능합니다.
- 제공자 중립성 (Provider Agnostic):
ruby_llm젬을 활용하여 Ollama, OpenAI, Anthropic 등 다양한 LLM 프로바이더를 자유롭게 선택하여 사용할 수 있습니다. - 소스 검사 및 버전 관리: 생성된 코드의 소스를 직접 확인하고 변경 이력을 추적할 수 있는 기능을 제공하여 투명성을 확보합니다.
4. 실제 활용 예시 및 요구사항
루비 3.2.0 이상의 환경에서 작동하며, 사용법은 매우 직관적입니다. Calculator 클래스에 SelfAgency를 포함시킨 후, calc._("두 정수를 더하는 인스턴스 메서드")와 같이 호출하면 LLM이 내부적으로 add 메서드를 생성하고 설치합니다. 이후 개발자는 즉시 calc.add(3, 7)과 같이 생성된 메서드를 호출하여 결과를 얻을 수 있습니다. 현재 실험 결과에 따르면 특히 수학적 연산이나 데이터 변환 로직에서 높은 성공률을 보이고 있습니다.