I Built an AI Meeting Summarizer with Spring AI — Here's How (and Why)
개요
Java와 Spring AI를 사용하여 AI 회의 요약 도구를 개발하는 방법에 대한 내용을 다룹니다.
주요 내용
* 문제 정의: 회의 후 결정 사항 및 담당자 기억의 어려움을 해결하고자 함.
* 개발 목표: 화자 식별, 발언 내용 기록, 전문적인 회의 제목 생성, 우선순위가 있는 실행 항목 추출, 미결정 사항 하이라이트, 명확한 다음 단계 제시.
* 기술 스택:
* Spring Boot 3.4.x: 애플리케이션 백본
* Spring AI 1.0.3: AI 모델 상호작용 추상화
* OpenAI Whisper: 음성을 텍스트로 변환 (Speech-to-text)
* AssemblyAI: 화자 구분 (Speaker diarization)
* GPT-4o-mini: 요약 생성 (LLM-powered summarization)
* 작동 방식:
1. 음성 파일 전사 (Whisper): Spring AI의 OpenAiAudioTranscriptionModel을 사용하여 MP3 파일을 텍스트로 변환.
2. 화자 감지 (AssemblyAI): Spring AI에 내장되지 않은 기능으로, AssemblyAI API를 통해 음성 데이터에서 화자 정보를 추출.
3. 요약 생성 (GPT-4o-mini): Spring AI의 ChatClient와 사용자 정의 프롬프트를 사용하여 전사된 텍스트와 화자 정보를 기반으로 회의 요약을 생성. 프롬프트는 회의 제목, 개요, 주요 결정 사항, 실행 항목, 미결정 사항, 다음 단계를 포함하도록 구성.
* RESTful API 엔드포인트: /process POST 엔드포인트를 통해 오디오 파일을 받아 전사, 화자 감지, 요약 생성 과정을 거쳐 구조화된 JSON 형식의 결과 반환.
* 출력 결과 예시: 회의 제목, 개요, 주요 결정 사항, 실행 항목 (Task, Assignee, Deadline, Priority), 화자 수 등 포함.
* 개발 경험 및 시사점:
* Spring AI는 HTTP 클라이언트 및 JSON 파싱 보일러플레이트 코드를 제거하여 개발 편의성을 높임. LLM 제공자 변경이 용이.
* 프롬프트 엔지니어링이 출력 품질에 결정적인 역할을 함.
* 파일 기반 처리는 회의 참여 없이 데이터를 처리하여 개인 정보 보호 측면에서 이점을 가짐.
* 화자 감지는 실행 항목에 대한 명확한 담당자 지정에 필수적.
* 향후 계획: 벡터 데이터베이스를 활용한 RAG 구현, Asana/Jira 연동을 통한 자동 작업 생성, 이메일 요약 전송, 화자 추론을 통한 담당자 자동 감지 기능 개선.
시사점
이 도구는 Spring AI를 활용하여 효율적인 AI 기반 회의 요약 시스템을 구축하는 방법을 보여주며, 개인 정보 보호 및 명확한 실행 항목 관리에 중점을 둔 회의 보조 도구의 가능성을 제시합니다.
댓글
GitHub Discussions