아티클은 대출 심사(Loan Origination) 데모 프로그램을 예시로 들어, 기존의 수동적인 명령 실행 방식이 얼마나 비효율적인지를 보여주는 것으로 시작합니다. 대출 파일을 하나씩 검토하고 승인 또는 거부하는 일련의 과정을 인간이 직접 CLI를 통해 수행하는 것은 많은 시간과 노력을 요구합니다. 이러한 비효율성을 해결하기 위해 Foobara::AgentBackedCommand
가 도입됩니다. 이 핵심 기능은 class FoobaraDemo::LoanOrigination::ReviewAllLoanFiles < Foobara::AgentBackedCommand; end
와 같이 단 한 줄의 Ruby 코드로 AI 에이전트 명령을 정의할 수 있게 합니다. 이 에이전트는 내부적으로 LLM을 활용하여 ReviewAllLoanFiles
와 같은 고수준 도메인 작업을 자동으로 수행하며, 개발자가 직접 해당 로직을 #execute
메서드로 구현할 필요가 없습니다.
AgentBackedCommand
는 다양한 유용한 옵션을 제공합니다. --agent-options-verbose
옵션을 통해 에이전트가 어떤 결정을 내리는지 상세히 확인할 수 있어 디버깅 및 이해에 도움이 됩니다. 또한, --agent-name
으로 에이전트 이름을 지정하여 출력에서 쉽게 구분할 수 있으며, --llm-model
옵션으로 OpenAI, Anthropic, Ollama 등 다양한 LLM 모델을 선택하여 사용할 수 있습니다.
더 나아가, 아티클은 두 개의 AgentBackedCommand
(ReviewAllLoanFiles
와 ReviewLoanFile
)가 중첩되어 작동하는 복잡한 예시를 제시합니다. 이 예시에서는 각 에이전트가 서로 다른 LLM 모델과 서비스를 사용할 수 있음을 보여줍니다. 특히, ReviewLoanFile
명령에 inputs
타입을 UnderwriterSummary
와 같이 명확히 정의함으로써, 신청자 이름과 같은 불필요한 정보가 심사 결정에 영향을 미치는 편향을 방지하고 필요한 최소한의 정보만 LLM에 전달하는 모범 사례를 제시합니다. 또한, result
타입을 명시하여 명령 실행 결과를 프로그램적으로 안전하게 활용할 수 있음을 보여주며, depends_on
을 사용하여 에이전트가 실행할 수 있는 하위 명령을 제한하는 Foobara의 표준 기능도 활용합니다. 이 모든 기능을 통해 AgentBackedCommand
는 복잡한 AI 기반 자동화를 유연하고 강력하게 지원합니다.