|
| 1 | +# AI Application과 Spring AI 개요 |
| 2 | + |
| 3 | +## Summary |
| 4 | +AI Application은 AI 모델을 활용해 실제 서비스를 구현하는 응용 시스템이다. 이러한 시스템은 Front-End, Back-End(API Server), AI 모델의 유기적 상호작용으로 구성되며, 이를 효율적으로 통합하기 위해 Spring AI와 같은 프레임워크가 사용된다. Spring AI는 Java 및 Spring Boot 환경에서 LLM과의 통합을 단순화하고, 엔터프라이즈급 AI 응용 서비스를 개발할 수 있도록 지원한다. |
| 5 | + |
| 6 | +## Details |
| 7 | + |
| 8 | +### AI Application의 구성 요소 |
| 9 | +AI Application은 AI 모델을 중심으로 다양한 계층이 상호작용하며 동작한다. |
| 10 | + |
| 11 | +| 구성 요소 | 역할 | |
| 12 | +|------------|------| |
| 13 | +| **Front-End (Web/App)** | 사용자의 입력을 수집하고, AI의 응답을 시각화함. 입력은 텍스트, 이미지, 영상 등 다양한 형태로 존재함. | |
| 14 | +| **Back-End (API Server)** | AI Agent로서 핵심 역할 수행. 프롬프트 생성, 도구 호출, 멀티모달 데이터 처리, 추론 결과 기록을 담당함. | |
| 15 | +| **AI Model (LLM)** | 클라우드 또는 온프레미스 환경에서 실행되며, Back-End의 요청에 따라 추론과 응답을 수행함. | |
| 16 | + |
| 17 | +:::note[NOTE] |
| 18 | +Back-End는 단순한 API 서버가 아닌, AI 모델을 조정하고 외부 시스템을 제어하는 **AI Agent**의 중심이다. |
| 19 | +::: |
| 20 | + |
| 21 | +### AI Agent의 개념 |
| 22 | +AI Agent는 **AI 모델을 활용해 특정 목적을 수행하는 응용 시스템**을 의미한다. 예를 들어 다음과 같은 형태로 구현될 수 있다. |
| 23 | + |
| 24 | +- 챗봇형 (예: 고객 상담) |
| 25 | +- 가상비서형 (예: 일정 관리, 메일 요약) |
| 26 | +- 자율형 (예: 시스템 제어, 보고서 자동 작성) |
| 27 | + |
| 28 | +AI Agent는 REST API 기반으로 구현되며, 요청을 받아: |
| 29 | +1. 입력 데이터를 전처리 및 프롬프트로 변환 |
| 30 | +2. AI 모델 호출 및 추론 수행 |
| 31 | +3. 결과를 후처리하여 사용자에게 응답 |
| 32 | + |
| 33 | +### 프레임워크의 필요성 |
| 34 | +AI Application 개발 시 발생하는 대표적인 문제는 다음과 같다. |
| 35 | +- 복잡한 데이터 흐름과 모델 연동 코드 |
| 36 | +- 대화 기억, 문서 검색, 도구 호출 등 고급 기능의 재사용 어려움 |
| 37 | +- 외부 API, 데이터베이스, 벡터 저장소와의 연동 복잡성 |
| 38 | + |
| 39 | +이를 해결하기 위해 Python 진영에서는 **LangChain**, Java 진영에서는 **Spring AI**가 등장하였다. |
| 40 | + |
| 41 | +### Spring AI란? |
| 42 | +Spring AI는 **LLM을 Java 생태계에 통합**하기 위한 Spring 프로젝트로, 다음과 같은 특징을 가진다. |
| 43 | + |
| 44 | +1. **Spring Boot 친화적 구조** |
| 45 | + - 기존 Spring MVC와 유사한 프로그래밍 모델 유지 |
| 46 | + - 자동 구성(Auto Configuration)을 통한 빠른 개발 |
| 47 | + |
| 48 | +2. **AI 모델 통합** |
| 49 | + - OpenAI, Hugging Face 등 다양한 LLM을 자동 연동 |
| 50 | + - REST API 호출 구조를 단순화 |
| 51 | + |
| 52 | +3. **벡터 저장소 및 대화 기억 지원** |
| 53 | + - 문서 검색 기반 답변(RAG) 기능 |
| 54 | + - 대화 상태를 저장·복원 가능 |
| 55 | + |
| 56 | +4. **Tool Calling 및 MCP Server 지원** |
| 57 | + - 외부 도구 호출 및 내외부 시스템 제어 가능 |
| 58 | + |
| 59 | +:::tip[TIP] |
| 60 | +Spring AI는 LangChain의 구조적 유사성을 유지하면서도, Java 엔터프라이즈 환경에 맞춘 안정성과 확장성을 제공한다. |
| 61 | +::: |
| 62 | + |
| 63 | +### LangChain vs Spring AI 비교 |
| 64 | + |
| 65 | +| 구분 | LangChain (Python) | Spring AI (Java) | |
| 66 | +|------|--------------------|------------------| |
| 67 | +| 개발 언어 | Python | Java / Kotlin | |
| 68 | +| 주요 목적 | 연구, 프로토타입 | 엔터프라이즈 응용 서비스 | |
| 69 | +| 데이터 흐름 구조 | 체인(Chain) 기반 | Spring Bean 기반 | |
| 70 | +| 모델 지원 | OpenAI, Anthropic 등 | OpenAI, HuggingFace 등 | |
| 71 | +| 메모리/스토리지 | in-memory, vector store | Redis, PostgreSQL 등 연동 | |
| 72 | +| 도구 호출 | Tool / Agent | Tool Calling / MCP | |
| 73 | +| 강점 | 빠른 실험과 확장성 | 안정적인 배포 및 운영 | |
| 74 | + |
| 75 | +:::info[Information] |
| 76 | +LangChain은 실험과 프로토타입에 유리하고, Spring AI는 **운영 환경과 연동성, 유지보수성** 측면에서 강점을 가진다. |
| 77 | +::: |
| 78 | + |
| 79 | +## Reference |
| 80 | + |
| 81 | +**link:** External reference |
| 82 | +- [AI 애플리케이션 개발의 기초와 Spring AI 소개 (한빛미디어)](https://www.hanbit.co.kr/channel/view.html?cmscode=CMS8021447288) |
| 83 | +- [뉴런데브 - 스프링AI 1. AI프로젝트 구성 (YouTube)](https://www.youtube.com/watch?v=6YObwWmTUEo) |
0 commit comments