Administrate를 활용한 에이전트 관리 시스템 구축
-
대시보드 생성: Administrate를 사용하여
AI agent대시보드를 생성하고, 관리자 영역에서 에이전트 관리를 시작합니다. -
네임스페이스 문제 해결: Administrate의 네임스페이스 모듈과 관련된 문제를 해결하기 위해
AI폴더를 생성하고AgentDashboard, 관련 컨트롤러,AgentTask,AgentMessage등의 파일을 해당 폴더로 이동시킵니다.routes.rb파일에namespace :AI do resources :agents end및messages리소스를 추가하여 올바른 라우팅을 설정합니다.
데이터 모델 개선 및 관리 로직 구현
-
종속성 설정:
Agent모델에has_many :tasks, dependent: :destroy를 추가하여 에이전트 삭제 시 관련 작업 및 메시지가 자동으로 삭제되도록 데이터 무결성을 확보합니다. -
복수 리소스 라우팅:
resource :agents를resources :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를 사용하여 올바른 라우팅을 보장합니다. 페이지 새로고침 시 대화 컨텍스트가 초기화되는 현재 방식을 유지하여 새로운 시작을 가능하게 합니다.