AI를 애플리케이션에 효과적으로 적용하기 위해 Obie Fernandez는 두 가지 추상 패턴과 여러 구체 패턴을 소개합니다.
1. 추상 패턴
- 경로 좁히기 (Narrowing the Path):
- AI 모델의 방대한 잠재 공간(latent space)은 너무 많은 정보를 포함하여 원하는 결과를 얻기 어렵게 만듭니다.
- 정확하고 구체적인 프롬프트와 컨텍스트를 제공하여 AI의 응답 범위를 제한하고, 문맥적 모호성, 시간적 불일치, 도메인 특화된 뉘앙스 문제를 해결합니다.
- 이를 통해 AI가 개발자가 의도하는 방식대로 동작하도록 유도합니다.
- 다수의 작업자 (Multitude of Workers):
- AI를 마법 같은 존재가 아닌, 애플리케이션 코드 내에 삽입할 수 있는 ‘작은 인간 작업자’ 또는 ‘개별 AI 컴포넌트’로 개념화합니다.
- 이는 복잡한 문제를 마이크로서비스처럼 분해하여 시각화하고, 특정 비즈니스 로직을 AI 컴포넌트에 위임하는 데 도움을 줍니다.
- 행동 주도 개발(BDD)의 영감을 받아, 평이한 언어로 정의된 비즈니스 규칙이 AI를 통해 구현되는 방식을 제시하며, 이는 기존 BDD 구현의 어려움을 해소할 수 있습니다.
2. 구체 패턴
- 구조화된 입출력 (Structured IO):
- LLM에 XML이나 JSON과 같은 정의된 형식으로 입력을 제공하고, AI 역시 구조화된 형식으로 출력을 반환하도록 요청합니다.
- 이는 AI가 데이터를 더 잘 이해하고 일관된 형식으로 결과를 생성하도록 하여 파싱 및 통합을 용이하게 합니다.
- 복화술사 (Ventriloquist):
- AI와의 대화에 개발자가 의도적으로 ‘가짜’ 응답을 삽입하여 AI의 컨텍스트를 추가로 제한하는 패턴입니다.
- 예를 들어, 검색 결과가 없었음을 AI에게 미리 알려줌으로써, AI가 대체 키워드를 생성하는 등 특정 문제 해결에 집중하도록 유도할 수 있습니다.
Obie Fernandez는 이러한 패턴들이 Olympia와 같은 실제 Ruby on Rails 프로덕션 애플리케이션에서 비즈니스 로직을 효율적으로 구현하는 데 사용되고 있음을 강조합니다. 특히, 계정 관리, 이커머스, 헬스케어 등 다양한 도메인에서 개별 AI 컴포넌트의 유용성을 언급하며, 프롬프트 기반으로 비즈니스 로직을 구현하는 것이 얼마나 빠르고 유연한지 실제 사례(계정 구독 상태 확인 로직)를 통해 보여줍니다.