주요 컨텐츠로 이동

Care Cost Compass: 모자이크 AI 에이전트 프레임워크를 활용한 에이전트 시스템 개발

Care Cost Compass: An Agent System Using Mosaic AI Agent Framework

Published: January 31, 2025

의료 및 생명 공학2분 소요

Summary

이 글에서는 Databricks Data Intelligence Platform을 활용하여 실제 운영 환경에 적합한 Agent System 애플리케이션을 개발하는 방법을 상세히 설명하겠습니다. Agent System은 다양한 AI와 생성형 AI 모델을 조율하여 복잡한 작업을 수행하는 시스템을 말합니다. 구체적으로 벡터 검색, 모델 서빙, AI 게이트웨이, 온라인 테이블, 유니티 카탈로그와 같은 플랫폼 기능들을 활용하는 방법을 다룰 예정입니다. 또한, 평가 중심 개발 방법론을 적용하여 에이전트 애플리케이션을 신속하게 구축하고, 모델의 품질을 지속적으로 개선하는 과정을 소개하겠습니다. 이를 통해 효율적이고 고성능의 AI 시스템을 개발하는 방법을 배우실 수 있을 것입니다.

기업을 위한 신뢰할 수 있는 생성형 AI 개발: 기회와 도전

생성형 AI는 기업용 애플리케이션 개발에 혁신적인 이점을 제공합니다. 고급 자연어 처리 기능을 통해 소프트웨어 엔지니어들은 콘텐츠 생성, 데이터 분석, 코드 제안 등 복잡한 작업을 자동화할 수 있어 개발 시간과 운영 비용을 크게 절감할 수 있습니다. 또한 고급 모델을 활용하면 기업들은 더욱 개인화된 사용자 경험을 제공하고, 지능적인 데이터 인사이트로 의사결정을 개선하며, AI 기반 챗봇으로 고객 지원 등의 프로세스를 간소화할 수 있습니다.

하지만 이러한 장점에도 불구하고, 기업 애플리케이션 개발에 생성형 AI를 도입하는 것은 여러 가지 중요한 도전 과제를 수반합니다. 첫째, AI 출력의 정확성과 신뢰성 문제가 있습니다. 생성 모델이 때로는 부정확하거나 편향된 결과를 만들어낼 수 있기 때문입니다. 둘째, AI의 안전하고 윤리적인 사용을 보장하는 것이 중요합니다. 특히 민감한 데이터나 규제가 엄격한 산업에서 AI를 적용할 때는 더욱 그렇습니다. 규제 준수와 보안 취약점 해결은 AI를 대규모로 배포할 때 반드시 고려해야 할 사항입니다.

또한, AI 시스템을 기업 규모로 확장하는 데는 강력한 인프라와 전문 지식이 필요하며, 이는 상당한 자원 투자를 요구할 수 있습니다. 기존 시스템에 생성형 AI를 통합하는 과정에서 호환성 문제가 발생할 수 있으며, AI 주도 프로세스에서 투명성과 책임을 유지하는 것도 중요하지만 쉽지 않은 과제입니다.

이러한 도전 과제들을 극복하고 생성형 AI의 잠재력을 최대한 활용하기 위해서는 신중한 계획, 지속적인 모니터링, 그리고 윤리적 고려사항을 염두에 둔 접근이 필요합니다. 이를 통해 기업들은 혁신적이면서도 신뢰할 수 있는 AI 솔루션을 개발하고 구현할 수 있을 것입니다.

모자이크 AI 에이전트 프레임워크와 데이터브릭스 데이터 인텔리전스 플랫폼

모자이크 AI 에이전트 프레임워크는 최신 생성형 AI 애플리케이션의 개발, 배포, 평가, 관리를 위한 종합적인 도구 세트를 제공합니다. 데이터브릭스의 데이터 인텔리전스 플랫폼을 기반으로 하는 모자이크 AI는 기업들이 복잡한 AI 시스템을 안전하고 비용 효율적으로 개발할 수 있게 해줍니다. 또한 이를 기업의 기존 데이터 시스템과 원활하게 통합할 수 있도록 지원합니다. 이를 통해 기업은 AI 기술의 혁신적인 잠재력을 최대한 활용하면서도, 데이터 보안과 비용 효율성을 동시에 확보할 수 있습니다.

건강보험 에이전트의 본인 부담 비용 계산

건강관리 산업에서 '지불자'란 서비스 요금 설정, 지불 수집, 청구 처리, 의료 제공자 지불을 담당하는 조직을 말합니다. 예를 들어 건강보험 제공업체, 메디케어, 메디케이드 등이 여기에 해당합니다. 개인이 의료 서비스나 치료가 필요할 때, 대부분 자신의 보험사 고객 서비스 센터에 전화를 걸어 상황을 설명하고 해당 치료, 서비스, 또는 시술에 대한 예상 비용을 문의합니다.

이러한 비용 계산은 대체로 표준화되어 있어, 사용자로부터 충분한 정보를 얻으면 정확하게 수행할 수 있습니다. 따라서 사용자의 입력에서 관련 정보를 식별하고 정확한 비용을 검색할 수 있는 AI 에이전트 애플리케이션을 개발한다면, 고객 서비스 담당자들이 더 중요한 업무에 집중할 수 있게 될 것입니다.

이 글에서는 모자이크 AI의 다양한 기능(벡터 검색, 모델 서빙, AI 게이트웨이, 온라인 테이블, 유니티 카탈로그 등)을 활용하여 생성형 AI 에이전트 시스템을 구축하는 방법을 소개합니다. 또한 평가 중심 개발 방법론을 적용하여 에이전트 애플리케이션을 신속하게 개발하고, 모델의 품질을 지속적으로 개선하는 과정을 설명할 것입니다.

애플리케이션 개요

이 시나리오는 고객이 보험사 포털에 로그인하여 챗봇을 통해 의료 시술 비용을 문의하는 상황을 다룹니다. 우리가 개발할 에이전트 애플리케이션은 Mosaic AI 모델 서빙을 이용해 REST API로 배포됩니다.

에이전트가 질문을 받으면 다음과 같은 절차로 비용을 추정합니다:

  • 질문한 고객의 client_id 확인
  • 관련해 협상된 혜택 정보 검색
  • 해당 시술의 코드 검색
  • 현재 계획 연도의 회원 공제액 확인
  • 절차 코드에 대한 협상된 비용 검색
  • 혜택 세부사항, 시술 비용, 현재 공제액을 바탕으로 협력사 비용과 외부 비용 계산
  • 비용 계산 결과를 전문적으로 요약하여 사용자에게 전달

실제로는 이 애플리케이션의 데이터는 복잡한 데이터 엔지니어링 과정을 거쳐 생성되지만, 에이전트 애플리케이션의 설계, 개발, 배포에 초점을 맞추기 위해 몇 가지 가정으로 단순화 합니다:

  1. 혜택 요약 문서의 구조가 대체로 동일하며, 모든 고객의 각 상품별 최종 혜택 요약이 유니티 카탈로그 볼륨에 있다고 가정
  2. 테이블 스키마는 필수 필드 몇 개로 단순화
  3. 각 시술의 협상된 가격이 유니티 카탈로그의 델타 테이블에 있다고 가정
  4. 본인 부담금 계산 단순화 (노트 작성 기법을 보여주기 위함)
  5. 클라이언트 애플리케이션이 요청에 회원 ID를 포함하며, 클라이언트 ID는 델타 테이블에서 조회 가능하다고 가정

이 솔루션 가속기를 위한 노트북은 여기에서 사용할 수 있습니다.

아키텍처

이 솔루션은 Databricks 데이터 인텔리전스 플랫폼에서 Mosaic AI Agent 프레임워크를 활용하여 구축됩니다. 전체적인 구조는 아래의 상위 레벨 아키텍처 다이어그램을 통해 확인할 수 있습니다.

이 솔루션을 여러 단계로 나누어 구축할 예정이며, 데이터 준비 단계부터 시작하겠습니다. 각 단계별로 상세한 설명과 함께, 실제 구현 과정을 단계적으로 안내해 드리겠습니다. 이를 통해 복잡한 AI 에이전트 시스템을 체계적으로 개발하고, Databricks 플랫폼의 다양한 기능을 효과적으로 활용하는 방법을 배우실 수 있을 것입니다.

데이터 준비

다음 섹션들에서는 에이전트 애플리케이션을 위한 데이터 준비 과정을 상세히 설명하겠습니다.

이 에이전트에 필요한 합성 데이터는 다음과 같은 델타 테이블에 저장됩니다:

member_enrolment: 회원의 등록 정보(클라이언트 ID, 플랜 ID 등)를 포함

member_accumulators: 회원의 누적 금액 정보(공제액, 자기부담금 등)를 포함

cpt_codes: CPT(의료행위) 코드와 그에 대한 설명을 포함

procedure_cost: 각 의료 시술에 대한 협상된 비용 정보를 포함

sbc_details: 혜택 요약 PDF에서 추출한 청크들을 포함

각 테이블의 구체적인 구조와 데이터 준비 과정에 대한 자세한 내용은 제공된 노트북을 참조하시기 바랍니다. 이 노트북에서는 데이터 생성, 테이블 구조 설계, 데이터 적재 등의 과정을 단계별로 안내하고 있습니다.

혜택 문서의 파싱 및 요약 청크화

고객 질문과 관련된 적절한 계약 정보를 검색하기 위해서는 먼저 각 고객의 혜택 요약 문서를 델타 테이블로 파싱해야 합니다. 이렇게 파싱된 데이터는 고객 질문을 바탕으로 의미론적 검색을 수행할 수 있도록 벡터 인덱스를 생성하는 데 사용됩니다.

혜택 요약 문서의 구조는 다음과 같다고 가정합니다:

우리의 목표는 이 표 형식의 데이터를 PDF에서 추출하고, 각 항목에 대해 세부 사항을 적절히 포착하는 전문적인 요약을 생성하는 것입니다. 예를 들어:

위 항목에 대해 다음과 같은 두 단락을 생성하고자 합니다:

"진단 테스트(x-레이, 혈액 검사)의 경우, 협력사 내에서는 테스트당 $10의 공제금을 지불하고 외부 시설에서는 40%의 공동보험을 지불합니다."

그리고

"이미징 검사(CT/PET 스캔, MRI)의 경우, 협력사 내에서는 검사당 $50의 공제금을 지불하고 외부 시설에서는 40%의 공동보험을 지불합니다."

주의: 혜택 요약 문서의 형식이 다를 경우, 각 형식에 맞는 추가적인 파이프라인과 파싱 로직을 개발해야 합니다. 청크화 과정에 대한 자세한 설명은 제공된 노트북을 참조하시기 바랍니다.

이 과정의 결과물은 각 혜택 요약 문서의 항목을 별도의 행으로 포함하는 델타 테이블입니다. client_id는 혜택 문단의 메타데이터로 캡처되었으며, 필요에 따라 product_id와 같은 추가 메타데이터를 포함할 수 있습니다. 하지만 이 작업의 범위 내에서는 간단하게 유지하겠습니다.

구현에 대한 자세한 내용은 제공된 노트북의 코드를 참조하시기 바랍니다.

벡터 인덱스 생성

Mosaic AI Vector Search는 Databricks 데이터 인텔리전스 플랫폼에 내장된 벡터 데이터베이스로, 플랫폼의 거버넌스 및 생산성 도구와 긴밀히 통합되어 있습니다. 이 벡터 데이터베이스는 임베딩(텍스트나 이미지 데이터의 의미를 수학적으로 표현한 것)을 효율적으로 저장하고 검색하는 데 최적화되어 있습니다.

이 애플리케이션에서는 두 가지 벡터 인덱스를 생성할 예정입니다:

  • 파싱된 혜택 및 보장 요약 청크에 대한 벡터 인덱스
  • CPT 코드와 그 설명을 위한 벡터 인덱스

Mosaic AI에서 벡터 인덱스를 생성하는 과정은 다음 두 단계로 이루어집니다:

  1. 벡터 검색 엔드포인트 생성: 이 엔드포인트는 벡터 검색 인덱스를 제공하며, REST API나 SDK를 통해 쿼리하고 업데이트할 수 있습니다. 또한 인덱스의 크기나 동시에 처리해야 할 요청의 수에 따라 자동으로 확장되어 효율적인 성능을 유지합니다.
  2. 벡터 인덱스 생성:벡터 인덱스는 델타 테이블을 기반으로 생성되며, 실시간으로 근사 최근접 이웃 검색을 수행할 수 있도록 최적화되어 있습니다. 이를 통해 주어진 쿼리와 유사한 문서를 효과적으로 찾아낼 수 있습니다. 또한 이 인덱스는 유니티 카탈로그에 표시되어 사용자가 쉽게 관리할 수 있도록 구성되어 있습니다.

이 과정에 대한 자세한 설명과 참조 코드는 제공된 노트북에서 확인하실 수 있습니다.

온라인 테이블

온라인 테이블은 델타 테이블의 읽기 전용 복사본으로, 온라인 액세스에 최적화된 행 지향 형식으로 저장됩니다. 이는 완전한 서버리스로 운영되며, 요청 부하에 따라 처리 용량을 자동으로 조절합니다. 따라서 데이터의 규모에 관계없이 낮은 지연 시간과 높은 처리량을 제공할 수 있습니다.

온라인 테이블은 Mosaic AI 모델 서빙, 피처 서빙, 그리고 에이전트 애플리케이션과 함께 사용되도록 설계되었으며, 특히 빠른 데이터 조회가 필요한 경우에 유용합니다.

이 프로젝트에서는 member_enrolment, member_accumulators, procedure_cost 테이블에 대한 온라인 테이블을 생성할 예정입니다.

온라인 테이블 생성 과정과 필요한 코드에 대한 자세한 설명은 제공된 노트북에서 확인하실 수 있습니다.

에이전트 애플리케이션 구축

필요한 모든 데이터가 준비되었으므로, 이제 에이전트 애플리케이션 구축을 시작할 수 있습니다. 우리는 평가 주도 개발 방법론을 채택하여 프로토타입을 신속하게 개발하고 그 품질을 지속적으로 개선해 나갈 것입니다.

평가 주도 개발

이 방법론은 모자이크 연구팀이 권장하는 고품질 RAG(Retrieval-Augmented Generation) 애플리케이션 구축 및 평가에 대한 모범 사례를 기반으로 합니다.

Databricks에서 제안하는 평가 중심 워크플로우는 다음과 같습니다:

  • 요구사항 정의
  • 빠른 개념 증명(POC) 개발 및 이해관계자 피드백 수집
  • POC 품질 평가
  • 반복적인 진단과 품질 문제 해결
  • 운영 환경에 배포
  • 실제 운영 환경에서의 모니터링

평가 주도 개발에 대한 더 자세한 내용은 Databricks AI Cookbook에서 확인하실 수 있습니다. 이 방법을 통해 우리는 효율적이고 신뢰할 수 있는 AI 애플리케이션을 개발할 수 있습니다.

도구 구축 및 평가

에이전트 애플리케이션 개발 과정에서 우리는 특정 작업을 수행하기 위해 여러 함수를 활용할 것입니다. 애플리케이션에 필요한 주요 함수들은 다음과 같습니다:

  • 컨텍스트에서 member_id 추출
  • 질문 분류기
  • member_id로부터 client_id를 얻기 위한 조회 함수
  • client_id에 대한 혜택 정보 검색을 위한 RAG 모듈
  • 질문에 적합한 절차 코드 찾기를 위한 의미(Semantic) 검색 모듈
  • 특정 procedure_code(절차 코드)에 대한 비용 조회 함수
  • member accumulators 테이블에서 member_id에 대한 누적 정보 조회 함수
  • 수집된 정보를 바탕으로 지불 비용을 계산하는 Python 함수
  • 계산 결과를 전문적으로 요약하여 사용자에게 전달하는 요약 함수

이러한 함수들은 에이전트가 사용할 수 있는 재사용 가능한 도구로 개발되며, 자율적 또는 엄격한 에이전트 실행 방식과 함께 활용될 수 있습니다.

이 노트북에서 우리는 함수들을 LangChain 도구로 개발하여 LangChain 에이전트나 사용자 정의 PyFunc 모델에서 사용할 수 있도록 할 것입니다.

참고: 실제 환경에서는 이러한 도구들 중 많은 부분이 복잡한 함수이거나 외부 서비스에 대한 REST API 호출일 수 있습니다. 이 노트북의 주요 목적은 기능을 설명하는 것이며, 실제 구현 시에는 다양한 방식으로 확장될 수 있습니다.

평가 중심 개발 방법론에 따라, 우리는 다음과 같은 과정을 거칠 것입니다:

  • 각 구성 요소에 대한 품질 지표 정의
  • 다양한 매개변수를 적용하여 각 구성 요소 개별 평가
  • 최상의 결과를 제공하는 매개변수 선택

이는 전통적인 ML 개발에서의 하이퍼파라미터 튜닝과 유사한 과정입니다. 우리는 각 도구를 개별적으로 평가하고, 최적의 성능을 보이는 매개변수를 선택할 것입니다.

제공된 노트북에서는 이러한 평가 과정에 대한 상세한 설명과 코드를 확인할 수 있습니다. 단, 이 평가 과정은 기본적인 가이드라인을 제시하는 것이며, 필요에 따라 더 많은 매개변수를 포함하여 확장할 수 있습니다.

에이전트 조립

모든 필요한 도구를 정의했으니, 이제 이들을 하나의 에이전트 시스템으로 통합할 차례입니다.

우리가 개발한 구성 요소들을 LangChain 도구로 만들었기 때문에, AgentExecutor를 사용하여 전체 프로세스를 실행할 수 있습니다. 하지만 이는 매우 기본적인 접근 방식입니다.

응답 지연을 줄이고 정확성을 높이기 위해, 우리는 사용자 정의 PyFunc 모델을 활용하여 에이전트 애플리케이션을 구축할 것입니다. 이 방식을 통해 우리는 더욱 최적화된 성능을 얻을 수 있으며, 완성된 애플리케이션을 Databricks Model Serving에 배포할 수 있습니다.

이러한 접근 방식은 우리의 에이전트 시스템에 더 많은 유연성과 제어력을 제공하며, 실제 운영 환경에서 더 나은 성능을 발휘할 수 있도록 해줍니다.

MLflow Python 함수
MLflow의 Python 함수(PyFunc)는 어떤 종류의 Python 코드나 모델이라도 배포할 수 있는 유연성을 제공합니다. 이 기능은 다음과 같은 상황에서 특히 유용합니다:

  • 모델 입력 전처리: predict 함수에 데이터를 전달하기 전에 전처리가 필요한 경우
  • 비표준 모델 프레임워크 지원: MLflow에서 기본적으로 지원하지 않는 모델 프레임워크를 사용하는 경우
  • 출력 후처리: 모델의 원시 출력을 사용하기 전에 추가적인 처리가 필요한 경우
  • 요청별 분기 로직: 모델 내에서 요청에 따라 다른 처리 로직이 필요한 경우
  • 완전한 사용자 정의 코드 배포: 특정 모델이 아닌, 완전히 사용자가 정의한 코드를 배포하고자 할 때

이러한 기능을 통해 개발자들은 더욱 복잡하고 맞춤화된 AI 솔루션을 구현할 수 있습니다. Model Serving을 사용하여 Python 코드를 배포하는 방법에 대한 더 자세한 정보는 여기를 통해 확인할 수 있습니다.

CareCostCompassAgent

CareCostCompassAgent는 우리 에이전트에 필요한 핵심 로직을 구현하는 Python 함수입니다. 이 에이전트의 완전한 구현 내용은 제공된 노트북에서 확인할 수 있습니다.

이 에이전트를 구현하기 위해 우리는 두 가지 필수 함수를 정의해야 합니다:

  • load_context - 모델 운영에 필요한 모든 요소를 한 번만 로드하는 함수입니다. 이 함수에서 모든 도구를 초기화하며, 이는 예측 과정에서 로드되는 요소를 최소화하여 추론 속도를 향상시키는 데 중요한 역할을 합니다.
  • predict - 각 입력 요청마다 실행되는 핵심 로직을 포함하는 함수입니다. 이 함수 내에서 실제 애플리케이션의 주요 기능을 구현하게 됩니다.

모델 입력 및 출력
우리의 모델은 채팅 에이전트 형태로 구축되며, 이에 따라 모델 시그니처가 결정됩니다. 요청은 ChatCompletionRequest 형식을 따르게 됩니다.

pyfunc 모델의 데이터 입력은 다양한 형태(Pandas DataFrame, Pandas Series, Numpy Array, List, Dictionary)가 가능하지만, 우리의 구현에서는 Pandas DataFrame을 입력으로 사용할 예정입니다. 채팅 에이전트의 특성상, 이 DataFrame은 mlflow.models.rag_signatures.Message의 스키마를 따르게 됩니다.

모델의 응답은 간단히 mlflow.models.rag_signatures.StringResponse 형식을 사용할 것입니다.

이러한 입출력 구조를 통해 우리의 채팅 에이전트는 효율적으로 사용자 요청을 처리하고 적절한 응답을 생성할 수 있을 것입니다.

워크플로우
PyFunc 모델의 predict 메소드에서 다음과 같은 워크플로우를 구현할 예정입니다. 응답 지연 시간을 최소화하기 위해 아래의 세 가지 과정을 병렬로 실행할 것입니다:

  1. 회원 ID를 이용해 client_id를 확인한 후, 해당하는 혜택 조항을 검색합니다.
  2. 회원 ID를 사용하여 회원의 누적 정보를 조회합니다.
  3. 절차 코드를 파악하고 해당 코드에 대한 정보를 조회합니다.

이러한 병렬 I/O 작업을 효율적으로 처리하기 위해 asyncio 라이브러리를 활용할 예정입니다. 구체적인 구현 코드는 제공된 노트북에서 확인하실 수 있습니다.

이 접근 방식을 통해 우리는 데이터 검색 및 처리 과정을 최적화하여 전체적인 응답 속도를 크게 향상시킬 수 있을 것입니다.

에이전트 평가

이제 우리의 에이전트 애플리케이션이 MLflow 호환 Python 클래스로 개발되었으므로, 이를 블랙박스 시스템으로 테스트하고 평가할 수 있습니다. 개별 도구들을 이미 평가했지만, 에이전트가 전체적으로 원하는 결과를 제대로 산출하는지 확인하는 것이 중요합니다. 에이전트 평가 과정은 개별 도구 평가와 유사하며, 다음과 같은 단계로 진행됩니다:

  • 평가용 데이터 프레임 정의
  • 모델 품질 측정을 위한 지표 설정
  • MLflow 평가 기능과 databricks-agents를 활용한 평가 수행
  • 평가 지표 분석을 통한 모델 품질 평가
  • 추적 결과와 평가 결과 검토를 통한 개선 기회 파악

이러한 평가 과정의 상세한 내용은 제공된 노트북에서 확인할 수 있습니다.

이제 우리는 모델 성능에 대한 초기 지표를 확보했으며, 이는 향후 개선 작업의 기준점이 될 것입니다. 평가 중심 개발 워크플로우에 따라, 이 모델을 배포하여 선별된 비즈니스 관계자들에게 공개하고, 그들로부터 세심하게 피드백을 수집할 예정입니다. 이렇게 얻은 정보는 다음 단계의 개선에 중요한 자료로 활용될 것입니다.

모델 등록 및 배포

Databricks 데이터 인텔리전스 플랫폼의 유니티 카탈로그를 통해 모델의 전체 생명주기를 관리할 수 있습니다. Databricks는 유니티 카탈로그 내에서 MLflow Model Registry를 제공하여 모델 관리를 더욱 효율적으로 만듭니다. 자세한 내용은 여기에서 확인할 수 있습니다.

지금까지의 작업 요약:

  • 에이전트 애플리케이션용 도구 개발 완료
  • 도구 평가 및 최적 매개변수 선정
  • 사용자 정의 Python 함수 모델 생성 및 로직 구현
  • 에이전트 애플리케이션 평가를 통한 초기 벤치마크 수립
  • MLflow 실험을 통한 전체 과정 추적 및 기록

이제 모델을 유니티 카탈로그에 등록하고 첫 번째 버전을 생성할 단계입니다.

유니티 카탈로그는 Databricks의 모든 데이터와 AI 자산을 위한 통합 거버넌스 솔루션입니다. 유니티 카탈로그에 대한 자세한 정보는 여기에서 확인할 수 있습니다. 유니티 카탈로그의 모델은 ML 모델에 대해 중앙 집중식 접근 제어, 감사, 계보 추적, 워크스페이스 전반의 모델 검색 등의 이점을 제공합니다. 또한 오픈 소스 MLflow Python 클라이언트와 호환됩니다.

유니티 카탈로그에 모델을 등록할 때는 모델을 패키지화하고 독립 실행 환경에서 실행할 수 있도록 필요한 모든 정보를 포함해야 합니다. 다음과 같은 세부 사항을 제공해야 합니다:

  • model_config: 모델 구성 - 도구와 모델에 필요한 모든 매개변수, 엔드포인트 이름, 벡터 검색 인덱스 정보를 포함합니다. 이를 통해 모델 로깅과 새 버전 생성 시 매개변수가 자동으로 MLflow에 기록됩니다.
  • python_model: 모델 소스 코드 경로 - MLflow의 코드 기반 모델 기능을 사용하여 모델을 로깅합니다. 이는 기존의 직렬화 방식보다 더 깔끔하고 오류가 적습니다. 기존 방식에서는 모델 객체의 직렬화를 위해 cloudpickle(사용자 정의 PyFunc 및 LangChain용) 또는 불완전한 커버리지를 가진 사용자 정의 직렬화기(LlamaIndex의 경우)를 사용했습니다. 하지만 새로운 '코드에서 모델로' 접근 방식에서는 지원되는 모델 유형에 대해 간단한 스크립트와 함께 사용자 정의 PyFunc 또는 flavor 인터페이스의 정의를 저장합니다. 예를 들어, LangChain의 경우 LCEL 체인을 스크립트 내에서 직접 모델로 정의하고 표현할 수 있습니다. 이 방식은 훨씬 더 깔끔하며, 종속 라이브러리와 관련된 기존의 직렬화 오류들을 모두 제거합니다.
  • 아티팩트: 종속 아티팩트 - 현재 모델에는 해당 사항이 없습니다。
  • pip_requirements: PyPI 의존 라이브러리 - 모든 pip 의존성을 지정하여 배포 시 필요한 라이브러리가 컨테이너에 포함되도록 합니다.
  • input_example: 샘플 요청 - 모델 사용자를 위한 입력 예시를 제공합니다.
  • signature: 모델 시그니처
  • registered_model_name: 유니티 카탈로그의 3단계 네임스페이스에서 모델의 고유 이름
  • 자원: 모델이 접근하는 다른 엔드포인트 목록 - 배포 시 필요한 인증 토큰 생성에 사용됩니다.

이제 mlflow.pyfunc.log_model 메소드를 사용하여 모델을 로그하고 유니티 카탈로그에 등록하겠습니다. 자세한 코드는 제공된 노트북을 참조하시기 바랍니다.

MLflow에 모델이 로그되면 Mosaic AI Model Serving에 배포할 수 있습니다. 에이전트 구현이 LLM 호출을 위해 다른 엔드포인트를 호출하는 간단한 Python 함수이므로, 이 애플리케이션은 CPU 엔드포인트에 배포가 가능합니다.

Mosaic AI Agent Framework를 사용하여 다음 작업을 수행합니다:

  • CPU 모델 서빙 엔드포인트를 생성하여 모델 배포
  • 에이전트가 생성한 모델 입력, 응답, 추적을 기록하기 위한 추론 테이블 설정
  • 에이전트가 사용하는 모든 리소스에 대한 인증 자격 증명 생성 및 설정
  • 피드백 모델 생성 및 동일한 서빙 엔드포인트에 리뷰 애플리케이션 배포

Databricks 에이전트 API를 사용한 에이전트 애플리케이션 배포 방법에 대한 자세한 내용은 여기에서 확인하실 수 있습니다.

배포가 완료되면 모델 추론용 URL과 리뷰 앱용 URL이 생성됩니다. 이제 이 URL들을 비즈니스 이해관계자들과 공유할 수 있습니다.

인간의 피드백 수집

모델의 첫 번째 평가에 사용된 평가 데이터는 개발 팀의 노력으로 초기 모델 품질 측정과 벤치마크 설정을 위해 만들어졌습니다. 하지만 모델이 실제 비즈니스 요구사항에 부합하는지 확인하기 위해서는, 다음 개발 반복주기(Iteration)로 넘어가기 전에 비즈니스 이해관계자들로부터 직접 피드백을 받는 것이 중요합니다. 이를 위해 우리는 리뷰 앱을 활용할 수 있습니다.

리뷰 앱을 통해 수집된 피드백은 추론 테이블과 함께 델타 테이블에 저장됩니다. 이 과정을 통해 모델의 성능을 실제 사용자의 관점에서 평가하고, 필요한 개선 사항을 파악할 수 있습니다. 또한, 이렇게 수집된 데이터는 향후 모델 업데이트와 최적화에 귀중한 자료로 활용될 수 있습니다.

리뷰 앱 사용 및 피드백 수집에 대한 더 자세한 내용은 여기에서 확인하실 수 있습니다. 이러한 과정을 통해 우리는 모델을 지속적으로 개선하고, 비즈니스 가치를 극대화할 수 있는 AI 솔루션을 개발할 수 있습니다.

개선된 평가 데이터를 활용한 내부 개선 과정

이제 우리는 에이전트의 성능에 대한 중요한 정보를 확보했으므로, 빠르게 모델 품질을 향상시킬 수 있습니다. 이를 위해 다음과 같은 데이터를 활용합니다:

  1. 비즈니스 이해관계자로부터 받은 상세한 품질 피드백 (적절한 질문, 예상 답변, 에이전트 성능에 대한 평가 포함)
  2. MLflow 트레이스를 통해 파악한 모델의 내부 작동 방식에 대한 통찰
  3. Databricks LLM 평가기의 피드백과 이전 평가에서 얻은 생성 및 검색 품질 지표

리뷰 앱의 출력을 바탕으로 다음 반복주기을 위한 새로운 평가 데이터프레임을 생성할 수 있습니다. 이에 대한 예제 구현은 이 노트북에서 확인할 수 있습니다. AI 애플리케이션을 에이전트 시스템으로 작성하는 것은 여러 장점이 있습니다:

  • 재사용성: 유니티 카탈로그에서 관리할 수 있는 재사용 가능한 도구로 개발되어 여러 에이전트 애플리케이션에서 활용 가능
  • 유연성: 기능이 여러 하위 시스템으로 분리되어 있어 개발, 테스트, 배포, 유지보수 및 최적화가 용이
  • 세밀한 제어: 각 구성 요소의 응답 품질과 보안 매개변수를 개별적으로 관리 가능
  • 비용 효율성: 작고 최적화된 모델/컴포넌트의 조합이 대규모 범용 모델보다 더 나은 결과를 더 낮은 비용으로 제공

에이전트 시스템은 GenAI 애플리케이션의 새로운 영역으로, 개발 및 운영 과정에서 다음과 같은 도전 과제를 제시합니다:

  • 다중 구성 요소와 하이퍼파라미터의 복합적 최적화
  • 적절한 성능 지표 정의 및 객관적 측정과 추적
  • 시스템 품질과 성능 향상을 위한 신속한 반복 개선
  • 필요에 따른 확장 가능하고 비용 효율적인 배포
  • 데이터 및 기타 자산의 거버넌스와 계보 관리
  • 모델 행동에 대한 안전장치(Guardrail) 구현
  • 모델 응답의 비용, 품질, 안전성 모니터링

Mosaic AI Agent Framework는 개발자들이 정확하고 안전하며 관리가 용이한 고품질 에이전트 애플리케이션을 구축하고 배포할 수 있도록 설계된 종합적인 도구 세트입니다. 이 프레임워크를 통해 개발자들은 RAG(Retrieval-Augmented Generation) 애플리케이션의 품질을 쉽게 평가하고, 가설 검증을 위한 반복 작업을 신속하게 수행하며, 애플리케이션을 간편하게 재배포할 수 있습니다. 또한 적절한 거버넌스와 안전장치를 통해 시스템을 안정적으로 유지할 수 있습니다.

Mosaic AI Agent Framework는 Databricks 데이터 인텔리전스 플랫폼과 완벽하게 통합되어, 엔드투엔드 RAG 시스템 구축에 필요한 모든 요소를 제공합니다. 이는 보안 및 관리 체계, 데이터 통합, 벡터 데이터베이스, 품질 평가, 원클릭 최적화 배포 등의 기능을 포함합니다. 또한, 통합된 거버넌스와 안전장치를 통해 애플리케이션의 유해한 응답이나 정책 위반을 사전에 방지할 수 있어, 안전하고 신뢰할 수 있는 AI 시스템 운영이 가능합니다.

 

(한글화: 황경태) Original Post

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요