생성형Generative AI는 이미 우리 일상 속으로 깊숙이 들어왔습니다. 챗봇, 음성 비서, 이미지 생성, 자동 문서 작성, 심지어는 코딩 지원까지. AI의 활용 영역은 날마다 확장되고 있으며, 그 중심에는 대규모 언어 모델LLM이라는 강력한 기술이 자리 잡고 있습니다.
Spring AI는 LLM을 Java 생태계에 통합하기 위한 Spring 프로젝트입니다. Spring Boot의 친숙한 프로그래밍 모델을 유지하면서도, LLM과의 상호작용, 프롬프트 구성, 스트리밍 응답 처리, 벡터 저장소 연동, 도구 호출과 같은 복잡한 기능들을 손쉽게 구현할 수 있도록 도와줍니다.
그렇다면 AI 애플리케이션은 어떤 구조로 설계되고, 어떤 종류의 AI 모델들을 활용할 수 있는지 차근차근 알아보겠습니다.
AI (인공지능, Artificial Intelligence)은 크게 모델 연구·개발 분야와, 개발된 모델을 활용한 응용 서비스를 개발하는 분야로 구분할 수 있습니다. 딥러닝 기반 AI 모델이 본격화되기 전까지는 주로 모델 연구와 개발이 중심이었으나, 2020년경 GPT-3와 같은 생성형 AI 모델이 등장한 이후에는 이미 학습된 모델을 활용한 응용 서비스 개발에 더 많은 관심이 쏠리고 있습니다.
이러한 응용 서비스는 챗봇형(예. 고객 상담, 정보 제공), 가상비서형(예. 일정 관리, 이메일 작성, 회의록 작성), 자율형(예. 자율주행 차량, 로봇) 등 다양한 AI 에이전트 형태로 구현되어 여러 분야에서 활용되고 있습니다. 예를 들어 ChatGPT와 Claude Desktop은 대화형 인터페이스를 제공하며 정보 조회, 문서 작성 보조, 간단한 업무 수행 등 다양한 작업에 사용되는 AI 에이전트입니다.
AI 에이전트는 AI 모델을 활용해 특정 작업을 수행하는 AI 애플리케이션으로 볼 수 있습니다. 로컬 머신에서 실행하는 애플리케이션(가상비서, 로봇 운영) 또는 웹에서 동작하는 애플리케이션ChatGPT 형태로 구현될 수 있습니다. 이러한 애플리케이션은 사용자의 입력을 전처리하고, 필요 시 외부 데이터나 도구를 호출해 정보를 보강하며, AI 모델의 출력 결과를 후처리하여 적절한 UI/UX로 사용자에게 전달합니다.
다음은 웹에서 동작하는 AI 애플리케이션의 아키텍처를 보여줍니다.
AI 애플리케이션의 중심에는 AI Agent 역할을 수행하는 REST API 기반의 Back-End가 있습니다. Front-End(Web App, Mobile App)와 상호 작용하면서 멀티모달 AI 모델을 이용해서 판단, 추론하며, 도구를 통한 행동(조치) 작업을 수행합니다. 또한 사용자와의 대화 기억을 유지하고, 행동 조치 내용을 기록합니다.
Front-End는 AI 모델에 전달할 입력 데이터를 생성하거나, AI 모델의 출력 결과를 사용자에게 보여주는 역할을 합니다. 입력 데이터는 텍스트, 이미지 파일, 카메라 영상 등 다양한 형태가 될 수 있습니다. 입력 데이터는 Back-End에서 가공 및 보강 과정을 거친 뒤, 이를 AI 모델 입력값으로 전달합니다. 흔히 이것을 프롬프트prompt라고 부릅니다.
AI 모델은 온프레미스 환경에서 실행될 수도 있고, 클라우드에서 실행될 수도 있습니다. AI 모델이 어디서 실행되든 사용하는 방식은 동일합니다. Back-End는 REST API를 통해 입력 데이터를 담아 AI 모델로 요청을 보내고, AI 모델로부터 응답을 받아 Front-End에 전달합니다.
이처럼 복잡한 데이터 흐름과 코드 관리, 외부 시스템 연동을 효율적으로 처리하려면 애플리케이션 개발 시 Spring AI와 같은 프레임워크가 필요해집니다.
Spring AI는 Back-End에서 입력 데이터를 가공하고 보강하며, 엔터프라이즈 Spring 애플리케이션 내에서 AI 모델을 자연스럽게 통합하고 운영할 수 있도록 지원합니다. 또한 도구 호출(Tool Calling)과 외부 도구인 MCP Server를 이용해서 내외부 시스템을 AI Agent가 제어할 수 있도록 지원합니다.
AI 모델은 주어진 입력 데이터를 바탕으로 적절한 출력을 생성하는 AI 시스템의 핵심 구성 요소입니다. 예를 들어, LLM(대규모 언어 모델)은 텍스트나 이미지 또는 둘 다(멀티모달)를 입력받아 분석한 뒤 텍스트를 출력합니다. 이미지 생성형 모델은 텍스트를 입력받아 이를 분석한 뒤 이미지를 출력합니다. 모델이 어떻게 학습되었는지에 따라 입력 형태와 출력 결과는 달라집니다.
모델은 아키텍처와 파라미터들로 이루어져 있습니다. 아키텍처는 입력 데이터를 처리하는 절차나 방법을 의미하고, 파라미터는 아키텍처가 사용하는 내부 값입니다. 모델 훈련은 정해진 아키텍처를 바탕으로 최적의 파라미터를 찾는 과정입니다. 예를 들어, 입력 데이터 A에 대해 출력이 B가 되도록 학습시키면 파라미터 값들이 결정됩니다.
생성형 AI 모델Generative AI Model 은 입출력 데이터 타입에 따라서 다음과 같이 분류합니다.
이러한 AI 모델들은 다양한 연구기관과 기업에서 이미 개발되었고, 꾸준히 새로운 버전이 발표되며 성능이 개선되고 있습니다. 위에서 분류한 대부분의 AI 모델들이 개발되어 있고, 다른 업체의 AI 모델과 비교해서 사용하기가 쉽고, 높은 성능을 가지고 있기 때문입니다.
다음은 OpenAI에서 제공하는 전체 AI 모델을 볼 수 있는 페이지입니다.
각 AI 모델 이미지를 클릭하면 상세 페이지로 들어갈 수 있는데, AI 모델의 특징, 성능, 입출력 형태, 사용료 등을 알 수 있습니다. 새로운 AI 모델들이 추가되고, 이전 AI 모델이 없어지는 상황이어서, 애플리케이션을 개발할 때 구체적으로 어떤 AI 모델을 사용하면 좋다고 말할 수는 없습니다. 현 시점에서 사용료가 저렴하면서 비교적 성능이 우수한 AI 모델을 선택하시면 됩니다.
Spring AI는 LLM을 Java 생태계에 통합하기 위한 Spring 프로젝트입니다. Spring Boot의 친숙한 프로그래밍 모델을 유지하면서도, LLM과의 상호작용, 프롬프트 구성, 스트리밍 응답 처리, 벡터 저장소 연동, 도구 호출과 같은 복잡한 기능들을 손쉽게 구현할 수 있도록 도와줍니다.
AI 애플리케이션을 개발할 때 가장 먼저 마주하는 질문은 “어떻게 AI 모델에 입력 데이터를 전달하고, 모델의 결과를 사용자에게 보여줄 것인가?”입니다. 이 과정을 하나하나 직접 구현하다 보면 코드가 복잡해지고, 나중에 기능을 추가하거나 수정할 때 큰 어려움이 생깁니다. 그래서 AI 애플리케이션을 위한 프레임워크가 필요합니다.
파이썬 AI 애플리케이션 개발용 프레임워크인 랭체인LangChain 은 프롬프트 ▶ 응답 ▶ 후처리 과정을 체인chain 형태로 연결해 데이터 흐름을 단순화하도록 설계되었습니다. 또한 대화 기억, 문서 검색 기반 답변RAG, 도구 호출 기능을 기본으로 제공합니다.
자바 AI 애플리케이션 개발용으로 제공되는 Spring AI는 내부 구현 방식은 랭체인과 다르지만, 유사한 기능을 제공합니다. Spring AI는 OpenAI, Hugging Face 등 다양한 LLM을 자동으로 구성하고, 엔터프라이즈 환경에 적합한 여러 벡터 저장소 연동을 지원합니다. 대화 기억 저장 방식도 여러 옵션을 제공하며, 문서 검색 기반 답변RAG, 도구 호출, MCP 서버 개발 기능을 모두 제공합니다.
다음은 Spring AI와 랭체인Langchain을 비교한 표입니다. 개발 언어, 방법, 런타임 플랫폼만 다를 뿐 제공하는 기능은 거의 동일하다고 볼 수 있습니다.
Spring AI는 Spring 웹 애플리케이션에 익숙한 자바 개발자에게 친숙한 개발 경험을 제공합니다. Spring Boot 환경 내에서 AI 모델을 마치 로컬 라이브러리처럼 손쉽게 다룰 수 있으며, 자동 구성을 통해 최소한의 코드로 개발할 수 있도록 다양한 Spring Boot Starter 의존성을 지원합니다.
다음은 Spring AI 도큐먼트 페이지입니다.
지금까지 AI 애플리케이션의 전체적인 구조와 AI 모델의 분류, 그리고 Spring AI 프레임워크에 대해 알아보았습니다. 생성형 AI는 단순한 기술 트렌드를 넘어 소프트웨어 개발의 패러다임을 바꾸고 있습니다. AI 애플리케이션 개발에는 다양한 기술적 요소들이 복합적으로 작용하지만 Spring AI를 활용하면 기존 Spring 개발 경험을 바탕으로 보다 쉽게 AI 기능을 통합할 수 있습니다.
위 콘텐츠는 『이것이 Spring AI다』의 내용을 재구성하여 작성되었습니다.
댓글