본문에서는 세 가지 구체적인 AI 통합 패턴을 상세히 다룹니다.
첫 번째는 PDF 영수증 CSV 파싱입니다. 이 사례는 LLM의 시각적 이해 능력을 활용하여 PDF 형태의 영수증에서 상점명, 카테고리, 날짜, 세금, 총액 등의 구조화된 데이터를 추출하고 이를 CSV 형식으로 변환하는 과정을 시연합니다. 특히 Google LLM이 PDF를 기본적으로 지원하며 비용 효율적이라는 점을 언급하고, OmniAI::Schema를 사용하여 추출될 데이터의 형식을 정의함으로써 정확하고 일관된 데이터 파싱이 가능함을 보여줍니다. 제공된 Ruby 코드는 시스템 메시지와 사용자 메시지에 파일을 첨부하여 LLM에 전달하고, 반환된 텍스트를 정의된 스키마에 따라 파싱하는 기본적인 AI 통합 패턴을 명확히 제시합니다.
두 번째는 제품 매뉴얼 색인 및 검색 (RAG)입니다. 이는 대규모 데이터셋을 특정 질의에 맞게 축소하여 언어 모델이 보다 효과적으로 응답하도록 돕는 RAG(Retrieval-Augmented Generation) 방법론을 설명합니다. 제품 매뉴얼(PDF)을 기계가 읽을 수 있는 마크다운 형식으로 변환하는 과정(Mistral의 OCR API 활용)부터 시작하여, OmniAI::OpenAI를 사용하여 각 페이지의 텍스트를 임베딩(벡터 표현)으로 변환하고 파일로 저장하는 방법을 소개합니다. 최종적으로 사용자 질의 또한 임베딩으로 변환한 후, 미리 계산된 매뉴얼 페이지 임베딩과 비교하여 가장 유사한 페이지들을 선택하고, 이 정보와 함께 원래의 질의를 LLM에 전달하여 도메인 특화된 요약을 생성하는 복잡한 워크플로우를 구현합니다. 이는 대규모 지식 기반에서 관련 정보를 효율적으로 찾아 답변을 생성하는 RAG의 핵심 원리를 보여줍니다.
세 번째는 AI 웹 브라우징 에이전트 구축입니다. 이 사례는 LLM에 ‘브라우저’라는 도구를 제공하여 복잡한 웹 기반 작업을 수행하도록 하는 방법을 제시합니다. Watir(Selenium 래퍼)를 사용하여 웹 브라우저를 제어하는 기본 스니펫을 보여준 후, 이를 OmniAI::Tool 클래스로 래핑하여 LLM이 호출할 수 있는 구조화된 도구로 만듭니다. 이 BrowserTool
은 goto
(URL 이동), click
(요소 클릭), html
(HTML 획득)과 같은 세 가지 액션을 제공하며, LLM은 이 도구를 사용하여 웹 사이트를 탐색하고 정보를 추출하며 상호작용할 수 있습니다. CLI 기반의 대화형 인터페이스를 통해 사용자의 요청에 따라 LLM이 브라우저 도구를 사용하여 웹을 탐색하고 결과를 요약하는 과정을 시연함으로써, LLM이 단순한 텍스트 생성뿐만 아니라 외부 도구와 연동하여 실제 환경에서 복잡한 워크플로우를 자동화할 수 있음을 입증합니다.