AI 에이전트 및 프롬프트 데이터베이스 관리와 Administrate 활용

AI on Rails: Dynamic AI prompts

작성자
Ruby AI News
발행일
2025년 12월 16일

핵심 요약

  • 1 AI 에이전트와 프롬프트 설정을 데이터베이스로 이전하고, Administrate 관리자 인터페이스를 통해 코드 없이 쉽게 생성 및 관리하는 방법을 시연합니다.
  • 2 생산 환경에서 실시간으로 프롬프트를 업데이트하고 비즈니스 로직을 즉시 변경할 수 있도록 데이터베이스 기반 에이전트 관리 시스템을 구축합니다.
  • 3 에이전트 정의(이름, 지침, 도구)를 데이터베이스에 저장하고, JSON 컬럼 데이터 정규화 및 `find_by_name`을 활용하여 동적으로 에이전트를 로드하는 과정을 설명합니다.

도입

본 에피소드는 AI 에이전트의 핵심 구성 요소인 프롬프트, 지침, 도구 등을 데이터베이스로 마이그레이션하고, Administrate 관리자 패널을 통해 효율적으로 관리하는 과정을 다룹니다. 개발자는 코드를 직접 작성하지 않고도 새로운 에이전트와 프롬프트를 생성, 수정할 수 있으며, 이를 통해 프로덕션 환경에서 비즈니스 로직을 실시간으로 업데이트하고 신속하게 문제를 해결할 수 있는 유연성을 확보하게 됩니다. 이는 AI 기반 애플리케이션의 유지보수성과 확장성을 크게 향상시키는 중요한 단계입니다.

Administrate를 활용한 에이전트 관리 시스템 구축

  • 대시보드 생성: Administrate를 사용하여 AI agent 대시보드를 생성하고, 관리자 영역에서 에이전트 관리를 시작합니다.

  • 네임스페이스 문제 해결: Administrate의 네임스페이스 모듈과 관련된 문제를 해결하기 위해 AI 폴더를 생성하고 AgentDashboard, 관련 컨트롤러, AgentTask, AgentMessage 등의 파일을 해당 폴더로 이동시킵니다. routes.rb 파일에 namespace :AI do resources :agents endmessages 리소스를 추가하여 올바른 라우팅을 설정합니다.

데이터 모델 개선 및 관리 로직 구현

  • 종속성 설정: Agent 모델에 has_many :tasks, dependent: :destroy를 추가하여 에이전트 삭제 시 관련 작업 및 메시지가 자동으로 삭제되도록 데이터 무결성을 확보합니다.

  • 복수 리소스 라우팅: resource :agentsresources :agents로 변경하여 개별 에이전트가 아닌 복수 에이전트의 관리를 위한 라우팅을 설정합니다.

  • 에이전트 조회 로직 변경: 컨트롤러에서 에이전트를 AI::Agent.find_by_name(params[:id])로 조회하여 URL을 통해 특정 에이전트에 이름으로 접근할 수 있도록 합니다. 이는 에이전트의 동적 로딩을 가능하게 합니다.

  • JSON 컬럼 데이터 정규화: tools와 같은 JSONB 컬럼의 데이터 무결성을 위해 before_validation 콜백을 활용합니다. 빈 값일 경우 빈 배열로 설정하고, 문자열 형태의 JSON이 입력되면 JSON.parse를 통해 객체로 변환하여 데이터 형식을 통일합니다.

새로운 에이전트 생성 및 활용 사례

  • 프롬프트 엔지니어 에이전트: “Prompt Engineer”라는 새로운 에이전트를 생성하여 사용자가 더 나은 프롬프트를 작성하도록 돕습니다. 이 에이전트는 “표준 운영 절차(SOP)”를 포함하여 사용자에게 질문을 던지고 반복적인 개선 과정을 통해 만족스러운 프롬프트를 도출하도록 설계됩니다.

  • 제품 설명 작성 에이전트: “Product Description Writer” 에이전트를 생성하여 제품 설명을 작성하는 데 활용될 수 있도록 합니다.

  • 동적 지침 로딩: 에이전트의 지침(instructions)과 도구(tools)를 데이터베이스에서 동적으로 로드하도록 컨트롤러 로직을 수정하여, 관리자 UI에서 변경된 내용이 즉시 반영되도록 합니다.

  • 사용자 경험 개선: 에이전트의 이름을 agent.name.humanize로 표시하고, 메시지 전송 시 agents_path를 사용하여 올바른 라우팅을 보장합니다. 페이지 새로고침 시 대화 컨텍스트가 초기화되는 현재 방식을 유지하여 새로운 시작을 가능하게 합니다.

결론

본 에피소드는 AI 에이전트의 핵심 구성 요소를 데이터베이스에 통합하고, Administrate를 활용하여 이를 효율적으로 관리하는 방법을 성공적으로 제시했습니다. 특히, JSON 컬럼의 데이터 정규화와 `find_by_name`을 통한 동적 에이전트 로딩은 시스템의 유연성을 크게 높였습니다. "프롬프트 엔지니어"와 같은 구체적인 에이전트 생성 사례를 통해, 코드 수정 없이도 비즈니스 로직을 즉시 변경하고 새로운 기능을 추가할 수 있는 강력한 이점을 확인했습니다. 다음 에피소드에서는 웹 페이지 검색과 같은 외부 도구 통합을 통해 에이전트의 기능을 더욱 확장하여 실제 비즈니스 환경에서의 활용도를 높일 예정입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!