에이전트 도구 통합 및 설정
AI 에이전트에 도구를 통합하는 과정은 다음과 같습니다.
1. Tavali 웹 검색 도구 활용
-
Tavali는 에이전트가 웹을 검색하고 연결할 수 있게 하는 강력한 도구입니다. LangChain에 내장된 Tavali 도구를 활용하여 쉽게 통합할 수 있습니다.
-
Tavali의 무료 플랜은 월 1,000개의 API 크레딧을 제공하며, 검색 결과의 품질이 우수하여 초기 개발에 적합합니다.
2. 에이전트 도구 관리
-
에이전트에는
available_tools라는 해시를 통해 사용 가능한 도구 목록을 설정합니다. -
데이터베이스에서 특정 에이전트(예: ‘제품 설명 작성기’)에 허용된 도구 이름 배열을 관리합니다. 이는 성능 및 품질 문제를 방지하기 위함입니다. 20개 이상의 도구는 에이전트를 혼란스럽게 할 수 있으므로, 각 프롬프트에 필요한 도구만 선택적으로 제공하는 것이 중요합니다.
3. 코드 구현 및 개선
-
도구 매핑 및 필터링: 어시스턴트에 전달되는 도구 배열은 문자열에서 심볼로 변환(
to_sym)하고, 구현되지 않은 도구는compact를 사용하여 제거합니다. -
데이터 인코딩 문제 해결: SQLite 사용 시 발생할 수 있는 UTF-8 인코딩 문제를
to_string.force_encoding('UTF-8')을 통해 해결했습니다. -
메시지 UI 개선: 에이전트 메시지 컴포넌트에서
tool_call또는tool_result가 존재할 경우, 빈 콘텐츠 대신 ‘Tool Called: [도구 이름] [ID]’와 같은 사용자 친화적인 메시지를 표시하도록 UI를 개선합니다.
4. 비동기 작업 처리 (SolidQueue)
-
기존에는 에이전트 컨트롤러의
create메서드에서 작업을 직접 실행하여 응답 시간이 길었습니다. -
bin/rails generate job AI_task명령어를 사용하여 백그라운드 작업을 생성하고,AI_task_job.perform_later(task)를 통해 작업을 비동기적으로 처리하도록 변경했습니다. -
Procfile.dev에worker: solid_queue start를 추가하여 SolidQueue 워커가 백그라운드 작업을 처리하도록 설정함으로써, 사용자 인터페이스의 응답성을 크게 향상시켰습니다.